Portal SAMP
[Ajuda] Ajuda por favor - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Ajuda por favor (/showthread.php?tid=3151)



Ajuda por favor - Tonnob - 07/01/2023

Eu criei um comando /Kick
Porém quando fui testar ele não funciona
Eu digito /Kick id Motivo é ele apenas retorna a mensagens de erro dizendo (Use:/Kick ID Motivo)

Abaixo meu código
Código:
CMD:kick (playerid, params[])
{
if(Player[playerid][Admin] < 2) return SendClientMessage(playerid, -1, "[ERRO]{FFFFFF} Vc Precisa Ser Da Equipe Staff Para Ter Uso Deste Comando");
{
new PlayerIDKickado, Motivo[10], Mensagem[256];
if(sscanf(params, "us[30]",PlayerIDKickado,Motivo))return SendClientMessage(playerid, -1,"[BVR]{FFFFFF}Use /kick [ID] [MOTIVO]!");
if(PlayerIDKickado == INVALID_PLAYER_ID)return SendClientMessage(playerid, -1, "[BVR]{FFFFFF}ID DO PLAYER INVALIDO");
if(strlen(Motivo) > 10) return SendClientMessage(playerid, -1, "[ERRO]{FFFFFF} MOTIVO INVALIDO/GRANDE");
format(Mensagem, sizeof(Mensagem), "<!> O Admin: %s Kickou o Player: %s Motivo: %s",pName(playerid), pName(PlayerIDKickado));
SendClientMessageToAll(-1, Mensagem);
Kick(PlayerIDKickado);
}
return 1;
}



RE: Ajuda por favor - gato_RothsChild - 07/01/2023

Código:
cmd:kick(playerid, params[])
{
    new id, string[400], reason[100];
    if(PlayerInfo[playerid][pAdmin] < 3) return false;
    if(GetPVarInt(playerid,"kikk")>gettime()+18) return J_Kick(playerid);
    if(ADuty[playerid]!=228) return SendClientMessage(playerid,COLOR_GREY,NO_DUTY_TEXT);
    if(sscanf(params,"us[150]",id,reason)) return SendClientMessage(playerid, COLOR_RED, !"Use: /kick [id] [Razão]");
    if(PlayerInfo[playerid][pAdmin]<PlayerInfo[id][pAdmin]) PlayerInfo[playerid][pAdmin]=0;
    if(id == playerid) return SendClientMessage(playerid,COLOR_RED, !"Você não pode se desconectar");
    format(string,sizeof(string),"O administrador %s expulsou o jogador %s. Razão: %s",Name(playerid),Name(id),reason);
    AsendClientMessageToAll(COLOR_ARZCOPY,string);
    format(string,sizeof(string),"O administrador <a href=/logsaccount?name=%s>%s</a> expulsou o jogador <a href=/logsaccount?name=%s>%s</a>. Razão: %s",Name(playerid),Name(playerid),Name(id),Name(id),reason);
    AdminLogs(playerid, string);
    AllLogs(playerid, string);
    J_Kick(id);
    SetPVarInt(playerid,"kikk",gettime()+7);
    return true;
}



RE: Ajuda por favor - White_Blue - 07/01/2023

Este código está complexo(E mal otimizado) sem motivo.

Código PHP:
CMD:kick(playeridparams[]) {
    new 
plidmotivo[64], msg[128];
    if(
pAdmin[playerid] < 2) return 1;
    if(
sscanf(params"us[64]"plidmotivo)) return SendClientMessage(playerid0xFF0000AA"Digite: /kick [id] [motivo]");
    if(!
IsPlayerConnected(playerid)) return SendClientMessage(playerid0xFF0000AA"Jogador não conectado.");
    
    
format(msgsizeof(msg), "O(A) jogador(a) %s[%d] foi kickado(a) pelo administrador(a) %s[%d] ( Motivo: %s )."GetPlayerNameEx(playerid), playeridGetPlayerNameEx(plid), plidmotivo);
       
SendClientMessageForAll(0xFF0000AAmsg); 
 
    
SetTimerEx("KickPlayerInTime"200false"d"plid);
    return 
1;
}

forward KickPlayerInTime(playerid);
public 
KickPlayerInTime(playerid) return Kick(playerid);

stock GetPlayerNameEx(playerid) {
    static 
Name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridNameMAX_PLAYER_NAME);
    return 
Name;




RE: Ajuda por favor - k2bi_YT - 07/01/2023

Você pode usar alguns macros para facilitar alguns processos futuros.
Exemplo:
Código PHP:
//////////////////////////////////////////////////////
//         ADICIONE ISSO ABAIXO DAS INCLUDES(Topo do GM)

//Isso pode ser mais pratico e não será necessario toda hora chamar um timer, apenas usar a função normalmente (kick() | ban())
#define Kick(%0) SetTimerEx("Kicka", 100, false, "i", %0)
#define Ban(%0) SetTimerEx("Bana", 100, false, "i", %0)
forward Kicka(p); public Kicka(p) {
    
#undef Kick
    
Kick(p);
    
#define Kick(%0) SetTimerEx("Kicka", 100, false, "i", %0)
    
return true;
}

#define Ban(%0) SetTimerEx("Bana", 100, false, "i", %0)

forward Bana(p); public Bana(p) {
    
#undef Ban
    
Ban(p);
    
#define Ban(%0) SetTimerEx("Bana", 100, false, "i", %0)
    
return true;
}
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////

CMD:kick (playeridparams[])
{
    if(
Player[playerid][Admin] < 2) return SendClientMessage(playerid, -1"[ERRO]{FFFFFF} Vc Precisa Ser Da Equipe Staff Para Ter Uso Deste Comando");
    new 
PlayerIDKickadoMotivo[10], Mensagem[256];
    if(
sscanf(params"us[30]",PlayerIDKickado,Motivo))return SendClientMessage(playerid, -1,"[BVR]{FFFFFF}Use /kick [ID] [MOTIVO]!");
    if(!
IsPlayerConnected(PlayerIDKickado))return SendClientMessage(playerid, -1"[BVR]{FFFFFF}ID DO PLAYER INVALIDO");
    if(
strlen(Motivo) > 10) return SendClientMessage(playerid, -1"[ERRO]{FFFFFF} MOTIVO INVALIDO/GRANDE");
    
format(Mensagemsizeof(Mensagem), "<!> O Admin: %s Kickou o Player: %s Motivo: %s",pName(playerid), pName(PlayerIDKickado));
    
SendClientMessageToAll(-1Mensagem);
    
Kick(PlayerIDKickado);
    return 
1;




RE: Ajuda por favor - White_Blue - 07/01/2023

(07/01/2023 15:50)k2bi_YT Escreveu: Você pode usar alguns macros para facilitar alguns processos
Exemplo:
Código PHP:
//////////////////////////////////////////////////////
//         ADICIONE ISSO ABAIXO DAS INCLUDES(Topo do GM)

//Isso pode ser mais pratico e não será necessario toda hora chamar um timer, apenas usar a função normalmente (kick() | ban())
#define Kick(%0) SetTimerEx("Kicka", 100, false, "i", %0)
#define Ban(%0) SetTimerEx("Bana", 100, false, "i", %0)
forward Kicka(p); public Kicka(p) {
    #undef Kick
    Kick(p);
    #define Kick(%0) SetTimerEx("Kicka", 100, false, "i", %0)
    return true;
}

#define Ban(%0) SetTimerEx("Bana", 100, false, "i", %0)

forward Bana(p); public Bana(p) {
    #undef Ban
    Ban(p);
    #define Ban(%0) SetTimerEx("Bana", 100, false, "i", %0)
    return true;
}
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////

CMD:kick (playeridparams[])
{
    if(Player[playerid][Admin] < 2) return SendClientMessage(playerid, -1"[ERRO]{FFFFFF} Vc Precisa Ser Da Equipe Staff Para Ter Uso Deste Comando");
    new PlayerIDKickadoMotivo[10], Mensagem[256];
    if(sscanf(params"us[30]",PlayerIDKickado,Motivo))return SendClientMessage(playerid, -1,"[BVR]{FFFFFF}Use /kick [ID] [MOTIVO]!");
    if(!IsPlayerConnected(PlayerIDKickado))return SendClientMessage(playerid, -1"[BVR]{FFFFFF}ID DO PLAYER INVALIDO");
    if(strlen(Motivo) > 10) return SendClientMessage(playerid, -1"[ERRO]{FFFFFF} MOTIVO INVALIDO/GRANDE");
    format(Mensagemsizeof(Mensagem), "<!> O Admin: %s Kickou o Player: %s Motivo: %s",pName(playerid), pName(PlayerIDKickado));
    SendClientMessageToAll(-1Mensagem);
    Kick(PlayerIDKickado);
    return 1;


Acho que não é necessário, visando que o objetivo é apenas criar um comando que kicke um determinado jogador.