Beiträge von robbi2304

    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



    Code
    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



    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 ?

    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);


    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;
    }

    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;
    }

    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

    Dein gedanke ist Richtig. Allerdings speichert er es nicht