[Plugin] FCNPC - Fully Controllable NPC (Russian Thread)
#21

Спасибо ZIGGI теперь работает)
Reply
#22

FCNPC 1.1.0

О версии
- Улучшено определение цели в функции FCNPC_AimAt
- Теперь NPC могут наносить урон другому игроку (для предотвращения этого вы можете возвратить 0 в FCNPC_OnTakeDamage)
- Добавлена проверка версии инклуд файла
- Теперь функция FCNPC_GoToPlayer обновляет точку назначения NPC пока игрок двигается
- Добавлены функции для контроля тяги в Hydra
- Добавлены функции для контроля шасси
- shoot_delay по умолчанию изменён на -1 (не важно)
- Оптимизация процесса прицеливания
- Небольшой рефакторинг исходного кода

Исправления
- Исправлен крэш для недействительного транспорта во время проигрывания записи
- Исправлена синхронизация позиции NPC при сёрфинге (прицеплении к транспорту)
- Исправлена стрельба при сёрфинге
- Исправлена работа аргумента speed в функциях FCNPC_GoTo[Player] (теперь он работает для пеших NPC тоже)
- Исправлено направление прицеливания по оси Z
- Сброс клавиш NPC после смерти (исправляет некоторые ошибки с анимациями)
- Исправлена проверка на параметры в функциях информации об оружии

Новые функции
PHP Code:
native FCNPC_StopSurfing(npcid);
native FCNPC_IsAttacking(npcid);
native FCNPC_IsAimingAtPlayer(npcidplayerid);
native FCNPC_IsMovingAtPlayer(npcidplayerid);
native FCNPC_SetVehicleHydraThrusters(npciddirection);
native FCNPC_GetVehicleHydraThrusters(npcid);
native FCNPC_SetVehicleGearState(npcidgear_state);
native FCNPC_GetVehicleGearState(npcid); 
Скачать
- Скачать с GitHub: https://github.com/ziggi/FCNPC/releases
Reply
#23

А я чёт подзабыл, а почему ты, Зигги, да и вообще никто не стал дорабатывать Controllable NPC? Лёха ведь сорсы выкладывал... С мемори хаком проще?
Reply
#24

Quote:
Originally Posted by OKStyle
View Post
А я чёт подзабыл, а почему ты, Зигги, да и вообще никто не стал дорабатывать Controllable NPC? Лёха ведь сорсы выкладывал... С мемори хаком проще?
Исходники он выложил уже после того, как появился FCNPC. Да и автор FCNPC забросил его разработку не так давно: в отличии от CNPC, который поддерживал 0.3z, FCNPC поддерживал 0.3.7. А я изначально планировал лишь обновить плагин до 0.3.7 R2 и на этом закончить, но меня что-то понесло.
А с мемори хаком одинаково.
Reply
#25

Продублирую:
В версии 1.1.0 появилась проблема: записи поездов с ботами стали проигрываться рывками, то есть поезд раз в 1-2 секунды телепортируется на следующую позицию, в версии 1.0.7 все нормально.
Reply
#26

Quote:
Originally Posted by Imperealist
View Post
Продублирую:
В версии 1.1.0 появилась проблема: записи поездов с ботами стали проигрываться рывками, то есть поезд раз в 1-2 секунды телепортируется на следующую позицию, в версии 1.0.7 все нормально.
Дай свою запись, я проверю.
Reply
#27

http://rgho.st/7zlbtRBDV
Reply
#28

Quote:
Originally Posted by Imperealist
View Post
Спасибо, ошибку нашёл и исправил.
Reply
#29

Отлично, тебе спасибо, ждем фикс
Reply
#30

FCNPC 1.1.1

О версии
- Сёрфинг теперь поддерживает прикреплённые объекты
- Оптимизация
- Добавлены константы скорости в инклуд файл
- Обновлено загрузочное сообщение

Исправления
- Исправлена валидация объектов и транспорта (меньше крэшей)
- Исправлена проверка версии инклуд файла (спасибо плагину Streamer от Incognito за пример)
- Исправлен радиус движения для функции FCNPC_GoToPlayer
- Исправлены типы переменных и их конвертация
- Исправлена работа скорости и типа в функции GoTo
- Исправлена ошибка со сбросом скорости поезда
- Исправлена синхронизация двигателей тяги в Hydra и скорости поезда при проигрывании записи
- Исправлены некоторые крэши при удалении транспорта NPC

Новые директивы
PHP Code:
#define MOVE_SPEED_AUTO     (-1.0)
#define MOVE_SPEED_WALK     (0.1552086)
#define MOVE_SPEED_RUN      (0.56444)
#define MOVE_SPEED_SPRINT   (0.926784) 
Скачать
- Скачать с GitHub: https://github.com/ziggi/FCNPC/releases
Reply
#31

Нашёл время глянуть 03zR4 ветку. При создании NPC происходит почти мгновенное отключение бота. Выявил место сбоя в коде плагина:
PHP Code:
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;

Вывод:
Quote:

CPlayerData::Setup(), pNetGame=0x95D4E50, pPlayerPool=0x9AB1AB0, m_pPlayer=0,m_playerId=179

Reply
#32

Quote:
Originally Posted by Bombo
View Post
Нашёл время глянуть 03zR4 ветку. При создании NPC происходит почти мгновенное отключение бота. Выявил место сбоя в коде плагина:
PHP Code:
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;

Вывод:
Знаю, проблема в процедуре подключения бота к серверу, но у меня нет идей как это можно исправить.
Reply
#33

FCNPC 1.1.3

О версии
- Переписан скрипт-пример Bodyguard
- Оптимизация

Исправления
- Исправление FCNPC_IsStreamedForAnyone
- Теперь FCNPC_PutInVehicle работает для NPC находящихся в транспорте
- Исправлена работа изменения времени стрельбы и задержки
- Исправлено много предупреждений при компиляции
- Добавлено много проверок на валидность (меньше крэшей)

Новые автовызываемые функции
PHP Code:
forward FCNPC_OnGiveDamage(npcidissueridweaponidbodypartFloat:health_loss); 
Скачать
- Скачать с GitHub: https://github.com/ziggi/FCNPC/releases
Reply
#34

Сорри за тупой вопрос, а можно ли боту поставить полоску хп и ник как у обычных игроков?
Reply
#35

3d лейблами.
Reply
#36

Quote:
Originally Posted by Art4D
View Post
Сорри за тупой вопрос, а можно ли боту поставить полоску хп и ник как у обычных игроков?
Только если "превратить" их в игроков, что на этом форуме лучше не обсуждать (требуется модификация исходного кода плагина).
Reply
#37

FCNPC 1.2.0

О версии
- Улучшены параметры оружия по умолчанию (deagle, m4, ak47)
- Добавлено много FCNPC_Give* функций
- Чистка кода

Исправления
- Исправлена работа параметра delay в функции FCNPC_AimAt
- Исправлено проигрывание node файлов

Новые функции
PHP Code:
native FCNPC_GivePosition(npcidFloat:xFloat:yFloat:z);
native Float:FCNPC_GiveAngle(npcidFloat:angle);
native FCNPC_GiveQuaternion(npcidFloat:wFloat:xFloat:yFloat:z);
native FCNPC_GiveVelocity(npcidFloat:xFloat:yFloat:z);
native Float:FCNPC_GiveHealth(npcidFloat:health);
native Float:FCNPC_GiveArmour(npcidFloat:armour);
native FCNPC_GiveAmmo(npcidammo);
native FCNPC_GiveWeaponSkillLevel(npcidskilllevel);
native FCNPC_GiveSurfingOffsets(npcidFloat:xFloat:yFloat:z); 
Скачать
- Скачать с GitHub: https://github.com/ziggi/FCNPC/releases
Reply
#38

Что делает GivePosition? Как я понимаю, должно быть 2 типа: Get, Set.
Reply
#39

Quote:
Originally Posted by OKStyle
View Post
Что делает GivePosition? Как я понимаю, должно быть 2 типа: Get, Set.
Прибавляет значение к текущей позиции, замена для кода вида:
PHP Code:
new Float:xFloat:yFloat:z;
FCNPC_GetPosition(npcidxyz);
FCNPC_SetPosition(npcid1.01.0z); 
Reply
#40

Quote:
Originally Posted by Art4D
View Post
Можно ли заставить ботов бить оружием ближнего боя (катаной, битой)? Сейчас как не делали, бот тупо ругой обьект, а биту не использует.
PHP Code:
FCNPC_MeleeAttack(npcid); 
Reply


Forum Jump:


Users browsing this thread: 5 Guest(s)