http://prntscr.com/nic3cs
strval(pInfo[playerid][pBankcode]) wird ja benutzt um es anzuzeigen bzw. strval um es zu konvertieren, aber wie frage ich später die Variable ab? Muss ich da auch strval vorschreiben?
Beiträge von Jameso
-
-
Was mir gerade auffällt ist, dass die letzte Zahl also die 9 nicht funktioniert, wenn ich diese anklicke.
Das Array ist 10 groß heißt, dass es theoretisch klappen sollte.Die Variable pInfo[playerid][pBankcode] ist immer gleich der angeklickten Zahl. Allerdings immer nur gleich der ersten angeklickten Zahl. Drücke ich zuerst die 1 ist es auch die 1 dann z.B die 3 dann ist die Zahl immer noch eine 1.
Nach den 4 Versuchen wird der Code wieder auf 0 gesetzt.
C
Alles anzeigenfor(new i; i < 9; i++) { if(playertextid == PlayerText:JamKeyNum[i][playerid]) { new c = GetPVarInt(playerid,"c_index"),string[64]; pInfo[playerid][pBankcode][c] = i; SCME(playerid,-1,"Du hast %d angeklickt!",i); if(c < MAX_CODE_LEN-1) SetPVarInt(playerid,"c_index",c+1); else { DeletePVar(playerid, "c_index"); SCME(playerid,-1,"Dein Code ist: %d",strval(pInfo[playerid][pBankcode])); } break; } } return 0;
Muss in Zeile 1 eine 10 stehen um mein erst genannten Problem zu lösen?
-
Zitat von Kaliber
Nein auf 4..für 4 Slots
Ich entschuldige mich für diese Dumme Frage.
Dem Log geht es soweit ganz gut, er zeigt keine Fehler.
Allerdings ist der Code 0C
Alles anzeigenpublic OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid) { for(new i; i < 9; i++) { if(playertextid == PlayerText:JamKeyNum[i][playerid]) { new c = GetPVarInt(playerid,"c_index"),string[64]; pInfo[playerid][pBankcode][c] = i; SCME(playerid,-1,"Du hast %d angeklickt!",i); if(c < MAX_CODE_LEN-1) SetPVarInt(playerid,"c_index",c+1); else { DeletePVar(playerid, "c_index"); SCME(playerid,-1,"Dein Code ist: %d",strval(pInfo[playerid][pBankcode])); } break; } } return 0; }
-
@Allrounder18
Mit SetPlayerName kannst du dies machen.
https://wiki.sa-mp.com/wiki/SetPlayerNameBitte beachte die Important Notes, da ich weiß, dass es einige Bugs mit SetPlayerName gibt.
-
Heißt, MAX_CODE_LEN muss auf 5 definiert sein um 4 Slots zu haben.
Ist es richtig, dass ich den Pvar beim Login auf -1 setze ?
Maybe liegt es daran -
achso, ich habe das falsch verstanden, mit pInfo[playerid][savecode] wollte ich das zwischenspeichern, brauch ich aber ja nicht und kann dann sofort pInfo[playerid][pBankcode] abspeichern.
C
Alles anzeigenpublic OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid) { for(new i; i < 9; i++) { if(playertextid == PlayerText:JamKeyNum[i][playerid]) { new c = GetPVarInt(playerid,"c_index"),string[64]; pInfo[playerid][pBankcode][c] = i; SCME(playerid,-1,"Du hast %d angeklickt!",i); if(c < MAX_CODE_LEN-1) SetPVarInt(playerid,"c_index",c+1); else { DeletePVar(playerid, "c_index"); SCME(playerid,-1,"Dein Code ist: %d",strval(pInfo[playerid][pBankcode])); } break; } } return 0; }
Habe ich was falsch gemacht? Ich kriege http://prntscr.com/nh5s88
Max_Code_Len ist auf 3 definiert. Heißt es, dass es 4 Zahlen sind oder 3? Weil in Zeile 10 ja auch MAX_CODE_LEN-1 abfragt?
-
Dankesehr der Herr,
C
Alles anzeigenpublic OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid) { for(new i; i < 9; i++) { if(playertextid == PlayerText:JamKeyNum[i][playerid]) { new c = GetPVarInt(playerid,"c_index"),string[64]; pInfo[playerid][pBankcode] = i; SCME(playerid,-1,"Du hast %d angeklickt!",i); if(c < sizeof(pInfo[][])-1) SetPVarInt(playerid,"c_index",c+1); else { DeletePVar(playerid, "c_index"); SCME(playerid,-1,"Dein Code ist: %d",strval(pInfo[playerid][pBankcode])); } break; } } return 0; }
Mein Aktueller Code ist die ganze Zeit 0 warum? Da stimmt was mit Zeile 10. glaube ich nicht
-
Also jetzt habe ich Warnings und das Textdraw wird nicht removed
http://prntscr.com/nggmmi
Was hat dies zu sagen? Soll ich für das verstecken der Textdraws es so lassen und für die anderen Funktionen OnPlayerClickPlayerTextDraw benutzen?Die Diskussion hatte ich schon mit 2 anderen schon darüber
Cpublic OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid) { if(PlayerText:playertextid == Text:INVALID_TEXT_DRAW) { PlayerTextDrawHide(playerid, JamKeyNum[7][playerid]);
Hier ist ein Tag mismatch in der if Abfragegenauso hier
-
-
C
Alles anzeigenfor(new i; i < 9; i++) { if(clickedid == Text:JamKeyNum[i][playerid]) { new c = GetPVarInt(playerid,"c_index"),string[64]; pInfo[playerid][savecode] = i; SCME(playerid,-1,"Du hast %d angeklickt!",i); if(c < sizeof(pInfo[][])-1) SetPVarInt(playerid,"c_index",c+1); else { DeletePVar(playerid, "c_index"); SCME(playerid,-1,"Dein Code ist: %d",strval(pInfo[playerid][savecode])); } break; } }
Was habe ich falsch gemacht, dass er mir nichts anzeigt? Eventuell Zeile 8. ? Oder sollte ich das lieber so machen, dass ich die Code Variable benutzte und sie am Ende der richtigen hinzufüge also die Zahlen.
-
Danke dir, solche Idiotenfragen...
C
Alles anzeigenfor(new i; i < 9; i++) { if(clickedid != Text:JamKeyNum[i][playerid]) continue; if(clickedid == Text:JamKeyNum[0][playerid]) { SendClientMessage(playerid,-1,"0"); } if(clickedid == Text:JamKeyNum[1][playerid]) { SendClientMessage(playerid,-1,"1"); }
Was mache ich falsch? Wenn ich auf das Textdraw clicke passiert nichts.
Muss die Schleife 1 returnen oder jede einzelne if(clickedid Abfrage und oder beides?
-
Upsi, habe vergessen zu sagen das ich irgendwie 9 Textdraws habe KeyPad[9][playerid] und ich will abfragen ob dieses angeklickte Textdraw eines von denen ist.
Ich habe versucht abzufahren ob clickedid gleich KeyPad[][playerid] ist aber da kriege ich ein Error weil ich keine Angabe gemacht habe in den ersten Klammern.Zitat von XonarZDas mit dem Array hatte ich gesagt nicht Andosius
Die Sache mit dem Array bezog sich auf die Textdraws, mein Fehler hab vergessen es dazu zu schreiben.
-
Ja das mit dem Array hatte ich auch gedacht, das ganze so zu machen wie es der liebe @Andosius vorgeschlagen hat.
Dann kann ich sofort den String pInfo[playerid][savecode] zuordnen.Um unnötige if Abfragen zu vermeiden möchte ich abfragen ob das Textdraw eines von den ganzen ist
KeyPad[][playerid] ohne einen Array anzugeben bekomme ich ein Error -
Hey!
Ich habe ein Numpad mit Textdraws erstellt und will das der Spieler einen Code für sich erstellt.
Klickt er auf die 3 ist es ja die Zahl 3, klickt er auf die 2 ist es die Zahl 2 würde ich die Zahlen jeweilig + rechnen käme ja was ganz anderes raus
Aber ich kann am ende nicht alle Zahlen addieren, gibt es da irgendwelche Möglichkeiten? Ich hab die Variable pInfo[playerid][savecode]
Von den kleinen Scriptingfragen hierher verschoben -
@Nima.Yaghobi
//EDIT
Bei dir fehlt die Rotation beim spawnen -
Danke euch Bois,
Wie kann ich es so machen, dass die Zahl z.B 3 und 7 in einer Variable gespeichert werden?
Heißt ich habe einmal die Zahl 3 und einmal die 7
3+7 kann ich ja nicht machen, dann kommt 10 raus es soll aber 37 sein -
C
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid) { if(playertextid ==PlayerText: INVALID_TEXT_DRAW) { PlayerTextDrawHide(playerid, X); CancelSelectTextDraw(playerid); return 1; } return 0; }
Macht eigentlich nichts, man muss PlayerText: vorher nicht angeben, trotzdem war es ein Versuch wert. Klappt immer noch nicht.
Diesmal verschwindet das Textdraw nicht einmal bei dem anderen Callback schon
-
-
Ich benutzte die Textdraws für eine Funktion, ich will halt, dass wenn ich nachdem das TextDraw versteckt wurde es wieder mit /textdraw anzeige, dass funktioniert nicht.
Cocmd:textdraw(playerid,params[]) { new Float:angle; GetPlayerFacingAngle(playerid,angle); SelectTextDraw(playerid, 0x00FF00FF); SetPlayerFacingAngle(playerid,angle); PlayerTextDrawShow(playerid, X);
-
Jetzt kann ich das Textdraw nicht mehr öffnen, sobald es in einer andere Funktion wieder gezeigt wird wird es sofort wieder versteckt.
Liegt es an return 0; ?