06/12/2024 01:08
(Esta mensagem foi modificada pela última vez a: 06/12/2024 01:10 por xbruno1000x.)
Você está criando o objeto e depois usando SetPlayerAttachedObject, porém essa função espera por um model id e não um objeto.
Tenta da forma abaixo:
Documentação para pegar modelid:
https://dev.prineside.com/en/gtasa_samp_...0-3-7-rc1/
Tenta da forma abaixo:
Código:
#include <a_samp>
#include <mSelection>
#include <zcmd>
new objectList = mS_INVALID_LISTID; // ID da lista de seleção de objetos
new objetos[MAX_PLAYERS]; // Modelo anexado para cada jogador
new Float:objectOffsets[MAX_PLAYERS][6]; // Offsets de objetos
public OnFilterScriptInit()
{
// Carrega a lista de objetos a partir de um arquivo "objects.txt"
objectList = LoadModelSelectionMenu("objects.txt");
if (objectList == mS_INVALID_LISTID) {
print("Falha ao carregar a lista de objetos.");
}
return 1;
}
CMD:objetos(playerid, params[])
{
if (objectList == mS_INVALID_LISTID) {
SendClientMessage(playerid, 0xFFFF0000, "Lista de objetos não carregada.");
return 1;
}
ShowModelSelectionMenu(playerid, objectList, "Selecionar Objeto");
return 1;
}
public OnPlayerModelSelection(playerid, response, listid, modelid)
{
if (response && listid == objectList)
{
if (IsValidObject(objetos[playerid]))
{
DestroyObject(objetos[playerid]); // Remove o objeto anterior, se existir
objetos[playerid] = INVALID_OBJECT_ID;
}
// Inicializa os offsets
objectOffsets[playerid][0] = 0.0; // Offset X
objectOffsets[playerid][1] = 0.0; // Offset Y
objectOffsets[playerid][2] = 0.5; // Offset Z
objectOffsets[playerid][3] = 0.0; // Rotação X
objectOffsets[playerid][4] = 0.0; // Rotação Y
objectOffsets[playerid][5] = 0.0; // Rotação Z
// Anexa o objeto ao jogador no slot 0
SetPlayerAttachedObject(playerid, 0, modelid, 0, objectOffsets[playerid][0], objectOffsets[playerid][1], objectOffsets[playerid][2], objectOffsets[playerid][3], objectOffsets[playerid][4], objectOffsets[playerid][5], 1.0, 1.0, 1.0);
// Inicia a edição do objeto
EditAttachedObject(playerid, 0);
}
return 1;
}
public OnPlayerEditAttachedObject(playerid, response, index, modelid, boneid, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:fRotX, Float:fRotY, Float:fRotZ, Float:fScaleX, Float:fScaleY, Float:fScaleZ)
{
if (response == EDIT_RESPONSE_FINAL && index == 0)
{
// Salva os novos offsets
objectOffsets[playerid][0] = fOffsetX;
objectOffsets[playerid][1] = fOffsetY;
objectOffsets[playerid][2] = fOffsetZ;
objectOffsets[playerid][3] = fRotX;
objectOffsets[playerid][4] = fRotY;
objectOffsets[playerid][5] = fRotZ;
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
// Remove o objeto associado ao jogador ao desconectar
if (IsValidObject(objetos[playerid]))
{
DestroyObject(objetos[playerid]);
objetos[playerid] = INVALID_OBJECT_ID; // Reseta o ID para evitar problemas futuros
}
return 1;
}
Documentação para pegar modelid:
https://dev.prineside.com/en/gtasa_samp_...0-3-7-rc1/
Discente de Sistemas de Informação no Centro Federal de Ensino Tecnológico(CEFET/RJ)
Programador SA-MP desde 2012
Programador SA-MP desde 2012
Não envie dúvidas por inbox, crie um tópico. Sua dúvida pode ser a dúvida de outro alguém, e seu tópico ajudará outras pessoas no futuro.