15.12.2011, 16:04
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256],
tmp[128],
idx;
if(strcmp(cmd, "/setskin", true) == 0) {
if(IsPlayerConnected(playerid)) {
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, COLOR_WHITE, "USAGE: /setskin [Playerid/PartOfName] [skin id]");
return 1;
}
new para1,
level,
string[128],
giveplayer[MAX_PLAYER_NAME];
para1 = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
level = strval(tmp);
if(level > 299 || level < 1) { SendClientMessage(playerid, COLOR_GREY, "Wrong skin ID!"); return 1; }
if (PlayerInfo[playerid][pAdmin] >= 2) {
if(IsPlayerConnected(para1)) {
if(para1 != INVALID_PLAYER_ID) {
GetPlayerName(para1, giveplayer, sizeof(giveplayer));
format(string, sizeof(string), "You have set %s's skin to %d.", giveplayer,level);
SendClientMessage(playerid, COLOR_GRAD2, string);
SetPlayerSkin(para1, level);
}
}
}
else {
SendClientMessage(playerid, COLOR_GRAD1, "You are not authorised to use that command.");
}
}
return 1;
}
return 0;
}
stock ReturnUser(text[], playerid = INVALID_PLAYER_ID)
{
new pos = 0;
while (text[pos] < 0x21) {
if (text[pos] == 0) return INVALID_PLAYER_ID;
pos++;
}
new userid = INVALID_PLAYER_ID;
if (IsNumeric(text[pos])) {
userid = strval(text[pos]);
if (userid >=0 && userid < MAX_PLAYERS) {
if(!IsPlayerConnected(userid)) {
userid = INVALID_PLAYER_ID;
}
else {
return userid;
}
}
}
new len = strlen(text[pos]);
new count = 0;
new name[MAX_PLAYER_NAME];
for (new i = 0; i < MAX_PLAYERS; i++) {
if (IsPlayerConnected(i)) {
GetPlayerName(i, name, sizeof (name));
if (strcmp(name, text[pos], true, len) == 0) {
if (len == strlen(name)) {
return i;
}
else {
count++;
userid = i;
}
}
}
}
if (count != 1) {
if (playerid != INVALID_PLAYER_ID) {
if (count) {
SendClientMessage(playerid, 0xFF0000AA, "Multiple users found, please narrow search.");
}
else {
SendClientMessage(playerid, 0xFF0000AA, "No matching user found.");
}
}
userid = INVALID_PLAYER_ID;
}
return userid;
}
IsNumeric(const string[])
{
for (new i = 0, j = strlen(string); i < j; i++) {
if (string[i] > '9' || string[i] < '0') return 0;
}
return 1;
}