Help Here.
#1

Hello There, I have this system which makes people to wear a tag:

pawn Код:
#include <a_samp>
#include <zcmd>
#include sscanf2

#define COLOR_GREEN 0xFFFF00AA
#define COLOR_RED 0xFFFF00AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFF00AA

CMD:Aacc(playerid, params[])
{
        new id;
        if(!IsPlayerAdmin(playerid))
            return SendClientMessage(playerid, COLOR_RED, "You are not [A] Member");
        if(sscanf(params, "u", id))
            return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /Acc [Player ID]");

        new string[128];
        format(string, sizeof(string), "%s(%d) has invited you to be [A] Do you Accept? /acceptinvite, or You decline? /declineinvite?", GetName(playerid), playerid);
        SendClientMessage(id, COLOR_YELLOW, string);
        format(string, sizeof(string), "You have invited %s(%d) to be an [A] Member.", GetName(id), id);
        SendClientMessage(playerid, COLOR_YELLOW, string);

        SetPVarInt(id, "[A]Invite", 1);
        SetPVarInt(id, "[A]Inviter", playerid);
        return 1;
}

CMD:acceptinvite(playerid, params[])
{
        if(GetPVarInt(playerid, "[AU]Invite") != 1)
            return SendClientMessage(playerid, COLOR_RED, "Sorry, you haven't been Invited to be a Member.");

        new pNewName[27];
        format(pNewName, sizeof(pNewName), "[A]%s", GetName(playerid));
        SetPlayerName(playerid, pNewName);

        new string[128];
        new id = GetPVarInt(playerid, "[AU]Inviter");

        format(string, sizeof(string), "%s(%d) has accepted your invite, %s is not an [A] Member.", GetName(playerid), playerid, GetName(playerid));
        SendClientMessage(id, COLOR_GREEN, string);
        format(string, sizeof(string), "You have accepted %s(%d)'s invite, You are now an [A] member, Welcome!", GetName(id), GetPVarInt(playerid, "[AU]Inviter"));
        SendClientMessage(playerid, COLOR_GREEN, string);
        DeletePVar(playerid, "[A]Invite");
        DeletePVar(playerid, "[A]Inviter");
        return 1;
}
CMD:declineinvite(playerid, params[])
{
        if(GetPVarInt(playerid, "[A]Invite") != 1)
                return SendClientMessage(playerid, COLOR_RED, "Sorry, you haven't been invited to be [A]");

        new string[128];
        new id = GetPVarInt(playerid, "[A]Inviter");

        format(string, sizeof(string), "%s(%d) has declined your invite!", GetName(playerid), playerid);
        SendClientMessage(id, COLOR_RED, string);
        format(string, sizeof(string), "You have declined %s(%d)'s invite, You won't be [A] Member Anymore.", GetName(id), GetPVarInt(playerid, "[AU]Inviter"));
        SendClientMessage(playerid, COLOR_RED, string);
        DeletePVar(playerid, "[A]Invite");
        DeletePVar(playerid, "[A]Inviter");
        return 1;
}

stock GetName(playerid)
{
        new pName[24];
        GetPlayerName(playerid, pName, sizeof(pName));
        return pName;
}
And this is my login system:

pawn Код:
#include <a_samp>

#define FILTERSCRIPT

#if defined FILTERSCRIPT
#define COLOR_GREY 0xBEBEBEAA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_GRAD5 0xE3E3E3FF
#define COLOR_GRAD1 0xB4B5B7FF
#define COLOR_YELLOW 0xFFFF00AA

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

enum pInfo
{
    pPassword[128],
    pKills,
    pDeaths,
    pCash,
};

new PlayerInfo[MAX_PLAYERS][pInfo];
new gPlayerLogged[MAX_PLAYERS];
new gPlayerAccount[MAX_PLAYERS];


public OnFilterScriptInit()
{
    print("\n$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
    print(" Kevin433's Login/Register Filterscript");
    print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
    return 1;
}

public OnPlayerRequestSpawn(playerid)
{
    return 1;
}

public OnPlayerConnect(playerid)
{
    new playrname[MAX_PLAYER_NAME];
    new connect[128];
    GetPlayerName(playerid, playrname, sizeof(playrname));
    format(connect, sizeof(connect), "%s.cer", playrname);
    if(fexist(connect))
    {
        gPlayerAccount[playerid] = 1;
        SendClientMessage(playerid, COLOR_YELLOW, "You are registered, please login with /login password");
        return 1;
    }
    else
    {
        gPlayerAccount[playerid] = 0;
        SendClientMessage(playerid, COLOR_YELLOW, "You are new here or not registered, please register with /register password");
    }
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    OnPlayerUpdate(playerid);
    gPlayerLogged[playerid] = 0;
    return 1;
}

public OnPlayerSpawn(playerid)
{
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    new kills = PlayerInfo[playerid][pKills];
    SetPlayerScore(playerid, kills);
    new Float:Health;
    GetPlayerHealth(playerid, Health);
    if(Health == 0.0)
    {
    PlayerInfo[playerid][pDeaths] += 1;
    }
    GivePlayerMoney(killerid,2000);
    PlayerInfo[killerid][pKills] = PlayerInfo[killerid][pKills] + 1;
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256];
    new idx;
    cmd = strtok(cmdtext, idx);
    new tmp[256];
    new playername[MAX_PLAYER_NAME];
    if (strcmp(cmd, "/login", true) ==0 )
    {
        if(IsPlayerConnected(playerid))
        {
            new tmppass[64];
            if(gPlayerLogged[playerid] == 1)
            {
                SendClientMessage(playerid, COLOR_GREY, "   You are already logged in.");
                return 1;
            }
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GREY, "   USAGE: /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, "USAGE: /register [password]");
            return 1;
        }
        if (gPlayerAccount[playerid] == 1)
        {
            SendClientMessage(playerid, COLOR_GREY, "   That name is already registered");
            return 1;
        }

        strmid(PlayerInfo[playerid][pPassword], tmp, 0, strlen(cmdtext), 255);
        Encrypt(PlayerInfo[playerid][pPassword]);
        GetPlayerName(playerid, playername, sizeof(playername));
        format(string, sizeof(string), "%s.cer", playername);
        new File: file = fopen(string, io_read);
        if (file)
        {
            SendClientMessage(playerid, COLOR_GREY, "   That name is already registered");
            fclose(file);
            return 1;
        }
        new File:hFile;
        hFile = fopen(string, io_append);
        new var[32];//
        format(var, 32, "%s\n", PlayerInfo[playerid][pPassword]);fwrite(hFile, var);
        format(var, 32, "Kills=%d\n",PlayerInfo[playerid][pKills]);fwrite(hFile, var);
        format(var, 32, "Deaths=%d\n",PlayerInfo[playerid][pDeaths]);fwrite(hFile, var);
        PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
        format(var, 32, "Money=%d\n",PlayerInfo[playerid][pCash]);fwrite(hFile, var);
        fclose(hFile);
        SendClientMessage(playerid, COLOR_WHITE, "Succesfully Registered!");
        SendClientMessage(playerid, COLOR_WHITE, "Next time you connect, type /login <password> to log in.");
        OnPlayerLogin(playerid,PlayerInfo[playerid][pPassword]);
        return 1;
    }
    if (strcmp(cmd, "/stats", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if (gPlayerLogged[playerid] != 0)
            {
                ShowStats(playerid,playerid);
            }
            else
            {
                SendClientMessage(playerid, COLOR_GRAD1, "   You are not Logged in !");
            }
        }
        return 1;
    }
    return 0;
}

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.cer", pname2);
    new File: UserFile = fopen(string2, io_read);

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

        if ((strcmp(PlayerInfo[playerid][pPassword], 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][pKills] = strval( val ); }
                if( strcmp( key , "Deaths" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pDeaths] = strval( val ); }
                if( strcmp( key , "Money" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pCash] = strval( val ); }
                GivePlayerMoney(playerid,PlayerInfo[playerid][pCash]);
            }
            fclose(UserFile);
            gPlayerLogged[playerid] = 1;
            gPlayerAccount[playerid] = 1;
            new kills = PlayerInfo[playerid][pKills];
            SetPlayerScore(playerid, kills);
            GetPlayerName(playerid, pname3, sizeof(pname3));
            format(string3, sizeof(string3), "Welcome %s, you have been succesfully logged in!", pname3);
            SendClientMessage(playerid, COLOR_WHITE,string3);
        }
        else
        {
            SendClientMessage(playerid, COLOR_GREY, "   Password does not match your name");
            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.cer", pname3);
            new File: pFile = fopen(string3, io_write);
            if (pFile)
            {
                new var[32];
                format(var, 32, "%s\n", PlayerInfo[playerid][pPassword]);fwrite(pFile, var);
                fclose(pFile);
                new File: hFile = fopen(string3, io_append);
                PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
                format(var, 32, "Kills=%d\n",PlayerInfo[playerid][pKills]);fwrite(hFile, var);
                format(var, 32, "Deaths=%d\n",PlayerInfo[playerid][pDeaths]);fwrite(hFile, var);
                format(var, 32, "Money=%d\n",PlayerInfo[playerid][pCash]);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;
}


strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}

public ShowStats(playerid,targetid)
{
    if(IsPlayerConnected(playerid)&&IsPlayerConnected(targetid))
    {
        new cash =  GetPlayerMoney(targetid);
        new deaths = PlayerInfo[targetid][pDeaths];
        new kills = PlayerInfo[targetid][pKills];
        new name[MAX_PLAYER_NAME];
        GetPlayerName(targetid, name, sizeof(name));
        new Float:px,Float:py,Float:pz;
        GetPlayerPos(targetid, px, py, pz);
        new coordsstring[256];
        SendClientMessage(playerid, COLOR_GREEN,"_______________________________________");
        format(coordsstring, sizeof(coordsstring),"*** %s ***",name);
        SendClientMessage(playerid, COLOR_WHITE,coordsstring);
        format(coordsstring, sizeof(coordsstring), "Kills:[%d] Deaths:[%d] Cash:[$%d]",kills,deaths,cash);
        SendClientMessage(playerid, COLOR_GRAD5,coordsstring);
        SendClientMessage(playerid, COLOR_GREEN,"_______________________________________");
    }
}

#endif
So, I want that if I join and I'm an [A] Member = No kick
But If Im a random player and I join with an [A] Tag = Kick.

Example:

John = [A] Member
Salty = Not [A] Member.

If John Joins the server with an [A] Tag then join normally.
But if Salty Joins the server with an [A] Tag then Kick him and send a message: You are Not an [A] Member.


P.S:Can some one give me an example of how to make it please?
Reply


Messages In This Thread
Help Here. - by Alex_Obando - 02.04.2011, 17:03
Respuesta: Help Here. - by Alex_Obando - 02.04.2011, 18:13
Respuesta: Help Here. - by Alex_Obando - 03.04.2011, 02:12
Respuesta: Help Here. - by Alex_Obando - 03.04.2011, 04:12

Forum Jump:


Users browsing this thread: 1 Guest(s)