/rangegeben kann an jeden angewendet werden

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
  • Ich hab mir den /ranggeben Befehl gemacht aber man kann als Leader jeden den Rang verändern.



    ocmd:ranggeben(playerid,params[])
    {
    new pID,fID,rangzahl,string[128];
    fID = sInfo[pID][fraktion];
    if(sInfo[playerid][fraktion] == 0)return SendClientMessage(playerid,COLOR_DRED,"Du bist in keiner Fraktion!");
    if(sInfo[playerid][rang] < 10)return SendClientMessage(playerid,COLOR_DRED,"Du bist nicht der Leader der Fraktion!");
    if(!isPlayerInFrakt(pID,fID))return SendClientMessage(playerid,COLOR_DRED,"Der Spieler ist nicht in deiner Fraktion!");
    if(sscanf(params,"ui",pID,rangzahl))return SendClientMessage(playerid,COLOR_GREY,"INFO: {00A5FF}/ranggeben {B3B3B3}[ID] [Rang]");
    sInfo[pID][rang] = rangzahl;
    savePlayer(pID);
    format(string,sizeof(string),"Du hast %s den Rang %i gegeben.",SpielerName(pID),rangzahl);
    SendClientMessage(playerid,COLOR_DGREEN,string);
    format(string,sizeof(string),"%s hat deinen Rang auf %i gesetzt.",SpielerName(playerid),rangzahl);
    SendClientMessage(playerid,COLOR_DGREEN,string);
    return 1;
    }

    Mit freundlichen Grüßen,
    Derakar

  • fID = sInfo[pID][fraktion]; // pID hat noch den Wert 0, da du ihn erst erstellt hast..
    if(!isPlayerInFrakt(pID,fID))return SendClientMessage(playerid,COLOR_DRED,"Der Spieler ist nicht in deiner Fraktion!");


    Muss eher so:
    fID = sInfo[playerid][fraktion];

  • mit ner Variabele prüfen ob der Spieler ein Leader etc. ist


    if(sInfo[playerid][pLeader] !=0)
    {
    //blabla^^
    }

    Das ist ja schon drin und funktioniert


    if(sInfo[playerid][rang] < 10)return SendClientMessage(playerid,COLOR_DRED,"Du bist nicht der Leader der Fraktion!");




    Muss eher so:
    fID = sInfo[playerid][fraktion];

    Da nimmt er doch dann sich selbst oder nicht? Ich versuch das mal.

    Mit freundlichen Grüßen,
    Derakar

  • Da nimmt er doch dann sich selbst oder nicht? Ich versuch das mal.


    Variable fID = Fraktionsid von Playerid..
    if(!isPlayerInFrakt(pID,fID))return SendClientMessage(playerid,COLOR_DRED,"Der Spieler ist nicht in deiner Fraktion!"); // Wenn pID nicht in der Fraktion von Playerid ist, dann kommt die Message!


    Also eig richtig ;)

  • Achte auf die richtige Reihenfolge und benenne deine Variablen so, dass du am Ende noch weißt, welche die welche ist.


    ocmd:ranggeben(playerid,params[])
    {
    new pID,fID,rangzahl,string[128];
    if(sInfo[playerid][fraktion] == 0)return SendClientMessage(playerid,COLOR_DRED,"Du bist in keiner Fraktion!");
    if(sInfo[playerid][rang] < 10)return SendClientMessage(playerid,COLOR_DRED,"Du bist nicht der Leader der Fraktion!");
    if(sscanf(params,"ui",pID,rangzahl))return SendClientMessage(playerid,COLOR_GREY,"INFO: {00A5FF}/ranggeben {B3B3B3}[ID] [Rang]");
    fID = sInfo[pID][fraktion];
    if(!isPlayerInFrakt(playerid,fID))return SendClientMessage(playerid,COLOR_DRED,"Der Spieler ist nicht in deiner Fraktion!");
    sInfo[pID][rang] = rangzahl;
    savePlayer(pID);
    format(string,sizeof(string),"Du hast %s den Rang %i gegeben.",SpielerName(pID),rangzahl);
    SendClientMessage(playerid,COLOR_DGREEN,string);
    format(string,sizeof(string),"%s hat deinen Rang auf %i gesetzt.",SpielerName(playerid),rangzahl);
    SendClientMessage(playerid,COLOR_DGREEN,string);
    return 1;
    }

  • Nein es Funktioniert immernoch nicht es ist so Frak ID 1 & 2 können (wir sind 2 Personen) beide einen Rang geben und ab 3+ kann nur einer einen Rang geben an eine andere Fraktion.

    Mit freundlichen Grüßen,
    Derakar

  • Die Funktion:



    //Fraktion system
    isPlayerInFrakt(playerid,f_id)
    {
    if(sInfo[playerid][fraktion]>=f_id)return 1;
    return 0;
    }



    Und es sieht folgend aus: Ich bin Leader von Fraktion 1 und kann den Rang der Member/Leader von Allen Fraks ändern. Bei Fraktion 2 das gleiche nur ab Frak 3 steht dann da das der andere spieler nicht in der Frak ist.

    Mit freundlichen Grüßen,
    Derakar