Beiträge von Buschmensch

    Serwus Breadfish!


    Hier zeige ich euch, wie ihr mit OCMD Befehle erstellen und auch ausführen könnt. Was wir als erstes brauchen ist das OCMD Include, klick.Wenn ihr dies habt, packt ihr das in euren Include's Ordner. So nun gehen wir nach oben ins Script zu den ganzen Includes, dann machen wir
    #include <ocmd>


    Wenn dies geschafft ist können wir irgendwo im Script anfangen diese OCMD Befehle zu scripten. Am sinnvollsten wäre es ÜBER public OnPlayerCommandText(). Nun machen wir mal einen /goto Befehl. Jetzt erstmal das "Grundgerüst", jeder sollte es sich so gut wie möglich merken.
    ocmd:goto(playerid,params[])// ocmd ist der "Erzeuger" des Befehls, goto ist der Befehl, playerid ist klar, params ist das was alles hinter dem Befehl steht. Wichtig : ocmd:goto , niemals das : vergessen!
    {
    return 1;// nicht vergessen!
    }


    Nun fangen wir an den Befehl richtig zu scripten. Als erstes wird immer die Variable definiert, das machen wir dann so :
    ocmd:goto(playerid,params[])// ocmd ist der "Erzeuger" des Befehls, goto ist der Befehl, playerid ist klar, params ist das was alles hinter dem Befehl steht. Wichtig : ocmd:goto , niemals das : vergessen!
    {
    new pID; // pID ist die Variable des anderen Spielers( du bist playerid, der andere ist pID) , am ende immer das ; hinmachen
    return 1;// nicht vergessen!
    }


    Nun brauchen wir eine Admin- oder Supporter Abfrage, jeder hat es wahrscheinlich anders, also passt die Abfrage an euer Script an.
    ocmd:goto(playerid,params[])// ocmd ist der "Erzeuger" des Befehls, goto ist der Befehl, playerid ist klar, params ist das was alles hinter dem Befehl steht. Wichtig : ocmd:goto , niemals das : vergessen!
    {
    new pID; // pID ist die Variable des anderen Spielers( du bist playerid, der andere ist pID) , string ist die nachricht die ausgesendet wird. man kann auch andere namen verwenden. am ende immer das ; hinmachen
    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,Rot,"Du bist kein Admin!");// if(!isPlayer... ist die Abrage (playerid,1)) bedeutet das er die playerid abfragt und den rang abfragt in meinem fall wäre es rang 1
    return 1;// nicht vergessen!
    }


    Jetzt erstellen wir eine Sscanf Abrage, den Sscanf Code müsst ihr irgendwo in euer Script reinkopieren, am besten wäre es ganz unten. Hier den Sscanf Code : klick. Jetzt müssen wir eine Sscanf Abfrage machen. Die Sscanf Abfrage überprüft ob alle Parameter (=params) angegeben wurden. Also z.B. wenn jemand nur /goto eingibt, dass gleich eine Errormeldung kommt. Wie z.B. "Fehler: /goto [ID]" da man vergessen hat die ID einzugeben. Und so machen wir das :
    ocmd:goto(playerid,params[])
    {
    new pID;
    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,Rot,"Du bist kein Admin!");
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,Hellblau,"Benutzung: /goto [ID]");
    return 1;
    }
    Erklärung :
    - sscanf ist die Abfrage an sich
    - params sind die einzelnen Parameter
    - "u" ist die ID oder "PartOfName" von der pID
    - pID beinhaltet das "u"
    - return SendClientMessage..... bedeutet das wenn er nicht alles angegeben hat, das eine Errormeldung kommt mit einem Hinweis.


    Nun müssen wir die Position des Spielers ermitteln, und das müssen wir definieren und zwar so:
    ocmd:goto(playerid,params[])
    {
    new pID;
    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,Rot,"Du bist kein Admin!");
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,Hellblau,"Benutzung: /goto [ID]");
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(pid,X,Y,Z);
    return 1;
    }
    Erklärung :
    - Float:X ... sind die Koordinaten die das Script herausfinden soll.
    - GetPlayerPos... so werden die Koordinaten ermittelt und man zum Admin geportet wird, wichtig ist es das gleiche wie in der Definition anzugeben : X,Y,Z (Rechtschreibung FTW!)


    Wenn ihr das alles habt ist der Befehl so gut wie fertig. Natürlich können wir noch eine Nachricht ausgeben. Dazu gehen wir wieder nach oben zu unserem Befehl und machen nach "new pID;" : "new pID, string[128];
    Wenn ihr das habt müssen wir die Farbe definieren, da das nicht in Pawn vorgefertigt ist. Das machen wir mit einem SA:MP ColorPicker, link. Wenn ihr eine Farbe ausgewählt habt z.B. Hellblau müssen wir das oben bei diesen ganzen Includes definieren. und zwar gehen wir nach ben ins Script und machen z.B. #define Hellblau 0x00A5FFFF Dann müsste das so aussehen :

    ocmd:goto(playerid,params[])
    {
    new pID, string[128];
    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,Rot,"Du bist kein Admin!");
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,Hellblau,"Benutzung: /goto [ID]");
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(pID,X,Y,Z);
    SetPlayerPos(playerid,X,Y,Z);
    new Interior = GetPlayerInterior(pID);
    SetPlayerInterior(playerid, Interior);
    format(string,sizeof(string),"Admin %s hat sich zu dir geportet.",SpielerName(playerid));
    SendClientMessage(pID,Hellblau,string);
    return 1;
    }
    Erklärung :
    - #define bedeutet das wir etwas definieren wollen, in diesem Fall eine Farbe, also machen wir #define [FarbenName] [Code]
    - string[128]; die 128 ist die Länge des Textes.
    - SetPlayerPos.... bedeutet das der Admin zu dem Spieler geportet wird.
    - Interior = GetPlayer... und SetPlayerInteror.... bedeuten einfach das dieses Interior definiert wird und mit SetPlayerInterior ausgegeben wird, falls man durch den Boden fliegt oder ähnliches.
    - format bedeutet das wir diesen string den wir oben angegeben haben formatieren wollen.
    - string ist das was wir oben angegeben haben, es kann auch eine andere Bezeichnung wie z.B. "Text" oder so haben.
    - sizeof bedeutet das diese Nachricht auf die Größe des string's formatiert wird , also auf die Größe von [128]
    - %s ist die Angabe des Namens eines Spielers oder Bots oder sowas. Es gibt noch %i und %d, das ist aber was anderes.
    - SpielerName(playerid) ist eine Function mit der man den Namen eines Spielers ermitteln kann, natürlich ist diese Function nicht vorgefertigt in Pawno! Die müsst ihr euch mit einem sogenannten "stock" machen, und zwar fügt ihr dies irgendwo im Script ein : stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }

    - SendClientMessage(pID,Hellblau,string); so wird der string den wir oben formatiert haben ausgesendet. Mann muss darauf achten, wem man die Nachricht aussendet, in diesem Fall wollen wir die Nachricht dem anderen Spieler aussenden also die pID, wenn ihr playerid angebt, wird die Nachricht an euch versendet.


    So dies wars! Es kann sein das einige Fehler auftreten werden, bitte postet sie unter dem Beitrag, ich werde euch helfen. Dann sollte so der Befehl insgesamt aussehn :
    ocmd:goto(playerid,params[])
    {
    new pID, string[128];
    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,Rot,"Du bist kein Admin!");
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,Hellblau,"Benutzung: /goto [ID]");
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(pid,X,Y,Z);
    SetPlayerPos(playerid,X,Y,Z);
    new Interior = GetPlayerInterior(pID);
    SetPlayerInterior(playerid, Interior);
    format(string,sizeof(string),"Admin %s hat sich zu dir geportet.",SpielerName(playerid));
    SendClientMessage(pID,Hellblau,string);
    return 1;
    }


    Mit Freundlichen Grüßen
    __________________________________________________


    -S-...kill.exe<3_ftw


    // Edit : Befehl verbessert.
    // Edit2 : Interior hinzugefügt.
    // Edit3 : Rechtschreibung verbessert.

    Okay keine Errors & Warnings.


    Funkt. das so? :
    ocmd:o(playerid,params[])
    {
    new string[128], nachricht[128], sender;
    if(sscanf(params,"s",nachricht)) return SendClientMessage(playerid,Hellblau,"Benutze: /o [Deine Nachricht]");
    if(GetPVarInt(playerid,"Muted")) return SendClientMessage(playerid,Rot,"Du hast Redeverbot!");
    GetPlayerName(playerid, string, MAX_PLAYER_NAME);
    if(isPlayerAnAdmin(playerid,1)) format(string,sizeof(string),"(( *%d Admin %s: %s ))",GetPVarInt(playerid,"Adminlevel"),string,nachricht);//Error
    else if(isPlayerAnSupporter(playerid,1)) format(string,sizeof(string),"(( *%d Supporter %s: %s ))",GetPVarInt(playerid,"Supporterlevel"),string,nachricht);
    else format(string,sizeof(string),"(( %s: %s ))",sender,nachricht);
    SendClientMessageToAll(Gruen,string);
    return 1;
    }


    Bitte um schnelle Antwort.

    IntelligenT Ne bringt nichts...


    Deadmau5 ocmd:o(playerid,params[])
    {
    new string[128],string2[128],string3[128],nachricht[128],sender[MAX_PLAYER_NAME];
    if(sscanf(params,"s",nachricht))return SendClientMessage(playerid,Hellblau,"Benutze: /o [Deine Nachricht]");
    if(GetPVarInt(playerid,"Muted")==1)return SendClientMessage(playerid,Rot,"Du hast Redeverbot!");
    if(isPlayerAnAdmin(playerid,1))
    {
    format(string2,sizeof(string2),"(( *%d Admin %s: %s ))",GetPVarInt(playerid,"Adminlevel"),SpielerName(sender),nachricht);//Error
    SendClientMessageToAll(Gruen,string2);
    }
    else if(isPlayerAnSupporter(playerid,1))
    {
    format(string3,sizeof(string3),"(( *%d Supporter %s: %s ))",GetPVarInt(playerid,"Supporterlevel"),SpielerName(sender),nachricht);//Error
    SendClientMessageToAll(Gruen,string3);
    }
    else
    {
    GetPlayerName(playerid, sender, sizeof(sender));
    format(string,sizeof(string),"(( %s: %s ))",sender,nachricht);
    SendClientMessageToAll(Gruen,string);
    }
    return 1;
    }


    // Edit : Die Abfragen :
    stock isPlayerAnAdmin(playerid,rang)
    {
    if(GetPVarInt(playerid,"Adminlevel")>=rang)return 1;
    return 0;
    }


    stock isPlayerAnSupporter(playerid,rang)
    {
    if(GetPVarInt(playerid,"Supporterlevel")>=rang)return 1;
    return 0;
    }

    Wieso nicht kenne?
    Da sind meine LoadAccount usw..
    stock Register(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"Accounts/%s.ini",name);
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",key);
    SendClientMessage(playerid,Gelb,"____________________NewYorkCityReallife___________________");
    SendClientMessage(playerid,Gruen,"Du hast dich erfolgreich auf NYCR registriert, Willkommen!");
    SendClientMessage(playerid,Gruen,"Gebe /help ein um alle Befehle zu sehen.");
    SendClientMessage(playerid,Gruen,"Falls du Fragen hast benutze /report.");
    SendClientMessage(playerid,Gruen,"Viel Spaß und Erfolg wünscht dir das NYCR Team!");
    SendClientMessage(playerid,Gelb,"__________________________________________________________");
    SetPlayerScore(playerid,0);
    dini_IntSet(Spielerdatei,"Adminlevel",0);
    dini_IntSet(Spielerdatei,"Supporterlevel",0);
    dini_IntSet(Spielerdatei,"Fraktion",0);
    dini_IntSet(Spielerdatei,"Tazer",0);
    dini_IntSet(Spielerdatei,"Wanted",0);
    dini_IntSet(Spielerdatei,"Baned",0);
    dini_IntSet(Spielerdatei,"PayDay",0);
    dini_IntSet(Spielerdatei,"Monate",0);
    dini_IntSet(Spielerdatei,"Warnings",0);
    dini_IntSet(Spielerdatei,"LeaderDerFraktion",0);
    dini_IntSet(Spielerdatei,"AFK",0);
    dini_IntSet(Spielerdatei,"PremiumAccount",0);
    dini_IntSet(Spielerdatei,"Muted",0);
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }


    stock Login(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"Accounts/%s.ini",name);
    if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
    {
    LoadAccount(playerid);
    SendClientMessage(playerid,Gelb,"____________________NewYorkCityReallife___________________");
    SendClientMessage(playerid,Gruen,"Du hast dich erfolgreich auf NYCR eingeloggt, Willkommen!");
    SendClientMessage(playerid,Gruen,"Gebe /help ein um alle Befehle zu sehen.");
    SendClientMessage(playerid,Gruen,"Falls du Fragen hast benutze /report.");
    SendClientMessage(playerid,Gruen,"Viel Spaß und Erfolg wünscht dir das NYCR Team!");
    SendClientMessage(playerid,Gelb,"__________________________________________________________");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,Hellblau,"Du hast ein falsches Passwort eingegeben!");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Log In Vorgang","Dein Account wurde in unserer Datenbank gefunden!\nBitte gib nun dein Passwort ein!\nSolltest du es vergessen haben, melde dich im Forum!","Log In","Abbrechen");
    return 1;
    }
    }


    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"Accounts/%s.ini",name);
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPlayerSkin(playerid,dini_Int(Spielerdatei,"Skin"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPVarInt(playerid,"Supporterlevel",dini_Int(Spielerdatei,"Supporterlevel"));
    SetPVarInt(playerid,"Fraktion",dini_Int(Spielerdatei,"Fraktion"));
    SetPVarInt(playerid,"PayDay",dini_Int(Spielerdatei,"PayDay"));
    SetPVarInt(playerid,"Monate",dini_Int(Spielerdatei,"Monate"));
    SetPVarInt(playerid,"Tazer",dini_Int(Spielerdatei,"Tazer"));
    SetPVarInt(playerid,"Wanted",dini_Int(Spielerdatei,"Wanted"));
    SetPlayerWantedLevel(playerid, GetPVarInt(playerid, "Wanted"));
    SetPVarInt(playerid,"Warnings",dini_Int(Spielerdatei,"Warnings"));
    SetPVarInt(playerid,"LeaderDerFraktion",dini_Int(Spielerdatei,"LeaderDerFraktion"));
    SetPVarInt(playerid,"AFK",dini_Int(Spielerdatei,"AFK"));
    SetPVarInt(playerid,"PremiumAccount",dini_Int(Spielerdatei,"PremiumAccount"));
    SetPVarInt(playerid,"Muted",dini_Int(Spielerdatei,"Muted"));
    SetPVarInt(playerid,"Baned",dini_Int(Spielerdatei,"Baned"));
    if(GetPVarInt(playerid,"Baned")==1)
    {
    SendClientMessage(playerid,Rot,"Du bist vom Server gebannt!");
    SendClientMessage(playerid,Rot,"Falls du zu Unrecht gebannt wurdest, melde dies im Forum!");
    Kick(playerid);
    }
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }


    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"Accounts/%s.ini",name);
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Skin",GetPlayerSkin(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Supporterlevel",GetPVarInt(playerid,"Supporterlevel"));
    dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(Spielerdatei,"PayDay",GetPVarInt(playerid,"PayDay"));
    dini_IntSet(Spielerdatei,"Monate",GetPVarInt(playerid,"Monate"));
    dini_IntSet(Spielerdatei,"Tazer",GetPVarInt(playerid,"Tazer"));
    dini_IntSet(Spielerdatei,"Wanted",GetPVarInt(playerid,"Wanted"));
    dini_IntSet(Spielerdatei,"Warnings",GetPVarInt(playerid,"Warnings"));
    dini_IntSet(Spielerdatei,"LeaderDerFraktion",GetPVarInt(playerid,"LeaderDerFraktion"));
    dini_IntSet(Spielerdatei,"AFK",GetPVarInt(playerid,"AFK"));
    dini_IntSet(Spielerdatei,"PremiumAccount",GetPVarInt(playerid,"PremiumAccount"));
    dini_IntSet(Spielerdatei,"Muted",GetPVarInt(playerid,"Muted"));
    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
    }
    return 1;
    }


    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }

    Okey danke IntelligenT!


    Jetzt kommen 2 Errors :
    Zeile (2723) : error 035: argument type mismatch (argument 1)
    Zeile (2728) : error 035: argument type mismatch (argument 1)


    2 Errors, 0 Warnungen
    Du hast Errors im Skript. Kompilierung abgebrochen


    PWNMod Compiler Version 1.2
    (c) Trooper[Y]
    In Kooperation mit GTA-Servers.de



    BEfehl :
    ocmd:o(playerid,params[])
    {
    new string[128],string2[128],string3[128],nachricht,sender[MAX_PLAYER_NAME];
    if(sscanf(params,"s",nachricht))return SendClientMessage(playerid,Hellblau,"Benutze: /o [Deine Nachricht]");
    if(GetPVarInt(playerid,"Muted")==1)return SendClientMessage(playerid,Rot,"Du hast Redeverbot!");
    {
    GetPlayerName(playerid, sender, sizeof(sender));
    format(string,sizeof(string),"(( %s: %s ))",sender,nachricht);
    SendClientMessageToAll(Gruen,string);
    }
    if(isPlayerAnAdmin(playerid,1))
    {
    format(string2,sizeof(string2),"(( *%d Admin %s: %s ))",GetPVarInt(playerid,"Adminlevel"),SpielerName(sender),nachricht);//Eror
    SendClientMessageToAll(Gruen,string2);
    }
    if(isPlayerAnSupporter(playerid,1))
    {
    format(string3,sizeof(string3),"(( *%d Supporter %s: %s ))",GetPVarInt(playerid,"Supporterlevel"),SpielerName(sender),nachricht);//Error
    SendClientMessageToAll(Gruen,string3);
    }
    return 1;
    }


    // Edit 1 : Beitrag erweitert
    //Edit2 : Error Meldung angehengt
    //Edit 3: Errozeile

    Serwus Breadfish!


    Ich habe Probleme mit meinem /o Chat Befehl...
    Hoffe jemand kann mir weiterhelfen...
    Wäre echt toll wenn das jemand tuen könne.


    Code :
    ocmd:o(playerid,params[])
    {
    new string[128],string2[128],string3[128],nachricht,sender[MAX_PLAYER_NAME];
    if(sscanf(params,"s",nachricht))return SendClientMessage(playerid,Hellblau,"Benutze: /o [Deine Nachricht]");
    if(GetPVarInt(playerid,"Muted")==1)return SendClientMessage(playerid,Rot,"Du hast Redeverbot!");
    {
    GetPlayerName(playerid, sender, sizeof(sender));
    format(string,sizeof(string),"(( %s: %s ))",sender,nachricht);
    SendClientMessageToAll(Gruen,string);
    }
    else if(isPlayerAnAdmin(playerid,1))// Errozeile
    {
    format(string2,sizeof(string2),"(( *%d Admin %s: %s ))",GetPVarInt(playerid,"Adminlevel"),SpielerName(sender),nachricht);
    SendClientMessageToAll(Gruen,string2);
    }
    else if(isPlayerAnSupporter(playerid,1))
    {
    format(string3,sizeof(string3),"(( *%d Supporter %s: %s ))",GetPVarInt(playerid,"Supporterlevel"),SpielerName(sender),nachricht);// Errorzeile
    SendClientMessageToAll(Gruen,string3);
    }
    return 1;
    }



    Errors :


    Zeile (2719) : error 029: invalid expression, assumed zero
    Zeile (2719) : warning 215: expression has no effect
    Zeile (2719) : error 001: expected token: ";", but found "if"
    Zeile (2721) : error 035: argument type mismatch (argument 1)
    Zeile (2726) : error 035: argument type mismatch (argument 1)


    4 Errors, 1 Warnungen
    Du hast Errors im Skript. Kompilierung abgebrochen


    PWNMod Compiler Version 1.2
    (c) Trooper[Y]
    In Kooperation mit GTA-Servers.de


    Mfg


    //Edit: Errorzeile