script Problem
#1

simple as this my admin script has corrupted my server everytime i type a command it says ID 0 is not online then You Are Not A Super Moderator then you are not a moderator CODE:

Код:
#include <a_samp>

#define ORANGE 0xAAFF00FF

enum Info
{
    AdminLevel
};

new PlayerInfo[MAX_PLAYERS][Info];

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256], idx;
    cmd = strtok(cmdtext, idx);
    if(strcmp(cmd, "/makeadmin", true) == 0)
    {
        new string[128];
        new tmp[256];
        new player[MAX_PLAYER_NAME], giveplayer[MAX_PLAYER_NAME];
        new giveplayerid;
        tmp = strtok(cmdtext, idx);
        giveplayerid = strval(tmp);

        if (IsPlayerAdmin(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, ORANGE, "USAGE: /makeadmin [playerid] [level]");
                SendClientMessage(playerid, ORANGE, "FUNCTION: Player will be an admin.");
                return 1;
            }
            tmp = strtok(cmdtext, idx);
            new level = strval(tmp);
            if(giveplayerid != INVALID_PLAYER_ID)
            {
                GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                GetPlayerName(playerid, player, sizeof(player));
                PlayerInfo[giveplayerid][AdminLevel] = level;
                printf("Admin %s made %s a level %d admin.", player, giveplayer, level);
                format(string, sizeof(string), "You are now an administrator level %d thanks to %s.", level, player);
                SendClientMessage(giveplayerid, 0x00C2ECFF, string);
                format(string, sizeof(string), "You have given %s level %d admin.", giveplayer,PlayerInfo[giveplayerid][AdminLevel]);
                SendClientMessage(playerid, 0x00C2ECFF, string);
            }
            else
            {
                format(string, sizeof(string), "%i is not an active player.", giveplayerid);
                SendClientMessage(playerid, 0xE60000FF, string);
            }
        }
        else
        {
            SendClientMessage(playerid, 0xE60000FF, "You are not a lead admin!");
        }

    }
    if(strcmp(cmd, "/Admin_Commands", true) == 0)
    {
        SendClientMessage(playerid, ORANGE, "This Command Is A Work In Progress Untill BAdmin Is Complete");
        return 1;
    }
	if(strcmp(cmd, "/Kick", true) == 0)
    {
        new string[128];
        new tmp[256];
        new player[MAX_PLAYER_NAME], kickplayer[MAX_PLAYER_NAME];
        new kickplayerid;
        tmp = strtok(cmdtext, idx);
        kickplayerid = strval(tmp);
        
        if(PlayerInfo[playerid][AdminLevel] == 1)
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, ORANGE, "USAGE: /kick [playerid].");
                SendClientMessage(playerid, ORANGE, "FUNCTION: Kick a player.");
            }
            tmp = strtok(cmdtext, idx);
            GetPlayerName(kickplayerid, kickplayer, sizeof(kickplayer));
            GetPlayerName(playerid, player, sizeof(player));
            printf("Admin %s Has Kicked %s.", player, kickplayer);
            format(string, sizeof(string), "You Have Been Kicked By %s.", player);
            SendClientMessage(kickplayerid, 0x00c2ecff, string);
            format(string, sizeof(string), "You Have Kicked %s.", kickplayer);
            SendClientMessage(playerid, 0x00c2ecff, string);
            Kick(kickplayerid);
            }
            else
            {
                format(string, sizeof(string), "%i is not online right now, Sorry.", kickplayerid);
                SendClientMessage(playerid, 0x00c2ecff, string);
            }
    }
    else
    {
        SendClientMessage(playerid, 0xE6000FF, "You Are Not A Moderator!");
    }
    if(strcmp(cmd, "/Ban", true) == 0)
    {
        new string[128];
        new tmp[256];
        new player[MAX_PLAYER_NAME], banplayer[MAX_PLAYER_NAME];
        new banplayerid;
        new reason;
        tmp = strtok(cmdtext, idx);
        banplayerid= strval(tmp);
        
        if(PlayerInfo[playerid][AdminLevel] == 2)
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, ORANGE, "USAGE: /Ban [playerid] [reason].");
                SendClientMessage(playerid, ORANGE, "FUNCTION: Bans a player.");
			}
			tmp = strtok(cmdtext, idx);
			GetPlayerName(banplayerid, banplayer, sizeof(banplayer));
			GetPlayerName(playerid, player, sizeof(player));
			printf("Admin: %s Has Banned: %s Because: %d.", player, banplayer, reason);
			format(string, sizeof(string), "You Have Been Banned By: %s Because: %d.", player, reason);
            SendClientMessage(banplayerid, 0x00c2ecff, string);
            format(string, sizeof(string), "You Have Banned: %s Because: %d.", banplayer, reason);
            SendClientMessage(playerid, 0x00c2ecff, string);
            Ban(banplayerid);
            }
            else
            {
                format(string, sizeof(string), "%i is not online right now, Sorry.", banplayerid);
                SendClientMessage(playerid, 0x00c2ecff, string);
			}
	}
	else
	{
	    SendClientMessage(playerid, 0xE60000FF, "You Are Not a Super Moderator!");
	}
	if(strcmp(cmd, "/Get", true) == 0)
	{
	    new string[128];
        new tmp[256];
        new player[MAX_PLAYER_NAME], getplayer[MAX_PLAYER_NAME];
        new getplayerid;
        tmp = strtok(cmdtext, idx);
        getplayerid = strval(tmp);
        
        if(PlayerInfo[playerid][AdminLevel] == 1)
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
			{
			    SendClientMessage(playerid, ORANGE, "USAGE: /Get [playerid].");
                SendClientMessage(playerid, ORANGE, "FUNCTION: Gets a player.");
			}
			tmp = strtok(cmdtext, idx);
			new Float:X, Float:Y, Float:Z;
			GetPlayerName(getplayerid, getplayer, sizeof(getplayer));
			GetPlayerName(playerid, player, sizeof(player));
			GetPlayerPos(playerid, X, Y, Z);
			printf("Admin: %s Has Gotten: %s.", player, getplayer);
			format(string, sizeof(string), "You Have Been Teleported to Admin: %s Position.", player);
            SendClientMessage(getplayerid, 0x00c2ecff, string);
            format(string, sizeof(string), "You Have Teleported: %s to you.", getplayer);
            SendClientMessage(playerid, 0x00c2ecff, string);
            SetPlayerPos(getplayerid, X, Y, Z);
            }
            else
            {
				format(string, sizeof(string), "%i is not online right now, Sorry.", getplayerid);
            	SendClientMessage(playerid, 0x00c2ecff, string);
			}
	}
	else
	{
	    SendClientMessage(playerid, 0xE60000FF, "You Are Not a moderator!");
	}
    return 1;
}

public OnPlayerConnect(playerid)
{
    PlayerInfo[playerid][AdminLevel] = 0;
    return 1;
}

stock 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;
}
Any Ideas on how to fix this?
Reply
#2

Sry for double post but anyone?
Reply
#3

anyone i need help here
Reply
#4

pawn Код:
#include <a_samp>

#define ORANGE 0xAAFF00FF

enum Info
{
    AdminLevel
};

new PlayerInfo[MAX_PLAYERS][Info];

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256], idx;
    cmd = strtok(cmdtext, idx);
    if(strcmp(cmd, "/makeadmin", true) == 0)
    {
        new string[128];
        new tmp[256];
        new player[MAX_PLAYER_NAME], giveplayer[MAX_PLAYER_NAME];
        new giveplayerid;
        tmp = strtok(cmdtext, idx);
        giveplayerid = strval(tmp);
        if (IsPlayerAdmin(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, ORANGE, "USAGE: /makeadmin [playerid] [level]");
                SendClientMessage(playerid, ORANGE, "FUNCTION: Player will be an admin.");
                return 1;
            }
            tmp = strtok(cmdtext, idx);
            new level = strval(tmp);
            if(giveplayerid != INVALID_PLAYER_ID)
            {
                GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                GetPlayerName(playerid, player, sizeof(player));
                PlayerInfo[giveplayerid][AdminLevel] = level;
                printf("Admin %s made %s a level %d admin.", player, giveplayer, level);
                format(string, sizeof(string), "You are now an administrator level %d thanks to %s.", level, player);
                SendClientMessage(giveplayerid, 0x00C2ECFF, string);
                format(string, sizeof(string), "You have given %s level %d admin.", giveplayer,PlayerInfo[giveplayerid][AdminLevel]);
                SendClientMessage(playerid, 0x00C2ECFF, string);
            }
            else
            {
                format(string, sizeof(string), "%i is not an active player.", giveplayerid);
                SendClientMessage(playerid, 0xE60000FF, string);
            }
        }
        else
        {
            SendClientMessage(playerid, 0xE60000FF, "You are not a lead admin!");
        }
        return 1;

    }
    if(strcmp(cmd, "/Admin_Commands", true) == 0)
    {
        SendClientMessage(playerid, ORANGE, "This Command Is A Work In Progress Untill BAdmin Is Complete");
        return 1;
    }
    if(strcmp(cmd, "/Kick", true) == 0)
    {
        new string[128];
        new tmp[256];
        new player[MAX_PLAYER_NAME], kickplayer[MAX_PLAYER_NAME];
        new kickplayerid;
        tmp = strtok(cmdtext, idx);
        kickplayerid = strval(tmp);
       
        if(PlayerInfo[playerid][AdminLevel] == 1)
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, ORANGE, "USAGE: /kick [playerid].");
                SendClientMessage(playerid, ORANGE, "FUNCTION: Kick a player.");
                return 1;
            }
            tmp = strtok(cmdtext, idx);
            if(kickplayerid != INVALID_PLAYER_ID)
            {
                GetPlayerName(kickplayerid, kickplayer, sizeof(kickplayer));
                GetPlayerName(playerid, player, sizeof(player));
                printf("Admin %s Has Kicked %s.", player, kickplayer);
                format(string, sizeof(string), "You Have Been Kicked By %s.", player);
                SendClientMessage(kickplayerid, 0x00c2ecff, string);
                format(string, sizeof(string), "You Have Kicked %s.", kickplayer);
                SendClientMessage(playerid, 0x00c2ecff, string);
                Kick(kickplayerid);
            }
            else
            {
                format(string, sizeof(string), "%i is not online right now, Sorry.", kickplayerid);
                SendClientMessage(playerid, 0x00c2ecff, string);
            }
        }
        else
        {
            SendClientMessage(playerid, 0xE6000FF, "You Are Not A Moderator!");
        }
        return 1;
    }
    if(strcmp(cmd, "/Ban", true) == 0)
    {
        new string[128];
        new tmp[256];
        new player[MAX_PLAYER_NAME], banplayer[MAX_PLAYER_NAME];
        new banplayerid;
        new reason;
        tmp = strtok(cmdtext, idx);
        banplayerid= strval(tmp);
       
        if(PlayerInfo[playerid][AdminLevel] == 2)
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, ORANGE, "USAGE: /Ban [playerid] [reason].");
                SendClientMessage(playerid, ORANGE, "FUNCTION: Bans a player.");
                return 1;
            }
            if(banplayerid != INVALID_PLAYER_ID)
            {
                tmp = strtok(cmdtext, idx);
                GetPlayerName(banplayerid, banplayer, sizeof(banplayer));
                GetPlayerName(playerid, player, sizeof(player));
                printf("Admin: %s Has Banned: %s Because: %d.", player, banplayer, reason);
                format(string, sizeof(string), "You Have Been Banned By: %s Because: %d.", player, reason);
                SendClientMessage(banplayerid, 0x00c2ecff, string);
                format(string, sizeof(string), "You Have Banned: %s Because: %d.", banplayer, reason);
                SendClientMessage(playerid, 0x00c2ecff, string);
                Ban(banplayerid);
            }
            else
            {
                format(string, sizeof(string), "%i is not online right now, Sorry.", banplayerid);
                SendClientMessage(playerid, 0x00c2ecff, string);
            }
        }
        else
        {
            SendClientMessage(playerid, 0xE60000FF, "You Are Not a Super Moderator!");
        }
        return 1;
    }
    if(strcmp(cmd, "/Get", true) == 0)
    {
        new string[128];
        new tmp[256];
        new player[MAX_PLAYER_NAME], getplayer[MAX_PLAYER_NAME];
        new getplayerid;
        tmp = strtok(cmdtext, idx);
        getplayerid = strval(tmp);
       
        if(PlayerInfo[playerid][AdminLevel] == 1)
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, ORANGE, "USAGE: /Get [playerid].");
                SendClientMessage(playerid, ORANGE, "FUNCTION: Gets a player.");
                return 1;
            }
            if(getplayerid != INVALID_PLAYER_ID)
            {
                tmp = strtok(cmdtext, idx);
                new Float:X, Float:Y, Float:Z;
                GetPlayerName(getplayerid, getplayer, sizeof(getplayer));
                GetPlayerName(playerid, player, sizeof(player));
                GetPlayerPos(playerid, X, Y, Z);
                printf("Admin: %s Has Gotten: %s.", player, getplayer);
                format(string, sizeof(string), "You Have Been Teleported to Admin: %s Position.", player);
                SendClientMessage(getplayerid, 0x00c2ecff, string);
                format(string, sizeof(string), "You Have Teleported: %s to you.", getplayer);
                SendClientMessage(playerid, 0x00c2ecff, string);
                SetPlayerPos(getplayerid, X, Y, Z);
            }
            else
            {
                format(string, sizeof(string), "%i is not online right now, Sorry.", getplayerid);
                SendClientMessage(playerid, 0x00c2ecff, string);
            }
        }
        else
        {
            SendClientMessage(playerid, 0xE60000FF, "You Are Not a moderator!");
        }
        return 1;
    }
    return 1;
}

public OnPlayerConnect(playerid)
{
    PlayerInfo[playerid][AdminLevel] = 0;
    return 1;
}

stock 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;
}
Reply
#5

can u explain wat u changed plz
Reply
#6

the code looks fine but im on my blackberry and just had a quick scan through when i get on my laptop ill help
Reply
#7

pawn Код:
if(strcmp(cmd, "/Kick", true) == 0)
    {
        new string[128];
        new tmp[256];
        new player[MAX_PLAYER_NAME], kickplayer[MAX_PLAYER_NAME];
        new kickplayerid;
        tmp = strtok(cmdtext, idx);
        kickplayerid = strval(tmp);
       
        if(PlayerInfo[playerid][AdminLevel] == 1)
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, ORANGE, "USAGE: /kick [playerid].");
                SendClientMessage(playerid, ORANGE, "FUNCTION: Kick a player.");
            }
            tmp = strtok(cmdtext, idx);
            GetPlayerName(kickplayerid, kickplayer, sizeof(kickplayer));
            GetPlayerName(playerid, player, sizeof(player));
            printf("Admin %s Has Kicked %s.", player, kickplayer);
            format(string, sizeof(string), "You Have Been Kicked By %s.", player);
            SendClientMessage(kickplayerid, 0x00c2ecff, string);
            format(string, sizeof(string), "You Have Kicked %s.", kickplayer);
            SendClientMessage(playerid, 0x00c2ecff, string);
            Kick(kickplayerid);
            }
            else // <----------- wtf
            {
                format(string, sizeof(string), "%i is not online right now, Sorry.", kickplayerid);
                SendClientMessage(playerid, 0x00c2ecff, string);
            }
    }
    else // <------------ wtf
    {
        SendClientMessage(playerid, 0xE6000FF, "You Are Not A Moderator!");
    }
And to others same.
Reply
#8

But serious. Why aren't you switching to ZCMD + sscanf?
Reply
#9

dont know how to use em

and jafet i want to know wat did u change i didn't want the code i wanted to know wat to change
Reply
#10

https://sampforum.blast.hk/showthread.php?tid=91354
https://sampforum.blast.hk/showthread.php?tid=280476
https://sampforum.blast.hk/showthread.php?tid=244841
https://sampforum.blast.hk/showthread.php?tid=232129
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)