Poste bitte deinen ganzen Code, das macht keinen Sinn so. Da ist bestimmt woanders ein Fehler, der das verursacht.
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Kann ich dir die Textdraws per PN zukommen lassen?
-
Kann ich dir die Textdraws per PN zukommen lassen?
Kurzer Tipp: Erstell einfach am besten einen Thread dazu. Für so lange Code Stücke ist das eindeutig besser
-
Den ganzen Code bitte, nicht nur die Textdraws.
Dann ja.EDIT:
Erledigt. Das Array war zu klein. -
Nochmal zu meiner Frage, ich glaube die ist in dem ganzem Code oben untergegangen:
Ich hätte gerne den PayDay normal verbucht, habe dazu meinen stock "PayDay"
Soweit so gut, nun hätte ich aber gerne, wenn der spieler /lastpayday eingibt, dass er seinen letzten PayDay ausgegeben sieht. Muss ich das alles in variablen zwischenspeichern jeden Wert oder geht das noch anders ?
-
Wenn du nur den letzten PayDay-Wert anzeigen lassen willst, dann kannst du das relativ einfach mit einem Spielerarray machen:
Dort wo dem Spieler das PayDay-Geld gegeben wird:
Und dann der Befehl:
-
Hi ich habe ein Problem mit meinem PawnStart.. Der PawnStart stellt keine AMX Datei her weiß einer woran das liegt?
-
Kommt denn irgendeine Fehlermeldung? Bzw. bei pawno musst du auf den blauen Pfeil klicken damit die amx erstellt wird.
Ich habe noch selbst eine Frage:
Ich habe den Stock:
Code
Alles anzeigenstock PayDayCheck(playerid) { new str[128]; SendClientMessage(playerid,mgrün,"[MSG]-------------- //PayDay// --------------"); SendClientMessage(playerid,mgrün,"[MSG]: Du hattest gerade deinen PayDay! Gib die Zahl am Bildschirm ein um ihn zu bestätigen!"); randpdn[playerid] = random(100); format(str,sizeof(str),"%d",randpdn[playerid]); GameTextForPlayer(playerid,str,7000,6); paydaytimer = SetTimerEx("PayDayCheckTimer",20000,0,"d",playerid); return 1; }
Aber ich bekomme den GameText nicht angezeigt?
-
Siehst du die SendClientMessages?
-
Ja ich sehe die SendClientMessages.
Und:
Ich habe es jetzt so geschrieben um zu schaun woran es liegt:
Code
Alles anzeigenstock PayDayCheck(playerid) { new str[128]; SendClientMessage(playerid,mgrün,"[MSG]-------------- //PayDay// --------------"); SendClientMessage(playerid,mgrün,"[MSG]: Du hattest gerade deinen PayDay! Gib die Zahl am Bildschirm ein um ihn zu bestätigen!"); randpdn[playerid] = random(100) + 1; format(str,sizeof(str),"%d",randpdn[playerid]); GameTextForPlayer(playerid,str,7000,6); SendClientMessage(playerid,iblau,str); printf("Zufallszahl: %d",randpdn[playerid]); paydaytimer = SetTimerEx("PayDayCheckTimer",30000,0,"d",playerid); return 1; }
Und ich sehe sowohl die ClientMessage die mir die Zahl ausgibt, sowie den Print in der Konsole und zwar mit der richtigen Zahl.
-
-
Habe gerade nichts verändert außer die Zeile neu geschrieben und den Server neu gestartet, und plötzlich klappt es ._. .... Trotzdem danke.
-
hey warum baut mysql keine verbindung auf?
[21:51:12] [ERROR] CMySQLConnection::Connect - (error #2003) Can't connect to MySQL server on '1**.7*.1**.6*' (10060) -
Hallo, habe eine kurze Frage:
Ich habe den Code geschrieben um die Fraktionsgehälter Dynamisch zu ändern:
Codenew rang,gehalt; if(sscanf(params,"dd",rang,gehalt))return SCM(playerid,frot,"[FEHLER]: /changesalary [Rang] [Gehalt]"); format(str,sizeof(str),"gehalt%d",rang); FI[frakid][str] = gehalt;
Meine Frage ist nur, ob das so funktioniert? Oder muss ich jetzt einzeln Abfragen was er als Rang eingegeben hat und es dann damit setzen?
Herauskommen soll hierbei, wenn er z.B /changesalary 1 100 eingibt, dass dann unten das gesetzt wird;
FI[frakid][gehalt1] = 100;
-
Wenn du das FI beibehalten willst, brauchst du ein 3-Dimensionales Array, einen String in einem Array Index zu schreiben macht auch keinen Sinn.
Ich würde für die Gehälter ein zweites Array erstellen.new fSalary[MAX_FACTIONS][MAX_RANKS];
zB dann für Fraktion 0, Rang 5 das Gehalt auf 1000 setzen:
fSalary[0][4] = 1000;
new rang, gehalt;
new faction = pInfo[playerid][Fraktion];
if(sscanf(params, "dd", rang, gehalt)))return SCM(blablub);
fSalary[faction][rang] = gehalt; -
Nein nein, danke das passt dann schon, eine Frage habe ich noch:
Ich lasse meine Fraktionen über diesen Stock speichern:
Code
Alles anzeigenstock SaveFraks() { new query[500],id,name,kasse,gehalt[5],rname[5],msg; for(new i=0;i<sizeof(FI);i++) { id = FI[i][f_id]; name = FI[i][f_name]; kasse = FI[i][f_kasse]; gehalt[0] = FI[i][gehalt1]; gehalt[1] = FI[i][gehalt2]; gehalt[2] = FI[i][gehalt3]; gehalt[3] = FI[i][gehalt4]; gehalt[4] = FI[i][gehalt5]; rname[0] = FI[i][rname1]; rname[1] = FI[i][rname2]; rname[2] = FI[i][rname3]; rname[3] = FI[i][rname4]; rname[4] = FI[i][rname5]; msg = FI[i][frakmsg]; mysql_format(db_handle,query,sizeof(query),"UPDATE fraktionen SET name = '%s', kasse = %d, gehalt1 = %d, gehalt2 = %d, gehalt3 = %d, gehalt4 = %d, gehalt5 = %d, rname1 = '%s', rname2 = '%s', rname3 = '%s', rname4 = '%s', rname5 = '%s', frakmsg = '%s' WHERE id = %d",name,kasse,gehalt[0],gehalt[1],gehalt[2],gehalt[3],gehalt[4],rname[0],rname[1],rname[2],rname[3],rname[4],msg,id); mysql_pquery(db_handle,query); } return 1; }
Den lasse ich unter OnGameModeExit aufrufen, aber es speichert nicht, im Mysql log steht nichtmal ein Error, also befürchte ich, dass der Stock nichteinmal aufgerufen, ausgeführt wird.
-
A) Die Werte der Variablen sind alle 0 - auch in der DB
B) Du schließt die Datenbank Verbindung nicht oder gar vor dem Aufrufen der Funktion
C) Bitte Logs posten -
Deine Werteübergabe ist falsch, du gibst Arrays in eine Normale Variable, somit wird nur ein Zeichen, welches keinen Sinn macht, gespeichert.
Achte auch darauf, dass OnGameModeExit nicht aufgerufen wird, wenn du die Konsole nur schließt ( X ).Mache es so:
C
Alles anzeigenstock SaveFraks() { new query[512]; for(new i=0;i<sizeof(FI);i++) { mysql_format(db_handle,query,sizeof(query),"UPDATE fraktionen SET name = '%e', kasse = %d, gehalt1 = %d, gehalt2 = %d, gehalt3 = %d, gehalt4 = %d, gehalt5 = %d, rname1 = '%e', rname2 = '%e', rname3 = '%e', rname4 = '%e', rname5 = '%e', frakmsg = '%e' WHERE id = %d", FI[i][f_name],FI[i][f_kasse],FI[i][gehalt1],FI[i][gehalt2],FI[i][gehalt3],FI[i][gehalt4],FI[i][gehalt5],FI[i][rname1],FI[i][rname2],FI[i][rname3],FI[i][rname4],FI[i][rname5],FI[i][frakmsg],FI[i][f_id]); mysql_pquery(db_handle,query); } return 1; }
Sollte es weiterhin nicht klappen, lasse dir mit einem print das Query ausgeben und schaue in den MySQL Log, ob sich dort Fehler befinden.
Poste die beiden Logs gegebenenfalls, aber bitte in einem neuen Thread, da dieser Thread für kleine Scriptingfragen ist, und MySQL Debugging gehört da bei Weitem nicht mehr dazu. -
Beitrag von Simon2202 ()
Dieser Beitrag wurde vom Autor gelöscht (). -
Yo, hab mal ne kleine Frage:
Möchte mal mit Timern arbeiten, sprich eine ausgewählte Funktion soll erst nach einer bestimmten Zeit ausgeführt werden. Habe da mal bisschen in Wiki nachgelesen und SetTimerEx entdeckt.
Nur verstehe ich nicht was die erste Funktion sein soll die man angeben muss.
Habe da mal ein Testbefehl erstellt und hatte vor den Spieler zu freezen, Skin setzen und nach 5 Sekunden zu entfreezen.
CCMD:test123(playerid,params[]) { TogglePlayerControllable(playerid,0 ); SetPlayerSkin(playerid, 300); TogglePlayerControllable(playerid,1 ); SetTimerEx("TogglePlayerControllable", 5000, false, "i", playerid); return 1; }
Ich weiß das ist falsch, wie mach ich es richtig?