/makeleader,/invite [NO-GF]

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 brauche /makeleader und /invite Befehl im non GF.Ich benutze gAdmin.Ausserdemn möchte ich nch wissen wie er die Fraktion die man ist speichert.Ich hoffe ihr könnt mir helfen.Danke schon mal im Vorraus.
    MFG
    EgoShooter

  • also mal zu dem speichern der fraktionen:
    als erstes machst du oben genau das was ich mach....



    enum pInfo {


    Passwort,
    Kills,
    Deaths,
    Geld,
    Fraktion,
    Wanted
    };
    new PlayerInfo[MAX_PLAYERS][pInfo];
    new gPlayerLogged[MAX_PLAYERS];
    new gPlayerAccount[MAX_PLAYERS];



    forward OnPlayerUpdate(playerid);
    forward Encrypt(string[]);
    forward OnPlayerLogin(playerid,const string[]);



    so speichert es deine kills deine deaths dein wanted level und deine fraktion
    als nächstes musst du natürlich noch bei dem spawn machen das jede fraktion wo anders spawnt
    ich nehm das jetzt aus meinem script mal raus...



    if (gPlayerLogged[playerid])
    {
    if (PlayerInfo[playerid] [Fraktion] == 0) //Zivis
    {
    gTeam[playerid] = Zivis;
    SetPlayerSkin(playerid,250);
    }
    else if (PlayerInfo[playerid] [Fraktion] == 1) //Cops
    {
    gTeam[playerid] = Cops;
    SetPlayerPos(playerid,1588.2271,-1685.4792,548.0401);
    SetPlayerFacingAngle(playerid,82.2208);
    SetPlayerSkin(playerid,266);
    GivePlayerWeapon(playerid,24,50);
    GivePlayerWeapon(playerid,29,150);
    GivePlayerWeapon(playerid,31,250);


    }
    else if (PlayerInfo[playerid] [Fraktion] == 2) //Army
    {
    gTeam[playerid] = Army;
    //hier fehlt noch das SetPlayerPos
    SetPlayerSkin(playerid,287);
    GivePlayerWeapon(playerid,24,50);
    GivePlayerWeapon(playerid,29,150);
    GivePlayerWeapon(playerid,31,250);
    }
    else if (PlayerInfo[playerid] [Fraktion] == 3) //Medis
    {
    gTeam[playerid] = Medis;
    //hier fehlt noch das SetPlayerPos
    //und der Skin id fehlt auch noch
    }
    else if (PlayerInfo[playerid] [Fraktion] == 4) //Adac
    {
    gTeam[playerid] = Adac;
    SetPlayerPos(playerid,739.2413,-1355.4968,13.5000);
    SetPlayerFacingAngle(playerid,270.8525);
    SetPlayerSkin(playerid,180);


    }
    else if (PlayerInfo[playerid] [Fraktion] == 5) //The Ballas
    {
    gTeam[playerid] = Ballas;
    //hier fehlt noch das SetPlayerPos
    //und der Skin ID fehlt auch noch
    }
    else if (PlayerInfo[playerid] [Fraktion] == 6) //Hells Angles
    {
    gTeam[playerid] = HellsAngles;
    //hier fehlt noch das SetPlayerPos
    SetPlayerSkin(playerid,100);
    }
    else if (PlayerInfo[playerid] [Fraktion] == 7) //La Cosa Nostra
    {
    gTeam[playerid] = LaCosaNostra;
    //hier fehlt noch das SetPlayerPos
    SetPlayerSkin(playerid,125);
    }
    else if (PlayerInfo[playerid] [Fraktion] == 8) //Präsi
    {
    gTeam[playerid] = Praesident;
    //hier fehlt noch das SetPlayerPos
    SetPlayerSkin(playerid,147);
    }
    else if (PlayerInfo[playerid] [Fraktion] == 9) //Fahrschule
    {
    gTeam[playerid] = Fahrschule;
    //hier fehlt noch das SetPlayerPos
    //und die Skin ID fehlt auch noch
    }
    else
    {
    gTeam[playerid] = Zivis;
    PlayerInfo [playerid] [Fraktion] = 0;
    }
    }
    else
    {
    Kick(playerid);
    SendClientMessage(playerid,COLOR_RED,"Du bist noch nicht eingeloggt");
    }


    wenn also der spieler eingeloggt ist und eines der teams ist spawnt er am gewissen platz ansonsten spawnt er ganz normal
    falls er nicht eingeloggt ist wird er gekickt...
    jetzt brauchst du natürlich auch noch das login und register command...
    aber erst zeig ich dir was du unter OnPlayerConnect machst damit der spieler weiß das er sich registrieren bzw. einloggen soll

    new connect[128];
    new playrname[66];



    SetPlayerColor(playerid,COLOR_GREY);
    GetPlayerName(playerid, playrname, sizeof(playrname));
    format(connect, sizeof(connect), "%s.cfg", playrname);
    if(fexist(connect))
    {
    gPlayerAccount[playerid] = 1;
    SendClientMessage(playerid, COLOR_MAGENTA, "Du bist bereist registriert, verwende /login <passwort> um dich einzuloggen");
    return 1;
    }
    else
    {
    gPlayerAccount[playerid] = 0;
    SendClientMessage(playerid, COLOR_MAGENTA, "Du bist hier noch nicht registriert, tippe /register <passwort> um dich zu registrieren");
    }


    jetzt kommen wir zum eigentlich login und register command...
    muss richtig gemacht werden das auch wirklich alles gespeichert wird
    also pw, kills, deaths, wanted und fraktion

    if (strcmp(cmd, "/login", true) ==0 )
    {
    if(IsPlayerConnected(playerid))
    {
    new tmppass[64];
    if(gPlayerLogged[playerid] == 1)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist bereits eingeloggt.");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GREY, " VERWENDE: /login [password]");
    return 1;
    }
    strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
    Encrypt(tmppass);
    OnPlayerLogin(playerid,tmppass);
    }
    return 1;
    }
    if (strcmp(cmd, "/register", true)==0)
    {
    new string[265];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GREY, "VERWENDE: /register [password]");
    return 1;
    }
    if (gPlayerAccount[playerid] == 1)
    {
    SendClientMessage(playerid, COLOR_GREY, " Dieser Name ist bereits registriert");
    return 1;
    }


    strmid(PlayerInfo[playerid][Passwort], tmp, 0, strlen(cmdtext), 255);
    Encrypt(PlayerInfo[playerid][Passwort]);
    GetPlayerName(playerid, playername, sizeof(playername));
    format(string, sizeof(string), "%s.cfg", playername);
    new File: file = fopen(string, io_read);
    if (file)
    {
    SendClientMessage(playerid, COLOR_GREY, " Dieser Name ist bereits registriert");
    fclose(file);
    return 1;
    }
    new File:hFile;
    hFile = fopen(string, io_append);
    new var[32];//
    format(var, 32, "%s\n", PlayerInfo[playerid][Passwort]);fwrite(hFile, var);
    format(var, 32, "Kills=%d\n",PlayerInfo[playerid][Kills]);fwrite(hFile, var);
    format(var, 32, "Deaths=%d\n",PlayerInfo[playerid][Deaths]);fwrite(hFile, var);
    format(var, 32, "Farktion=%d\n",PlayerInfo[playerid][Fraktion]);fwrite(hFile, var);
    format(var, 32, "Wanteds=%d\n",PlayerInfo[playerid][Wanted]);fwrite(hFile, var);
    PlayerInfo[playerid][Geld] = GetPlayerMoney(playerid);
    format(var, 32, "Money=%d\n",PlayerInfo[playerid][Geld]);fwrite(hFile, var);
    fclose(hFile);
    SendClientMessage(playerid, COLOR_WHITE, "Vollständig Registriert!");
    SendClientMessage(playerid, COLOR_WHITE, "Nächstes mal brachst du einfach nur /login <passwort> zu tippen.");
    OnPlayerLogin(playerid,PlayerInfo[playerid][Passwort]);
    return 1;
    }


    zum schluss des scriptes musst du die oben angeführten forwards natürlich noch definiern sonst habn die ja keinen sinn
    also folgendes zum schluss des scriptes:

    public Encrypt(string[])
    {
    for(new x=0; x < strlen(string); x++)
    {
    string[x] += (3^x) * (x % 15);
    if(string[x] > (0xff))
    {
    string[x] -= 64;
    }
    }
    return 1;
    }


    public OnPlayerLogin(playerid,const string[])
    {
    new pname2[MAX_PLAYER_NAME];
    new pname3[MAX_PLAYER_NAME];
    new string2[64]; new string3[128];
    GetPlayerName(playerid, pname2, sizeof(pname2));
    format(string2, sizeof(string2), "%s.cfg", pname2);
    new File: UserFile = fopen(string2, io_read);


    if (UserFile)
    {
    new valtmp[128];
    fread(UserFile, valtmp);strmid(PlayerInfo[playerid][Passwort], valtmp, 0, strlen(valtmp)-1, 255);


    if ((strcmp(PlayerInfo[playerid][Passwort], string, true, strlen(valtmp)-1) == 0))
    {
    new key[128],val[128];
    new Data[128];
    while(fread(UserFile,Data,sizeof(Data)))
    {
    key = ini_GetKey(Data);
    if( strcmp( key , "Kills" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][Kills] = strval( val ); }
    if( strcmp( key , "Deaths" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][Deaths] = strval( val ); }
    if( strcmp( key , "Geld" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][Geld] = strval( val ); }
    if( strcmp( key , "Fraktion" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][Fraktion] = strval( val ); }
    if( strcmp( key , "Fraktion" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][Wanted] = strval( val ); }
    GivePlayerMoney(playerid,PlayerInfo[playerid][Geld]);
    }
    fclose(UserFile);
    gPlayerLogged[playerid] = 1;
    gPlayerAccount[playerid] = 1;
    GetPlayerName(playerid, pname3, sizeof(pname3));
    format(string3, sizeof(string3), "Willkommen %s du hast dich erfolgreich eingeloggt! \n Viel Spaß wünscht dir das SA-MP Reallife Team", pname3);
    SendClientMessage(playerid, COLOR_WHITE,string3);
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Falsches Passwort");
    fclose(UserFile);
    }
    }
    return 1;
    }


    public OnPlayerUpdate(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid])
    {
    new string3[32];
    new pname3[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname3, sizeof(pname3));
    format(string3, sizeof(string3), "%s.cfg", pname3);
    new File: pFile = fopen(string3, io_write);
    if (pFile)
    {
    new var[32];
    format(var, 32, "%s\n", PlayerInfo[playerid][Passwort]);fwrite(pFile, var);
    fclose(pFile);
    new File: hFile = fopen(string3, io_append);
    PlayerInfo[playerid][Geld] = GetPlayerMoney(playerid);
    format(var, 32, "Kills=%d\n",PlayerInfo[playerid][Kills]);fwrite(hFile, var);
    format(var, 32, "Deaths=%d\n",PlayerInfo[playerid][Deaths]);fwrite(hFile, var);
    format(var, 32, "Fraktion=%d\n",PlayerInfo[playerid][Fraktion]);fwrite(hFile, var);
    format(var, 32, "Wanteds=%d\n",PlayerInfo[playerid][Wanted]);fwrite(hFile, var);
    format(var, 32, "Money=%d\n",PlayerInfo[playerid][Geld]);fwrite(hFile, var);
    fclose(hFile);
    }
    }
    }
    return 1;
    }


    stock ini_GetKey( line[] )
    {
    new keyRes[128];
    keyRes[0] = 0;
    if ( strfind( line , "=" , true ) == -1 ) return keyRes;
    strmid( keyRes , line , 0 , strfind( line , "=" , true ) , sizeof( keyRes) );
    return keyRes;
    }


    stock ini_GetValue( line[] )
    {
    new valRes[128];
    valRes[0]=0;
    if ( strfind( line , "=" , true ) == -1 ) return valRes;
    strmid( valRes , line , strfind( line , "=" , true )+1 , strlen( line ) , sizeof( valRes ) );
    return valRes;
    }

  • Ähm ich wollte eigentlich den /makeleader und /invite Befehl für Non GF wissen.