[Tutorial] Simple /announce command.
#1

First of all you should download ZCMD, and SSCANF.
put both of them inside pawno/includes
and SSCANF into plugins depends on your system .so for linux.

after you've done that, at the top of your gamemode add:
#include <YSI\y_ini>
#include <sscanf2>

without these you will not be able to use all sscanf and zcmd methods.
we will use this way:
COMMAND:mycommand(playerid, params[])
or
CMD:mycommand(playerid, params[])

start with

Код:
CMD:announce(playerid, params)
{
   return 1;
}
first make a new string[256];
for our message format.
and playername[MAX_PLAYER_NAME];

new string[256],playername[MAX_PLAYER_NAME];

we want to make a check if the player is admin rcon or not so.
Код:
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFFFFFF, "You are not admin");
Explanation:
the ! inside IsPlayerAdmin means if he's not admin. don't remove this or else admin will get this message and won't
be able to send an announce.

let's move on.


Код:
CMD:announce(playerid, params[])
{
	new string[256],playername[MAX_PLAYER_NAME];
	if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFFFFFF, "You are not admin");
	return 1;
}
let's make a check if the player doesn't write any message inside the params.
Код:
if(isnull(params))  return SendClientMessage(playerid, 0xFFFFFF, "/announce [text]");
if the params of the command are null <isnull> a return message will popup "/announce [text]"
k time to get the player name for the message.
Код:
GetPlayerName(playerid, playername, sizeof(playername));
playerid - is the playerid.
playername - the variable we made.
sizeof(playername) - the size of the player name, you can use numbers like 265 but i prefer sizeof.

let's move on.
the string of the message will be like that.
Код:
format(string, sizeof(string), "%s : %s", playername, params);
inside format(
string - is the string variable we made
sizeof(string) - the size of the message
%s is the name of the player
%s it's for strings.
%d it's for numbers

%s : %s",
first we have playername then message you can look by here.
playername, params
first playername then params.

then just simple send message to all
Код:
SendClientMessageToAll(0xFFFFFFF, string);
Full command
Код:
CMD:announce(playerid, params[])
{
	new string[256], pName[MAX_PLAYER_NAME];
	if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFFFFFF, "You are not admin");
	if(isnull(params))  return SendClientMessage(playerid, 0xFFFFFF, "/announce [text]");
	GetPlayerName(playerid, pName, sizeof(pName));
	format(string, sizeof(string), "{F2240D}[Admin] %s:{09F7C7} %s", pName, params);
	SendClientMessageToAll(0xFFFFFFF, string);
	return 1;
}
command with sscanf:
Код:
CMD:announce(playerid, params[])
{
	new text[265],string[265],pName[MAX_PLAYER_NAME];
	if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFFFFFF, "You are not admin");
	if(sscanf(params,"s[265]",text)) return SendClientMessage(playerid, COLOR_WHITE,"/announce [text]");
        GetPlayerName(playerid, pName, sizeof(pName));
	format(string, sizeof(string), "{F2240D}[Admin] %s:{09F7C7} %s", pName, text);
	SendClientMessageToAll(0xFFFFFFF, string);
	return 1;
}
Reply
#2

Wait wait wait wait wait where the hell did we get ysi/ytimers from? Not everyone will have ysi so tell them to get it. Overall its not too bad of a tut.
Reply
#3

they don't need ysi..
Reply
#4

Wa wa wait, what? Including YSI library to just one simple command??
Out of mind?, YSI is not even used in tutorial.
Reply
#5

Why is the announce text 265 cells big? You can only have around ~150 characters in a message (different for other resolutions).

You could of done this without sscanf either.

pawn Код:
CMD:announce(playerid, params[])
{
    new  
        string[152],
        pName[MAX_PLAYER_NAME]
    ;
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFFFFFF, "You are not admin");
    if (isnull(params)) return SendClientMessage(playerid, COLOR_WHITE,"/announce [text]");
    GetPlayerName(playerid, pName, sizeof(pName));
    format(string, sizeof(string), "{F2240D}[Admin] %s:{09F7C7} %s", pName, params);
    SendClientMessageToAll(0xFFFFFFF, string);
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)