22.07.2016, 11:47
Спасибо ZIGGI теперь работает)
native FCNPC_StopSurfing(npcid);
native FCNPC_IsAttacking(npcid);
native FCNPC_IsAimingAtPlayer(npcid, playerid);
native FCNPC_IsMovingAtPlayer(npcid, playerid);
native FCNPC_SetVehicleHydraThrusters(npcid, direction);
native FCNPC_GetVehicleHydraThrusters(npcid);
native FCNPC_SetVehicleGearState(npcid, gear_state);
native FCNPC_GetVehicleGearState(npcid);
А я чёт подзабыл, а почему ты, Зигги, да и вообще никто не стал дорабатывать Controllable NPC? Лёха ведь сорсы выкладывал... С мемори хаком проще?
|
#define MOVE_SPEED_AUTO (-1.0)
#define MOVE_SPEED_WALK (0.1552086)
#define MOVE_SPEED_RUN (0.56444)
#define MOVE_SPEED_SPRINT (0.926784)
bool CPlayerData::Setup()
{
if (m_playerId == INVALID_PLAYER_ID) {
return false;
}
// Get the player interface
m_pPlayer = pNetGame->pPlayerPool->pPlayer[m_playerId]; //сбой в этом месте, m_pPlayer равен 0
fprintf(stderr, "CPlayerData::Setup(), pNetGame=0x%X, pPlayerPool=0x%X, m_pPlayer=%d,m_playerId=%d\n",pNetGame,pNetGame->pPlayerPool,pNetGame->pPlayerPool->pPlayer[m_playerId],m_playerId);
// Validate the interface
if (!m_pPlayer) {
return false; //на этом месте создание NPC обрывается
}
// Set the setup flag
m_bSetup = true;
// Reset his state
SetState(PLAYER_STATE_NONE);
// Initialize the update tick
m_dwUpdateTick = GetTickCount();
return true;
}
CPlayerData::Setup(), pNetGame=0x95D4E50, pPlayerPool=0x9AB1AB0, m_pPlayer=0,m_playerId=179 |
Нашёл время глянуть 03zR4 ветку. При создании NPC происходит почти мгновенное отключение бота. Выявил место сбоя в коде плагина:
PHP Code:
|
forward FCNPC_OnGiveDamage(npcid, issuerid, weaponid, bodypart, Float:health_loss);
native FCNPC_GivePosition(npcid, Float:x, Float:y, Float:z);
native Float:FCNPC_GiveAngle(npcid, Float:angle);
native FCNPC_GiveQuaternion(npcid, Float:w, Float:x, Float:y, Float:z);
native FCNPC_GiveVelocity(npcid, Float:x, Float:y, Float:z);
native Float:FCNPC_GiveHealth(npcid, Float:health);
native Float:FCNPC_GiveArmour(npcid, Float:armour);
native FCNPC_GiveAmmo(npcid, ammo);
native FCNPC_GiveWeaponSkillLevel(npcid, skill, level);
native FCNPC_GiveSurfingOffsets(npcid, Float:x, Float:y, Float:z);