/f Prob.!

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
  • Hey !


    Hab ein Problem :\


    ocmd:f(playerid,params[])
    {
    for(new i=0;i < MAX_PLAYERS;i++)
    {
    new nachricht[128];
    if(sscanf(params,"s",nachricht))return SendClientMessage(playerid,Rot,"Fehler: /f [Nachricht]");
    {
    new Spieler[64];
    new Spieler2[64];
    format(Spieler,sizeof(Spieler),"Spieler/%s.txt",PlayerName(playerid));
    format(Spieler2,sizeof(Spieler2),"Spieler/%s.txt",PlayerName(i));
    new string[256];

    if(IsPlayerInFraktion(playerid,1))
    {
    if(dini_Int(Spieler,"Fraktionsrang")==1)
    {
    //frakstring="Lausbub";
    format(string,sizeof(string),"Neuling %s: %s.",PlayerName(playerid),nachricht);
    if(dini_Int(Spieler2,"Fraktion")==dini_Int(Spieler,"Fraktion"))
    {
    SendClientMessage(i,Hellblau,string);
    }
    }
    if(dini_Int(Spieler,"Fraktionsrang")==2)
    {
    //frakstring="Terrorzwerg";
    format(string,sizeof(string),"Terrorzwerg %s: %s.",PlayerName(playerid),nachricht);
    if(dini_Int(Spieler2,"Fraktion")==dini_Int(Spieler,"Fraktion"))
    {
    SendClientMessage(i,Hellblau,string);
    }
    }
    if(dini_Int(Spieler,"Fraktionsrang")==3)
    {
    //frakstring="Terrorist";
    format(string,sizeof(string),"Terrorist %s: %s.",PlayerName(playerid),nachricht);
    if(dini_Int(Spieler2,"Fraktion")==dini_Int(Spieler,"Fraktion"))
    {
    SendClientMessage(i,Hellblau,string);
    }
    }
    if(dini_Int(Spieler,"Fraktionsrang")==4)
    {
    //frakstring="Co-Leader";
    format(string,sizeof(string),"Co-Leader %s: %s.",PlayerName(playerid),nachricht);
    if(dini_Int(Spieler2,"Fraktion")==dini_Int(Spieler,"Fraktion"))
    {
    SendClientMessage(i,Hellblau,string);
    }
    }
    if(dini_Int(Spieler,"Fraktionsrang")==5)
    {
    //frakstring="Leader";
    format(string,sizeof(string),"Leader %s: %s.",PlayerName(playerid),nachricht);
    if(dini_Int(Spieler2,"Fraktion")==dini_Int(Spieler,"Fraktion"))
    {
    SendClientMessage(i,Hellblau,string);
    }
    }
    }
    }
    }
    return 1;
    }


    Die Nachricht wird nicht gesendet !


    Edit:


    In den Serverlogs:




    Das geht noch viel länger , wenn man /f macht fängt es an , und hört erst auf , wenn man den server neustartet !

  • Zitat

    sscanf warning: Strings without a length are deprecated, please add a destination size.


    Also englisch kannst du oder?


    Ich übersetz das mal:

    Zitat

    Strings ohne längenangabe sind veraltert, bitte gebe eine Stringgröße an.


    sprich if(sscanf(params,"s[128]",nachricht))

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Das ist abartig gescriptet, bitte arbeite mit Enum's.



    #edit:
    bspw.:
    enum SpielerDatei {
    Fraktionsrank,
    Fraktion
    };


    new Spieler[MAX_PLAYERS][SpielerDatei];


    ocmd:f(playerid,params[])
    {
    new nachricht[128],
    string[100];
    if(sscanf(params,"s",nachricht))return SendClientMessage(playerid,Rot,"Fehler: /f [Nachricht]");
    if(Spieler[playerid][Fraktion] > 0) {
    format(string,sizeof(string),"Neuling %s: %s.", PlayerName(playerid), nachricht);
    for(new i=0;i < MAX_PLAYERS;i++) {
    if(Spieler[playerid][Fraktionsrank] ==1) {
    if(Spieler[i][Fraktion] == Spieler[playerid][Fraktion]) {
    SendClientMessage(i,Hellblau,string);
    }
    }
    }
    }
    return 1;
    }

    Einmal editiert, zuletzt von TutNichts ()

  • Hab ich , blick da aber nicht durch , darum hab ichs mit enums sein gelassen :<



    enum Spielerdaten
    {
    Adminlevel,
    Level,
    Geld,
    Float:Leben,
    Fraktion,
    Fraktionsrang,
    Float:XPosition,
    Float:YPosition,
    Float:ZPosition,
    Loginn,
    Skin
    };
    new sSpieler[MAX_PLAYERS][Spielerdaten];



  • Jop ^^


    Enumfelder , bzw die Variablen drunter versteh ich ja noch , aber zB wie das alles funzt ^^


    Wenn bspsweise das Adminlevel haben will , mache ich einfach dini_Int(Spieler,"Adminlevel"); , mit Enum iwas mit sSpieler[playerid][Adminlevel] , und das gleiche bei Speichern :< Mich verwirren Enums ^^