Hast du mal crashdetect geladen und in den MySQL Log geschaut (aktiviere den mit mysql_log(LOG_ALL); )? ![]()
Beiträge von Kaliber
-
-
Wie immer, einfach mal ein Geiles System, obwohl nicht so viele Funktionen drin sind.
Lies den Text erstmal xD
Das ist nur das Grundsystem.
Wollte ja gerade wissen, ob ihr Ideen habt, außer, dass der Spieler dann zu dem Punkt gezogen wird xD
-
Hallöchen liebe Brotfische,
hier noch mal ein Spaß System wie man schnell Seile aufhängen kann xD
Der Ursprüngliche Gedanke war, dass man Seile verschießt, so wie in dem Video, dann eine unsichtbare Plattform erstellt wird unter dem Spieler und mit MoveObject wird er dann dahin gebracht.
Der komplizierte Teil ist natürlich nur die Berechnung der Seile, der Rest ist ja dann nur ein Create- & MoveObject

Wollte mal fragen, wie ihr das so findet, also das ist nicht ein Seil (logischerweise) sondern mehrere die dann so gut es ging aneinander gereiht werden.
Habt ihr hierzu Ideen, was man damit noch alles anstellen könnte?
Lasst mich doch mal eure Meinungen dazu hören
Externer Inhalt www.youtube.comInhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.Mit freundlichen Grüßen
Euer Kalle -
Wow, eine Wahnsinns Vorstellung, Respekt!
Also ein paar Dinge dazu:
- Ihr befindet euch hier in der falschen Sektion, vielleicht ist ja ein Moderator so nett und verschiebt euren Beitrag. Aber das Nächste mal, erstmal alle Sektionen anschauen
- Wie meint ihr das mit Reallife oder RP?! Wisst ihr selbst nicht was ihr wollt oder was?
- Was habt ihr denn bereits...Forum, Lizenzen, Ts, V-Server...
- "Unser Server" dann stellt euch doch mal vor, wer ist denn alles im Team und was wollt ihr erreichen.
Also bitte...man muss ja echt nicht viel schreiben, aber wenigstens etwas

- Ihr befindet euch hier in der falschen Sektion, vielleicht ist ja ein Moderator so nett und verschiebt euren Beitrag. Aber das Nächste mal, erstmal alle Sektionen anschauen
-
In Zeile 33 von meinem Code nutzt du die MD5 Hash Funktion um das Passwort von dem Spieler zu hashen und in der Datenbank zu speichern.
Das ist auch erstmal gut so, Passwörter sollten nie in Klartext gespeichert werden.
Aber hier werden 2 Fehler gemacht.
- Du nutzt eine veraltete Hashfunktion. Diese sind nicht mehr sicher und können ziemlich einfach gebrochen werden. Sprich man findet den Klartext des Passworts relativ einfach raus bzw kann einen anderen String mit identischem Hashwert erzeugen.
- Du nutzt weder einen Salt, noch einen Pepper. Das bedeutet, man kann einfach den Hashwert nehmen und über eine Rainbowtable (wie z.B. https://hashkiller.co.uk/md5-decrypter.aspx) ganz einfach den Klartext des Passworts finden. Ein Salt bzw ein Pepper ist ein zufälliger String, der immer vorne oder hinten an das Passwort gehangen wird, damit es nahezu unmöglich wird an den Klartext zu gelangen
-
Ich war mal so frei und hab deinen Code ein wenig angepasst:
C
Alles anzeigenpublic OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case DIALOG_REGISTER: { if(!response) return Kick(playerid); SetPVarString(playerid,"passwortvar",inputtext); if(strlen(inputtext) >= 4) { ShowPlayerDialog(playerid,DIALOG_INFO1,DIALOG_STYLE_MSGBOX,"Informationen 1/3","Welches Geschlecht hast du?","Männlich","Weiblich"); } else { ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Registration","{FFFFFF}Wilkommen auf {B08EFF}Enjoy your Life, Roleplay{FFFFFF}\nDieser Account ist bei uns noch nicht registriert!\nGib hier dein gewünschtes Passwort ein.\n\nNach deiner erfolgreichen Registration wirst du automatisch von unserem System gespawnt!","Registrieren","Abbrechen"); } } case DIALOG_INFO1: { pInfo[playerid][pGeschlecht] = (response)?1:2; ShowPlayerDialog(playerid,DIALOG_INFO3,DIALOG_STYLE_INPUT,"Information 3/3","Gib hier nun dein Alter an\n Zwischen 12 und 50 Jahren","Bestätigen","Abbrechen"); } case DIALOG_INFO3: { if(!response) return Kick(playerid); //new alterabfrage=strval(inputtext); if(IsNummeric(inputtext) && strval(inputtext)>=12 && strval(inputtext) <=50) { pInfo[playerid][pAlter]=strval(inputtext); pInfo[playerid][pEingeloggt]=pInfo[playerid][pNeuling]=1; new query[256],passworteingabe[128]; GetPVarString(playerid,"passwortvar",passworteingabe,128); mysql_format(Handle, query, sizeof(query), "INSERT INTO user (Username, Passwort) VALUES ('%e',MD5('%e'))",Spielername(playerid),passworteingabe); mysql_function_query(Handle,query,true,"OnPlayerRegister", "i",playerid); printf("%s",query); } else { ShowPlayerDialog(playerid,DIALOG_INFO3,DIALOG_STYLE_INPUT,"Information 3/3","Gib hier nun dein Alter an\n {FF0000FF}Zwischen 12 und 50 Jahren","{FFFFFF}Bestätigen","Abbrechen"); } } case DIALOG_LOGIN: { if(!response)return Kick(playerid); new query[256]; mysql_format(Handle,query,sizeof(query),"SELECT * FROM user WHERE Username='%e' AND Passwort=MD5('%e')",Spielername(playerid),inputtext); mysql_tquery(Handle,query,"OnPasswordResponse","i",playerid); } case DIALOG_FAHRZEUGVERLEIH1: { new geld[] = {394,326,316},model[] = {510,481,509},name[][] = {"Mountenbike","Bmx","Fahrrad"}; if (pInfo[playerid][pMietfahrzeug1]!=0) return SendClientMessage(playerid,-1,"{bc4343}Du hat dir bereits ein Fahrzeug gemietet, und kannst dir kein zweites mieten!"); new string[128]; if (pInfo[playerid][pGeld] < geld[listitem]) return format(string,sizeof(string),"{bc4343}Du brauchst $%d um dir das %s zu mieten!",geld[listitem],name[listitem]),SendClientMessage(playerid,-1,string); GetPlayerPos(playerid,X,Y,Z),GetPlayerFacingAngle(playerid,A); pInfo[playerid][pMietfahrzeug1] = CreateVehicle(model[listitem], X, Y, Z, A, -1, -1, -1); PutPlayerInVehicle(playerid,pInfo[playerid][pMietfahrzeug1],0); GivePlayerMoney(playerid,-geld[listitem]); pInfo[playerid][pGeld] -= geld[listitem]; } case DIALOG_SERVICE1: { switch(listitem) { case 0: { if (pInfo[playerid][pGeld] < 966) return SendClientMessage(playerid,-1,"{bc4343}Du brauchst $966 um den Motor zu raperieren!"); SetVehicleHealth(GetPlayerVehicleID(playerid), 1000); SendClientMessage(playerid, -1, "Der Motor wurde erfolgreich raperiert!"); } case 1: { if (pInfo[playerid][pGeld] < 3299) return SendClientMessage(playerid,-1,"{bc4343}Du brauchst $3299 um dir die leichte Panzerung zu kaufen!"); SetVehicleHealth(GetPlayerVehicleID(playerid), 1250); SendClientMessage(playerid, -1, "Das Fahrzeug wurde mit der leichten Panzerung ausgestattet!"); } } } } return 1; }Hoffe du siehst den Unterschied und lernst etwas

PS: MD5 solltest du nicht mehr nutzen, ist überhaupt nicht mehr save xD Da kannst es auch lassen

-
weiss zwar nicht mehr wie es in PAWNO war aber in C# müsstest du nach jedem case ein break; setzen damit der auch wenn er in den case geht danach auch aufhört
Das muss man in Pawn (so heißt die Sprache, Pawno ist der Editor) nicht machen

Deine Klammerung ist der letzte Schrott.
Manchmal steht über einem switch Block einfach ein if-Statement ohne Klammern...was soll das?! (486,559)
Und über 559 wurde der switch Block nicht geschlossen...
Achte einfach auf deine Klammerung...die ist schrecklich.
-
-
Überall, auch darüber und so

Und musst schauen, dass alle switch Statements geschlossen sind

-
Schau mal:
C
Alles anzeigenif(dialogid == DIALOG_SERVICE1) { switch(listitem) { case 0: { if (pInfo[playerid][pGeld] > 966) { new vehicleid = GetPlayerVehicleID(playerid); SetVehicleHealth(vehicleid, 1000); SendClientMessage(playerid, -1, "Der Motor wurde erfolgreich raperiert!"); } else { SendClientMessage(playerid,-1,"{bc4343}Du brauchst $966 um den Motor zu raperieren!"); } } case 1: { if (pInfo[playerid][pGeld] > 3299) { new vehicleid = GetPlayerVehicleID(playerid); SetVehicleHealth(vehicleid, 1250); SendClientMessage(playerid, -1, "Das Fahrzeug wurde mit der leichten Panzerung ausgestattet!"); } else { SendClientMessage(playerid,-1,"{bc4343}Du brauchst $3299 um dir die leichte Panzerung zu kaufen!"); } } } }Du musst Klammern setzen bei dem if oben und unten immer

-
Kannst du nochmal mehr Code darüber zeigen?

-
Genau das dachte ich mir xD
Also du musst hier eine ID noch angeben, z.B.:
#define DIALOG_SERVICE1 1337
Am besten in der Reihenfolge von deinen Dialogen, also der Erste Dialog 0, dann der zweite 1 usw.
Wichtig ist, dass sich die Dialogids nicht überschneiden, also es nicht 2x die 1337 gibt, sonst kommt es natürlich zu Komplikationen.
Schön geht das, wenn man die einfach in ein Enum klatscht, dort werden die nämlich automatisch nummeriert:
-
Hast du auf den Link mal geklickt?
Hier auch nochmal auf Deutsch: http://wiki.sa-mp.com/wiki/AttachObjectToVehicle_DE
Da ist ja auch ein Beispiel gegeben...
Du musst einfach das Objekt und das Fahrzeug wie dort gezeigt erstellen und dann die Funktion aufrufen, die dann das Objekt an das Fahrzeug klebt an der Position, die du angibst

-
DIALOG_SERVICE1
Wie hast n das definiert?

-
Das liegt an einem Klammerfehler

Ich denke in Zeile 592 sollte das eine } sein, anstatt einer {

-
Einfach mit [wiki]AttachObjectToVehicle[/wiki]

-
Ja, dieses Objekte ist dafür halt nicht geeignet.
Musst du dich wohl mit Alternativen begnügen, wie z.B. 3374, 14873, 14875
oder du packst ein unsichtbares Objekt davor, sodass man die Heu Ballen nicht touchen kann

-
Gibt es eine Möglichkeit das Object ( 2901 ) als standhaftes Object zu machen dass man dieses nicht rumschubsen/schießen kann ?
Nein, keine die wirklich gut zu gebrauchen wäre.
Die Frage ist, wofür willst du das denn?!
Das Include was dir Vorgeschlagen wurde, hat damit nichts zu tun.
-
-
Das ist nicht so leicht, aber zum Glück gibt es bereits solche Tools: