#1

Hello everyone, today I have a problem with BanEx, I am trying to make it say a reason about why I banned the player in samp.ban, but everytime I use a string to tell the reason it just says null.

My code.

pawn Код:
CMD:ban(playerid, params[])
{
    if(PlayerInfo[playerid][Admin] < 1) return SendClientMessage(playerid, -1, "[ERROR]:You are not an Administrator");
    new targetid;
    new reason[128];
    if(sscanf(params, "us[128]", targetid, reason)) return SendClientMessage(playerid, -1, "[Usage]:/ban [playerid] [reason]");
    if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, -1, "ERROR:This player is not connected!");
    new name[MAX_PLAYER_NAME];
    new target[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name,sizeof(name));
    GetPlayerName(targetid, target,sizeof(target));
    new str33[128];
    new str34[128];
    format(str33,sizeof(str33),"[ADMIN]%s %s has banned %s. [Reason]:%s",AdminLevel(playerid), name, target, reason);
    format(str34, sizeof(str34),"%s",reason);
    printf("[SERVER]:%s was banned by %s %s. Reason:%s", target,AdminLevel(playerid), name, reason);
    SendClientMessageToAll(0xFF8080FF, str33);
    BanExWithMessage(targetid, 0xFF0000FF," You have been banned, please appeal it on our website.",str34);
    return 1;
}
pawn Код:
stock BanExWithMessage(playerid, color, message[], reason[])
{
    new targetid;
    SendClientMessage(playerid, color, message);
    SetTimerEx("BanExPublic", 1000, false, "d", targetid, reason);
}
pawn Код:
forward BanExPublic(playerid, reason[]);
public BanExPublic(playerid, reason[])
{
    new targetid;
    BanEx(targetid, reason);
}
So any suggestions? Thanks
Reply
#2

Within this...

pawn Код:
SetTimerEx("BanExPublic", 1000, false, "d", targetid, reason);
You're only passing the target id...

pawn Код:
"d", targetid, reason);
You need to throw the "s" for string in there.
Reply
#3

pawn Код:
CMD:ban(playerid, params[])
{
    if(!PlayerInfo[playerid][Admin]) return SendClientMessage(playerid, -1, "[ERROR]: You are not an Administrator");
    new targetid, reason[60];
    if(sscanf(params, "us[60]", targetid, reason)) return SendClientMessage(playerid, -1, "[Usage]: /ban [playerid] [reason]");
    if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, -1, "ERROR: This player is not connected!");
    new name[MAX_PLAYER_NAME], target[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    GetPlayerName(targetid, target, sizeof(target));
    new fstr[128];
    format(fstr, sizeof(fstr),"[ADMIN] %s %s has banned %s. [Reason]: %s", AdminLevel(playerid), name, target, reason);
    printf("[SERVER]: %s was banned by %s %s. Reason: %s", target, AdminLevel(playerid), name, reason);
    SendClientMessageToAll(0xFF8080FF, fstr);
    SetPVarString(targetid, "BanReason", reason);
    SendClientMessage(targetid, 0xFF0000FF, "You have been banned, please appeal it on our website.");
    SetTimerEx("BanExDelay", false, 1000, "i", targetid);
    return 1;
}

forward BanExDelay(playerid);
public BanExDelay(playerid)
{
    new reason[60];
    GetPVarString(playerid, "BanReason", reason, sizeof(reason));
    BanEx(playerid, reason);
    return 1;
}
And actually Magnuson, you cannot pass a string through SetTimerEx just yet. As can be found on the SA-MP wiki page for SetTimerEx.

Quote:

Specifier Meaning
i Integer.
d Integer.
a Array. The next parameter must be an integer ("i") with the array's size. [CURRENTLY UNUSABLE]
s String. [CURRENTLY UNUSABLE]
f Float.
b Boolean (true/false).

Reference:
https://sampwiki.blast.hk/wiki/SetTimerEx
Reply
#4

Quote:
Originally Posted by Threshold
Посмотреть сообщение
pawn Код:
CMD:ban(playerid, params[])
{
    if(!PlayerInfo[playerid][Admin]) return SendClientMessage(playerid, -1, "[ERROR]: You are not an Administrator");
    new targetid, reason[60];
    if(sscanf(params, "us[60]", targetid, reason)) return SendClientMessage(playerid, -1, "[Usage]: /ban [playerid] [reason]");
    if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, -1, "ERROR: This player is not connected!");
    new name[MAX_PLAYER_NAME], target[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    GetPlayerName(targetid, target, sizeof(target));
    new fstr[128];
    format(fstr, sizeof(fstr),"[ADMIN] %s %s has banned %s. [Reason]: %s", AdminLevel(playerid), name, target, reason);
    printf("[SERVER]: %s was banned by %s %s. Reason: %s", target, AdminLevel(playerid), name, reason);
    SendClientMessageToAll(0xFF8080FF, fstr);
    SetPVarString(targetid, "BanReason", reason);
    SendClientMessage(targetid, 0xFF0000FF, "You have been banned, please appeal it on our website.");
    SetTimerEx("BanExDelay", false, 1000, "i", targetid);
    return 1;
}

forward BanExDelay(playerid);
public BanExDelay(playerid)
{
    new reason[60];
    GetPVarString(playerid, "BanReason", reason, sizeof(reason));
    BanEx(playerid, reason);
    return 1;
}
And actually Magnuson, you cannot pass a string through SetTimerEx just yet. As can be found on the SA-MP wiki page for SetTimerEx.



Reference:
https://sampwiki.blast.hk/wiki/SetTimerEx
Thank you very much! I seriously appreciate it!
Reply
#5

This is how I did it, I consider this alot easier.

pawn Код:
new sString[60 char];

CMD:ban(playerid, params[])
{
    new ID, Reason[60], gMessage[100], iMessage[100];

    if(sscanf(params, "us[60]", ID, Reason)) return SendClientMessage(playerid, 0xF81414FF, "USAGE: /ban [ID/name] [Reason].");

    if(!IsPlayerConnected(playerid)) SendClientMessage(playerid, 0xF81414FF, "Invalid ID, not connected.");    

    format(gMessage, sizeof(gMessage), "* An Admin has banned %s (%d), reason: %s", iName, ID, Reason);
    SendClientMessageToAll(0x33AA33FF, gMessage);

    format(iMessage, sizeof(iMessage), "* An Admin has banned You, reason: %s.", Reason);
    SendClientMessage(ID, 0xF81414FF, iMessage);

    strpack(sString, Reason); // It will pack or "save" the reason (string).

    SetTimerEx("BanExDelay", false, 1000, "i", ID);

    return 1;
}

forward BanExDelay(playerid);

public BanExDelay(playerid)
{
    BanEx(playerid, sString);
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)