Was davon ist Zeile 230?
ShowPlayerDialog(playerid,DIALOG_AUTOHAUS,DIALOG_STYLE_MSGBOX,"Autoverkauf",string,"Ja","Nein");
Was davon ist Zeile 230?
ShowPlayerDialog(playerid,DIALOG_AUTOHAUS,DIALOG_STYLE_MSGBOX,"Autoverkauf",string,"Ja","Nein");
Alles gefunden nun nur noch einen Fehler und dann hoffe ich wars das mit dem Autohaus xD
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate==PLAYER_STATE_DRIVER)
{
new vID=GetPlayerVehicleID(playerid);
for(new i=0; i<sizeof(ahCars); i++)
{
if(ahCars[i][id_x]!=vID)continue;
//Verkaufsprozess
SetPVarInt(playerid,"buyCarID",i);
new string[256];
format(string,sizeof(string),"Möchten sie das Fahrzeug für %i$ kaufen?",ahCars[i][c_preis]);
ShowPlayerDialog(playerid,DIALOG_AUTOHAUS,DIALOG_STYLE_MSGBOX,"Autoverkauf",string,"Ja","Nein");
break;
}
}
return 1;
}
Hier zeigt er mir folgenden Fehler an
C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : error 029: invalid expression, assumed zero
C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : warning 215: expression has no effect
C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : warning 215: expression has no effect
C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : warning 215: expression has no effect
C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : warning 215: expression has no effect
C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : warning 215: expression has no effect
C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : error 001: expected token: ";", but found ")"
C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : error 029: invalid expression, assumed zero
C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : fatal error 107: too many error messages on one line
Zeile 230 ist ShowPlayerDialog(playerid,DIALOG_AUTOHAUS,DIALOG_STYLE_MSGBOX,"Autoverkauf",string,"Ja","Nein");
Wenn du nicht weiter kommst dann Poste es
Ja ich kriege mal nen paar error / warnings
C:\Users\valen\Desktop\MySQL Sciptfiles\gamemodes\beispiel.pwn(535) : warning 213: tag mismatch
C:\Users\valen\Desktop\MySQL Sciptfiles\gamemodes\beispiel.pwn(536) : error 017: undefined symbol "sInfo"
C:\Users\valen\Desktop\MySQL Sciptfiles\gamemodes\beispiel.pwn(536) : warning 215: expression has no effect
C:\Users\valen\Desktop\MySQL Sciptfiles\gamemodes\beispiel.pwn(536) : error 001: expected token: ";", but found "]"
C:\Users\valen\Desktop\MySQL Sciptfiles\gamemodes\beispiel.pwn(536) : error 029: invalid expression, assumed zero
C:\Users\valen\Desktop\MySQL Sciptfiles\gamemodes\beispiel.pwn(536) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Alles anzeigen
Angestrebter Code
stock createPlayerCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r){ for(new i=0; i<sizeof(cInfo); i++) { if(PlayerInfo[i][id_x]!=0)continue; cInfo[i][besitzer]=sInfo[playerid][db_id]; cInfo[i][c_x]=x; cInfo[i][c_y]=y; cInfo[i][c_z]=z; cInfo[i][c_r]=r; cInfo[i][model]=modelid; cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,-1,-1,-1); new string[128]; format(string,sizeof(string),"Das Auto cInfo[%i] wurde erstellt.",i); SendClientMessageToAll(COLOR_RED,string); saveCarToDB(playerid,i); return 1; } return 1;}
Zeile 535 soll if(PlayerInfo[i][id_x]!=0)continue; sein
erledigt. Hatte codeteile vergessen
Nagut ich hab doch noch scheiße gebaut hahahahaha
Er zeigt mir den Login nicht mehr an
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==DIALOG_AUTOHAUS)
{
if(response)
{
//Autoverkauf
new id=GetPVarInt(playerid,"buyCarID");
if(GetPlayerMoney(playerid)<ahCars[id][c_preis])
{
SendClientMessage(playerid,COLOR_RED,"Du hast nicht genügend Geld.");
RemovePlayerFromVehicle(playerid);
return 1;
}
GivePlayerMoney(playerid,-ahCars[id][c_preis]);
createPlayerCar(playerid,ahCars[id][model],ahInfo[ahCars[id][ah_id]][s_x],ahInfo[ahCars[id][ah_id]][s_y],ahInfo[ahCars[id][ah_id]][s_z],ahInfo[ahCars[id][ah_id]][s_r]);
SendClientMessage(playerid,COLOR_RED,"Herzlichen Glückwunsch zum neuen Auto");
RemovePlayerFromVehicle(playerid);
}
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid,COLOR_RED,"Dann eben nicht...");
}
return 1;
}
if(dialogid == DIALOG_REGISTER)
{
//Spieler hat Abbrechen gewählt
if(!response) return Kick(playerid);
//Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat
if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", "Bitte registriere Dich:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");
//Wenn alles passt wird der Spieler in der Datenbank angelegt
//Als Verschlüsselung für das Passwort wird MD5 verwendet
new query[256];
mysql_format(handle, query, sizeof(query), "INSERT INTO users (name, password) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][pName], inputtext);
//Das Query wird abgesendet und die playerid an OnUserRegister übergeben
mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
return 1;
}
if(dialogid == DIALOG_LOGIN)
{
//Spieler hat Abbrechen gewählt
if(!response) return Kick(playerid);
//Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat
if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");
//Wenn alles passt wird die Datenbank ausgelesen
new query[256];
mysql_format(handle, query, sizeof(query), "SELECT * FROM users WHERE name = '%e' AND password = MD5('%e')", PlayerInfo[playerid][pName], inputtext);
//Das Query wird abgesendet und die playerid an OnUserLogin übergeben
mysql_pquery(handle, query, "OnUserLogin", "d", playerid);
}
return 1;
}
Also ich werde nicht mehr nach Daten gefragt
Vielen dank für eure Hilfe. Ich teste es mal sobald ich mein autohaus fertig habe wo ich einfach gerade nicht weiter weiß.
Ja, müsste so funktionieren. Du könntest es ja mal trotzdem mit einem Freund ausprobieren.
Na das ist derzeit schwierig da ich eig bisher kaum welche kenne die SAMP spielen und vorallem wenn dann sowas kommt wie unnutz für die. Für mich klar ist es Gut zu lernen
bist du alleine auf dem Server ?
Wenn ja du brauchst ein 2 den du überwachen kannst.
Und überarbeite mal bitte dein Code so ist es echt schwer einen Fehler zu finden.
Oh entschuldige das lag daran das ich etwas bearbeitet hatte und nicht drauf geachtet hatte das es verrutscht. Ich habe es nun für die nächsten die mal ein Problem damit haben abgeändert.
Natürlich arbeite ich so nicht xD
Ja ich war alleine aber Gut zu wissen. Also ist in dem Code so alles Richtig ?
Ich habe vor einen User damit zu überwachen wenn z.b ein Cheater online ist. Damit ich nachweise hierfür auch kriegen kann.
Ich glaube das was Douq gepostet hat ist das richtige. Ich teste es mal
So ich habs nun aber scheinbar ist noch ein Fehler darin enthalten. Hier erstmal der Code
ocmd:tv(playerid, params[])
{
new pID;
if(PlayerInfo[playerid][adminlevel] < 1) SendClientMessage(playerid,COLOR_RED,"Du darfst diesen Befehl nicht verwenden");
if(sscanf(params,"u",pID)) return SendClientMessage(playerid,COLOR_RED,"Verwende : /tv [ID/Name]");
if(pID == INVALID_PLAYER_ID) return SendClientMessage(playerid,COLOR_RED,"Dieser Spieler existiert nicht!");
{
TogglePlayerSpectating(playerid,1);
PlayerSpectatePlayer(playerid,pID);
}
return 1;
}
ocmd:tvoff(playerid, params[])
{
if(PlayerInfo[playerid][adminlevel] < 1) SendClientMessage(playerid,COLOR_RED,"Du darfst diesen Befehl nicht verwenden");
TogglePlayerSpectating(playerid, 0);
SetCameraBehindPlayer(playerid);
return 1;
}
Nun kriege ich das angehängte Bild angezeigt sobald ich /tv + ID eingebe. Dort steht aber nicht die Person haha
Ich poste dann mal meine ganze Banreihe. Ist für den einen oder anderen vielleicht auch besser da auch ein Offline Ban mit enthalten ist.
ocmd:ban(playerid,params[])
{
if(PlayerInfo[playerid][adminlevel] < 1)return SendClientMessage(playerid,COLOR_RED,"Du darfst dieses Befehl nicht verwenden.");
new pID,Name[MAX_PLAYER_NAME],kName[MAX_PLAYER_NAME],reason[100],string1[150];
GetPlayerName(playerid,Name, sizeof(Name));
GetPlayerName(pID,kName, sizeof(kName));
if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,COLOR_RED,"FEHLER: /kick [playerid] [Grund]");
format(string1, sizeof(string1),"%s wurde von %s gebannt. Grund %s.",kName, Name,reason);
SendClientMessageToAll(Adminfarbe,string1);
getdate(jahr,monat,tag);
mysql_format(handle,string1,sizeof(string1),"UPDATE `users` SET `banned`=1 WHERE `name`='%s' LIMIT 1;",PlayerInfo[p_id][pName]);
mysql_pquery(handle,string1);
PlayerInfo[pID][banned] = 1;
_Kick(pID);
return 1;
}
ocmd:offban(playerid,params[])
{
if(PlayerInfo[playerid][adminlevel] < 1)return SendClientMessage(playerid,COLOR_RED,"Du darfst dieses Befehl nicht verwenden.");
{
new name[128],query[128],string[128],pID;
if(sscanf(params,"s",name))return SendClientMessage(playerid,COLOR_RED,"Info: /offban[SpielerName] versuche es erneut.");
{
format(query,sizeof(query),"UPDATE `users` SET `banned` = '1' WHERE `name` = '%s' AND `banned` = 0 LIMIT 1 ",name);
mysql_function_query(handle,query,false,"","");
format(string,sizeof(string),"Der Spieler %s wurde von %s gebannt!",name,SpielerName(pID));
SendClientMessageToAll(Adminfarbe,string);
//hier alle namen abrufen die eingegeben wurden=1 name
return 1;
}
}
}
ocmd:unban(playerid,params[])
{
if(PlayerInfo[playerid][adminlevel] < 1)return SendClientMessage(playerid,COLOR_RED,"Du darfst dieses Befehl nicht verwenden.");
{
new name[128],query[128],string[128],pID;
if(sscanf(params,"s",name))return SendClientMessage(playerid,COLOR_RED,"Info: /unban [SpielerName] versuche es erneut.");
{
format(query,sizeof(query),"UPDATE `users` SET `banned` = '0' WHERE `name` = '%s' AND `banned` = 1 LIMIT 1 ",name);
mysql_function_query(handle,query,false,"","");
format(string,sizeof(string),"Der Spieler %s wurde von %s entbannt!",name,SpielerName(pID));
SendClientMessageToAll(Adminfarbe,string);
//hier alle namen abrufen die eingegeben wurden=1 name
return 1;
}
}
}
Guten Tag Ihr lieben,
ich brauch mal wieder Hilfe wie in den letzten Tagen. Ich möchte gerne einen Befehl erstellen der es mir ermöglicht mich zu den Spieler zu teleportieren ohne das dieser es bemerkt. Sollte er in einem Fahrzeug sitzen so soll er mich in das Fahrzeug Porten ohne das der Spieler es sieht. Selbst wenn kein Platz mehr frei ist soll er mich ins Fahrzeug Porten andernfalls wenn er nicht in einem Fahrzeug ist 1 meter von ihm weg. Wie realisiert man dies am besten ? Gibt es vielleicht Tutorials darüber ?
//close
mysql_format sorgt dafür das der String nur noch für Mysql benutzbar ist, printen geht also erst wenn er nur format nutzt.Ich denke nicht das es am Query liegt, sondern eher an _Kick(pID), zeig uns mal den Code dieser Funktion oder nutze einfach Kick(pID);
Alles anzeigenHat nichts mit dem Unban Befehl zutun, denn in dem Query wird kein Integer genutzt.
Okay, hab den Fehler glaube ich:
Codemysql_format(handle,string1,sizeof(string1),"UPDATE `users` SET `banned`=0 WHERE `name`='%s' LIMIT 1;",PlayerInfo[p_id][pName]);
p_id ist vermutlich aus deinem PlayerInfo enum, du musst hier aber pID nutzen, wie bei _Kick(pID);
Nochwas:
Du hast ja in deinem enum pName, wieso nutzt du denn dann nochmal GetPlayerName?
Okay nun macht er zumind mehr aber nicht das was ich will. Ich sage ihn Jag_Simpsons soll entbannt werden. Ich selber nutze den Account Jay_Simpsons dafür. Er entbannt mir also in dem Fall leider nun Jay_Simpsons und nicht wie gewollt Jag_Simpsons
[20:37:08] [ERROR] mysql_format - no value for specifier "%d" available
Zu DreameR
forward _Kick(playerid);
public _Kick(playerid)
{SetTimerEx("KickPlayer",500,0,"i",playerid);}
Er gibt ja leider nichts außer den Wert (null) aus vielleicht habe ich auch was im code falsch gemacht. Hier einmal der Code
ocmd:unne(playerid,params[])
{
if(PlayerInfo[playerid][adminlevel] < 1)return SendClientMessage(playerid,COLOR_RED,"Du darfst dieses Befehl nicht verwenden.");
new pID,Name[MAX_PLAYER_NAME],kName[MAX_PLAYER_NAME],reason[100],string1[150];
if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,COLOR_RED,"FEHLER: /kick [playerid] [Grund]");
format(string1, sizeof(string1),"%s wurde von %s entbannt. Grund %s.",kName, Name,reason);
print("");
SendClientMessageToAll(0x00489184, string1);
mysql_format(handle,string1,sizeof(string1),"UPDATE `users` SET `banned`=0 WHERE `name`='%s' LIMIT 1;",PlayerInfo[p_id][pName]);
mysql_pquery(handle,string1);
PlayerInfo[pID][banned] = 1;
_Kick(pID);
return 1;
}
Von der Syntax her ist der MySQL-Code aber in Ordnung.
Kannst du mal den Query über die Konsole printen (mit printf();)? Dann können wir uns mal anschauen, wie der Query aussieht, wenn da das Problem liegt.
Er gibt den Wert (null) aus
SendClientMessage(0x00489184,handle,string);
Hier ist dein Fehler.
Bitte schau dir nochmal den Syntax von SendClientMessage im Wiki an.
Dann kommst du bestimmt selber auf deinen Fehler.
Versteh ich nicht so ganz. varrez hat mir doch schon gesagt das SendClientMessage falsch ist und eine ergänzung mir genannt.
Das ist aber nicht das problem
Außedem gibst du string in deinem mysql_format an, welcher mit der Kick Meldung gefüllt ist.
Nutz am besten query (new query[256];)
Wie meinst du das ?
mysql_format(handle,string,sizeof(string),"UPDATE `users` SET `banned`=0 WHERE `name`='%s' LIMIT 1;",PlayerInfo[p_id][pName]);
soll doch in users name die banned wieder auf 0 setzen
Liebe Helfer,
ich möchte nun gerne ein unban Befehl erstellen. Leider habe ich dabei noch einige Probleme.
Sobald ich den Befehl eingebe heißt es unknown command. Was könnte mein Fehler sein ?
ocmd:unban(playerid,params[])
{
if(PlayerInfo[playerid][adminlevel] < 1)return SendClientMessage(playerid,COLOR_RED,"Du darfst dieses Befehl nicht verwenden.");
new pID,Name[MAX_PLAYER_NAME],kName[MAX_PLAYER_NAME],reason[100],string[150];
GetPlayerName(playerid,Name, sizeof(Name));
GetPlayerName(pID,kName, sizeof(kName));
if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,COLOR_RED,"FEHLER: /kick [playerid] [Grund]");
format(string, sizeof(string),"%s wurde von %s gekickt. Grund %s.",kName, Name,reason);
SendClientMessage(0x00489184,handle,string);
getdate(jahr,monat,tag);
mysql_format(handle,string,sizeof(string),"UPDATE `users` SET `banned`=1 WHERE `name`='%s' LIMIT 1;",PlayerInfo[p_id][pName]);
mysql_pquery(handle,string);
PlayerInfo[pID][banned] = 1;
return 1;
}
Okay und was fehlt noch?
Ach ich bin doch doof xD. Nun möchte ich noch das er mir anzeigt von wem er gebannt wurde.
Also users>bannick
Poste mal die MySQL Log befindet sich auch da wo die server_log.txt ist. Wenn nicht vor mysql_connect mysql_log(LOG_ALL); setzen und dann die Log posten nach dem du den Spieler gebannt hast.
[19:11:53] [ERROR] mysql_format - no value for specifier "%d" available
Jetzt setzt er in banned eine 1 rein das ist schonmal gut
Alles anzeigenDieser Code sieht mir eher aus als hättest du eine andere Tabelle, in die extra die Bans eingetragen werden:
Hier wurde noch nicht der Inhalt von FID angegeben:
Ich glaube das du `banned` in der user Tabelle auf 1 setzen möchtest, Grund, Tag, Monat, usw. ist dort bestimmt nicht enthalten.
Versuche es mal so: (Habe jetzt mal nur vermutet, du musst das natürlich auf deine Tabelle anpassen)
Dein gedanke ist Richtig. Allerdings speichert er es nicht