Gangjail Befehl mit OCMD

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
  • Nabend Breadfishler,


    Ich war dabei mit OCMD einen Gangjail Befehl zu erstellen der zur zeit so aussieht:


    ocmd:gangjail(playerid, params[])
    {
    new pID, Level, string[100], playername;
    if(IstSpielerInFraktion(playerid, 6)) return SendClientMessage(playerid,ROT,"Du bist kein Mitglied einer Gang/Mafia!");
    if(IstSpielerInFraktion(playerid, 5)) return SendClientMessage(playerid,ROT,"Du bist kein Mitglied einer Gang/Mafia!");
    if(IstSpielerInFraktion(playerid, 4)) return SendClientMessage(playerid,ROT,"Du bist kein Mitglied einer Gang/Mafia!");
    if(IstSpielerInFraktion(playerid, 3)) return SendClientMessage(playerid,ROT,"Du bist kein Mitglied einer Gang/Mafia!");
    if(IsPlayerInRangeOfPoint(playerid,4.0,204.48158, -235.56549, 0.56437)) return SendClientMessage(playerid,ROT,"Du bist nicht mein Gangjail!");
    if(sscanf(params, "ud", pID, Level)) return SendClientMessage(playerid,GELB, "Tippe: /gangjail [Spielername / ID]");
    GetPlayerName(playerid, playername); //2950
    format(string, sizeof(string), "* %s hat dich ins Gangjail gesteckt!", playername);
    SendClientMessage(pID, ROT, string);
    GetPlayerName(pID, playername); //2953
    format(string, sizeof(string), "* Du hast den Spieler %s ins Gangjail gesteckt!", playername);
    SendClientMessage(playerid, GELB, string);
    return 1;
    }


    Ich bekomme diese Errors:
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2950) : error 035: argument type mismatch (argument 2)
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2953) : error 035: argument type mismatch (argument 2)



    Hoffe einer hat eine Ahnung wie ich das mache :D


    und ich hätte noch eine Frage:
    "Wie erstelle ich das wenn einer im Gangjail ist bei einem Relogg trotzdem dort Spawn hätte es so versucht:



    //Globale Variabelen:
    new Gangjailticket[MAX_PLAYERS]


    //Der Befehl mit Gangjailticket:
    ocmd:gangjail(playerid, params[])
    {
    new pID, Level, string[100], playername;
    if(IstSpielerInFraktion(playerid, 6)) return SendClientMessage(playerid,ROT,"Du bist kein Mitglied einer Gang/Mafia!");
    if(IstSpielerInFraktion(playerid, 5)) return SendClientMessage(playerid,ROT,"Du bist kein Mitglied einer Gang/Mafia!");
    if(IstSpielerInFraktion(playerid, 4)) return SendClientMessage(playerid,ROT,"Du bist kein Mitglied einer Gang/Mafia!");
    if(IstSpielerInFraktion(playerid, 3)) return SendClientMessage(playerid,ROT,"Du bist kein Mitglied einer Gang/Mafia!");
    if(IsPlayerInRangeOfPoint(playerid,4.0,204.48158, -235.56549, 0.56437)) return SendClientMessage(playerid,ROT,"Du bist nicht mein Gangjail!");
    if(sscanf(params, "ud", pID, Level)) return SendClientMessage(playerid,GELB, "Tippe: /gangjail [Spielername / ID]");
    GetPlayerName(playerid, playername); //2950
    format(string, sizeof(string), "* %s hat dich ins Gangjail gesteckt!", playername);
    SendClientMessage(pID, ROT, string);
    GetPlayerName(pID, playername); //2953
    format(string, sizeof(string), "* Du hast den Spieler %s ins Gangjail gesteckt!", playername);
    SendClientMessage(playerid, GELB, string);
    Gangjailticket[pID] = 1;
    return 1;
    }



    Aber lieber wäre es mir wenn man erstmal diese 2 Errors behebt und mir dann sagt ob dies Richtig wäre wie ich es gemacht hätte.


    Vielen Dank im Vorraus! :)
    :)

    • Offizieller Beitrag

    Du musst einfach die Variable playername als String definieren und nicht als intager, somit kannst du es einfach so schreiben

    Code
    new pID, Level, string[100], playername[64];

    //EDIT


    und sehe grade das du die GetPlayerName Funktion falsch verwendet hast.



    Code
    GetPlayerName(playerid, playername, sizeof(playername)); //2950
  • @robbi2304
    So wie es aussieht habe ich keine das aller erste mit GetPlayerName ist das hier:
    public OnPlayerText(playerid, text[])
    {
    new pText[145], name[MAX_PLAYER_NAME], Float:x, Float:y, Float:z;
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    GetPlayerPos(playerid, x, y, z);
    format(pText, sizeof (pText), "%s sagt: %s", name, text);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInRangeOfPoint(i,15.0, x, y, z))
    {
    SendClientMessage(i, 0xFFFFFFFF, pText);
    }
    }
    return 0;
    }

  • Der vorposter hat ja schon geschrieben woran das Problem lag. Ist mir so ganz nicht aufgefallen.


    Ich definiere getPlayerName nochmal extra deswegen xD


    Bei dem 2 Befehl dann



    new pID, Level, string[100], playername[128];


    //Edit weiteres geschrieben

  • @Whice.


    Ich bekomme die gleichen Warnings nur diesmal so:


    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2952) : warning 202: number of arguments does not match definition
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2955) : warning 202: number of arguments does not match definition
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Warnings.

  • Empfehlenswert ist eine Größe des Arrays von MAX_PLAYER_NAME. Auch sollte man als dritten Parameter bei GetPlayerName nicht sizeof(), sondern MAX_PLAYER_NAME verwenden - spart einen Funktionsaufruf.

  • @Douq


    Danke so hat es geklappt also muss ich das immer so anwenden z.B auch bei einem /ungangjail oder /aungangjail etc. immer so?:
    GetPlayerName(playerid, playername, sizeof(playername));


    /edit Danke an alle werde es nun Ingame anschauen!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Also ich hab da ein Problem trotz den ganzen if(IstSpielerInFraktion(playerid, 6)) return SendClientMessage(playerid,ROT,"Du bist kein Mitglied einer Gang/Mafia!");
    usw.


    kann ich den nur als Zivilist(0) , LSPD(1) , FBI(2) ausführen aber ab 3 in meinem Fall Ballas nicht und die ganzen anderen Fraktionen können es auch nicht...


    z.b 3,4,5,6

  • Also ich hab da ein Problem trotz den ganzen if(IstSpielerInFraktion(playerid, 6)) return SendClientMessage(playerid,ROT,"Du bist kein Mitglied einer Gang/Mafia!");
    usw.


    kann ich den nur als Zivilist(0) , LSPD(1) , FBI(2) ausführen aber ab 3 in meinem Fall Ballas nicht und die ganzen anderen Fraktionen können es auch nicht...


    z.b 3,4,5,6

    Zeig uns mal deine IstSpielerInFraktion Funktion


  • stock IstSpielerInFraktion(playerid, Fraktionsid)
    {
    if(sSpieler[playerid][Fraktion] == Fraktionsid) return 1;
    return 0;
    }


    ersetzen durch



    IstSpielerInFraktion(playerid, Fraktionsid)
    {
    if(sSpieler[playerid][Fraktion]>= Fraktionsid) return 1;
    return 0;
    }

  • Habe noch nicht alle Fraktionen eingefügt aber bis jetzt bestehen diese:
    Zivilist 0
    LSPD 1
    FBI 2
    Ballas 3
    Groove Street4
    Yakuza 5
    Triaden 6


    Also es soll ab 3 gehen bis 6 und wenn ich mehrere fraktionen (Gangs/Mafien defininiere) will ich das ich das ganz einfach ändern kann)

  • Probier es mal so



    FrakJail(playerid, Fraktionsid)
    {
    if(sSpieler[playerid][Fraktion]>3) return 1;
    return 0;
    }



    ocmd:gangjail(playerid, params[])
    {
    new pID, Level, string[100], playername[64];
    if(FrakJail(playerid,3))
    {
    if(IsPlayerInRangeOfPoint(playerid,4.0,204.48158, -235.56549, 0.56437)) return SendClientMessage(playerid,ROT,"Du bist nicht mein Gangjail!");
    if(sscanf(params, "ud", pID, Level)) return SendClientMessage(playerid,GELB, "Tippe: /gangjail [Spielername / ID]");
    GetPlayerName(playerid, playername); //2950
    format(string, sizeof(string), "* %s hat dich ins Gangjail gesteckt!", playername);
    SendClientMessage(pID, ROT, string);
    GetPlayerName(pID, playername); //2953
    format(string, sizeof(string), "* Du hast den Spieler %s ins Gangjail gesteckt!", playername);
    SendClientMessage(playerid, GELB, string);
    Gangjailticket[pID] = 1;
    }
    else
    {
    return SendClientMessage(playerid,Rot,"Du bist in keiner Gang/Mafia);
    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen