Portal SAMP
[Ajuda] Error 035 - 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] Error 035 (/showthread.php?tid=3093)



Error 035 - ilakt - 22/12/2022

"Argument type mismatch (argument 3)" na linha do DOF2_SetString, realmente não entendi o motivo do erro sendo que o argumento 3 é uma string, se alguém puder me ajudar e explicar eu agradeço  Heart

A função serve para adicionar logs em um arquivo com o nome do player, por exemplo "AddLog(playerid, "Kickado por flood");"
Código PHP:
stock AddLog(playeridlog[])
{
    new YearMonthDay;
    new String[128];
    getdate(YearMonthDay);
    format(String128"[%d/%d/%d] %s\n"DayMonthYearlog);
    
//!! LINHA DO ERRO ABAIXO !!
    DOF2_SetString(PastaLogs(playerid), "."strcat(DOF2_GetString(PastaLogs(playerid), "."), String));
    return 1;




RE: Error 035 - White_Blue - 23/12/2022

Não entendi o que você quer fazer com isso. Qual o sentido de usar declarar uma string com um ponto e depois referenciar a mesma string na definição e depois armazenar o valor de outra string?

Se você quer fazer um log com o valor de "String" é só fazer assim.
Código PHP:
DOF2_SetString(Pasta_Logs(playerid), "Log"String); // Não entendi o do "Playerid", suponho que Pasta_Logs seja uma função, não um macro. 



RE: Error 035 - ilakt - 23/12/2022

(23/12/2022 00:54)White_Blue Escreveu: Não entendi o que você quer fazer com isso. Qual o sentido de usar declarar uma string com um ponto e depois referenciar a mesma string na definição e depois armazenar o valor de outra string?

Se você quer fazer um log com o valor de "String" é só fazer assim.
Código PHP:
DOF2_SetString(Pasta_Logs(playerid), "Log"String); // Não entendi o do "Playerid", suponho que Pasta_Logs seja uma função, não um macro. 

Eu queria algo assim em "scriptfiles/PlayerLogs/%s.ini"
por isso usei o ponto, eu queria ir adicionando valores (logs) na mesma variável, não sei se tem outro jeito de fazer o que quero
Código:
[00:00:00] Entrou no servidor
[00:00:10] Logou em sua conta
[00:00:30] Entrou em um veículo x
[00:00:40] Foi kickado por...

A função PastaLogs(playerid) serve para retornar o diretório da pasta:
Código PHP:
stock PastaLogs(playerid)
{
    new str[40];
    format(str40"PlayerLogs/%s.ini"GetName(playerid));
    return str;




RE: Error 035 - White_Blue - 23/12/2022

(23/12/2022 01:11)ilakt Escreveu:
(23/12/2022 00:54)White_Blue Escreveu: Não entendi o que você quer fazer com isso. Qual o sentido de usar declarar uma string com um ponto e depois referenciar a mesma string na definição e depois armazenar o valor de outra string?

Se você quer fazer um log com o valor de "String" é só fazer assim.
Código PHP:
DOF2_SetString(Pasta_Logs(playerid), "Log"String); // Não entendi o do "Playerid", suponho que Pasta_Logs seja uma função, não um macro. 

Eu queria algo assim em "scriptfiles/PlayerLogs/%s.ini"
por isso usei o ponto, eu queria ir adicionando valores (logs) na mesma variável, não sei se tem outro jeito de fazer o que quero
Código:
[00:00:00] Entrou no servidor
[00:00:10] Logou em sua conta
[00:00:30] Entrou em um veículo x
[00:00:40] Foi kickado por...

A função PastaLogs(playerid) serve para retornar o diretório da pasta:
Código PHP:
stock PastaLogs(playerid)
{
    new str[40];
    format(str40"PlayerLogs/%s.ini"GetName(playerid));
    return str;


Ah, sim. Acho que entendi.

Código PHP:
forward KickLog(string[]);

public 
KickLog(const string[])
{
    new 
entry[256];
    
format(entrysizeof(entry), "%s\r\n"string);
    new 
File:hFile;
    
hFile fopen("Logs/Kicks.log"io_append);
    
fwrite(hFileentry);
    
fclose(hFile);
    return 
1;
}

CMD:kick(playeridparams[]) { // Exemplo de uso
    new plidmotivo[128], log[20];
    if(!IsPlayerAdmin(playerid)) return 1;
    if(sscanf(params"us"plidmotivo)) return SendClientMessage(playerid, -1"Uso: /kick [id] [Motivo]");
    if(!IsPlayerConnected(playerid)) return 1;
    if(strlen(motivo) < 5) return SendClientMessage(playerid, -1"Seu motivo deve ser maior do que 4.");

    
format(logsizeof(log), "%d foi kickado pelo motivo: %s"plidmotivo);

    Kick(playerid);
    KickLog(log);
    return 1;




RE: Error 035 - ilakt - 23/12/2022

(23/12/2022 01:36)White_Blue Escreveu:
(23/12/2022 01:11)ilakt Escreveu:
(23/12/2022 00:54)White_Blue Escreveu: Não entendi o que você quer fazer com isso. Qual o sentido de usar declarar uma string com um ponto e depois referenciar a mesma string na definição e depois armazenar o valor de outra string?

Se você quer fazer um log com o valor de "String" é só fazer assim.
Código PHP:
DOF2_SetString(Pasta_Logs(playerid), "Log"String); // Não entendi o do "Playerid", suponho que Pasta_Logs seja uma função, não um macro. 

Eu queria algo assim em "scriptfiles/PlayerLogs/%s.ini"
por isso usei o ponto, eu queria ir adicionando valores (logs) na mesma variável, não sei se tem outro jeito de fazer o que quero
Código:
[00:00:00] Entrou no servidor
[00:00:10] Logou em sua conta
[00:00:30] Entrou em um veículo x
[00:00:40] Foi kickado por...

A função PastaLogs(playerid) serve para retornar o diretório da pasta:
Código PHP:
stock PastaLogs(playerid)
{
    new str[40];
    format(str40"PlayerLogs/%s.ini"GetName(playerid));
    return str;


Ah, sim. Acho que entendi.

Código PHP:
forward KickLog(string[]);

public 
KickLog(const string[])
{
    new 
entry[256];
    
format(entrysizeof(entry), "%s\r\n"string);
    new 
File:hFile;
    
hFile fopen("Logs/Kicks.log"io_append);
    
fwrite(hFileentry);
    
fclose(hFile);
    return 
1;
}

CMD:kick(playeridparams[]) { // Exemplo de uso
    new plidmotivo[128], log[20];
    if(!IsPlayerAdmin(playerid)) return 1;
    if(sscanf(params"us"plidmotivo)) return SendClientMessage(playerid, -1"Uso: /kick [id] [Motivo]");
    if(!IsPlayerConnected(playerid)) return 1;
    if(strlen(motivo) < 5) return SendClientMessage(playerid, -1"Seu motivo deve ser maior do que 4.");

    format(logsizeof(log), "%d foi kickado pelo motivo: %s"plidmotivo);

    Kick(playerid);
    KickLog(log);
    return 1;


MUITO OBRIGADO!!!!!!