zcmd Problem mit Befehl

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 zusammen,


    ich hab ein kleines Problem
    CMD:megaphone(playerid, params[]){ if(!IsLoggedIn(playerid))return 1; new msg[96], string[128]; if(sscanf(params, "s[96]", msg))return SendClientMessage(playerid, COLOR_GREY, "** Benutze (/m)egaphone [Nachricht]"); if(!(Spieler[playerid][pFraktion] == 1 || Spieler[playerid][pFraktion] == 3))return SendClientMessage(playerid, COLOR_GREY, "** Du bist kein Beamter."); format(string, sizeof(string), ">> [ %s %s: %s ] <<", GetRankName(Spieler[playerid][pFraktion], Spieler[playerid][pRank]), GetName(playerid), msg); RoundMessage(playerid, COLOR_YELLOW, string, 20.0); return 1;}


    ( Deutlicher: http://pastebin.com/LUVhQPuR )



    Fraktionen:
    0=Zivilist
    1= LSPD
    2=Mafia
    3=Medics
    4=Grove


    Wenn ich als LSPD-Mitglied den Befehl /m bzw. /megaphone benutze, funktioniert alles einwandfrei - als Medic jedoch nicht.
    Dort bekomme ich dann immer den Fehler, dass der Befehl nicht existieren würde, woran könnte das liegen?

  • Sorry für die späte Antwort. Ich sehe persönlich keinen Fehler im Code, da du ja eigentlich abfragst ob er nicht in Fraktion 1 und nicht in Fraktion 3 ist und dann dementsprechend eine Fehlermeldung zurückgibst. Und das sollte richtig sein.

  • Bist du dir sicher das Medic die Fraktions ID 3 hat ? Ich habs gerade bei mir probiert und es funktioniert wie erwartet, nur ID 1 und 3 kann diesen Befehl ausführen.
    Wie "settest" du dir die Fraktions ID ?

  • CMD:set1(playerid)
    {
    Spieler[playerid][pFraktion]=1;
    return 1;
    }


    CMD:set2(playerid)
    {
    Spieler[playerid][pFraktion]=3;
    return 1;
    }


    Probier es mal diesem pseudo Code, wenn es so klappt, dann sollte der Fehler beim makeleader Befehl sein.


  • Wie gesagt, bei mir funktioniert es eigentlich so wie es sollte.


    CMD:megaphone(playerid, params[])
    {

    new msg[96], string[128];
    if(Spieler[playerid][pFraktion] != 1 && Spieler[playerid][pFraktion] != 3) return SendClientMessage(playerid, -1, "** Du bist kein Beamter.");
    if(sscanf(params, "s[96]", msg))return SendClientMessage(playerid, -1, "** Benutze (/m)egaphone [Nachricht]");
    format(string, 128, "hihi %s", msg);
    SendClientMessage(playerid, -1, string);
    return 1;
    }


    CMD:set1(playerid, params[])
    {
    new string[50];
    Spieler[playerid][pFraktion]=1;
    format(string, 50, "Fraktion: %d",Spieler[playerid][pFraktion]);
    SendClientMessage(playerid, -1, string);
    return 1;
    }


    CMD:set2(playerid, params[])
    {
    new string[50];
    Spieler[playerid][pFraktion]=3;
    format(string, 50, "Fraktion: %d",Spieler[playerid][pFraktion]);
    SendClientMessage(playerid, -1, string);
    return 1;
    }


    CMD:set3(playerid, params[])
    {
    new string[50];
    Spieler[playerid][pFraktion]=2;
    format(string, 50, "Fraktion: %d",Spieler[playerid][pFraktion]);
    SendClientMessage(playerid, -1, string);
    return 1;
    }


    Ohne die RoundMessage, die Farben und deine Funktionen. Klappt es wenigstens so ?

  • Peani:


    Makeleader Befehl:


    Spoiler anzeigen
    CMD:makeleader(playerid, params[])
    {
    new pID, frakid, string[128];
    if(Spieler[playerid][pAdmin] < 5)return SendClientMessage(playerid, COLOR_GREY, ERROR_ADMIN);
    if(sscanf(params, "ui", pID, frakid))return SendClientMessage(playerid, COLOR_GREY, "** Benutze /makeleader [SpielerID/Name] [Fraktion]");
    if(IsPlayerNPC(pID))return 1;
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid, COLOR_GREY, ERROR_OFFLINE);
    if(frakid == 0){
    format(string, sizeof(string), "Du hast die Leaderrechte von %s für die Fraktion %s entnommen.", GetName(pID), GetPlayerFraktionName(pID));
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "%s hat dir die Leadderechte für die Fraktion %s entnommen.", GetName(playerid), GetPlayerFraktionName(pID));
    SendClientMessage(pID, COLOR_LIGHTBLUE, string);
    Spieler[pID][pFraktion] = 0;
    Spieler[pID][pRank] = 0;
    SpawnPlayer(pID);
    SavePlayer(pID);
    return 1;
    }
    if(frakid < 1 || frakid > MAX_FRAKS)return SendClientMessage(playerid, COLOR_GREY, "** Diese Fraktions-ID ist nicht verfügbar.");
    Spieler[pID][pFraktion] = frakid;
    Spieler[pID][pRank] = 8;
    if(Spieler[pID][pGeschlecht] == 1)
    {
    switch(frakid)
    {
    case 2: Spieler[pID][pFrakSkin] = 111;
    case 3: Spieler[pID][pFrakSkin] = 70;
    case 4: Spieler[pID][pFrakSkin] = 270;
    }
    }
    else if(Spieler[pID][pGeschlecht] == 2)
    {
    switch(frakid)
    {
    case 2: Spieler[pID][pFrakSkin] = 12;
    case 3: Spieler[pID][pFrakSkin] = 211;
    case 4: Spieler[pID][pFrakSkin] = 65;
    }
    }
    format(string, sizeof(string), "Du hast %s Leaderrechte für die Fraktion %s gegeben.", GetName(pID), GetPlayerFraktionName(pID));
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "* %s hat dich zum Leader der Fraktion %s ernannt.", GetName(playerid), GetPlayerFraktionName(pID));
    SendClientMessage(pID, COLOR_LIGHTBLUE, string);
    SpawnPlayerEx(pID);
    SavePlayer(pID);
    return 1;
    }

    Mit freundlichen Grüßen


  • @Mew :o
    Also mit Deinem Code klappt das ohne Probleme.


    CptSky_
    Ich werde das mal ausprobieren.
    Nun hab ich den m Befehl bei Fraktion 1 und 2 - sobald ich dann 1 und 3 umändere klappt es wieder nicht.
    Alles irgendwie seltsam :o


    Danke Euch beiden, vielmals!

    Einmal editiert, zuletzt von Peani ()