[Ajuda] Sistema de criaзгo de labels in-game
#1

Fala galera, preciso da ajuda de vocкs com este FS que estou desenvolvendo a alguns dias, tinha deixado ele parado em um canto, mas quero termina-lo.
Bem, quando vou compilar, recebo o seguinte erro:
PHP код:
C:\Users\MatheusFelipe\Desktop\BCE V4.5\filterscripts\Labels.pwn(106) : error 035: argument type mismatch (argument 3) 
Linhas 106:
PHP код:
        DOF2_SetInt(Pasta, "Distancia", Msg); 
Prуximas linhas e linhas interiores:
PHP код:
    new Pasta[128], Float:Pos[3];
    
LabelID = DOF2_GetInt("Labels/LabelsCriadas.ini", "Total de 3DTextLabels criadas")+1;
    
format(Pasta, 128, PASTA_LABELS, LabelID);
    if(
dialogid == Dialog_Nova_Label_Distancia)
    {
        new 
Msg[128];
        
format(Msg, 128, inputtext);
        
DOF2_SetInt(Pasta, "Distancia", Msg);
        
Create3DTextLabel(DOF2_GetString(Pasta, "Texto"), DOF2_GetInt(Pasta, "Cor"), DOF2_GetFloat(Pasta, "PosicaoX"), DOF2_GetFloat(Pasta, "PosicaoY"), DOF2_GetFloat(Pasta, "PosicaoZ"), DOF2_GetInt(Pasta, "Distancia"), DOF2_GetInt(Pasta, "Mundo"), 0);
        
DOF2_SetInt("Labels/LabelsCriadas.ini", "Total de 3DTextLabels criadas", LabelID);
        
format(Msg, 128, "{00FF00}Label ID: %d criada.", LabelID);
        
SendClientMessage(playerid, -1, Msg);
        
DOF2_SaveFile();
        return 
1;
    } 
Quem poder me ajudar, fico imensamente grato.
Abraзos.
OBS: No pastebin, na linha 106, estб faltando o ъltimo parametro, mas o ъltimo parametro que estava lб й "Msg".
Reply
#2

DOF2_SetInt й pra salvar valores inteiros dentro um arquivo, nгo?

Se sim, por que vocк estб tentando salvar uma String?

O correto seria vocк fazer um cast da var MSG para inteiro antes de usa-lo como parвmetro no mйtodo de inserзгo, creio que isso salvarб seu cуdigo.
Reply
#3

Quote:
Originally Posted by ipsNan
Посмотреть сообщение
DOF2_SetInt й pra salvar valores inteiros dentro um arquivo, nгo?

Se sim, por que vocк estб tentando salvar uma String?
Tentei salvar sу com inputtext, dava o mesmo erro, aн tentei formatar, continua a mesma coisa.

Quote:
Originally Posted by ipsNan
Посмотреть сообщение
O correto seria vocк fazer um cast da var MSG para inteiro antes de usa-lo como parвmetro no mйtodo de inserзгo, creio que isso salvarб seu cуdigo.
cast?
Se poder explicar melhor e dar um exemplo, ficarei imensamente grato.
Reply
#4

Tanto o inputtext como o msg sгo strings, rapaz...

O parвmetro exige um valor inteiro, nгo string.

tente usar um strval, para converter de String para Int
Reply
#5

Se nгo me engano, dessa maneira aqui irб funcionar perfeitamente.. faz um tempinho que nгo uso Dof2.
PHP код:
DOF2_SetInt(Pasta, "Distancia", strval(Msg)); 
Reply
#6

consegui compilar sem erros.
Porйm, o FS ainda nгo estб funcionando, segue o link para uma melhor visualizaзгo.

http://pastebin.com/xXwb0h04
Reply
#7

Distancia й valor Flutuante e nгo inteiro.

@EDIT
A native utiliza valores flutuantes para distancia, ou seja, deve-se setar valores flutuantes.

Create3DTextLabel(text[], color, Float:X, Float:Y, Float:Z, Float: DrawDistance, virtualworld, testLOS);

Salve o valor dessa forma:

PHP код:
DOF2_SetFloat(Pasta, "Distancia", float(strval(inputtext))); 
Reply
#8

Erro:
C:\Users\MatheusFelipe\Desktop\BCE V4.5\filterscripts\Labels.pwn(10 : error 035: argument type mismatch (argument 1)
Linha 108 й a linha que vocк mandou EditPawn
Reply
#9

Quote:
Originally Posted by matheusspohr
Посмотреть сообщение
Erro:
C:\Users\MatheusFelipe\Desktop\BCE V4.5\filterscripts\Labels.pwn(10 : error 035: argument type mismatch (argument 1)
Linha 108 й a linha que vocк mandou EditPawn
Vocк tem certeza que colocou o cуdigo certo ? Testei e compilou normalmente.

PHP код:
#define FILTERSCRIPT
#define MAX_LABELS (100)
#define PASTA_LABELS "Labels/%d.lbl"
#define SISTEMA_VERSAO "1.0"
#define Dialog_Nova_Label_Cor                                                      10001
#define Dialog_Nova_Label_Distancia                                              10002
#define Amarelo                                                                 0xFFFF00FF
#define AzulForte                                                               0x0000FFFF
#define Laranja                                                                 0xFF5604FF
#define Vermelho                                                                0xFF0000FF
#define Cyan                                                                    0x00F9F9FF
#define Cinza                                                                   0xC0C0C0FF
#define Verde                                                                   0x80FF80FF
#define Rosa                                                                    0xFF00FFFF
#define AmareloClaro                                                            0xFFFF00FF
#define AzulClaroI                                                              0x00FFFFFF
#define AzulClaroII                                                             0x33CCFFFF
#define Roxo                                                                    0xA02DD2FF
#define RoxoClaro                                                               0xE285FAFF
#define VerdeClaro                                                              0x00FF00FF
#define Branco                                                                  0xFFFFFFFF
#define Preto                                                                   0x000000FF
#define VerdeOliva                                                              0x9DAD80FF
#include <a_samp>
#include <DOF2>
#include <ZCMD>
#include <sscanf2>
#if defined FILTERSCRIPT
new LabelID;
enum InfoLabel
{
    
Texto[500],
    
Cor,
    
Float:LocX,
    
Float:LocY,
    
Float:LocZ,
    
Distancia,
    
Mundo
}
new 
LabelInfo[MAX_LABELS][InfoLabel];
public 
OnFilterScriptInit()
{
    print(
"Sistema de criaзгo de label in-gane Carregado!");
    print(
SISTEMA_VERSAO);
    for(new 
i;i<MAX_LABELS;i++)
    {
        new 
Pasta[128];
        
format(Pasta, 128, PASTA_LABELS, i);
        
Create3DTextLabel(DOF2_GetString(Pasta, "Texto"), DOF2_GetInt(Pasta, "Cor"), DOF2_GetFloat(Pasta, "PosicaoX"), DOF2_GetFloat(Pasta, "PosicaoY"), DOF2_GetFloat(Pasta, "PosicaoZ"), DOF2_GetFloat(Pasta, "Distancia"), DOF2_GetInt(Pasta, "Mundo"), 0);
    }
    if(!
DOF2_FileExists("Labels/LabelsCriadas.ini"))
     {
         
DOF2_CreateFile("Labels/LabelsCriadas.ini");
        
DOF2_SetInt("Labels/LabelsCriadas.ini", "Total de 3DTextLabels criadas", 0);
         
DOF2_SaveFile();
    }
    else
        return 
0;
    
LabelID = DOF2_GetInt("Labels/LabelsCriadas.ini", "Total de 3DTextLabels criadas")+1;
    return 
1;
}
public 
OnFilterScriptExit()
{
    
DOF2_Exit();
    return 
1;
}
public 
OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new 
Pasta[128], Float:Pos[3];
    
LabelID = DOF2_GetInt("Labels/LabelsCriadas.ini", "Total de 3DTextLabels criadas")+1;
    
format(Pasta, 128, PASTA_LABELS, LabelID);
    if(
dialogid == Dialog_Nova_Label_Cor)
    {
        if(!
response)return 0;
        if(
response)
        {
            if(
listitem == 0) LabelInfo[LabelID][Cor] = Amarelo; ShowPlayerDialog(playerid, Dialog_Nova_Label_Distancia, DIALOG_STYLE_INPUT, "{FFFF00}Distвncia:", "{FFFFFF}Abaixo, insira a distвncia para o player ver a nova label!", "Criar", "");
            if(
listitem == 1) LabelInfo[LabelID][Cor] = AzulForte; ShowPlayerDialog(playerid, Dialog_Nova_Label_Distancia, DIALOG_STYLE_INPUT, "{FFFF00}Distвncia:", "{FFFFFF}Abaixo, insira a distвncia para o player ver a nova label!", "Criar", "");
            if(
listitem == 2) LabelInfo[LabelID][Cor] = Laranja; ShowPlayerDialog(playerid, Dialog_Nova_Label_Distancia, DIALOG_STYLE_INPUT, "{FFFF00}Distвncia:", "{FFFFFF}Abaixo, insira a distвncia para o player ver a nova label!", "Criar", "");
            if(
listitem == 3) LabelInfo[LabelID][Cor] = Vermelho; ShowPlayerDialog(playerid, Dialog_Nova_Label_Distancia, DIALOG_STYLE_INPUT, "{FFFF00}Distвncia:", "{FFFFFF}Abaixo, insira a distвncia para o player ver a nova label!", "Criar", "");
            if(
listitem == 4) LabelInfo[LabelID][Cor] = Cyan; ShowPlayerDialog(playerid, Dialog_Nova_Label_Distancia, DIALOG_STYLE_INPUT, "{FFFF00}Distвncia:", "{FFFFFF}Abaixo, insira a distвncia para o player ver a nova label!", "Criar", "");
            if(
listitem == 5) LabelInfo[LabelID][Cor] = Cinza; ShowPlayerDialog(playerid, Dialog_Nova_Label_Distancia, DIALOG_STYLE_INPUT, "{FFFF00}Distвncia:", "{FFFFFF}Abaixo, insira a distвncia para o player ver a nova label!", "Criar", "");
            if(
listitem == 6) LabelInfo[LabelID][Cor] = Verde; ShowPlayerDialog(playerid, Dialog_Nova_Label_Distancia, DIALOG_STYLE_INPUT, "{FFFF00}Distвncia:", "{FFFFFF}Abaixo, insira a distвncia para o player ver a nova label!", "Criar", "");
            if(
listitem == 7) LabelInfo[LabelID][Cor] = Rosa; ShowPlayerDialog(playerid, Dialog_Nova_Label_Distancia, DIALOG_STYLE_INPUT, "{FFFF00}Distвncia:", "{FFFFFF}Abaixo, insira a distвncia para o player ver a nova label!", "Criar", "");
            if(
listitem == 8) LabelInfo[LabelID][Cor] = AzulClaroI; ShowPlayerDialog(playerid, Dialog_Nova_Label_Distancia, DIALOG_STYLE_INPUT, "{FFFF00}Distвncia:", "{FFFFFF}Abaixo, insira a distвncia para o player ver a nova label!", "Criar", "");
            if(
listitem == 9) LabelInfo[LabelID][Cor] = AzulClaroII; ShowPlayerDialog(playerid, Dialog_Nova_Label_Distancia, DIALOG_STYLE_INPUT, "{FFFF00}Distвncia:", "{FFFFFF}Abaixo, insira a distвncia para o player ver a nova label!", "Criar", "");
            if(
listitem == 10) LabelInfo[LabelID][Cor] = Roxo; ShowPlayerDialog(playerid, Dialog_Nova_Label_Distancia, DIALOG_STYLE_INPUT, "{FFFF00}Distвncia:", "{FFFFFF}Abaixo, insira a distвncia para o player ver a nova label!", "Criar", "");
            if(
listitem == 11) LabelInfo[LabelID][Cor] = RoxoClaro; ShowPlayerDialog(playerid, Dialog_Nova_Label_Distancia, DIALOG_STYLE_INPUT, "{FFFF00}Distвncia:", "{FFFFFF}Abaixo, insira a distвncia para o player ver a nova label!", "Criar", "");
            if(
listitem == 12) LabelInfo[LabelID][Cor] = Branco; ShowPlayerDialog(playerid, Dialog_Nova_Label_Distancia, DIALOG_STYLE_INPUT, "{FFFF00}Distвncia:", "{FFFFFF}Abaixo, insira a distвncia para o player ver a nova label!", "Criar", "");
            if(
listitem == 13) LabelInfo[LabelID][Cor] = Preto; ShowPlayerDialog(playerid, Dialog_Nova_Label_Distancia, DIALOG_STYLE_INPUT, "{FFFF00}Distвncia:", "{FFFFFF}Abaixo, insira a distвncia para o player ver a nova label!", "Criar", "");
            if(
listitem == 14) LabelInfo[LabelID][Cor] = VerdeOliva; ShowPlayerDialog(playerid, Dialog_Nova_Label_Distancia, DIALOG_STYLE_INPUT, "{FFFF00}Distвncia:", "{FFFFFF}Abaixo, insira a distвncia para o player ver a nova label!", "Criar", "");
            
DOF2_SetInt(Pasta, "Cor", LabelInfo[LabelID][Cor]);
            
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
            
DOF2_SetFloat(Pasta, "PosicaoX", Pos[0]);
            
DOF2_SetFloat(Pasta, "PosicaoY", Pos[1]);
            
DOF2_SetFloat(Pasta, "PosicaoZ", Pos[2]);
            
DOF2_SetInt(Pasta, "Mundo", GetPlayerVirtualWorld(playerid));
        }
        return 
1;
    }
    if(
dialogid == Dialog_Nova_Label_Distancia)
    {
        new 
Msg[128];
        
DOF2_SetFloat(Pasta, "Distancia", float(strval(inputtext)));
        
DOF2_SaveFile();
        
Create3DTextLabel(DOF2_GetString(Pasta, "Texto"), DOF2_GetInt(Pasta, "Cor"), DOF2_GetFloat(Pasta, "PosicaoX"), DOF2_GetFloat(Pasta, "PosicaoY"), DOF2_GetFloat(Pasta, "PosicaoZ"), DOF2_GetFloat(Pasta, "Distancia"), DOF2_GetInt(Pasta, "Mundo"), 0);
        
DOF2_SetInt("Labels/LabelsCriadas.ini", "Total de 3DTextLabels criadas", LabelID);
        
format(Msg, 128, "{00FF00}Label ID: %d criada.", LabelID);
        
SendClientMessage(playerid, -1, Msg);
        return 
1;
    }
    return 
1;
}
CMD:criarlabel(playerid, params[])
{
    new 
TextoLabel[500], Pasta[128];
    
LabelID = DOF2_GetInt("Labels/LabelsCriadas.ini", "Total de 3DTextLabels criadas")+1;
    
format(Pasta, 128, PASTA_LABELS, LabelID);
    if(!
IsPlayerAdmin(playerid))return SendClientMessage(playerid, -1, "{FF0000}Esse comando sу pode ser executado por um admin RCON!");
    if(
sscanf(params, "s[500]", TextoLabel))return SendClientMessage(playerid, -1, "{FF00FF}#{FFFFFF} Uso: /CriarLabel [Texto]");
    
ShowPlayerDialog(playerid, Dialog_Nova_Label_Cor, DIALOG_STYLE_LIST, "{FFFF00}Cor:", "{FFFF00}Amarelo\n\
                                                                                          {0000FF}Azul Forte\n\
                                                                                         {FF5604}Laranja\n\
                                                                                         {FF0000}Vermelho\n\
                                                                                         {00F9F9}Cyan\n\
                                                                                         {C0C0C0}Cinza\n\
                                                                                         {80FF80}Verde\n\
                                                                                         {FF00FF}Rosa\n\
                                                                                         {00FFFF}Azul Claro I\n\
                                                                                         {33CCFF}Azul Claro II\n\
                                                                                         {A02DD2}Roxo\n\
                                                                                         {E285FA}Roxo Claro\n\
                                                                                         {FFFFFF}Branco\n\
                                                                                         {000000}Preto\n\
                                                                                         {9DAD80}Verde Oliva"
, "Selecionar", "");
     if(!
DOF2_FileExists(Pasta))
     {
         
DOF2_CreateFile(Pasta);
         
DOF2_SetString(Pasta, "Texto", TextoLabel);
        
DOF2_SaveFile();
    }
    else
    {
        
DOF2_SetString(Pasta, "Texto", TextoLabel);
        
DOF2_SaveFile();
    }
    return 
1;
}
stock CarregarLabel(a)
{
    new 
Pasta[128];
    
format(Pasta, 128, PASTA_LABELS, LabelInfo[a]);
    
strpack(LabelInfo[a][Texto], DOF2_GetString(Pasta, "Texto"));
    
LabelInfo[a][Cor] = DOF2_GetInt(Pasta, "Cor");
    
LabelInfo[a][LocX] = DOF2_GetFloat(Pasta, "PosicaoX");
    
LabelInfo[a][LocY] = DOF2_GetFloat(Pasta, "PosicaoY");
    
LabelInfo[a][LocZ] = DOF2_GetFloat(Pasta, "PosicaoZ");
    
LabelInfo[a][Distancia] = DOF2_GetFloat(Pasta, "Distancia");
    
LabelInfo[a][Mundo] =DOF2_GetInt(Pasta, "Mundo");
}
stock DeletarLabel(a)
{
    new 
Pasta[128];
    
format(Pasta, 128, PASTA_LABELS, LabelInfo[a]);
    
DOF2_SetString(Pasta, "Texto", "Empty");
    
DOF2_SetInt(Pasta, "Cor", "0xFFFFFFFF");
    
DOF2_SetFloat(Pasta, "PosicaoX", "0.0");
    
DOF2_SetFloat(Pasta, "PosicaoY", "0.0");
    
DOF2_SetFloat(Pasta, "PosicaoZ", "0.0");
    
DOF2_SetFloat(Pasta, "Distancia", "0.0");
    
DOF2_SetInt(Pasta, "Mundo", "0");
    
DOF2_RemoveFile(Pasta);
}
#else
main(){}
#endif 
@EDIT
OBS: Nгo utilize vбrias if sendo que ele sу irб selecionar um item da lista, utilize switch ou if e else if
Reply
#10

@EditPawn: Correto, eu havia trocado algumas coisas no cуdigo, por isso deu erro.
Infelizmente, o FS continua sem funcionar, vou refaze-lo amanha novamente, pois eu jб tive de alterar ele vбrias vezes, caso ainda eu esteja com preblemas venho a procura de vocкs.

Sу tirando uma duvida, como posso fazer pra salvar as labels em 1 pasta em sequencia, label1.ini, label2.ini, para poder carregar, descarregar e deletar elas quando eu quiser in-game?
PS: Tentei fazer pela enum e acabei abandonando-a de vez, se poderem me explicar mostrando um exemplo, pode atй nгo ser de meu caso.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)