MakeAdmin Problem with levels!
#1

Hey guys, 1 more time and i hope the last on this work i am doing, i need help! I think is the last hard part on my LONG work! I hope so.

Ok, I am making now a /makeadmin cmd... But i don't even know how to define the admin level and set it....
Here he cmd code:
pawn Code:
COMMAND:makeadmin(playerid, params[])
{
    new id;
    new AdminLevel;
    if(IsPlayerConnected(id))
    {
        if(IsPlayerAdmin(playerid))
        {
            if(!sscanf(params, "ui", id, AdminLevel))
            {
                if(AdminLevel <= 101 || 102 || 103 || 104 || 105 || 106 || 1338)
                {
                    new string[64];
                    new name[MAX_PLAYER_NAME], PlayerName[MAX_PLAYER_NAME];
                    GetPlayerName(playerid, name, sizeof(name));
                    GetPlayerName(id, PlayerName, sizeof(PlayerName));
                    format(string, sizeof(string), "%s Has Given You %d Admin Level.", name, AdminLevel);
                    SendClientMessage(id, 0x0259EAAA, string);
                    format(string, sizeof(string), "You Gave %d Admin Level To %s .", AdminLevel, PlayerName);
                    SendClientMessage(playerid, 0x0259EAAA, string);
                    PlayerInfo[id][AdminLevel];
                    return 1;
                }
                else return SendClientMessage(playerid, 0x0259EAAA, "Avaliable Levels: 101, 102, 103, 104, 105, 106, 1338");
            }
            else return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /makeadmin [PlayerId/PartOfName] [AdminLevel]");
        }
        else return SendClientMessage(playerid, 0xFFFFFFFF, "You Need Rcon Admin To Use This Command!");
    }
    else return SendClientMessage(playerid, 0xFFFFFFFF, "Player Is Not Connected");
}
And the whole code(with register/login system too)
pawn Code:
#include <a_samp>
#include <dini>
#include <dudb>
#include <zcmd>
#include <sscanf>

#pragma unused ret_memcpy

new IsLogged[MAX_PLAYERS];
new file[256];

enum pInfo
{
    AdminLevel,
    Cash,
    Score,
    Color,
}
new PlayerInfo[MAX_PLAYERS][pInfo];

COMMAND:register(playerid, params[])
{
    if(!strlen(params)) return SendClientMessage(playerid, 0xFFFFFFFF, "[Usage]: /register <password>");
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    {
            format(file,sizeof(file),"/RicAdmin/users/%s.ini",name);
            if(!fexist(file))
            {
                dini_Create(file);
                dini_IntSet(file,"Password", udb_hash(params));
                dini_IntSet(file,"AdminLevel", 0);
                dini_IntSet(file,"Cash", 0);
                dini_IntSet(file,"Score", 0);
                dini_IntSet(file,"Color", 0);
                SendClientMessage(playerid, 0xFFFFFFFF, "[System]: Account Created!");
                PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
                GetPlayerName(playerid, name, sizeof(name));
                printf("%s has registered a account!", name);
                return 1;
            }
            else
            {
                SendClientMessage(playerid, 0xFFFFFFFF, " Account Already Found In Database");
                PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
                return 1;
            }
    }
}

COMMAND:login(playerid, params[])
{
    if(!strlen(params)) return SendClientMessage(playerid, 0xFFFFFFFF, "[Usage]: /login <password>");
    new tmp2[256];
    new PlayerName[24];
    new name[MAX_PLAYER_NAME];
    if(IsLogged[playerid] == 0)
    {
        GetPlayerName(playerid, name, sizeof(name));
        format(file,sizeof(file),"/RicAdmin/users/%s.ini",name);
        if(fexist(file))
        {
            tmp2 = dini_Get(file, "Password");
            if(udb_hash(params) == strval(tmp2))
            {
                SendClientMessage(playerid, 0xFFFFFFFF, "Login Sucefull!");
                GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
                IsLogged[playerid] = 1;
                SetPlayerMoney(playerid, dini_Int(file, "Cash"));
                SetPlayerScore(playerid, dini_Int(file, "Score"));
                SetPlayerColor(playerid, dini_Int(file, "Color"));
                PlayerInfo[playerid][AdminLevel] = dini_Int(file, "AdminLevel");
            }
            else
            {
                SendClientMessage(playerid, 0xFFFFFFFF, "Login Failed");
            }
        }
    }
    else return SendClientMessage(playerid, 0xFFFFFFFF, "You already are logged in!");
    return 1;
}
//-------------------------------Admin Commands---------------------------------
COMMAND:makeadmin(playerid, params[])
{
    new id;
    new AdminLevel;
    if(IsPlayerConnected(id))
    {
        if(IsPlayerAdmin(playerid))
        {
            if(!sscanf(params, "ui", id, AdminLevel))
            {
                if(AdminLevel <= 101 || 102 || 103 || 104 || 105 || 106 || 1338)
                {
                    new string[64];
                    new name[MAX_PLAYER_NAME], PlayerName[MAX_PLAYER_NAME];
                    GetPlayerName(playerid, name, sizeof(name));
                    GetPlayerName(id, PlayerName, sizeof(PlayerName));
                    format(string, sizeof(string), "%s Has Given You %d Admin Level.", name, AdminLevel);
                    SendClientMessage(id, 0x0259EAAA, string);
                    format(string, sizeof(string), "You Gave %d Admin Level To %s .", AdminLevel, PlayerName);
                    SendClientMessage(playerid, 0x0259EAAA, string);
                    PlayerInfo[id][AdminLevel];
                    return 1;
                }
                else return SendClientMessage(playerid, 0x0259EAAA, "Avaliable Levels: 101, 102, 103, 104, 105, 106, 1338");
            }
            else return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /makeadmin [PlayerId/PartOfName] [AdminLevel]");
        }
        else return SendClientMessage(playerid, 0xFFFFFFFF, "You Need Rcon Admin To Use This Command!");
    }
    else return SendClientMessage(playerid, 0xFFFFFFFF, "Player Is Not Connected");
}
//------------------------------------------------------------------------------
public OnPlayerDisconnect(playerid)
{
    new name[24];
    GetPlayerName(playerid,name,24);
    format(file,sizeof(file),"RicAdmin/users/%s.ini",name);
    if(dini_Exists(file))
    {
        dini_IntSet(file,"Cash",GetPlayerMoney(playerid));
        dini_IntSet(file,"Score",GetPlayerScore(playerid));
        dini_IntSet(file,"Color",GetPlayerColor(playerid));
        dini_IntSet(file,"AdminLevel",PlayerInfo[playerid][AdminLevel]);
        IsLogged[playerid] = 0;
        return 1;
    }
    return 1;
}

public OnPlayerSpawn(playerid)
{
    return 1;
}
public OnPlayerConnect(playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    format(file,sizeof(file),"/RicAdmin/users/%s.ini",name);
    if(fexist(file))
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "Use /login to join your account!");
    }
    else
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "User /register to register your account!");
    }
    return 1;
}
Thanks and sorry for be allways asking help
Reply
#2

Use Pvars, its better
Reply
#3

I don't know use it
Reply
#4

Look at Torrans account filterscript, then make your admin commands onto that.
Reply
#5

Sorry, but do you have the link plz?

EDIT: No-One?

Sorry for double post some mins ago!
Reply
#6

This if statement is not going to work:

pawn Code:
if(AdminLevel <= 101 || 102 || 103 || 104 || 105 || 106 || 1338)
It won't work because it makes no sense, what you want to do is check if the person entered in either of those, with an if statement, you can do that like so:

pawn Code:
if((AdminLevel >= 101 && AdminLevel <= 106) || AdminLevel == 1338)
So what we are doing now, is checking if the admin level is greater than or equal to 101 AND less than or equal to 106, OR if the admin level is 1338.
Reply
#7

You are great... I dream to know so much like you...
But i still get this warmnings:
Code:
C:\Users\Ricardo\Desktop\Mini-DM\Mini-DM\Freedoom\filterscripts\adminric.pwn(87) : warning 219: local variable "AdminLevel" shadows a variable at a preceding level
C:\Users\Ricardo\Desktop\Mini-DM\Mini-DM\Freedoom\filterscripts\adminric.pwn(94) : warning 213: tag mismatch
C:\Users\Ricardo\Desktop\Mini-DM\Mini-DM\Freedoom\filterscripts\adminric.pwn(94) : warning 213: tag mismatch
C:\Users\Ricardo\Desktop\Mini-DM\Mini-DM\Freedoom\filterscripts\adminric.pwn(94) : warning 213: tag mismatch
C:\Users\Ricardo\Desktop\Mini-DM\Mini-DM\Freedoom\filterscripts\adminric.pwn(94) : warning 205: redundant code: constant expression is zero
C:\Users\Ricardo\Desktop\Mini-DM\Mini-DM\Freedoom\filterscripts\adminric.pwn(87) : warning 203: symbol is never used: "AdminLevel"
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


6 Warnings.
Probably i am so noob, i did more some no sence think
Thanks for all man, i have learn much with you today!

Line 94 is:
pawn Code:
if((AdminLevel >= 101 && AdminLevel <= 106) || AdminLevel == 1338)
Line 87 is:
pawn Code:
new AdminLevel;
Of the cmd code:
pawn Code:
COMMAND:makeadmin(playerid, params[])
{
    new id;
    new AdminLevel;
    if(IsPlayerConnected(id))
    {
        if(IsPlayerAdmin(playerid))
        {
            if(!sscanf(params, "ui", id, AdminLevel))
            {
                if((AdminLevel >= 101 && AdminLevel <= 106) || AdminLevel == 1338)
                {
                    new string[64];
                    new name[MAX_PLAYER_NAME], PlayerName[MAX_PLAYER_NAME];
                    GetPlayerName(playerid, name, sizeof(name));
                    GetPlayerName(id, PlayerName, sizeof(PlayerName));
                    format(string, sizeof(string), "%s Has Given You %d Admin Level.", name, AdminLevel);
                    SendClientMessage(id, 0x0259EAAA, string);
                    format(string, sizeof(string), "You Gave %d Admin Level To %s .", AdminLevel, PlayerName);
                    SendClientMessage(playerid, 0x0259EAAA, string);
                    PlayerInfo[id][AdminLevel] = AdminLevel;
                    return 1;
                }
                else return SendClientMessage(playerid, 0x0259EAAA, "Avaliable Levels: 101, 102, 103, 104, 105, 106, 1338");
            }
            else return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /makeadmin [PlayerId/PartOfName] [AdminLevel]");
        }
        else return SendClientMessage(playerid, 0xFFFFFFFF, "You Need Rcon Admin To Use This Command!");
    }
    else return SendClientMessage(playerid, 0xFFFFFFFF, "Player Is Not Connected");
}
Of the script
pawn Code:
#include <a_samp>
#include <dini>
#include <dudb>
#include <zcmd>
#include <sscanf>

#pragma unused ret_memcpy

new IsLogged[MAX_PLAYERS];
new file[256];

enum pInfo
{
    AdminLevel,
    Cash,
    Score,
    Color,
}
new PlayerInfo[MAX_PLAYERS][pInfo];

COMMAND:register(playerid, params[])
{
    if(!strlen(params)) return SendClientMessage(playerid, 0xFFFFFFFF, "[Usage]: /register <password>");
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    {
            format(file,sizeof(file),"/RicAdmin/users/%s.ini",name);
            if(!fexist(file))
            {
                dini_Create(file);
                dini_IntSet(file,"Password", udb_hash(params));
                dini_IntSet(file,"AdminLevel", 0);
                dini_IntSet(file,"Cash", 0);
                dini_IntSet(file,"Score", 0);
                dini_IntSet(file,"Color", 0);
                SendClientMessage(playerid, 0xFFFFFFFF, "[System]: Account Created!");
                PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
                GetPlayerName(playerid, name, sizeof(name));
                printf("%s has registered a account!", name);
                return 1;
            }
            else
            {
                SendClientMessage(playerid, 0xFFFFFFFF, " Account Already Found In Database");
                PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
                return 1;
            }
    }
}

COMMAND:login(playerid, params[])
{
    if(!strlen(params)) return SendClientMessage(playerid, 0xFFFFFFFF, "[Usage]: /login <password>");
    new tmp2[256];
    new PlayerName[24];
    new name[MAX_PLAYER_NAME];
    if(IsLogged[playerid] == 0)
    {
        GetPlayerName(playerid, name, sizeof(name));
        format(file,sizeof(file),"/RicAdmin/users/%s.ini",name);
        if(fexist(file))
        {
            tmp2 = dini_Get(file, "Password");
            if(udb_hash(params) == strval(tmp2))
            {
                SendClientMessage(playerid, 0xFFFFFFFF, "Login Sucefull!");
                GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
                IsLogged[playerid] = 1;
                SetPlayerMoney(playerid, dini_Int(file, "Cash"));
                SetPlayerScore(playerid, dini_Int(file, "Score"));
                SetPlayerColor(playerid, dini_Int(file, "Color"));
                PlayerInfo[playerid][AdminLevel] = dini_Int(file, "AdminLevel");
            }
            else
            {
                SendClientMessage(playerid, 0xFFFFFFFF, "Login Failed");
            }
        }
    }
    else return SendClientMessage(playerid, 0xFFFFFFFF, "You already are logged in!");
    return 1;
}
//-------------------------------Admin Commands---------------------------------
COMMAND:makeadmin(playerid, params[])
{
    new id;
    new AdminLevel;
    if(IsPlayerConnected(id))
    {
        if(IsPlayerAdmin(playerid))
        {
            if(!sscanf(params, "ui", id, AdminLevel))
            {
                if((AdminLevel >= 101 && AdminLevel <= 106) || AdminLevel == 1338)
                {
                    new string[64];
                    new name[MAX_PLAYER_NAME], PlayerName[MAX_PLAYER_NAME];
                    GetPlayerName(playerid, name, sizeof(name));
                    GetPlayerName(id, PlayerName, sizeof(PlayerName));
                    format(string, sizeof(string), "%s Has Given You %d Admin Level.", name, AdminLevel);
                    SendClientMessage(id, 0x0259EAAA, string);
                    format(string, sizeof(string), "You Gave %d Admin Level To %s .", AdminLevel, PlayerName);
                    SendClientMessage(playerid, 0x0259EAAA, string);
                    PlayerInfo[id][AdminLevel] = AdminLevel;
                    return 1;
                }
                else return SendClientMessage(playerid, 0x0259EAAA, "Avaliable Levels: 101, 102, 103, 104, 105, 106, 1338");
            }
            else return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /makeadmin [PlayerId/PartOfName] [AdminLevel]");
        }
        else return SendClientMessage(playerid, 0xFFFFFFFF, "You Need Rcon Admin To Use This Command!");
    }
    else return SendClientMessage(playerid, 0xFFFFFFFF, "Player Is Not Connected");
}

//------------------------------------------------------------------------------
public OnPlayerDisconnect(playerid)
{
    new name[24];
    GetPlayerName(playerid,name,24);
    format(file,sizeof(file),"RicAdmin/users/%s.ini",name);
    if(dini_Exists(file))
    {
        dini_IntSet(file,"Cash",GetPlayerMoney(playerid));
        dini_IntSet(file,"Score",GetPlayerScore(playerid));
        dini_IntSet(file,"Color",GetPlayerColor(playerid));
        dini_IntSet(file,"AdminLevel",PlayerInfo[playerid][AdminLevel]);
        IsLogged[playerid] = 0;
        return 1;
    }
    return 1;
}

public OnPlayerSpawn(playerid)
{
    return 1;
}
public OnPlayerConnect(playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    format(file,sizeof(file),"/RicAdmin/users/%s.ini",name);
    if(fexist(file))
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "Use /login to join your account!");
    }
    else
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "User /register to register your account!");
    }
    return 1;
}
Reply
#8

Can you point out the lines that they are occuring on? One of the problems is that you have already created a variable called AdminLevel, so you need to change the name of the one in the function.
Reply
#9

done, i edidt my last post
Reply
#10

One of the problems is that you have a variable called "AdminLevel" already existant, so you need to change the name of the one in your makeadmin command, anything will suffice, like AdminLevel2, doesn't matter, once it's not already existant.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)