Portal SAMP
[Ajuda] Conversão strcmp para Pawn.CMD - 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] Conversão strcmp para Pawn.CMD (/showthread.php?tid=4788)



Conversão strcmp para Pawn.CMD - Enila182 - 02/06/2024

Então estou convertendo meu GM de strcmp para o processador de comandos Pawn.CMD
e eu travei em um ponto aqui, em uma parte de um comando eu uso o seguinte código.
Código:
if(new_strcmp(PlayerName(id), nick)) {
Esse código ele faz parte do comando /Cadeia [Nick] [Tempo] [Motivo]
Quando não encontra ele online ele agenda automaticamente..
Só que quando estou passando para Pawn.CMD ele da o seguinte erro:
Código:
ftp://200.274.79.9\SERVIDOR\SAMP\gamemodes\GM.pwn(68070) : error 035: argument type mismatch (argument 2)



RE: Conversão strcmp para Pawn.CMD - BitSain - 02/06/2024

Parece que o erro está relacionado ao tipo de argumento passado para a função `new_strcmp`. O erro indica uma incompatibilidade de tipo no segundo argumento. Você pode verificar se o tipo de dado passado para `nick` está correto e se é compatível com a função `new_strcmp`. Talvez você precise fazer uma conversão de tipo ou verificar se a função `PlayerName(id) ou nick` está retornando o tipo de dado esperado.

Compartilhe aqui o trecho de código do erro.


RE: Conversão strcmp para Pawn.CMD - Enila182 - 02/06/2024

Código:
CMD:cadeia(playerid, params[]) {
    if(PInfo[playerid][pAdmin] >= 1) {
    new nick, tempo, motivo, string[200];
    if(sscanf(params, "s[24]ds[64]", nick, tempo, motivo)) return SendClientMessage(playerid, vermelho, "| ERRO | Digite: /Cadeia [Nick] [Minutos] [Motivo]");
    if(tempo < 1 || tempo > 5000) return SendClientMessage(playerid, vermelho, "| ERRO | O tempo de puniçao deve ser entre 1 a 5000 minutos");
        foreach(Player, id)
{
if(new_strcmp(PlayerName(id), nick)) {
PlayerInfo[id][pCadeia_Admin_Minutos] += tempo;
PlayerInfo[id][pCadeia_Admin_Segundos] = 1;
  while(PlayerInfo[id][pCadeia_Admin_Minutos] > 60) {
PlayerInfo[id][pCadeia_Admin_Minutos] -= 60;
PlayerInfo[id][pCadeia_Admin_Horas] ++;
}
format(MotivoPrisaoAdmin[id], 30, "%s", motivo);

  new rand = random(sizeof(Cadeia_Federal));
SetPlayerPos(id, Cadeia_Federal[rand][0], Cadeia_Federal[rand][1], Cadeia_Federal[rand][2]);
SetPlayerInterior(id, 1);

for(new i; i < 2; i++) PlayerTextDrawShow(id, Carregando_Interior[id][i]);
TogglePlayerControllable(id, 0);
  SetTimerEx("Descongelar", 5000, false, "i", id);

SetPlayerVirtualWorld(id, 1);
SetCameraBehindPlayer(id);
SetPlayerHealth(id, 100000);
SetPlayerArmour(id, 0);
ResetPlayerWeapons(id);
GameTextForPlayer(id, "~ n~ ~n~ ~w~Preso!", 1500, 0);
RemovePlayerAttachedObject(id, 7);
SetPlayerSpecialAction(id, SPECIAL_ACTION_NONE);
new StrPreso[35]; format(StrPreso, sizeof(StrPreso), "~g~~h~PRESO: ~w~%02d:%02d:%02d", PlayerInfo[id][pCadeia_Admin_Horas], PlayerInfo[id][pCadeia_Admin_Minutos], PlayerInfo[id][pCadeia_Admin_Segundos]);
PlayerTextDrawSetString(id, TextPresoP[id], StrPreso);
PlayerTextDrawShow(id, TextPresoP[id]);
TextDrawShowForPlayer(id, TextPreso);

format(string, sizeof(string), "| cadeia | O(A) %s %s[%d] prendeu o(a) jogador(a) %s[%d] por %d minutos ( Motivo: %s )", Cargo_Admin(playerid), PlayerName(playerid), playerid, PlayerName(id), id, tempo, motivo);
SendClientMessageToAll(0x84FF00AA, string);

PlayerInfo[id][pVezes_Preso_Staff] ++;
    return 1;
}
else {
new Query[300];
mysql_format(Conexao, Query, sizeof(Query), "SELECT `Cadeia_Admin_Horas`, `Cadeia_Admin_Minutos`, `Cadeia_Admin_Segundos`, `Vezes_Preso_Staff` FROM `jogador` WHERE `Nome` = '%s'", nick);
mysql_tquery(Conexao, Query, "ColocarCadeia", "isds", playerid, nick, tempo, motivo);
}
}
}
return 1;
}

(02/06/2024 09:42)BitSain Escreveu: Parece que o erro está relacionado ao tipo de argumento passado para a função `new_strcmp`. O erro indica uma incompatibilidade de tipo no segundo argumento. Você pode verificar se o tipo de dado passado para `nick` está correto e se é compatível com a função `new_strcmp`. Talvez você precise fazer uma conversão de tipo ou verificar se a função `PlayerName(id) ou nick` está retornando o tipo de dado esperado.

Compartilhe aqui o trecho de código do erro.

pronto.


RE: Conversão strcmp para Pawn.CMD - Enila182 - 02/06/2024

alguém?


RE: Conversão strcmp para Pawn.CMD - xbruno1000x - 02/06/2024

Qual o código desse new_strcmp? Está dando um erro no 2° argumento que foi passado pra ele.


RE: Conversão strcmp para Pawn.CMD - BitSain - 02/06/2024

A variáve nick está sendo definida como valor inteiro, em vez de ser declarada como uma string.


RE: Conversão strcmp para Pawn.CMD - Enila182 - 02/06/2024

(02/06/2024 19:57)BitSain Escreveu: A variáve nick está sendo definida como valor inteiro, em vez de ser declarada como uma string.

E como eu conserto esse código?


RE: Conversão strcmp para Pawn.CMD - BitSain - 02/06/2024

(02/06/2024 23:02)Enila182 Escreveu:
(02/06/2024 19:57)BitSain Escreveu: A variáve nick está sendo definida como valor inteiro, em vez de ser declarada como uma string.

E como eu conserto esse código?

Em vez de "new nick;" 
"new nick[MAX_PLAYER_NAME];"