Es kommt kein mysql log... ich glaube ich habe einen fehler bei saveplayer
Beiträge von Iceberqk
-
-
Also der Bangrund wird jetzt gespeichert. Danke schonmal. Jetzt habe ich das Problem, dass zwar alle anderen Daten geladen werden, aber nicht gespeichert werden bei Veränderung inGame. Und der Skin wird auch nicht geladen...
savePlayer(playerid){if(sInfo[playerid][eingeloggt] ==0)return 1;new query[128];format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',skin='%i',alevel='%i',fraktion='%i',rang='%i',banned='%i',bangrund='%s' WHERE id='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][skin],sInfo[playerid][alevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo[playerid][banned],sInfo[playerid][bangrund],GetPlayerWantedLevel(playerid),sInfo[playerid][id]);mysql_function_query(dbhandle,query,false,"","");return 1;}
//Enums
enum playerInfo{eingeloggt,level,id,skin,alevel,fraktion,rang,banned,bangrund[128],} -
Habe einfach nach einem Komma den Rest in die nächste Zeile verschoben, viel einfacher. Trotzdem danke.
-
Ich verstehe das noch nicht.
-
Habe das Problem, dass dem Compiler die Line zu lang ist.
CodesavePlayer(playerid) { if(sInfo[playerid][eingeloggt] ==0)return 1; new query[128]; format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i',fraktion='%i',rang='%i',banned='%i',bangrund='%s',wanteds='%i',knast='%i',knastzeit='%i',skin='%i',bank='%i' WHERE id='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo[playerid][banned],sInfo[playerid][bangrund],GetPlayerWantedLevel(playerid),sInfo[playerid][knast],sInfo[playerid][knastzeit],GetPlayerSkin(playerid),sInfo[playerid][bank],sInfo[playerid][id]); mysql_function_query(dbhandle,query,false,"",""); return 1; }
Selbst im Quellcode sieht es schrecklich aus. Der Error lautet: error 075: input line too long (after substitutions)
Was genau muss ich hier machen, um die Line zu trennen damit der Compiler nicht meckert? -
Weiß immer noch nicht wie ich weitermachen soll
-
Wie kann ich eine if Abfrage bei OnDialogResponse einbauen ohne dass es zu Fehlern kommt?
Beispiel: case 0: if(isAdmin(playerid,5)) return SendClientMessage...
GivePlayerWeapon(playerid,WEAPON_MP5);Habe etwas nach diesem Schema, beim Übersetzen bekomme ich aber einen Batzen an Fehlern..
-
-
Hat leider immer noch nicht funktioniert... Der Grund wird nicht in der Datenbank bei "bangrund" gespeichert.
-
Sorry aber jetzt peil ich das irgendwie gar nicht mehr...
-
Call me a stupid noob:
mysql_escape_string(grund, sInfo[playerid][bangrund]);
format(query,sizeof(query),"UPDATE user SET bangrund='%s' WHERE id='%i'",grund,sInfo[playerid][id]);
mysql_function_query(dbhandle,query,false,"","");mysql log : [22:02:24] [ERROR] mysql_escape_string - destination size is too small (must be at least as big as source)
es geht immer noch nicht..
-
Funktion sieht so aus:
mysql_escape_string(grund, sInfo[playerid][bangrund]);
format(query,sizeof(query),"UPDATE user SET bangrund='%s'",grund);
mysql_function_query(dbhandle,query,false,"","");mysql Logdatei : [21:44:10] [ERROR] mysql_escape_string - destination size is too small (must be at least as big as source)
Jetzt wird gar kein Grund gespeichert... Sry wenn ich euch langsam nerve aber bin echt noch ein Amateur wenns ums Programmieren geht..
-
Es funktioniert semi. Also das Speichern in der Datenbank klappt. Aber das Problem ist dabei, dass der Grund automatisch in einer neuen Zeile gespeichert wird, das ist ja nicht Sinn der Sache...
Geldcheat einfach als Test
danke schon mal für deine bisherige Hilfe, könntest du mir bitte sagen wie ich das behebe? -
Ich möchte den Grund des Banns in der Datenbank speichern. Dazu habe in MySQL eine Spalte namens bangrund hinzugefügt(natürlich vom Typ varchar). Ich habe dann bangrund auch in mein playerInfo Enum und in meine Funktion saveplayer eingefügt. Ist also eine normale Zeichenkette, welche ich versuche in der Datenbank zu speichern. Leider hat dein Vorschlag das Problem nicht gelöst, trotzdem danke.
-
Klappt nicht
-
Moin Leute!
Ich habe mal heute an einem Ban-System gearbeitet.
Code
Alles anzeigenocmd:ban(playerid,params[]) { if(!isAdmin(playerid,3))return SendClientMessage(playerid,Kaminrot,"ERROR: Du besitzt nicht die benötigten Rechte!"); new pID,grund[128],message[128],dmessage[128],partm[128],query[128]; if(sscanf(params,"is",pID,grund)) return SendClientMessage(playerid,Orange,"INFO: /ban [id] [grund]"); if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,Kaminrot,"ERROR: Die Spieler-ID existiert nicht."); //if(sInfo[pID][alevel] >= sInfo[playerid][alevel])return SendClientMessage(playerid,Kaminrot,"ERROR: Du kannst keinen höheren bzw. gleichrangigen Admin kicken!"); format(dmessage,sizeof(dmessage),"Du wurdest von %s permanent vom Server gebannt.\nGrund: %s\nEntbannanträge an: {FF0000}asd",getPlayerName(playerid),grund); format(partm,sizeof(partm),"%s hat den Server verlassen.(Banned)",getPlayerName(pID)); format(message,sizeof(message),"[BANNED] %s wurde von %s permanent vom Server gebannt. Grund: %s - Typ: Accountban",getPlayerName(pID),getPlayerName(playerid),grund); SendClientMessageToAll(Blutrot,message); SendClientMessageToAll(Grau,partm); ShowPlayerDialog(pID,DIALOG_KICKED,DIALOG_STYLE_MSGBOX,">> BANNED",dmessage,"OK",""); TogglePlayerControllable(pID,false); sInfo[pID][banned]=1; mysql_escape_string(grund,bangrund,dbhandle); format(query,sizeof(query),"INSERT INTO user (bangrund) VALUES ('%s') ",grund); mysql_function_query(dbhandle,query,false,"",""); savePlayer(pID); Kick(pID); return 1; }
Ich bekomme folgenden Error:
\script.pwn(318) : error 035: argument type mismatch (argument 2)die fehlerhafte Zeile: mysql_escape_string(grund,bangrund,dbhandle);
Kann mir bitte jemand behilflich sein? Komme da echt nicht weiter...
-
Jo, erstmal sry deswegen. Dort steht halt die Meldung des Verbrechend und dann darunter "Dein aktuelles Wantedlevel: xy"
-
Guten Tag, ich habe mir gestern einen automatischen Killzähler erstellt.
Doch heute funktioniert er aus irgendeinem Grund nicht mehr..Hier der Code:
@ Jeffry Kannst du mir vlt helfen?
@all ihr seid natürlich auch gefragt
-
Neuen Notebook, mit Intel Core i5, geht eigentlich alles sehr flott, Scripten ist auch sehr leicht
-
ocmd:oban(playerid,params[])
{
new Spieler[128],grund[128];
if(!isPlayerRang(playerid,4)) return SendClientMessage(playerid,Dunkelrot,"Du besitzt nicht die benötigten Rechte!");
if(sscanf(params,"ss",Spieler,grund)) return SendClientMessage(playerid,Grau,"Verwendung: /Oban [Spielername] [Grund]");
format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Spieler);
if(!dini_Exists(Spieler)) return SendClientMessage(playerid, Dunkelrot, "Es existiert kein Spieler mit diesem Namen in der Datenbank.");
dini_IntSet(Spieler,"Banned",1);
new string2[128];
format(string2,sizeof(string2),"[OFFLINEBANNED] %s wurde von %s offline gebannt. Grund: %s",Spieler,getPlayerName(playerid),grund);
SendClientMessageToAll(Rot,string2);
return 1;
}
Falls du das sscanf Plugin verwendest, musst du "ss" zu "s[128]s[128]" machen.
Danke schonmal, hat gefunzt.Jetzt möchte ich aber, dass da nich steht:
[OFFLINEBANNED] Spieler/Tester.txt wurde von xy offline gabannt.........
sondern,
dass da nur der Name steht ohne das Verzeichnis, wie mache ich das?Screen: