Portal SAMP
[Ajuda] CreateDynamicPickup e 3DTextLabel - 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] CreateDynamicPickup e 3DTextLabel (/showthread.php?tid=3332)



CreateDynamicPickup e 3DTextLabel - BatataDoce - 13/02/2023

Bem, fiz um código no qual era pra carregar as coordenadas dentro dos 5 arquivos e fazer um pickup e um TextLabel, porem por algum motivo, ele apenas cria 2.


Código:
stock carregarmei()
{
    new arquivo[32], text[128];
    for(new i = 0; i < 5;i ++)
    {
        format(arquivo,sizeof(arquivo), "Mei/%d.ini",i);
        if(DOF2_FileExists(arquivo))
        {
            prodinfo [i] [prod_mapicon] = CreateDynamicMapIcon(DOF2_GetFloat(arquivo,"X"), DOF2_GetFloat(arquivo,"Y"),DOF2_GetFloat(arquivo,"Z"), 58, -1);
            prodinfo [i] [prod_pickup] = CreateDynamicPickup(1578, 1, DOF2_GetFloat(arquivo,"X"), DOF2_GetFloat(arquivo,"Y"),DOF2_GetFloat(arquivo,"Z") - 1.0 ,-1);

            format(text,sizeof(text),"{0095ff} Mei\n{0095ff}Situação: {ff4d00}Liberada\n{0095ff}Ramo: {ff4d00}N/A\n{0095ff}Valor: {0dff00}R$250.000");
            prodinfo [i] [prod_Text] = CreateDynamic3DTextLabel(text,-1,DOF2_GetFloat(arquivo,"X"), DOF2_GetFloat(arquivo,"Y"),DOF2_GetFloat(arquivo,"Z"),25);

            printf("| Mei | Mei carregada com sucesso id %d",i);
        }
    }
    return 1;
}

O map icon cria normal, todos os 5, e no printf tbm mostra que carregou os 5, só o pickup e o textlabel que cria 2 mesmo, pq será?


RE: CreateDynamicPickup e 3DTextLabel - strelo - 13/02/2023

Parece que os outros 3 arquivos não existem ou estão com erros. O código só cria o pickup e o TextLabel se o arquivo existir e os valores X, Y e Z puderem ser lidos corretamente. É possível que os arquivos que não estão criando os pickups e TextLabels não tenham valores válidos para essas coordenadas, ou que os arquivos estejam com nomes diferentes ou em pastas diferentes da esperada pelo código. Certifique-se de que os arquivos existem, estão na pasta correta e têm valores válidos para as coordenadas X, Y e Z. Também verifique se o código de criação de pickups e TextLabels está funcionando corretamente em outros lugares do seu script.


RE: CreateDynamicPickup e 3DTextLabel - BatataDoce - 13/02/2023

(13/02/2023 18:28)strelo Escreveu: Parece que os outros 3 arquivos não existem ou estão com erros. O código só cria o pickup e o TextLabel se o arquivo existir e os valores X, Y e Z puderem ser lidos corretamente. É possível que os arquivos que não estão criando os pickups e TextLabels não tenham valores válidos para essas coordenadas, ou que os arquivos estejam com nomes diferentes ou em pastas diferentes da esperada pelo código. Certifique-se de que os arquivos existem, estão na pasta correta e têm valores válidos para as coordenadas X, Y e Z. Também verifique se o código de criação de pickups e TextLabels está funcionando corretamente em outros lugares do seu script.

Como disse, o map icon carrega normalmente com as cordenadas X Y Z, ent as cordenas não estariam erradas.

O código de criação do pickup e do text label estão correta também, até pq se estivesse errada, não carregaria apenas 2 primeiros.


RE: CreateDynamicPickup e 3DTextLabel - strelo - 13/02/2023

(13/02/2023 18:39)BatataDoce Escreveu:
(13/02/2023 18:28)strelo Escreveu: Parece que os outros 3 arquivos não existem ou estão com erros. O código só cria o pickup e o TextLabel se o arquivo existir e os valores X, Y e Z puderem ser lidos corretamente. É possível que os arquivos que não estão criando os pickups e TextLabels não tenham valores válidos para essas coordenadas, ou que os arquivos estejam com nomes diferentes ou em pastas diferentes da esperada pelo código. Certifique-se de que os arquivos existem, estão na pasta correta e têm valores válidos para as coordenadas X, Y e Z. Também verifique se o código de criação de pickups e TextLabels está funcionando corretamente em outros lugares do seu script.

Como disse, o map icon carrega normalmente com as cordenadas X Y Z, ent as cordenas não estariam erradas.

O código de criação do pickup e do text label estão correta também, até pq se estivesse errada, não carregaria apenas 2 primeiros.

Se as coordenadas estão corretas e o código de criação do pickup e text label também está correto, pode ser que haja um conflito com outro script que esteja interferindo na criação dos pickups e textlabels. Verifique se há outros scripts que também estão criando objetos dinamicamente no mesmo local do mapa em que os pickups e textlabels não estão sendo criados. Se houver, tente ajustar as coordenadas dos objetos para evitar que eles entrem em conflito. Se não houver outros scripts que possam estar interferindo, tente adicionar mensagens de debug em seu código para identificar em qual parte do código os pickups e textlabels não estão sendo criados. Isso pode ajudar a encontrar a causa raiz do problema.


RE: CreateDynamicPickup e 3DTextLabel - BatataDoce - 13/02/2023

(13/02/2023 18:44)strelo Escreveu:
(13/02/2023 18:39)BatataDoce Escreveu:
(13/02/2023 18:28)strelo Escreveu: Parece que os outros 3 arquivos não existem ou estão com erros. O código só cria o pickup e o TextLabel se o arquivo existir e os valores X, Y e Z puderem ser lidos corretamente. É possível que os arquivos que não estão criando os pickups e TextLabels não tenham valores válidos para essas coordenadas, ou que os arquivos estejam com nomes diferentes ou em pastas diferentes da esperada pelo código. Certifique-se de que os arquivos existem, estão na pasta correta e têm valores válidos para as coordenadas X, Y e Z. Também verifique se o código de criação de pickups e TextLabels está funcionando corretamente em outros lugares do seu script.

Como disse, o map icon carrega normalmente com as cordenadas X Y Z, ent as cordenas não estariam erradas.

O código de criação do pickup e do text label estão correta também, até pq se estivesse errada, não carregaria apenas 2 primeiros.

Se as coordenadas estão corretas e o código de criação do pickup e text label também está correto, pode ser que haja um conflito com outro script que esteja interferindo na criação dos pickups e textlabels. Verifique se há outros scripts que também estão criando objetos dinamicamente no mesmo local do mapa em que os pickups e textlabels não estão sendo criados. Se houver, tente ajustar as coordenadas dos objetos para evitar que eles entrem em conflito. Se não houver outros scripts que possam estar interferindo, tente adicionar mensagens de debug em seu código para identificar em qual parte do código os pickups e textlabels não estão sendo criados. Isso pode ajudar a encontrar a causa raiz do problema.

Infelizmente, não há nada além perto dos pickup e do textlabeis que possa causar algum tipo de conflito


sobre o debug,ali no final do código da pra ver que tem um printf, no qual apenas verifica se o loop passou por certo valores mas está tudo certo, ele gira as 5 vezes e mostra o valor de ordem crescente


RE: CreateDynamicPickup e 3DTextLabel - AdrianoPasoti - 18/02/2023

Salve!

Testa por gentileza, (dei uma otimizada também)

Código PHP:
stock carregarmei()
{
    new arquivo[32], Float:pxFloat:pyFloat:pz;
    for(new 05++)
    {
        format(arquivo,sizeof(arquivo), "Mei/%d.ini",i);
        if(DOF2_FileExists(arquivo))
        
            px DOF2_GetFloat(arquivo,"X");
            py DOF2_GetFloat(arquivo,"Y");
            pz DOF2_GetFloat(arquivo,"Z");

            prodinfo [i] [prod_mapicon] = CreateDynamicMapIcon(pxpypz580xFFFFFFFF);
            prodinfo [i] [prod_pickup] = CreateDynamicPickup(15781pxpypz-1.0);

            prodinfo [i] [prod_Text] = CreateDynamic3DTextLabel("{0095ff}Mei\n{0095ff}Situação: {ff4d00}Liberada\n{0095ff}Ramo: {ff4d00}N/A\n{0095ff}Valor: {0dff00}R$250.000"0xFFFFFFFFpxpypz25);


            printf("| Mei | Mei carregada com sucesso id %d",i);
            printf("====[Debug]=====");
            printf("POS: PX: %f, PY: %f, PZ: %f"pxpypz);
            printf("PickuipID = %d"prodinfo [i] [prod_pickup]);//Não pode ser = 0
            printf("LabelID = %d"prodinfo [i] [prod_Text]);//Nãao pode ser igual 0
            printf("==[Fim Debug]===\n\n");
        }
    }
    return 1;