Problem mit Fraktion

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
  • Hei habe ein Problem. Habe mir ein Login Register System gescriptet und auch ein kleines admin script dazu. Jetz hab ich das Problem wenn ich zB eingib /fraktionsetzen 0(spielerid) 1(fraktionsid) bin ich zwar in der ini in der Fraktion kann aber die gTeams commands für das team 1 nicht ausführen obwohl ich in dem Team sein müsste. Ich hoffe das mir wer helfen kann.



    MFG Nehli

  • Der Befehl von Fraktionsetzen geht so:


    if(strcmp(strget(cmdtext,0),"/fraktionsetzen",true) == 0)
    {
    if(IsPlayerConnected(ziel))
    {
    if(SpielerInfo[playerid][admin] >= 2 || IsPlayerAdmin(playerid))
    {
    if(!strlen(strget(cmdtext,1)) || !strlen(strget(cmdtext,2)) || !strlen(strget(cmdtext,3)))
    {
    SendClientMessage(playerid,COLOR_YELLOW,"Verwendung: /fraktionsetzen [Spielerid][Fraktionsid](1-11)[fraktionsskin]");
    return 1;
    }
    if(!SpielerInfo[ziel][Leader])
    {
    new fraktionsid = strval(strget(cmdtext,2));
    new skinid = strval(strget(cmdtext,3));
    new msg1[200];
    new msg2[200];
    SpielerInfo[ziel][Fraktion] = fraktionsid;
    SpielerInfo[ziel][Rang] = 1;
    format(msg1,sizeof(msg1),"* Du wurdest von Admin %s in die %d Fraktion gesetzt.",spieler,fraktionsid); //wird dem spieler ausgegeben
    format(msg2,sizeof(msg2),"* Du hast %s zum Leader in die %d Fraktion gesetzt.",opfer,fraktionsid); // wird dem admin ausgegeben
    SendClientMessage(playerid,COLOR_LIGHTBLUE,msg2); // Sendet die nachricht msg2 zu dem Admin...
    SendClientMessage(ziel,COLOR_LIGHTBLUE,msg1); // Sendet die nachricht msg1 zu dem ziel das zum admin gemacht wurde...
    PlayerPlaySound(ziel,1057,0.0,0.0,0.0); //spielt einen Nachrichtensound ab... return 1;
    SetPlayerSkin(ziel,skinid);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist bereits Leader einer Fraktion!.");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_HELLBLUE,"Du musst ein 1337 Admin oder Rcon Admin sein für diesen Command!"); //Wenn nicht lvl 5 oder Rcon Admin...
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_HELLBLUE,"Dieser Spieler existiert nicht."); // Wenn Ziel nicht Connected ist wird eine Nachricht ausgegeben
    }
    return 1;
    }


    oben hab ich für die fraktion das gemacht: static gTeam[MAX_PLAYERS];
    #define Team_Normal 0
    #define TEAM_FBI 1
    #define TEAM_LSPD 2
    #define TEAM_SFPD 3
    #define TEAM_Yakuza 4


    liegt es vl an dem login script von mir muss ich dort noch zusätzlich was hin schreiben das er weiß das ich die zahl von fraktion bei gTeam haben will?
    falls das noch nicht reicht stell ich auch das login system rein ;)


    hoffe das hilft euch weiter
    mfg nehli

  • Hier hab ich auch mal einen Teil des Script raus geschnitten. Sind alle Daten dabei die du brauchen könntest. (fraktion,loginin) also da müsste man auch meinen script fehler finden.....


    #include <a_samp>
    #include <dini>
    //Login System
    #define DIALOG_Register 0
    #define DIALOG_Login 1



    //=====FARBEN===========
    #define COLOR_WHITE 0xFFFFFFFF
    #define TEAM_GROVE_COLOR 0x007500FF
    #define COLOR_RED 0xFF0000FF
    #define COLOR_GREEN 0x00FF00FF
    #define COLOR_YELLOW 0xFFFF00FF
    #define COLOR_ORANGE 0xFF8F00FF
    #define COLOR_HELLBLUE 0x004FFFFF
    #define COLOR_LIGHTBLUE 0x33CCFFAA
    #define COLOR_BLUE 0x0000FFFF
    #define COLOR_HELLRED 0xFF4847FF
    #define COLOR_VIOLET 0xA65DFFFF
    #define COLOR_GREY 0xAFAFAFAA
    #define COLOR_LIGHTRED 0xFF4230FF
    #define COLOR_BLACK 0x000000FF


    //Enum Befehle
    enum SInfo
    {
    admin,
    Fraktion,
    Rang,
    Leader,
    Geld,
    Skin,
    Wanted,
    Waffen,
    Munition
    }
    new SpielerInfo[MAX_PLAYERS][SInfo];




    //Fraktionen
    static gTeam[MAX_PLAYERS];
    #define Team_Normal 0
    #define TEAM_FBI 1




    public OnPlayerConnect(playerid)
    {
    //Login und Register System
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Hallo/%s.txt",name);
    if(dini_Exists(Spielerdatei))
    {
    ShowPlayerDialog(playerid,DIALOG_Login,DIALOG_STYLE_INPUT,"Login","Bitte geben Sie ihre Passwort ein","OK","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_Register,DIALOG_STYLE_INPUT,"Registeren","Bitte geben Sie ihr Passwort ein um sich zu registrieren.","registrieren","Abbrechen");
    }


    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    SpielerSpeichern(playerid);
    ResetVariablen(playerid);


    return 1;
    }




    public OnPlayerCommandText(playerid, cmdtext[])
    {
    //string
    new ziel = strval(strget(cmdtext,1));
    new opfer[MAX_PLAYER_NAME];
    new spieler[MAX_PLAYER_NAME];



    GetPlayerName(playerid,spieler,sizeof(spieler));
    GetPlayerName(ziel,opfer,sizeof(opfer));
    if(strcmp(strget(cmdtext,0),"/fraktionsetzen",true) == 0)
    {
    if(IsPlayerConnected(ziel))
    {
    if(!strlen(strget(cmdtext,1)) || !strlen(strget(cmdtext,2)) || !strlen(strget(cmdtext,3)))
    {
    SendClientMessage(playerid,COLOR_YELLOW,"Verwendung: /fraktionsetzen [Spielerid][Fraktionsid](1-11)[fraktionsskin]");
    return 1;
    }
    if(!SpielerInfo[ziel][Leader])
    {
    new fraktionsid = strval(strget(cmdtext,2));
    new skinid = strval(strget(cmdtext,3));
    new msg1[200];
    new msg2[200];
    SpielerInfo[ziel][Fraktion] = fraktionsid;
    SpielerInfo[ziel][Rang] = 1;
    format(msg1,sizeof(msg1),"* Du wurdest von Admin %s in die %d Fraktion gesetzt.",spieler,fraktionsid); //wird dem spieler ausgegeben
    format(msg2,sizeof(msg2),"* Du hast %s zum Leader in die %d Fraktion gesetzt.",opfer,fraktionsid); // wird dem admin ausgegeben
    SendClientMessage(playerid,COLOR_LIGHTBLUE,msg2); // Sendet die nachricht msg2 zu dem Admin...
    SendClientMessage(ziel,COLOR_LIGHTBLUE,msg1); // Sendet die nachricht msg1 zu dem ziel das zum admin gemacht wurde...
    PlayerPlaySound(ziel,1057,0.0,0.0,0.0); //spielt einen Nachrichtensound ab... return 1;
    SetPlayerSkin(ziel,skinid);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist bereits Leader einer Fraktion!.");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_HELLBLUE,"Dieser Spieler existiert nicht."); // Wenn Ziel nicht Connected ist wird eine Nachricht ausgegeben
    }
    return 1;
    }



    if(gTeam[playerid] == TEAM_FBI)
    {
    if(strcmp("/fbi",cmdtext, true, 10) == 0)
    {
    SendClientMessage(playerid,COLOR_BLACK,"hallo");


    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"fbi geht net");
    return 1;
    }



    return 0;
    }



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    //Register und Login System
    if(dialogid==DIALOG_Login)
    {
    if(response==0)
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast den Vorgang abgebrochen!");
    Kick(playerid);
    return 1;
    }
    if(response==1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,COLOR_GREEN,"Dein Passwort war nicht richtig eingegeben");
    ShowPlayerDialog(playerid,DIALOG_Login,DIALOG_STYLE_INPUT,"Login","Bitte geben Sie ihr Passwort ein um sich anzumelden.","OK","Abbrechen");
    return 1;
    }
    else
    {
    Login(playerid,inputtext);
    return 1;
    }
    }
    }
    if(dialogid==DIALOG_Register)
    {
    if(response==0)
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast den Vorgang abgebrochen!");
    Kick(playerid);
    return 1;
    }
    if(response==1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,COLOR_GREEN,"Dein Passwort war zu kurz");
    ShowPlayerDialog(playerid,DIALOG_Register,DIALOG_STYLE_INPUT,"Register","Bitte geben Sie ihr Passwort ein.","Registrierern","Abbrechen");
    return 1;
    }
    else
    {
    Register(playerid,inputtext);
    return 1;
    }
    }
    }




    return 1;
    }




    //Register stock
    stock Register(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Hallo/%s.txt",name);
    dini_Create(Spielerdatei);
    dini_Set(Spielerdatei,"Passwort",key);
    dini_IntSet(Spielerdatei,"Fraktion",0);
    SendClientMessage(playerid,COLOR_GREEN,"Erfolgreich registriert");
    SetPlayerScore(playerid,1);



    return 1;
    }
    //Login Stock
    stock Login(playerid,key[])
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Hallo/%s.txt",name);
    if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
    {
    LoadAccount(playerid);
    SendClientMessage(playerid,COLOR_GREEN,"Erfolgreich eingelogt");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"falsches Passwort!!!");
    ShowPlayerDialog(playerid,DIALOG_Login,DIALOG_STYLE_INPUT,"Register","Bitte geben Sie ihr Passwort ein.","Registrierern","Abbrechen");
    }
    return 1;
    }


    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Hallo/%s.txt",name);
    SpielerInfo[playerid][Leader]=dini_Int(Spielerdatei,"Fraktion");
    return 1;
    }


    stock SpielerSpeichern(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Hallo/%s.txt",name);
    dini_IntSet(Spielerdatei,"Fraktion",SpielerInfo[playerid][Fraktion]);


    return 1;
    }
    // Variablen stock
    stock ResetVariablen(playerid)
    {
    SpielerInfo[playerid][admin]=0;
    SpielerInfo[playerid][Fraktion]=0;
    SpielerInfo[playerid][Rang]=0;
    SpielerInfo[playerid][Leader]=0;
    SpielerInfo[playerid][Geld]=0;
    SpielerInfo[playerid][Skin]=0;
    SpielerInfo[playerid][Munition]=0;
    SpielerInfo[playerid][Waffen]=0;
    return 1;


    }
    //-----------------strget---------------
    stock strget(strx[], pos, search = ' ') {
    new arg, ret[128], idxx;
    for (new i = 0; i < strlen(strx); i++) {
    if(strx[i] == search || i == strlen(strx) || strx[i + 1] == 10) {
    arg++;
    if (arg == pos + 1){
    ret[i-idxx] = EOS;
    return ret;
    } else if (arg == pos)
    idxx= i+1;
    }
    else if (arg == pos)
    ret[i - idxx] = strx[i];
    }
    return ret;
    }



    Hoffe ihr könnt mir helfen und sagen warum das bei mir nicht funkt....