How would I do this?
#1

Currently I have a filterscript made for my factions, and I want to know why this isn't working.
pawn Код:
CMD:setleader(playerid, params[])
    {
    //if (!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,COLOR_RED,"rcon");
    if(pInfo[playerid][pAdmin] => 2);
    {
    new ID,orgid;
    if (sscanf(params, "ud", ID,orgid)) return SendClientMessage(playerid,COLOR_WHITE,"Usage: /setleader [playerid] [orgid]");
    if (!IsPlayerConnected(ID)) return 1;
    if (PlayerOrg[ID]) return SendClientMessage(playerid, COLOR_RED,"That player already belongs to an organization");
    if (orgid < 1 || orgid > OrgsCount) return SendClientMessage(playerid, COLOR_RED,"Invalid org. ID!");
    new string[140];
    format(string,sizeof(string),"Admin %s has made you leader of the faction %s!", PlayerName(playerid), GetOrgName(orgid));
    SendClientMessage(ID, COLOR_YELLOW, string);
    format(string,sizeof(string),"You have set %s the leader of %s", PlayerName(ID), GetOrgName(orgid));
    SendClientMessage(playerid, COLOR_YELLOW, string);
    PlayerOrg[ID] = orgid;
    PlayerLeader[ID] = 1;
    Organization[orgid][Leader] = PlayerName(ID);
    SaveLeaders();
    SavePlayerOrgInfo(ID);
    GiveOrgFeatures(ID);
    }
    return 1;
    }
The line "if(pInfo[playerid][pAdmin] => 2);" is an undefined symbol when compiling, but it's not in my main script. How can I make this work?
Reply
#2

Make sure you have a pInfo enum in your script with pAdmin as an insider.
Reply
#3

I do in the main script, but not the filterscript. Do I need to make another one in the filterscript?
Reply
#4

Quote:
Originally Posted by HenrySunseri
Посмотреть сообщение
I do in the main script, but not the filterscript. Do I need to make another one in the filterscript?
Probably, yes. Or you can include your gamemode in your filterscript too.
Reply
#5

Add this into your gamemode:
pawn Код:
forward GetAdminLevel(playerid);
public GetAdminLevel(playerid)
{
    return pInfo[playerid][pAdmin];
}
And then add this to your filterscript:
pawn Код:
#define GetAdminLevel(%1) CallRemoteFunction("GetAdminLevel", "i", %0)
Then change your command to this:
pawn Код:
CMD:setleader(playerid, params[])
{
    if(GetAdminLevel(playerid) >= 2)
    {
        new ID,orgid;
        if (sscanf(params, "ud", ID,orgid)) return SendClientMessage(playerid,COLOR_WHITE,"Usage: /setleader [playerid] [orgid]");
        if (!IsPlayerConnected(ID)) return 1;
        if (PlayerOrg[ID]) return SendClientMessage(playerid, COLOR_RED,"That player already belongs to an organization");
        if (orgid < 1 || orgid > OrgsCount) return SendClientMessage(playerid, COLOR_RED,"Invalid org. ID!");
        new string[140];
        format(string,sizeof(string),"Admin %s has made you leader of the faction %s!", PlayerName(playerid), GetOrgName(orgid));
        SendClientMessage(ID, COLOR_YELLOW, string);
        format(string,sizeof(string),"You have set %s the leader of %s", PlayerName(ID), GetOrgName(orgid));
        SendClientMessage(playerid, COLOR_YELLOW, string);
        PlayerOrg[ID] = orgid;
        PlayerLeader[ID] = 1;
        Organization[orgid][Leader] = PlayerName(ID);
        SaveLeaders();
        SavePlayerOrgInfo(ID);
        GiveOrgFeatures(ID);
    }
    return 1;
}
Reply
#6

I'm getting "unknown parameter in substitution (incorrect #define pattern) ^
Reply
#7

pawn Код:
CMD:setleader(playerid, params[])
{
    if(GetAdminLevel(playerid) >= 2)
    {
        new ID,orgid;
        if (sscanf(params, "ud", ID,orgid)) return SendClientMessage(playerid,COLOR_WHITE,"Usage: /setleader [playerid] [orgid]");
        if (!IsPlayerConnected(ID)) return SendClientMessage(playerid, COLOR_RED, "That player is not connected");
        if (PlayerOrg[ID] != INVALID_ORG_ID) return SendClientMessage(playerid, COLOR_RED,"That player already belongs to an organization");
        if (orgid < 1 || orgid > OrgsCount) return SendClientMessage(playerid, COLOR_RED,"Invalid org. ID!");
        new string[140];
        format(string,sizeof(string),"Admin %s has made you leader of the faction %s!", PlayerName(playerid), GetOrgName(orgid));
        SendClientMessage(ID, COLOR_YELLOW, string);
        format(string,sizeof(string),"You have set %s the leader of %s", PlayerName(ID), GetOrgName(orgid));
        SendClientMessage(playerid, COLOR_YELLOW, string);
        PlayerOrg[ID] = orgid;
        PlayerLeader[ID] = 1;
        Organization[orgid][Leader] = PlayerName(ID);
        SaveLeaders();
        SavePlayerOrgInfo(ID);
        GiveOrgFeatures(ID);
    }
    return 1;
}
Add
pawn Код:
#define INVALID_ORG_ID 3425
You can change 3425 to a number that you will NEVER use for orgids.

Also OnPlayerDisconnect add this:
pawn Код:
PlayerOrg[playerid] = INVALID_ORG_ID;

If you get errors/warnings please post them with the lines.
Reply
#8

pawn Код:
#define GetAdminLevel(%0) CallRemoteFunction("GetAdminLevel", "i", %0)
Reply
#9

Use the define Threshold posted (I typed %1 by mistake) with the fixed command I posted.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)