Ich bedanke mich für eure Hilfe.
Gruß Dario
Ich bedanke mich für eure Hilfe.
Gruß Dario
Hallo
Wollte einen /clear Befehl machen. Den Grund für das Wanted trage ich in meine mysql-Datenbank ein.
ocmd:clear(playerid,params[])
{
printf("[%s] /clear %s",SpielerInfo[playerid][pName],params);
new string[512], pID;
if(mysql_GetInt("userdata", "Fraktion", "Name", SpielerInfo[playerid][pName]) == 1 || mysql_GetInt("userdata", "Fraktion", "Name", SpielerInfo[playerid][pName]) ==2 ||
mysql_GetInt("userdata", "Fraktion", "Name", SpielerInfo[playerid][pName]) ==3 || mysql_GetInt("userdata", "Fraktion", "Name", SpielerInfo[playerid][pName]) ==18)
{
if(sscanf(params,"us",pID, string))return SendClientMessage(playerid,farbe_blau,"/clear [ID] [Grund]");
if(mysql_GetInt("userdata", "duty", "Name", SpielerInfo[playerid][pName]) == 1)
{
if(mysql_GetInt("polizeicomputer", "w1", "Verbrecher", SpielerInfo[pID][pName]) == 1)
{
new grund[512];
grund = mysql_GetString("polizeicomputer", "wanted1", "Verbrecher", SpielerInfo[pID][pName]);
if(string == grund)
{
SendClientMessage(playerid,farbe_rot,"Das stimmt :)");
}
}
}
}
return 1;
}
Mein Problem ist jetzt allerdings, dass er mir bei der Zeile
if(string == grund)
den Fehler bringt:
Wie kann ich das beheben, dass er mir die 2 Strings vergleicht und mir dann das Wanted cleart (muss noch eingefügt werden), falls der Grund und der eingegebene String übereinstimmen.
Gruß Dario
/edit: Einrückungen bearbeitet
Hallo
Brauche einmal Hilfe bei meinem Ban-Befehl:
ocmd:ban(playerid,params[])
{
printf("[%s] /ban %s",SpielerInfo[playerid][pName],params);
if(mysql_GetInt("userdata", "AdminLevel", "Name", SpielerInfo[playerid][pName]) <2)
return SendClientMessage(playerid,farbe_rot,"Du bist kein Admin!");
new pID,reason[128],string[128];
if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,farbe_blau,"/ban [ID] [Grund]");
format(string,sizeof(string),"AdmCmd: %s wurde von %s gebannt. Grund: %s.",SpielerInfo[pID][pName],SpielerInfo[playerid][pName],reason);
SendAdminMessage(farbe_rot,string);
format(string,sizeof(string),"AdmCmd: Du wurdest von %s gebannt. Grund: %s.",SpielerInfo[playerid][pName],reason);
SendClientMessage(pID,farbe_rot,string);
mysql_SetInt("userdata", "ban", 2, "Name", SpielerInfo[pID][pName]);
mysql_SetString("userdata", "banadmin", SpielerInfo[playerid][pName], "Name", SpielerInfo[pID][pName]);
mysql_SetString("userdata", "bangrund", reason, "Name", SpielerInfo[pID][pName]);
Kick(pID);
return 1;
}
Mein Problem ist hier, dass er mich zwar kickt und auch die Meldungen kommen (SendClientMessage und SendAdminMessage), allerdings trägt er nichts in die Datenbank ein (bei "ban" die 2, banadmin, bangrund). Kann mir jemand helfen?
Gruß Dario
/edit: PAWN-Code korrigiert (Einrückungen)
Hatte sie ja davor mit AddStaticVehicleEx (....................,-1);
Aber da hatte ich dasselbe problem !
LG
Dann musst du trotzdem die letzte Zahl ändern. Standard steht dort ne 15 (glaub ich). Die musst du höher setzen und dann sollte es gehen.
Gruß Dario
Alles anzeigenDa auch dort MySQL läuft ist der Übeltäter wohl gefunden..
Weiter helfen kann ich dir dabei allerdings nicht, hab noch mit MySQL noch nicht soweit gearbeitet, dass ich dir da helfen könnte.
Immerhin weißt du nun wo der Übeltäter ist, vielleicht hilfts ja.
Jo hilft, werd alle mysql-Abfragen rausnehmen müssen.
Ich bedanke mit für deine Hilfe
Gruß Dario
Ersetze mal rein testweise den MYSQL Parameter in Zeile 23 durch "1" oder so - nur um zu sehen, ob das der Auslöser ist.
Hab die mysql-Abfrage raus genommen und eine 1 eingesetzt und er geht eine Zeile weiter. Bis Zeile 23, danach ist Schluss.
Gut, dann die Radikalkur:
Setze mal hinter jede (!) Zeile im Command ein print("Zahl"), wobei du Zahl auch als Ziffer schreibst und bei jeder Zeile um eins erhöhst, damit wir wissen, bis zu welchem Punkt der Command überhaupt ausgeführt wird.
Zeile 22 macht er noch, danach ist Schluss.
Gruß Dario
Steht auch nichts im Log?
Gibts eigentlich Warnings im Script? So wie du die Strings in den Zeilen 9-13 behandelst dürfte doch da gar nix compilen :o
In der Log steht nichts und es gibt auch keine Warnings im Script beim compilen.
/Edit: Die Zeilen 9-13 (also job1-job4) sind weiter oben genauer erklärt, was das für welche sind. Der soll die nur dann dort einfügen (also Variable job)
Setz mal ein printf("%s",fullstr); in Zeile 35.
Da steht dann nicht in der Console, wenn ich dann einbaue. InGame kommt weiterhin Server: Unkown Command.
Gruß Dario
Hallo
bräuchte mal Hilfe bei meinem /stats-Befehl mit ShoPlayerDialog:
if(strcmp(cmdtext,"/stats",true)==0)
{
LoadPlayer(playerid);
new job[64];
new Float:health;
GetPlayerHealth(playerid,health);
switch(mysql_GetInt("userdata", "Beruf", "Name", SpielerInfo[playerid][pName]))
{
case 0:(job="Arbeitslos");
case 1:(job=job1);
case 2:(job=job2);
case 3:(job=job3);
case 4:(job=job4);
}
//1.Reihe
new string_kopf[32];
new string1[128], string2[128], string3[128], string4[128], string5[128], string6[128];
new string7[128], string8[128], string9[128], string10[128], string11[128], string12[128];
new fullstr[2048];
format(string_kopf,sizeof(string_kopf),"Stats von %s",SpielerInfo[playerid][pName]);
format(string1,sizeof(string1),"[[Statistik über deinen Account]]");
format(string2,sizeof(string2),"Level: %i Geld: %i Telefon: %i",SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pGeld], mysql_GetInt("userdata", "Telefonnummer", "Name", SpielerInfo[playerid][pName]));
format(string3,sizeof(string3),"Verwarnungen: %i AdminLevel: %s Bank: %i",mysql_GetInt("userdata", "Warn", "Name", SpielerInfo[playerid][pName]),SpielerInfo[playerid][pAdminLevel],mysql_GetInt("userdata", "Bank", "Name", SpielerInfo[playerid][pName]));
format(string4,sizeof(string4),"");
format(string5,sizeof(string5),"[[Beruf]]",SpielerInfo[playerid][pName]);
format(string6,sizeof(string6),"Fraktion: %s Rang: %s Beruf: %s",Fraktion(playerid),FraktionsRang(playerid),job);
format(string7,sizeof(string7),"");
format(string8,sizeof(string8),"[[Besitz]]",SpielerInfo[playerid][pName]);
format(string9,sizeof(string9),"Haus: %s",mysql_GetString("haus", "Standort", "Besitzer", SpielerInfo[playerid][pName]));
format(string10,sizeof(string10),"");
format(string11,sizeof(string11),"[[Verbrechen]]",SpielerInfo[playerid][pName]);
format(string12,sizeof(string12),"Kills: %i Tode: %i WantedLevel: %i",SpielerInfo[playerid][pKills],SpielerInfo[playerid][pTode],mysql_GetInt("userdata", "WantedLevel", "Name", SpielerInfo[playerid][pName]));
format(fullstr,sizeof(fullstr),"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s",string1,string2,string3,string4,string5,string6,string7,string8,string9,string10,string11,string12);
ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"string_kopf","fullstr","Schließen","");
return 1;
}
Errors kommen allerdings keiner. InGame kommt dann allerdings nur Server: Unkown Command. Kann mir jemand helfen?
Gruß Dario
Es gibt da denke ich mehrere Möglichkeiten.
z.B. könnte man wenn jmd. ins Jail kommt die Uhrzeit speichern.
Beim ausloggen wird dann errechnet wie viel Zeit vergangen ist.
Dies wird mit GetTickCount() gemacht.
Und das GettickCount() füg ich wo ein? In den Timer oder in OnPlayerDisconnect?
Hallo
hab mal eine Frage: Wie kann ich einen Timer (SetTimer) auslesen, d.h. wie kann ich die Zeit raus bekommen, die jetzt noch runtergezählt werden müsste.
Mein Beispiel:
Ich stecke jemanden ins Prison mit dem /arrest. Dabei geb ich eine Zeit an, die mit einem Timer runter gezählt wird. Das Problem der Spieler loggt sich aus. Jetzt müsste man den Timer halt auslesen und in die Datenbank eingetragen werden. Wenn der Spieler sich wieder einloggt, dann sollte die Restzeit aus der Datenbank ausgelesen und in den Timer wieder eingelesen werden und der Timer sollte wieder starten. Wie kann ich machen?
Gruß Dario
habs gestern noch hinbekommen, danke ;D trotzdem
ok wusste ich nicht
Meines erachtens ist das im Interior?
wenn ja musst du mit "SetPlayerInterior(playerid,ID);" das Interior festlegen.
Gruß Dario
/push
Kann mir keiner helfen?
Mein 2. Problem konnte gelöst werden. Allerdings hab ich noch keine Ahnung wie ich das mit dem IsPlayerInArea lösen kann.
Wenn ich das so einfüge, kommen bei mir folgende Fehler:
CodeAlles anzeigenC:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1637) : error 025: function heading differs from prototype C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1638) : error 021: symbol already defined: "IsPlayerInArea" C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1639) : warning 219: local variable "X" shadows a variable at a preceding level C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1639) : warning 219: local variable "Y" shadows a variable at a preceding level C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1639) : warning 219: local variable "Z" shadows a variable at a preceding level C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1640) : error 035: argument type mismatch (argument 2) C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1641) : warning 213: tag mismatch C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1641) : warning 213: tag mismatch C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1641) : warning 213: tag mismatch C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1641) : warning 213: tag mismatch C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1639) : warning 203: symbol is never used: "Z" C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1639) : warning 203: symbol is never used: "Y" C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1639) : warning 203: symbol is never used: "X"
Kann mir jemand helfen?
Du musst bei 'pFraktionID' auch die jeweilige ID der Fraktion eintragen, der die Nachricht geschickt werden soll, z.B. 4.
Es soll ja für jede Fraktion einen eigenen Chat geben.
Alles anzeigenWas ist denn euer Problem, ist doch ganz einfach:
public SendFamilyMessage(color, string[],Family)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(SpielerInfo[i][pFraktion] == Family)
{
SendClientMessage(i, color, string);
}
}
}
}
Verwendung:
Da kommt dann inGame gar nichts, da er pFraktionID nicht kennt (is ja glaub ich über dini oder so) und ich arbeite mit mysql. Wie kann ich das hier umschreiben, damit ich das auch mit mysql benutzen kann.
Alles anzeigenMIt
IsPlayerInArea
der stock dafür lautet:
stock IsPlayerInArea(playerid, Float:max_x, Float:min_x, Float:max_y, Float:min_y)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X <= max_x && X >= min_x && Y <= max_y && Y >= min_y) return 1;
return 0;
}
Wenn du ein Tool brauchst, womit du die Arenen "bestimmten" kannst meld dich per PN!
Wenn ich das so einfüge, kommen bei mir folgende Fehler:
C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1637) : error 025: function heading differs from prototype
C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1638) : error 021: symbol already defined: "IsPlayerInArea"
C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1639) : warning 219: local variable "X" shadows a variable at a preceding level
C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1639) : warning 219: local variable "Y" shadows a variable at a preceding level
C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1639) : warning 219: local variable "Z" shadows a variable at a preceding level
C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1640) : error 035: argument type mismatch (argument 2)
C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1641) : warning 213: tag mismatch
C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1641) : warning 213: tag mismatch
C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1641) : warning 213: tag mismatch
C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1641) : warning 213: tag mismatch
C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1639) : warning 203: symbol is never used: "Z"
C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1639) : warning 203: symbol is never used: "Y"
C:\Users\Sven\Desktop\samp-server\gamemodes\freeway.pwn(1639) : warning 203: symbol is never used: "X"
Alles anzeigen
Kann mir jemand helfen?
Hallo
ocmd:engine(playerid,params[])
{
new a = GetPlayerVehicleID(playerid);
new vid,engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vid,engine, lights, alarm, doors, bonnet, boot, objective);
if(engine == 0 && IsPlayerDriver(playerid))
{
engine = 1;
SendClientMessage(playerid,COLOR_WHITE,"Motor wird gestartet ...");
SetVehicleParamsEx(a,engine, lights, alarm, doors, bonnet, boot, objective);
}
else if(engine == 1 && IsPlayerDriver(playerid))
{
engine = 0;
SendClientMessage(playerid,COLOR_WHITE,"Motor ausgeschaltet.");
SetVehicleParamsEx(a,engine, lights, alarm, doors, bonnet, boot, objective);
}
return 1;
}
ocmd:lights(playerid,params[])
{
new a = GetPlayerVehicleID(playerid);
new vid,engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vid,engine, lights, alarm, doors, bonnet, boot, objective);
if(lights == 0 && IsPlayerDriver(playerid))
{
lights = 1;
SetVehicleParamsEx(a,engine,lights, alarm, doors, bonnet, boot, objective);
}
else if(lights == 1 && IsPlayerDriver(playerid))
{
lights = 0;
SetVehicleParamsEx(a,engine, lights, alarm, doors, bonnet, boot, objective);
}
return 1;
}
ocmd:lock(playerid,params[])
{
new a = GetPlayerVehicleID(playerid);
new vid,engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vid,engine, lights, alarm, doors, bonnet, boot, objective);
if(doors == 0 && IsPlayerDriver(playerid))
{
doors = 1;
SendClientMessage(playerid,COLOR_WHITE,"Fahrzeug abgeschlossen");
SetVehicleParamsEx(a,engine, lights, alarm, doors, bonnet, boot, objective);
}
else if(doors == 1 && IsPlayerDriver(playerid))
{
doors = 0;
SendClientMessage(playerid,COLOR_WHITE,"Fahrzeug aufgeschlossen");
SetVehicleParamsEx(a,engine, lights, alarm, doors, bonnet, boot, objective);
}
return 1;
}
Was muss ich beim diesen 3 Befehlen ändern, dass ich sie untereinander benutzen kann.
Mein Problem liegt daran, dass wenn ich /engine eingebe, zwar der Motor startet, allerdings wenn ich dazu dann noch /lights oder /lock eingebe, gehen die Lichter an bzw. wird das Fahrzeug abgeschlossen, allerdings geht dann auch der Motor aus. Wie kann ich dieses Problem lösen?
Gruß Dario