16.01.2009, 13:53
pawn Code:
/* SA:MP /god and /me commands
* Made by My_Waffles_Bitch
*/
//==============================================================================
#include <a_samp>
#define CMDS true
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
//==============================================================================
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(me, 2, cmdtext);
dcmd(god, 3, cmdtext);
}
dcmd_me(playerid, params[] ) {
new
msg[128];
if (sscanf(params, "s",msg)) {
format(s,sizeof(s),"%s:[USAGE]: /me <MESSAGE>",icommands);
return SendClientMessage(playerid,COLOR_SYSTEM,s);
}
if(PlayerInfo[playerid][mute]) {
return 0;
}
else {
format(s,sizeof(s),"%s %s",PlayerName(playerid),msg);
SendClientMessageToAll(COLOR_WHITE,s);
WriteLog(clearlog,s);
}
return true;
}
dcmd_god(playerid, params[] ) {
if(God[playerid] == 0)
{
God[playerid] = 1;
new pName[MAX_PLAYER_NAME];
new string[48];
GetPlayerName(playerid, pName, sizeof(pName));
SendClientMessageToAll(0xAAAAAAAA,"%s has turned Godmode on.",pName);
}
else
{
God[playerid] = 0;
new pName[MAX_PLAYER_NAME];
new string[48];
GetPlayerName(playerid, pName, sizeof(pName));
SendClientMessageToAll(0xAAAAAAAA,"%s has turned godmode off.",pName);
SetPlayerHealth(playerid, 100);
}
return true;
}
//=======================================================================
stock sscanf(string[], format[], {Float,_}:...) {
new formatPos = 0, stringPos = 0, paramPos = 2, paramCount = numargs();
while (paramPos < paramCount && string[stringPos]){
switch (format[formatPos++]){
case '\0':{
return 0;
}case 'i', 'd':{
new
neg = 1,
num = 0,
ch = string[stringPos];
if (ch == '-'){
neg = -1;
ch = string[++stringPos];
}do{
stringPos++;
if (ch >= '0' && ch <= '9'){
num = (num * 10) + (ch - '0');
}else{
return 1;
}
}while ((ch = string[stringPos]) && ch != ' ');
setarg(paramPos, 0, num * neg);
}case 'h', 'x':{
new ch, num = 0;
while ((ch = string[stringPos++])){
switch (ch){
case 'x', 'X':{
num = 0;
continue;
}case '0' .. '9':{
num = (num << 4) | (ch - '0');
}case 'a' .. 'f':{
num = (num << 4) | (ch - ('a' - 10));
}case 'A' .. 'F':{
num = (num << 4) | (ch - ('A' - 10));
}case ' ':{
break;
}default:{
return 1;
}
}
}setarg(paramPos, 0, num);
}case 'c':{
setarg(paramPos, 0, string[stringPos++]);
}case 'f':{
new tmp[25];
strmid(tmp, string, stringPos, stringPos+sizeof(tmp)-2);
setarg(paramPos, 0, _:floatstr(tmp));
}case 's', 'z':{
new i = 0, ch;
if (format[formatPos]){
while ((ch = string[stringPos++]) && ch != ' '){
setarg(paramPos, i++, ch);
}if (!i) return 1;
}else{
while ((ch = string[stringPos++])){
setarg(paramPos, i++, ch);
}
}stringPos--;
setarg(paramPos, i, '\0');
}default:{
continue;
}
}while (string[stringPos] && string[stringPos] != ' '){
stringPos++;
}while (string[stringPos] == ' '){
stringPos++;
}paramPos++;
}while (format[formatPos] == 'z') formatPos++;
return format[formatPos];
}