Portal SAMP
[Ajuda] ajuda no comando - 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] ajuda no comando (/showthread.php?tid=4926)



ajuda no comando - André Santos - 28/11/2024

boa noite pessoal estou perdido criei um comando para attachar o objeto no player estou usando a include mselection para facilitar entao fiz esse comando mas o problema e que nao esta attachando o objeto no player nao sei oq esta errado dentro da pasta scriptfiles criei tambem objects.txt e coloque os id de alguns objetos para escolher o objeto os ids dos objetos 
resumindo meu codigo ta todo funcional menos oq eu queria que e anexar o objeto ao player so isso

Código:
#include <a_samp>
#include <mSelection>
#include <zcmd>

new objectList = mS_INVALID_LISTID;  // ID da lista de seleção de objetos
new playerObjects[MAX_PLAYERS];      // Objeto temporário exibido para cada jogador

public OnFilterScriptInit()
{
    // Carrega a lista de objetos a partir de um arquivo "objects.txt"
    objectList = LoadModelSelectionMenu("objects.txt");
    return 1;
}

CMD:objeto(playerid, params[])
{
    // Mostra o menu para selecionar um objeto
    ShowModelSelectionMenu(playerid, objectList, "Selecionar Objeto");
    return 1;
}

public OnPlayerModelSelection(playerid, response, listid, modelid)
{
    if (listid == objectList)
    {
        // Remove o objeto temporário anterior, se existir
        if (IsValidObject(playerObjects[playerid]))
        {
            DestroyObject(playerObjects[playerid]);
        }

        if (response)
        {
            // Obtém a posição do jogador
            new Float:x, Float:y, Float:z;
            GetPlayerPos(playerid, x, y, z);

            // Cria o objeto diretamente no jogador (posição ajustada pelo offset)
            playerObjects[playerid] = CreatePlayerObject(playerid, modelid, x, y, z, 0.0, 0.0, 0.0);

            // Anexa o objeto ao jogador (com o offset de posição)
            AttachObjectToPlayer(playerid, playerObjects[playerid], 0.0, 0.0, 0.5, 0.0, 0.0, 0.0);
            EditPlayerObject(playerid, playerObjects[playerid]);

            // Mensagem confirmando que o objeto foi anexado
            SendClientMessage(playerid, -1, "Objeto selecionado e fixado ao jogador!");
        }
        else
        {
            SendClientMessage(playerid, -1, "Você cancelou a seleção de objeto.");
        }
    }
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    // Remove o objeto temporário do jogador ao sair
    if (IsValidObject(playerObjects[playerid]))
    {
        DestroyObject(playerObjects[playerid]);
    }
    return 1;
}



RE: ajuda no comando - Calasans - 29/11/2024

Os outros jogadores poderão ver esse objeto? Se a resposta for sim, use CreateObject ou CreateDynamicObject em vez de CreatePlayerObject. O CreatePlayerObject cria o objeto apenas para o playerid, o que não faz sentido nesse caso.