[HELP ME] /warn command
#1

I need help making a warn command with zcmd include.
Please help me
-Jeremy
Reply
#2

I made you a very basic, warn system, maybe you could finish it

pawn Код:
new
    Warn[MAX_PLAYERS];

CMD:warn( playerid, params[ ] )
{
    new targetid;
    if( sscanf( params, "u",targetid ) )
        return SendClientMessage( playerid, -1, "Usage: /warn [PlayerName/ID]" );

    Warn[targetid] ++;
    return true;
}

public OnPlayerUpdate((playerid)
{
    if(Warns[playerid] >= 3)
        return Kick(playerid); //kicking the player if he reaches 3 or more warning
    return true;
}
Reply
#3

Here's something I use, hope this helps
Код:
CMD:warn(playerid, params[])
{
	new giveplayerid, result[128];
	if(PlayerInfo[playerid][pAdmin] >= 2){
	    if(!sscanf(params, "us[128]", giveplayerid, result)){
			if(IsPlayerConnected(giveplayerid)){
				if(giveplayerid != INVALID_PLAYER_ID){
					strmid(giveplayer, PlayerRPName(giveplayerid), 0, MAX_PLAYER_NAME);
					strmid(sendername, PlayerRPName(playerid), 0, MAX_PLAYER_NAME);
					new logstring[128];
					new IP[16];
					new year, month, day;
					getdate(year, month, day);
					if(UseAdmCmdTimer[playerid] > 2){
						GetPlayerIp(playerid, IP, sizeof(IP));
						format(logstring, sizeof(logstring), "%s [%d/%d/%d] Name: %s Key: %s Reason: Spam.", IP, day, month, year,sendername,PlayerInfo[playerid][pKey]);
						BanLog(logstring);
						format(string, sizeof(string), "{FF6347}SERVER: %s was banned, reason: Spam.", sendername);
						SendClientMessageToAll(COLOR_WHITE, string);
						format(string, sizeof(string), "Ban Reason: Spam (/warn) - Banned by: Autoban");
						strmid(PlayerInfo[playerid][pBanReason], string, 0, strlen(string), 255);
						PlayerInfo[playerid][pBand] = 3;
						PlayerInfo[playerid][pPermBand] = 1;
						BanEx(playerid, "Banned By: Autoban Reason: Spam");
						return 1;
					}
					if(PlayerInfo[giveplayerid][pAdmin] > PlayerInfo[playerid][pAdmin]){
						format(string, sizeof(string), "{FF0000}AdmWarning{FFFFFF}: %s was warned, reason: Attempting to warn a higher admin.", sendername);
						ABroadCast(COLOR_WHITE, string, 1);
						PlayerInfo[playerid][pWarns] += 1;
						if(PlayerInfo[playerid][pWarns] >= 3){
							GetPlayerIp(giveplayerid, IP, sizeof(IP));
							format(logstring, sizeof(logstring), "%s [%d/%d/%d] Name: %s Key: %s Banned by: Autoban Reason: Attempting to warn a higher admin (3 Warnings).", IP, day, month, year,sendername,PlayerInfo[playerid][pKey]);
							BanLog(logstring);
							format(string, sizeof(string), "{FF6347}SERVER: %s was banned (had 3 warnings), reason: Attempting to warn a higher admin", sendername);
							SendClientMessageToAll(COLOR_WHITE, string);
							format(string, sizeof(string), "Ban Reason: Attempting to warn a higher admin (had 3 warnings) - Banned by: Autoban");
							strmid(PlayerInfo[playerid][pBanReason], string, 0, strlen(string), 255);
							PlayerInfo[playerid][pBand] = 3;
							BanEx(playerid, "Banned By: Autoban Reason: Had 3 Warnings");
							return 1;
						}
						return 1;
					}
					PlayerInfo[giveplayerid][pWarns] += 1;
					format(string, sizeof(string), "{FF0000}AdmWarning{FFFFFF}: %s has warned %s, reason: %s", PlayerRPName(playerid), giveplayer, (result));
					ABroadCast(COLOR_WHITE,string,1);
					if(PlayerInfo[giveplayerid][pWarns] >= 3){
						GetPlayerIp(giveplayerid, IP, sizeof(IP));
						format(logstring, sizeof(logstring), "%s [%d/%d/%d] Name: %s Key: %s Banned by: %s Reason: %s (3 Warnings).", IP, day, month, year,giveplayer,PlayerInfo[giveplayerid][pKey],sendername, (result));
						BanLog(logstring);
						format(string, sizeof(string), "{FF6347}SERVER: %s was banned by %s (had 3 warnings), reason: %s", giveplayer, sendername, (result));
						SendClientMessageToAll(COLOR_WHITE, string);
						format(string, sizeof(string), "Ban Reason: %s (had 3 warnings) - Banned by: %s",result,sendername);
						strmid(PlayerInfo[giveplayerid][pBanReason], string, 0, strlen(string), 255);
						PlayerInfo[giveplayerid][pBand] = 3;
						BanEx(giveplayerid, "Banned By: Autoban Reason: Had 3 Warnings");
						return 1;
					}
					format(string, sizeof(string), "You warned %s, reason: %s", giveplayer, (result));
					SendClientMessage(playerid, COLOR_LIGHTRED, string);
					format(string, sizeof(string), "You were warned by %s, reason: %s", sendername, (result));
					SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
					UseAdmCmdTimer[playerid]++;
					SetTimerEx("UseAdmCmd",3*1000,0,"i",playerid); //3 seconds
					return 1;
				}
			}else{
				format(string, sizeof(string), "   %d is not an active player.", giveplayerid);
				SendClientMessage(playerid, COLOR_GRAD1, string);
			}
		}else{
		    SendClientMessage(playerid, COLOR_WHITE, "USAGE: /warn [playerid/PartOfName] [reason]");
		}
	}else{
		SendClientMessage(playerid, COLOR_GRAD2, "   You are not authorized to use that command !");
	}
	return 1;
}
Reply
#4

D:\Users\Jeremy\Desktop\By Jeremy\YourRealRole.pwn(5087) : error 001: expected token: ";", but found "]"
D:\Users\Jeremy\Desktop\By Jeremy\YourRealRole.pwn(5087) : error 029: invalid expression, assumed zero
D:\Users\Jeremy\Desktop\By Jeremy\YourRealRole.pwn(5081) : error 017: undefined symbol "giveplayer"
D:\Users\Jeremy\Desktop\By Jeremy\YourRealRole.pwn(5082) : error 017: undefined symbol "sendername"
D:\Users\Jeremy\Desktop\By Jeremy\YourRealRole.pwn(5087) : error 017: undefined symbol "UseAdmCmdTimer"

Dstreet i tried you cmd and this is what i got,please help
Reply
#5

D:\Users\Jeremy\Desktop\By Jeremy\YourRealRole.pwn(5086) : error 010: invalid function or declaration
D:\Users\Jeremy\Desktop\By Jeremy\YourRealRole.pwn(5086) : error 021: symbol already defined: "OnPlayerUpdate"
D:\Users\Jeremy\Desktop\By Jeremy\YourRealRole.pwn(5086) : error 017: undefined symbol "playerid"
D:\Users\Jeremy\Desktop\By Jeremy\YourRealRole.pwn(5086) : fatal error 107: too many error messages on one line

pds2k12 this is what i got
Reply
#6

Don't forget to add this Include at the Top of your Script:

Код:
#include <zcmd>
Add This on the Top of your Script:

Код:
new Warn[MAX_PLAYERS];
Command(s):

pawn Код:
CMD:warn( playerid, params[ ] )
{
    new targetid;
    if( sscanf( params, "u",targetid ) )
        return SendClientMessage( playerid, -1, "Usage: /warn [PlayerName/ID]" );

    Warn[targetid] ++;
    return true;
}
Add This on your OnPlayerUpdate:

pawn Код:
public OnPlayerUpdate(playerid)
{
    if(Warns[playerid] >= 3)
        return Kick(playerid); //kicking the player if he reaches 3 or more warning
    return true;
}
or My WARN Command:

pawn Код:
CMD:warn(playerid, params[])
{
    if(!IsPlayerAdmin(playerid))
    {
        new targetid, reason[100];
        if(sscanf(params, "ds[64]", targetid, reason)) return SendClientMessage(playerid, COLOR_RED, "Syntax: /warn [playerid] [reason]");
        if(IsPlayerConnected(targetid))
        {
            if(targetid != INVALID_PLAYER_ID)
            {
                if(PlayerInfo[targetid][Warns] == MAX_WARNINGS)
                {
                    new msg[300], tname[MAX_PLAYER_NAME], name[MAX_PLAYER_NAME];
                    GetPlayerName(targetid, tname, sizeof(tname));
                    GetPlayerName(playerid, name, sizeof(name));
                    format(msg, sizeof(msg), "ADMIN_KICK: {FF0000}%s(ID: %d) {FF00FF}has been Kicked, reason: {FF0000}warning 3/3", tname, targetid);
                    SendClientMessageToAll(BANNEDMESSAGE, msg);
                    new string[128];
                    format(string, sizeof(string), "%s has been Kicked by %s, Reason: {FF0000}%s{FF00FF}, Warning 3/3", tname, name, reason);
                    SaveIn("WarnLog",string);
                    Kick(targetid);
                }
                if(PlayerInfo[targetid][Warns] < MAX_WARNINGS)
                {
                    new msg[300], tname[MAX_PLAYER_NAME], name[MAX_PLAYER_NAME];
                    PlayerInfo[targetid][Warns]++;
                    GetPlayerName(targetid, tname, sizeof(tname));
                    GetPlayerName(playerid, name, sizeof(name));
                    format(msg, sizeof(msg), "Kick-Warning: {FF0000}%s {FF00FF}has been warned, Reason: {FF0000}%s{FF00FF}, warning: {FF0000}%d/3", tname, reason, PlayerInfo[targetid][Warns]);
                    SendClientMessageToAll(BANNEDMESSAGE, msg);
                    new string[128];
                    format(string, sizeof(string), "%s has been Warned by %s, Reason: %s", tname, name, reason);
                    SaveIn("WarnLog",string);
                }
            }
            else return SendClientMessage(playerid, COLOR_RED, "ERROR: Invalid Player ID / Player is not Connected.");
        }
    }
    else return SendClientMessage(playerid, COLOR_RED, "ERROR: You're not an RCON Administrator");
    return 1;
}
Reply
#7

D:\Users\Jeremy\Desktop\My own new gm 26\gamemodes\YourRealRole.pwn(5870) : error 017: undefined symbol "Warns"
D:\Users\Jeremy\Desktop\My own new gm 26\gamemodes\YourRealRole.pwn(5876) : error 017: undefined symbol "BANNEDMESSAGE"
D:\Users\Jeremy\Desktop\My own new gm 26\gamemodes\YourRealRole.pwn(5879) : error 017: undefined symbol "SaveIn"
D:\Users\Jeremy\Desktop\My own new gm 26\gamemodes\YourRealRole.pwn(5882) : error 017: undefined symbol "Warns"
D:\Users\Jeremy\Desktop\My own new gm 26\gamemodes\YourRealRole.pwn(5885) : error 017: undefined symbol "Warns"
D:\Users\Jeremy\Desktop\My own new gm 26\gamemodes\YourRealRole.pwn(588 : error 017: undefined symbol "Warns"
D:\Users\Jeremy\Desktop\My own new gm 26\gamemodes\YourRealRole.pwn(5889) : error 017: undefined symbol "BANNEDMESSAGE"
D:\Users\Jeremy\Desktop\My own new gm 26\gamemodes\YourRealRole.pwn(5892) : error 017: undefined symbol "SaveIn"
Reply
#8

You can't just copy/past. You have to edit it to your own gamemode. Anyway, try this:

At the top of your script under includes/defines:
pawn Код:
new Warnings[MAX_PLAYERS]
Then this is your command. put this out of any callback (public things):
pawn Код:
CMD:warn(playerid, params[])
{
    new targetid; new string[150]; reason[50];
    if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid, -1, "You aren't admin !");
    if(!IsPlayerConnected(targetid))return SendClientMessage(playerid, -1, "Invalid player id!");
    if(sscanf(params, "us", targetid, reason))return SendClientMessage(playerid, -1, "usage: /warn [playerid] [reason]");
    Warnings[targetid] ++;
    if(Warnings[targetid] == 3)
    {
    Kick(targetid);
    format(string, sizeof(string), "%s has been kicked for earning 3 warnings !", targetid);
    SendClientMessageToAll(-1, string);
    }
    return 1;
}
Reply
#9

Quote:
Originally Posted by pds2k12
Посмотреть сообщение
I made you a very basic, warn system, maybe you could finish it

pawn Код:
new
    Warn[MAX_PLAYERS];

CMD:warn( playerid, params[ ] )
{
    new targetid;
    if( sscanf( params, "u",targetid ) )
        return SendClientMessage( playerid, -1, "Usage: /warn [PlayerName/ID]" );

    Warn[targetid] ++;
    return true;
}

public OnPlayerUpdate((playerid)
{
    if(Warns[playerid] >= 3)
        return Kick(playerid); //kicking the player if he reaches 3 or more warning
    return true;
}
Why would you check if the player has 3 warnings OnPlayerUpdate when the only way for them to get warnings is through the warn command?
Reply
#10

https://sampforum.blast.hk/showthread.php?tid=466443
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)