Eine Frage bezüglich /giverank

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, ich habe vor einen Bfehel zu machen für alle Fraktionen weiß aber nicht genau wie das geht? Soll ich für jede Fraktion eine extra abfrage machen??
    Also z.B.
    if(Spieler[playerid][Leader] == 1 && Spieler[pid][Fraktion] == 1)
    {
    ....
    }


    oder wie?

  • Du musst theoretisch nur abfragen,


    ob playerid ein Leader ist,
    ob das Ziel in seiner frak ist,
    ob der Rang höher als 0 und kleiner als dein Max. rang ist.


    Wenn du das alles berücksichtigst ist das nicht schwer.


    Wenn du denn noch Probleme hast, melde dich mit deinem Code.

  • Alles klar danke ich scripte das mal schnell und frage bei Problemen nach danke!


    edit: Frage nr1 xD


    Wie mache ich das?


    if((rank) > 0 || < 5))
    Das funktzuniert i-wie nicht :/


    Frage Nr. 2:
    Wäre das möglich?
    if(Spieler[playerid][Leader] == Spieler[pid][Fraktion])

    Einmal editiert, zuletzt von Blood. ()

  • Hallo ich habe folgenden Befehl:


    ocmd:giverank(playerid,params [])
    {
    new pid,rank,grund[50],pidname[MAX_PLAYER_NAME],pname[MAX_PLAYER_NAME];
    new stringpid[100],stringplayerid[100],stringgrund[55];
    GetPlayerName(playerid,pname,sizeof(pname)); GetPlayerName(pid,pidname,sizeof(pidname));
    if(Spieler[playerid][Leader] < 1)return SendClientMessage(playerid,ROT,"*Giverank* Du bist kein Leader");
    if(sscanf(params,"dds",pid,rank,grund))return SendClientMessage(playerid,ORANGE,"*Giverank* /giverank [ID] [Rank] [Grund]");
    format(stringgrund,sizeof(stringgrund),"%s",grund);
    if(grund > 0 || grund < 51)
    {
    if(Spieler[playerid][Leader] == Spieler[pid][Fraktion])
    {
    if(rank > 0 || rank < 5)
    {
    format(stringpid,sizeof(stringpid),"%s hat dir Rank %d gegeben. Grund: %s",pname,rank,stringgrund);
    format(stringplayerid,sizeof(stringplayerid),"Du hast %s Rank %d gegeben. Grund: %s",pidname,rank,stringgrund);
    SendClientMessage(playerid,GELB,stringplayerid);
    SendClientMessage(pid,GELB,stringpid);
    Spieler[pid][Rank] = rank;
    }
    }
    }
    else
    {
    SendClientMessage(playerid,ORANGE,"*Giverank* Der Grund muss min. 1Buchstaben beziehungsweise max. 50 Buchstaben besitzen.");
    }
    return 1;
    }


    Bekomme ich folgenden Error:


    C:\Users\muhammed\Desktop\alles\Server\gamemodes\Modern-RP.pwn(772) : error 033: array must be indexed (variable "grund")
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Aber bei if(rank > 0 || rank < 5) bekomme ich keinen Error


    edit: text kleines bisschen verändert

    Einmal editiert, zuletzt von Blood. ()

  • C:\Users\muhammed\Desktop\alles\Server\gamemodes\Modern-RP.pwn(772) : error 033: array must be indexed (variable "grund")


    welche zeile ?

  • Versuch mal so
    ocmd:giverank(playerid,params [])
    {
    new pid,rank,grund,pidname[MAX_PLAYER_NAME],pname[MAX_PLAYER_NAME];//grund[50] zu grund
    new stringpid[100],stringplayerid[100],stringgrund[55];
    GetPlayerName(playerid,pname,sizeof(pname)); GetPlayerName(pid,pidname,sizeof(pidname));
    if(Spieler[playerid][Leader] < 1)return SendClientMessage(playerid,ROT,"*Giverank* Du bist kein Leader");
    if(sscanf(params,"dds",pid,rank,grund))return SendClientMessage(playerid,ORANGE,"*Giverank* /giverank [ID] [Rank] [Grund]");
    format(stringgrund,sizeof(stringgrund),"%s",grund);
    if(grund > 0 || grund < 51)
    {
    if(Spieler[playerid][Leader] == Spieler[pid][Fraktion])
    {
    if(rank > 0 || rank < 5)
    {
    format(stringpid,sizeof(stringpid),"%s hat dir Rank %d gegeben. Grund: %s",pname,rank,stringgrund);
    format(stringplayerid,sizeof(stringplayerid),"Du hast %s Rank %d gegeben. Grund: %s",pidname,rank,stringgrund);
    SendClientMessage(playerid,GELB,stringplayerid);
    SendClientMessage(pid,GELB,stringpid);
    Spieler[pid][Rank] = rank;
    }
    }
    }
    else
    {
    SendClientMessage(playerid,ORANGE,"*Giverank* Der Grund muss min. 1Buchstaben beziehungsweise max. 50 Buchstaben besitzen.");
    }
    return 1;
    }

  • grund ist bei dir kein string deshalb brauchst du keinen array [50].


    Der string den du benutzt heißt ja stringgrund.