Portal SAMP
[Ajuda] Sistema de RG / funções str - 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] Sistema de RG / funções str (/showthread.php?tid=4776)



Sistema de RG / funções str - Alfarr Heimrik - 20/05/2024

Olá. Eu preciso de ajuda com um sistema de RG.

Eu tenho essa enum, onde eu armazeno algumas informações.
Código PHP:
enum pInfo
{
    
pX,
    
pY,
    
pZ,
    
pR,
    
pLogado,
    
pEmprego,
    
pAdmin
};
new 
Player[MAX_PLAYERS][pInfo]; 

Estou com meu sistema de RG desse jeito
Código PHP:
CMD:rg(playerid)
{
    new Message[512], JobName[32];
    new Money GivePlayerMoney(playeridDOF2_GetInt(Arquivo(playerid), "Dinheiro"));
    if(Player[playerid][pEmprego] == 0)
    {
        strcpy(JobName"Desempregado"0sizeof(JobName));
    }
    else if(Player[playerid][pEmprego] == 1)
    {
        strcpy(JobName"Transportador"0sizeof(JobName));
    }
    else if(Player[playerid][pEmprego] == 2)
    {
        strcpy(JobName"Caminhoneiro"0sizeof(JobName));
    }
    format(Messagesizeof(Message),
        "RG:\n\n",
        "Dinheiro: %d\n",
        
"Emprego: %s",
        
Money,
        
JobName
    
);
    ShowPlayerDialog(playeridDialog_EstatisticasDIALOG_STYLE_MSGBOX"Seu RG"Message"Entendido""");
    return 1;


Meu objetivo é mostrar no RG o nome do emprego e não o número ao qual ele corresponde.
Eu dei uma estudada rápida e consegui fazer dessa forma e também de uma outra que vou mostrar depois,
mas o problema é que quando utilizo /RG no game, só consigo ver o título, qual foi definido antes
na dialog.

Eu não entendo bem para que serve essa função str[cat,len,cpy,ncpy, etc...]
Se alguém puder me ajuda.


Código PHP:
// Desta foram, o compilador acusa strcpy como inesistente.
strcpy(JobName"Transportador"0sizeof(JobName));

// Assim funcionou, mas as informações não são mostradas.
strmid(JobName"Transportador"0sizeof(JobName)); 


Quase esqueci.
meu início esta assim

Código PHP:
#include <a_samp>
#include <dof2>
#include <sscanf2>
#include <streamer>
#pragma library "libc"
#include <string>
#include <zcmd> 



RE: Sistema de RG / funções str - Dr Editor - 20/05/2024

Acho bobagem usar strcpy.

Neste caso, você pode atribuir o valor diretamente à variável:
Código PHP:
CMD:rg(playerid)
{
    new 
Message[100], JobName[32];
    new 
Money GivePlayerMoney(playeridDOF2_GetInt(Arquivo(playerid), "Dinheiro"));
    
    switch(
Player[playerid][pEmprego])
    {
        case 
0JobName "Desempregado";
        case 
1JobName "Transportador";
        case 
2JobName "Caminhoneiro";
    }
    
    
format(Messagesizeof(Message),
        
"RG:\n\n",
        
"Dinheiro: %d\n",
        
"Emprego: %s",
        
Money,
        
JobName
    
);
    
ShowPlayerDialog(playeridDialog_EstatisticasDIALOG_STYLE_MSGBOX"Seu RG"Message"Entendido""");
    return 
1;




RE: Sistema de RG / funções str - Alfarr Heimrik - 20/05/2024

(20/05/2024 13:12)Dr Editor Escreveu: Acho bobagem usar strcpy.

Neste caso, você pode atribuir o valor diretamente à variável:
Código PHP:
CMD:rg(playerid)
{
    new 
Message[100], JobName[32];
    new 
Money GivePlayerMoney(playeridDOF2_GetInt(Arquivo(playerid), "Dinheiro"));
    
    switch(
Player[playerid][pEmprego])
    {
        case 
0JobName "Desempregado";
        case 
1JobName "Transportador";
        case 
2JobName "Caminhoneiro";
    }
    
    
format(Messagesizeof(Message),
        
"RG:\n\n",
        
"Dinheiro: %d\n",
        
"Emprego: %s",
        
Money,
        
JobName
    
);
    
ShowPlayerDialog(playeridDialog_EstatisticasDIALOG_STYLE_MSGBOX"Seu RG"Message"Entendido""");
    return 
1;


Eu não sabia que dava pra fazer dessa forma. Obrigado.
Para usar as funções str, tem algum tutorial que me recomenda?


RE: Sistema de RG / funções str - Dr Editor - 20/05/2024

(20/05/2024 13:22)Alfarr Heimrik Escreveu:
(20/05/2024 13:12)Dr Editor Escreveu: Acho bobagem usar strcpy.

Neste caso, você pode atribuir o valor diretamente à variável:
Código PHP:
CMD:rg(playerid)
{
    new 
Message[100], JobName[32];
    new 
Money GivePlayerMoney(playeridDOF2_GetInt(Arquivo(playerid), "Dinheiro"));
    
    switch(
Player[playerid][pEmprego])
    {
        case 
0JobName "Desempregado";
        case 
1JobName "Transportador";
        case 
2JobName "Caminhoneiro";
    }
    
    
format(Messagesizeof(Message),
        
"RG:\n\n",
        
"Dinheiro: %d\n",
        
"Emprego: %s",
        
Money,
        
JobName
    
);
    
ShowPlayerDialog(playeridDialog_EstatisticasDIALOG_STYLE_MSGBOX"Seu RG"Message"Entendido""");
    return 
1;


Eu não sabia que dava pra fazer dessa forma. Obrigado.
Para usar as funções str, tem algum tutorial que me recomenda?

Acho difícil achar alguma documentação em PT, mas dê uma olhada aqui: https://www.open.mp/docs/tutorials/stringmanipulation
Vai ser abordado a manupulação de string, arrays, limites nativos do samp e funções usadas para auxiliar na manipulação.
Creio ser a documentação mais completa para estudar.