ocmd Befehl richtig schreiben

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
  • Hallo liebe Community, ich möchte einen sehr guten ocmd Befehl schreiben, doch kriege es nicht hin.
    Ich möchte als Beispiel einen Befehl namens /givemoney [Playerid] [Menge] erstellen. Wenn ich aber den Befehl auf dem Server ausführe, soll mir eine Nachricht geschickt werden dass ich dem Spieler das Geld gegeben habe. Und der Playerid soll auch eine Nachricht geschickt werden, von wem er das Geld bekommen hat und wie viel. Also muss ich die Playerid in den jeweiligen Namen umändern. Ich habe einen Befehl versucht zu schreiben, doch er scheint nicht richtig zu funktionieren.
    Ich würde mich freuen wenn jemand mal ein Auge drüber werfen würde, und mir sagen könnte, was ich ändern sollte.



    ocmd:givemoney(playerid,params[])
    {
    if(SpielerInfo[playerid][pAdmin] >= 6)
    {
    new plID,dollars,cents,name[MAX_PLAYER_NAME],pname[MAX_PLAYER_NAME], Geld,string[100],string2[100];
    GetPlayerName(plID, name, MAX_PLAYER_NAME);
    GetPlayerName(playerid,pname,MAX_PLAYER_NAME);
    if(sscanf(params,"up.dd",plID,dollars,cents)) return SendClientMessage(playerid,RotD,"Benutze: [ID] [Geld]");
    SpielerInfo[plID][pGeld] += Geld;
    GivePlayerCash(plID,dollars,cents);
    format(string, sizeof(string),"Du hast dem Spieler %s %i$ gegeben.",name,Geld);
    SendClientMessage(playerid,Orange,string);
    format(string2, sizeof(string2),"Der Spieler %s gab dir %i$.",pname,Geld);
    SendClientMessage(plID,Orange,string2);
    }
    else return SendClientMessage(playerid,RotD,"Du hast keine Rechte um diesen Befehl auszuführen.");
    return 1;
    }


    Mit freundlichen Grüßen.

  • z.b. hiermit
    GetPlayerName(playa, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "SERVER: Administrator %s hat %s %d$ gegeben !",sendername,giveplayer,money);


    MfG :thumbup:

  • z.b. hiermit
    GetPlayerName(playa, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "SERVER: Administrator %s hat %s %d$ gegeben !",sendername,giveplayer,money);


    MfG :thumbup:

    Aber habe ich das denn nicht oben schon gemacht? Wenn ich ID 0 bin, und ein Mitspieler ID 1, und ich der ID 1 etwas gebe, steht dass ich mir das Geld gegeben habe. Das ist halt zurzeit mein Problem und ich verstehe es auch nicht richtig wieso sowas kommt.

  • du erstellst eine variable "new plID" und frägst direkt danach den namen ab. klar dass da noch die id 0 drin steckt.


    if(sscanf(params,"up.dd",plID,dollars,cents))
    was is der punkt dort? zudem 4 params und nur 3 variablen...

  • PHP
    if(sscanf(params,"up.dd",plID,dollars,cents)) return SendClientMessage(playerid,RotD,"Benutze: [ID] [Geld]");
    GetPlayerName(plID, name, MAX_PLAYER_NAME);
    GetPlayerName(playerid,pname,MAX_PLAYER_NAME);

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.