[AJUDA] Comando /prender -
marcelodell - 12.12.2011
Boa tarde pessoal, estava tentando fazer um comando para os Admin poderem prender os players, mas nгo obtive muito sucesso. Tentei fazer usando como base o comando /deter da minha GM, mas dessa vez tentei adicionar o "MOTIVO" para ser apresentado a todos os players, mas toda a vez que eu digito corretamente o comando, ele nгo funciona, ele me retorna a mensagem "USE: /prender [id] [tempo] [motivo]". Alguem ai poderia me ajudar a colocar este comando para funcionar?
Aqui esta ele:
pawn Код:
if(strcmp(cmd, "/prender", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if (PlayerInfo[playerid][pAdmin] >= 1)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
MSGPLAYER(playerid, COLOR_GRAD2, "USE: /prender [id] [tempo (minutos)] [motivo]");
return 1;
}
giveplayerid = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
MSGPLAYER(playerid, COLOR_GRAD2, "USE: /prender [id] [tempo (minutos)] [motivo]");
return 1;
}
new time = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
MSGPLAYER(playerid, COLOR_GRAD2, "USE: /prender [id] [tempo (minutos)] [motivo]");
return 1;
}
new length = strlen(cmdtext);
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
MSGPLAYER(playerid, COLOR_GRAD2, "USE: /prender [id] [tempo (minutos)] [motivo]");
return 1;
}
new suspect = giveplayerid;
if(IsPlayerConnected(suspect))
{
if(GetDistanceBetweenPlayers(playerid,suspect) < 15)
{
GetPlayerName(suspect, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* Vocк Prendeu %s !", giveplayer);
MSGPLAYER(playerid, COLOR_LIGHTBLUE, string);
//GivePlayerMoney(suspect, -moneys);
format(string, sizeof(string), "Preso por %s", sendername);
GameTextForPlayer(suspect, string, 5000, 5);
ResetPlayerWeaponsEx(suspect);
if(PlayerInfo[playerid][pMembro]==1||PlayerInfo[playerid][pLider]==1)
{
format(string, sizeof(string), "[PRESO] O Admin %s prendeu o(a) %s ||MOTIVO: %s", sendername, giveplayer, (result));
OOCNews(0xFF8000AA, string);
}
SetPlayerInterior(suspect, 6);
SetPlayerPos(suspect,264.6288,77.5742,1001.0391);
PlayerInfo[suspect][pJailTime] = time * 60;
PlayerInfo[suspect][pJailed] = 1;
SetPlayerFree(suspect,playerid, "Foi Preso");
PlayerInfo[suspect][pMuted] = 0;
Controle(suspect, 1);
PlayerCuffed[suspect] = 0;
PlayerInfo[suspect][pDrogas] = 0;
PlayerInfo[suspect][pDrogas2] = 0;
PlayerInfo[suspect][pDrogas3] = 0;
PlayerInfo[suspect][pMats] = 0;
return 1;
}//distance
}//not connected
else
{
MSGPLAYER(playerid, COLOR_GREY, " Esse nгo й um jogador ativo.");
return 1;
}
}
else
{
MSGPLAYER(playerid, COLOR_GREY, " Vocк nгo й um Administrador!");
return 1;
}
}//not connected
return 1;
}
Re: [AJUDA] Comando /prender -
Cristhian - 12.12.2011
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[50 char], params[100 char];
new id;
unformat(cmdtext, "s[50]S( )[100]",cmd,params);
if(strcmp(cmd, "/prender", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] == 0) return SendClientMessage(playerid, -1, "Vocк nгo й admin!");
new tempo, motivo[100];
if(sscanf(params, "dds[100]", id, tempo, motivo)) return SendClientMessage(playerid, -1, "USE: /prender [id] [tempo(minutos)] [motivo]");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "ID INVБLIDO!");
if(GetDistanceBetweenPlayers(playerid, id) < 15)
{
new string[128];
format(string, sizeof(string), "* Vocк Prendeu %s !", Name(id));
MSGPLAYER(playerid, COLOR_LIGHTBLUE, string);
//GivePlayerMoney(id, -moneys);
format(string, sizeof(string), "Preso por %s", Name(playerid));
GameTextForPlayer(id, string, 5000, 5);
ResetPlayerWeaponsEx(id);
if(PlayerInfo[playerid][pMembro] == 1||PlayerInfo[playerid][pLider] == 1)
{
format(string, sizeof(string), "[PRESO] O Admin %s prendeu o(a) %s ||MOTIVO: %s", Name(playerid), Name(id), motivo);
OOCNews(0xFF8000AA, string);
}
SetPlayerInterior(id, 6);
SetPlayerPos(id,264.6288,77.5742,1001.0391);
PlayerInfo[id][pJailTime] = time * 60;
PlayerInfo[id][pJailed] = 1;
SetPlayerFree(id,playerid, "Foi Preso");
PlayerInfo[id][pMuted] = 0;
Controle(id, 1);
PlayerCuffed[id] = 0;
PlayerInfo[id][pDrogas] = 0;
PlayerInfo[id][pDrogas2] = 0;
PlayerInfo[id][pDrogas3] = 0;
PlayerInfo[id][pMats] = 0;
return 1;
}
}
return 0;
}
pawn Код:
Name(playerid)
{
new nome[MAX_PLAYER_NAME];
GetPlayerName(playerid, nome, sizeof(nome));
return nome;
}
Re: [AJUDA] Comando /prender -
marcelodell - 13.12.2011
Desculpa pela demora, mas vi so agora o Post aqui no forum. Fui testar o codigo que vocк me enviou mas deu os seguintes erros e warnings:
pawn Код:
C:\Users\Marcelo\Documents\GM\BPR\BPR\gamemodes\Gmy.pwn(796) : warning 219: local variable "Name" shadows a variable at a preceding level
C:\Users\Marcelo\Documents\GM\BPR\BPR\gamemodes\Gmy.pwn(44554) : error 021: symbol already defined: "cmd"
C:\Users\Marcelo\Documents\GM\BPR\BPR\gamemodes\Gmy.pwn(44565) : warning 219: local variable "string" shadows a variable at a preceding level
C:\Users\Marcelo\Documents\GM\BPR\BPR\gamemodes\Gmy.pwn(44579) : error 017: undefined symbol "time"
Nas seguinter linhas:
pawn Код:
new cmd[50 char], params[100 char];//LINHA 44554 com erro
new id;
unformat(cmdtext, "s[50]S( )[100]",cmd,params);
if(strcmp(cmd, "/prender", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] == 0) return SendClientMessage(playerid, -1, "Vocк nгo й admin!");
new tempo, motivo[100];
if(sscanf(params, "dds[100]", id, tempo, motivo)) return SendClientMessage(playerid, -1, "USE: /prender [id] [tempo(minutos)] [motivo]");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "ID INVБLIDO!");
if(GetDistanceBetweenPlayers(playerid, id) < 15)
{
new string[128];//LINHA 44565 com Warning
format(string, sizeof(string), "* Vocк Prendeu %s !", Name(id));
MSGPLAYER(playerid, COLOR_LIGHTBLUE, string);
//GivePlayerMoney(id, -moneys);
format(string, sizeof(string), "Preso por %s", Name(playerid));
GameTextForPlayer(id, string, 5000, 5);
ResetPlayerWeaponsEx(id);
if(PlayerInfo[playerid][pMembro] == 1||PlayerInfo[playerid][pLider] == 1)
{
format(string, sizeof(string), "[PRESO] O Admin %s prendeu o(a) %s ||MOTIVO: %s", Name(playerid), Name(id), motivo);
OOCNews(0xFF8000AA, string);
}
SetPlayerInterior(id, 6);
SetPlayerPos(id,264.6288,77.5742,1001.0391);
PlayerInfo[id][pJailTime] = time * 60;//LINHA 44579 com erro
PlayerInfo[id][pJailed] = 1;
SetPlayerFree(id,playerid, "Foi Preso");
PlayerInfo[id][pMuted] = 0;
Controle(id, 1);
PlayerCuffed[id] = 0;
PlayerInfo[id][pDrogas] = 0;
PlayerInfo[id][pDrogas2] = 0;
PlayerInfo[id][pDrogas3] = 0;
PlayerInfo[id][pMats] = 0;
return 1;
}
}
E esta dando o Warning tbm nessa Stock que ja tinha na minha GM, mas antes nao dava Warning nenhum:
pawn Код:
stock PlayerName(playerid)
{
new Name[MAX_PLAYER_NAME];//Warning nesta linha que й a linha 796
GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
return Name;
}
Caso posso me ajudar a resolver esses problemas eu ficaria muito agradecido!
Re: [AJUDA] Comando /prender -
Cristhian - 13.12.2011
pawn Код:
new params[100 char];
new id;
unformat(cmdtext, "s[50]S( )[100]",cmd,params);
if(strcmp(cmd, "/prender", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] == 0) return SendClientMessage(playerid, -1, "Vocк nгo й admin!");
new tempo, motivo[100];
if(sscanf(params, "dds[100]", id, tempo, motivo)) return SendClientMessage(playerid, -1, "USE: /prender [id] [tempo(minutos)] [motivo]");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "ID INVБLIDO!");
if(GetDistanceBetweenPlayers(playerid, id) < 15)
{
format(msg, sizeof(msg), "* Vocк Prendeu %s !", PlayerName(id));
MSGPLAYER(playerid, COLOR_LIGHTBLUE, msg);
//GivePlayerMoney(id, -moneys);
format(msg, sizeof(msg), "Preso por %s", PlayerName(playerid));
GameTextForPlayer(id, msg, 5000, 5);
ResetPlayerWeaponsEx(id);
if(PlayerInfo[playerid][pMembro] == 1||PlayerInfo[playerid][pLider] == 1)
{
format(msg, sizeof(msg), "[PRESO] O Admin %s prendeu o(a) %s ||MOTIVO: %s", PlayerName(playerid), PlayerName(id), motivo);
OOCNews(0xFF8000AA, msg);
}
SetPlayerInterior(id, 6);
SetPlayerPos(id,264.6288,77.5742,1001.0391);
PlayerInfo[id][pJailTime] = tempo * 60;
PlayerInfo[id][pJailed] = 1;
SetPlayerFree(id,playerid, "Foi Preso");
PlayerInfo[id][pMuted] = 0;
Controle(id, 1);
PlayerCuffed[id] = 0;
PlayerInfo[id][pDrogas] = 0;
PlayerInfo[id][pDrogas2] = 0;
PlayerInfo[id][pDrogas3] = 0;
PlayerInfo[id][pMats] = 0;
return 1;
}
}
tente assim, e delete minha stock Name(playerid)
Re: [AJUDA] Comando /prender -
marcelodell - 13.12.2011
Agora esta dando os seguintes erros e warning em uma linha so:
pawn Код:
C:\Users\Marcelo\Documents\GM\BPR\BPR\gamemodes\Gmy.pwn(44565) : error 017: undefined symbol "msg"
C:\Users\Marcelo\Documents\GM\BPR\BPR\gamemodes\Gmy.pwn(44565) : error 017: undefined symbol "msg"
C:\Users\Marcelo\Documents\GM\BPR\BPR\gamemodes\Gmy.pwn(44565) : error 029: invalid expression, assumed zero
C:\Users\Marcelo\Documents\GM\BPR\BPR\gamemodes\Gmy.pwn(44565) : fatal error 107: too many error messages on one line
Na seguinte linha:
pawn Код:
format(msg, sizeof(msg), "* Vocк Prendeu %s !", PlayerName(id));