19:33
Ola galera criei esse script para ao usar o comando /aov aparecer a lista de objetos e eu clicar e escolher o objeto a ser criado e ser attached no veiculo o problema e que não sei porq os objetos não estão attachando no veiculo pois ao editar o objeto e finalizar usando a função response final o objeto não gruda no veiculo da forma que eu quero ele fica solto e eu posso sair com o veículo e ele fica ali solto já tentei de tudo pra ver oq de errado cometi por isso peço ajuda a vcs mais experientes
Código:
//criado por ANDREX
#include <a_samp>
#include <zcmd>
#include <sscanf>
#include <mSelection>
new attachList = mS_INVALID_LISTID;
new playerVehicleObject[MAX_PLAYERS];
public OnGameModeInit()
{
attachList = LoadModelSelectionMenu("Veh.txt");
return 1;
}
CMD:aov(playerid, params[])
{
if (!IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Você precisa estar em um veículo.");
return 1;
}
ShowModelSelectionMenu(playerid, attachList, "Escolha um objeto para anexar");
return 1;
}
CMD:rov(playerid, params[])
{
if (IsValidPlayerObject(playerid, playerVehicleObject[playerid]))
{
DestroyPlayerObject(playerid, playerVehicleObject[playerid]);
playerVehicleObject[playerid] = INVALID_OBJECT_ID;
SendClientMessage(playerid, 0x00FF00FF, "[INFO] Objeto removido.");
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Nenhum objeto para remover.");
}
return 1;
}
public OnPlayerModelSelection(playerid, response, listid, modelid)
{
if (listid == attachList)
{
if (!response)
{
SendClientMessage(playerid, 0xAAAAAAFF, "[INFO] Menu cancelado.");
return 1;
}
if (!IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Você saiu do veículo!");
return 1;
}
// Criar o objeto exatamente na posição do jogador
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
new objid = CreatePlayerObject(playerid, modelid, x, y, z, 0.0, 0.0, 0.0);
playerVehicleObject[playerid] = objid;
EditPlayerObject(playerid, objid);
SendClientMessage(playerid, 0x00FF00FF, "[INFO] Modo de edição ativado.");
}
return 1;
}
forward public OnPlayerEditPlayerObject(playerid, playerobject, objectid, response,
Float:fX, Float:fY, Float:fZ,
Float:fRotX, Float:fRotY, Float:fRotZ);
public OnPlayerEditPlayerObject(playerid, playerobject, objectid, response,
Float:fX, Float:fY, Float:fZ,
Float:fRotX, Float:fRotY, Float:fRotZ)
{
if (!IsValidPlayerObject(playerid, objectid)) return 1;
switch (response)
{
case EDIT_RESPONSE_FINAL:
{
if (!IsPlayerInAnyVehicle(playerid))
{
DestroyPlayerObject(playerid, objectid);
playerVehicleObject[playerid] = INVALID_OBJECT_ID;
SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Você saiu do veículo.");
return 1;
}
new vehicleid = GetPlayerVehicleID(playerid);
new Float:vehX, Float:vehY, Float:vehZ;
GetVehiclePos(vehicleid, vehX, vehY, vehZ);
new Float:offsetX = fX - vehX;
new Float:offsetY = fY - vehY;
new Float:offsetZ = fZ - vehZ;
AttachPlayerObjectToVehicle(playerid, objectid, vehicleid, offsetX, offsetY, offsetZ, fRotX, fRotY, fRotZ);
SendClientMessage(playerid, 0x00FF00FF, "[INFO] Objeto fixado ao veículo com sucesso.");
return 1;
}
case EDIT_RESPONSE_CANCEL:
{
DestroyPlayerObject(playerid, objectid);
playerVehicleObject[playerid] = INVALID_OBJECT_ID;
SendClientMessage(playerid, 0xFF0000FF, "[INFO] Edição cancelada.");
return 1;
}
}
return 1;
}