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

Quote:
Originally Posted by ZiGGi
View Post
Прибавляет значение к текущей позиции, замена для кода вида:
PHP Code:
new Float:xFloat:yFloat:z;
FCNPC_GetPosition(npcidxyz);
FCNPC_SetPosition(npcid1.01.0z); 
Блин, нафига))
Reply
#42

Quote:
Originally Posted by OKStyle
View Post
Блин, нафига))
FCNPC_GiveAngle, например, довольно полезная функция (можно в одну строчку повернуть в обратную сторону, например), остальные добавил для полноты картины.
Reply
#43

Лучше б поинтереснее что-нибудь добавил, например, выставление ботов полукругом (координаты зависят от угла)...
Reply
#44

Quote:
Originally Posted by OKStyle
View Post
Лучше б поинтереснее что-нибудь добавил, например, выставление ботов полукругом (координаты зависят от угла)...
Мне не кажется это полезным.
Reply
#45

Quote:
Originally Posted by DANGER1979
View Post
crashdetect ни когда не пользовался, дай ссылку, поставлю и проверю если там замарочек не много
https://sampforum.blast.hk/showthread.php?tid=262796
Reply
#46

1. locktimer работает после сообщения "Вы потеряли цель". Т.е. не все запущенные процессы убиваются, и где то ошибка при инициализации переменных.

2. В некоторых случаях[FCNPC] Error: name 'mission_0_0' is invalid. В итоге не запускается миссия

3.Боты в отличии от версии FCNPC-1.5.0-windows в скрипте миссий уже нормально убиваются.

4. в скрипте телохранителей не работает команда /bg shoot 1 0, где 0 - мой ид. Т.е. бот стоит и не хочет в меня стрелять. Это проблема появляется после манипуляций с ботами в данном скрипте.

5. в консоль сервера желательно чтобы выводилось при подключении бота так:
printf("NPC: Connection NPC %s[%d].", npcname, playerid);
т.е. обязательно надо видеть ID бота, а ip адрес бота вообще не нужная инфа.

6. если посадить бота за руль и ввести команду /bg follow 2 0, то бот едет за мной, но направление постоянно дергается, не очень красиво, и плюс по скорости он меня не догоняет. Не приятно также, что он едет через ограды и дома. Пробовал посадить бота за руль и использовать плагин autopilot, но почему то путь рассчитывается, но машина не едет. Но при этом автопилот прекрасно работает если сидишь на пассажирском и за рулём вообще ни кого нет.
Видимо проблема в том, что SetVehicleVelocity блокируется когда в машине за рулём сидит бот.надо это исправить в самом плагине если это возможно.

Т.е. мне надо, чтобы бот ехал от точки к точке (за ранее не известной) строго по дороге со скоростью, чтобы игроку было его трудно обогнать, но при этом не используя записанные треки. Чтобы можно было с ботами учавствовать в соревнованиях.

7. краши плагина
Code:
=========================== FCNPC Exception Handler ============================
Address: 0x0

Registers:
EAX: 0x4 - EBX: 0x3600978 - ECX: 0x3619090 - EDX: 0x18f88c
ESI: 0x360d874 - EDI: 0x23cfeb0 - EBP: 0x36046f0 - ESP: 0x18f868

Stack:
0x0: 0x402b63 - 0x4: 0x23cfeb0 - 0x8: 0x4 - 0xC: 0x18f88c - 0x10: 0x3619090 - 0x14: 0x0
0x18: 0x0 - 0x1C: 0x359a048 - 0x20: 0x18f928

Information:
  System: Windows
  SA-MP: 0.3.7 R2-1
  FCNPC: 1.6.1

Functions:
  FUNC_CPlayerPool__DeletePlayer: 0x466570
  FUNC_CPlayer__Kill: 0x484620
  FUNC_CPlayer__EnterVehicle: 0x484c70
  FUNC_CPlayer__ExitVehicle: 0x484f50
  FUNC_CPlayer__SpawnForWorld: 0x486d30
  FUNC_GetVehicleModelInfo: 0x488240
  FUNC_CConsole__GetIntVariable: 0x48b5b0
  FUNC_ClientJoin_RPC: 0x4918f0

Pointers:
  VAR_ServerAuthentication: 0x4f5fe8
  VAR_NetVersion: 0xfd9

Offsets:
  OFFSET_RemoteSystemManager: 0x33c
  OFFSET_RemoteSystemSize: 0xcb8
  OFFSET_RemoteSystem__ConnectMode: 0xcb0
  OFFSET_RemoteSystem__Unknown: 0xcb5
=========================== FCNPC Exception Handler ============================
8. Почему не исользовать последнюю версию GPS.dat из плагина RouteConnectorPlugin вместо 64 nodes

9. команда /citizien постоянно выдаёт "Invalid citizien ID" и не перемещают к ИД бота.
Reply
#47

Так же не понятен принцип как просмотреть файл NODES0.DAT или как отредактировать его. Как создать новый?
Какой принцип движения бота когда он сидит в тачке? Как выбирается следующий узел к которому надо двигаться боту?

Лучше использовать последнюю версию GPS.dat из плагина RouteConnectorPlugin, т.к. там и координаты можно исправить или добавить, и принцип движения более понятен.
Reply
#48

Quote:
Originally Posted by DANGER1979
View Post
1. locktimer работает после сообщения "Вы потеряли цель". Т.е. не все запущенные процессы убиваются, и где то ошибка при инициализации переменных.
Поправил.

Quote:
Originally Posted by DANGER1979
View Post
2. В некоторых случаях[FCNPC] Error: name 'mission_0_0' is invalid. В итоге не запускается миссия
Скорее всего старый бот с этим ником просто не успел отключиться.

Quote:
Originally Posted by DANGER1979
View Post
5. в консоль сервера желательно чтобы выводилось при подключении бота так:
printf("NPC: Connection NPC %s[%d].", npcname, playerid);
т.е. обязательно надо видеть ID бота, а ip адрес бота вообще не нужная инфа.
Это к разработчикам SA-MP, сообщение о подключении выдаёт сервер, а не плагин.

Quote:
Originally Posted by DANGER1979
View Post
6. если посадить бота за руль и ввести команду /bg follow 2 0, то бот едет за мной, но направление постоянно дергается, не очень красиво, и плюс по скорости он меня не догоняет.
Скрипт телохранителей не предполагает их работу в транспорте, да и смысла в этом я не вижу.

Quote:
Originally Posted by DANGER1979
View Post
Не приятно также, что он едет через ограды и дома. Пробовал посадить бота за руль и использовать плагин autopilot, но почему то путь рассчитывается, но машина не едет. Но при этом автопилот прекрасно работает если сидишь на пассажирском и за рулём вообще ни кого нет.
Видимо проблема в том, что SetVehicleVelocity блокируется когда в машине за рулём сидит бот.надо это исправить в самом плагине если это возможно.

Т.е. мне надо, чтобы бот ехал от точки к точке (за ранее не известной) строго по дороге со скоростью, чтобы игроку было его трудно обогнать, но при этом не используя записанные треки. Чтобы можно было с ботами учавствовать в соревнованиях.
Этот плагин - это не решение "всё в одном, подключи и используй". Это лишь набор функционала, который каждый может использовать в своих целях.
Что за плагин autopilot?

Quote:
Originally Posted by DANGER1979
View Post
7. краши плагина
Code:
=========================== FCNPC Exception Handler ============================
Address: 0x0

Registers:
EAX: 0x4 - EBX: 0x3600978 - ECX: 0x3619090 - EDX: 0x18f88c
ESI: 0x360d874 - EDI: 0x23cfeb0 - EBP: 0x36046f0 - ESP: 0x18f868

Stack:
0x0: 0x402b63 - 0x4: 0x23cfeb0 - 0x8: 0x4 - 0xC: 0x18f88c - 0x10: 0x3619090 - 0x14: 0x0
0x18: 0x0 - 0x1C: 0x359a048 - 0x20: 0x18f928

Information:
  System: Windows
  SA-MP: 0.3.7 R2-1
  FCNPC: 1.6.1

Functions:
  FUNC_CPlayerPool__DeletePlayer: 0x466570
  FUNC_CPlayer__Kill: 0x484620
  FUNC_CPlayer__EnterVehicle: 0x484c70
  FUNC_CPlayer__ExitVehicle: 0x484f50
  FUNC_CPlayer__SpawnForWorld: 0x486d30
  FUNC_GetVehicleModelInfo: 0x488240
  FUNC_CConsole__GetIntVariable: 0x48b5b0
  FUNC_ClientJoin_RPC: 0x4918f0

Pointers:
  VAR_ServerAuthentication: 0x4f5fe8
  VAR_NetVersion: 0xfd9

Offsets:
  OFFSET_RemoteSystemManager: 0x33c
  OFFSET_RemoteSystemSize: 0xcb8
  OFFSET_RemoteSystem__ConnectMode: 0xcb0
  OFFSET_RemoteSystem__Unknown: 0xcb5
=========================== FCNPC Exception Handler ============================
К сожалению, без подробной информации - это мне ничем не поможет.

Quote:
Originally Posted by DANGER1979
View Post
8. Почему не исользовать последнюю версию GPS.dat из плагина RouteConnectorPlugin вместо 64 nodes
Почему ты сам не можешь использовать GPS.dat вместо 64 nodes? Просто переименуй в NODES0.dat и замени имеющийся... Лично у меня нет времени проверять данные из этого файла.

Quote:
Originally Posted by DANGER1979
View Post
9. команда /citizien постоянно выдаёт "Invalid citizien ID" и не перемещают к ИД бота.
Не правда. Ты же понимаешь, что ID у ботов идут с конца?

Quote:
Originally Posted by DANGER1979
View Post
Так же не понятен принцип как просмотреть файл NODES0.DAT или как отредактировать его. Как создать новый?
Информация по нодам GTA SA здесь: http://gta.wikia.com/wiki/Paths_(GTA_SA) или здесь: http://www.gtamodding.com/wiki/Paths_(GTA_SA)

Quote:
Originally Posted by DANGER1979
View Post
Какой принцип движения бота когда он сидит в тачке?
Не понял вопроса, конкретнее.

Quote:
Originally Posted by DANGER1979
View Post
Как выбирается следующий узел к которому надо двигаться боту?
Случайным образом.

Quote:
Originally Posted by DANGER1979
View Post
Лучше использовать последнюю версию GPS.dat из плагина RouteConnectorPlugin, т.к. там и координаты можно исправить или добавить, и принцип движения более понятен.
Я же не запрещаю, используй. Если появится время и желание, то может и я посмотрю на эти ноды, но особого смысла в этом я не вижу, проще подключить этот плагин и использовать его вместе с FCNPC. Простейший скрипт движения будет выглядеть так:
PHP Code:
public GPS_WhenRouteIsCalculated(routeid,node_id_array[],amount_of_nodes,Float:distance,Float:Polygon[],Polygon_Size,Float:NodePosX[],Float:NodePosY[],Float:NodePosZ[])
{
    if (
amount_of_nodes != 0) {
        new 
move_path FCNPC_CreateMovePath();
        for (new 
iamount_of_nodesi++) {
            
FCNPC_AddPointToPath(move_pathNodePosX[i], NodePosY[i], NodePosZ[i]);
        }
        
FCNPC_GoByMovePath(NPC_TEST_BOTmove_path);
    }
    return 
1;

Но, после того как использование данных из созданного пути будет завершено, его нужно удалить, чтобы память не утекала.
Reply
#49

Quote:
Originally Posted by DANGER1979
View Post
FCNPC_PlayNode(npcid, nodeid, .UseMapAndreas = true, .speed = 1.0 + frandom(1.0));
npcid будет двигаться к узлу nodeid используя Z координаты из UseMapAndreas со скоростью 1+frandom(1.0).
это всё прекрасно. ТОлько не понятно какой из приложенных узлов где находится. Проще иметь собственный массив координат и заставлять ботов двигаться по ним.
Для пешеходов ноды вполне могут сгодиться, я же не заставляю их использовать.

Quote:
Originally Posted by DANGER1979
View Post
как заставить чтобы бот четко ехал используя транспорт к координатам x,y,z?
FCNPC_GoTo

Quote:
Originally Posted by DANGER1979
View Post
FCNPC_SetVelocity(npcid, Float, Float:y, Float:z, bool:update_pos = false);
update_pos - что за параметр
Обновление положения. Так как физика ботов полностью контролируется сервером, то при установке ускорения позиция бота не обновляется, если этот параметр равен true, то позиция бота будет обновлена сервером.
Reply
#50

Не работает ф-ия SetVehicleZAngle когда бот сидит за рулем.
Также не работает ф-ия SetVehicleAngularVelocity когда бот сидит за рулем.

Это можно исправить?

Или как довернуть тачку, когда бот сидит в ней за рулём?

Иначе при использовании ф-ии FCNPC_SetVelocity тачка постоянно едет боком под тем углом который был у неё до момента как бот начал движение.
Reply
#51

Quote:
Originally Posted by DANGER1979
View Post
Не работает ф-ия SetVehicleZAngle когда бот сидит за рулем.
Для изменения угла поворота используется FCNPC_SetAngle.

Quote:
Originally Posted by DANGER1979
View Post
Также не работает ф-ия SetVehicleAngularVelocity когда бот сидит за рулем.
Возможно попробую добавить подобную функцию для ботов в будущем.

Quote:
Originally Posted by DANGER1979
View Post
Иначе при использовании ф-ии FCNPC_SetVelocity тачка постоянно едет боком под тем углом который был у неё до момента как бот начал движение.
Так и должно быть. Для движения ботов вообще лучше использовать FCNPC_GoTo.
Reply
#52

FCNPC v1.7.0

О версии
- Отключен поиск Z координаты через MapAndreas для позиций ниже 0.0
- #36: Добавлена FCNPC_ToggleMapAndreasUsage и FCNPC_IsMapAndreasUsed
- #39: Добавлена функция FCNPC_GetDestinationPoint
- Добавлена функция FCNPC_AddPointsToPath2
- #35: Добавлен параметр Float:dist_offset в функции GoTo[Player]
- #56: Добавлена автовызываемая функция FCNPC_OnChangeHeightPos (отключена по умолчанию, для включения используйте FCNPC_SetMinHeightPosCall)
- samples/bg: NPC теперь имеют бесконечные патроны

Исправления
- Исправлены аргументы npcid и damagedid в автовызываемой функции FCNPC_OnGiveDamage
- #40: Исправлена оружие причины смерти при drive by
- Исправлена система сообщения об ошибках инициализации
- #45: Исправлены перехваченные функции stream
- Исправлена настройка типа движения
- #59: Установка угла после респавна
- #48: Исправлена конечная позиция после передвижения
- samples/missions: вызов FreeCamera после EndMission
- samples/bg: Исправлено кручение NPC при следовании
- samples/bg: Прекращение следования при посадке в транспорт

Новые и изменённые функции
PHP Code:
native FCNPC_GoTo(npcidFloat:xFloat:yFloat:ztype MOVE_TYPE_AUTOFloat:speed MOVE_SPEED_AUTObool:UseMapAndreas falseFloat:radius 0.0bool:setangle trueFloat:dist_offset 0.0);
native FCNPC_GoToPlayer(npcidplayeridtype MOVE_TYPE_AUTOFloat:speed MOVE_SPEED_AUTObool:UseMapAndreas falseFloat:radius 0.0bool:setangle trueFloat:dist_offset 0.0Float:dist_check 1.5);
native FCNPC_GoByMovePath(npcidpathidtype MOVE_TYPE_AUTOFloat:speed MOVE_SPEED_AUTObool:UseMapAndreas falseFloat:radius 0.0bool:setangle trueFloat:dist_offset 0.0);
native FCNPC_GetDestinationPoint(npcid, &Float:x, &Float:y, &Float:z);
native FCNPC_AddPointsToPath2(pathidFloat:points_x[], Float:points_y[], Float:points_z[], const size sizeof(points_x));
native FCNPC_ToggleMapAndreasUsage(npcidbool:enabled);
native FCNPC_IsMapAndreasUsed(npcid);
native FCNPC_SetMinHeightPosCall(npcidFloat:height);
native Float:FCNPC_GetMinHeightPosCall(npcid); 
Новые и изменённые автовызываемые функции
PHP Code:
forward FCNPC_OnGiveDamage(npciddamagedidweaponidbodypartFloat:health_loss);
forward FCNPC_OnChangeHeightPos(npcidFloat:new_zFloat:old_z); // disabled by default, see FCNPC_SetMinHeightPosCall 
Скачать
- Скачать с GitHub: https://github.com/ziggi/FCNPC/releases
Reply
#53

FCNPC v1.7.1

О версии
- Переименована функция GetWeaponClipSize в GetWeaponActualClipSize, добавлена функция GetWeaponClipSize
- Добавлены функции контроля патронов в обойме
- Добавлена функция FCNPC_GetWeaponActualReloadTime

Исправления
- Исправлены шотганы #65 (#66)
- Исправлены перехватываемые автовызываемые функции (#67, #68)
- Добавлена обойма для оружий (#65, #70, #71)
- Исправлены состояния оружия
- Исправлена перезарядка
- Исправлена перезарядка при бесконечных патронах
- Команда NPC по умолчанию теперь NO_TEAM (#69)
- Исправлено время перезарядки шотгана
- Исправлено время перезарядки для двоного WEAPON_SAWEDOFF

Новые и изменённые функции
PHP Code:
native FCNPC_SetAmmoInClip(npcidammo);
native FCNPC_GiveAmmoInClip(npcidammo);
native FCNPC_GetAmmoInClip(npcid);
native FCNPC_GetWeaponActualReloadTime(npcidweaponid);
native FCNPC_GetWeaponActualClipSize(npcidweaponid); 
Скачать
- Скачать с GitHub: https://github.com/ziggi/FCNPC/releases
Reply
#54

А что такое ClipSize? Количество ПТ в обойме?
Reply
#55

Quote:
Originally Posted by Kolstin
View Post
А что такое ClipSize? Количество ПТ в обойме?
Да .
Reply
#56

FCNPC v1.7.2

Исправления
- Исправление SetWeaponClipSize
- Исправление SetWeaponInfo
- Исправление SetWeaponState
- Исправление SetWeaponSkill
- Обнуление патронов в обойме после SetWeapon
- Исправлен бесконечный цикл и мгновенное пополнение патронов при начале стрельбы (#75)
- Исправлен бесконечные патроны и бесконечный цикл
- Исправлена перезарядка для оружия с одним патроном (#77)
- Исправлено время перезарядки двойного оружия
- Исправлена StopAim при перезарядке
- Исправлена GetWeaponActualReloadTime для двойного оружия
- Исправлен массив информации оружия

Скачать
- Скачать с GitHub: https://github.com/ziggi/FCNPC/releases
Reply
#57

FCNPC v1.7.3

О версии
- #73: В GoTo функции добавлен параметр stopdelay

Исправления
- #81: Исправлен крэш с нодами
- Исправлена кодировка и окончания строк в скиптах-примерах
- Исправлено подключение FCNPC в скиптах-примерах
- Отключено убийство мёртвых NPC
- GetNumberMovePoint возвращает 0 если путь не валидный
- Добавлен обработчик исключений в CreateMovePath, теперь эта функция возвращает INVALID_MOVEPATH_ID при ошибке

Изменённые функции
PHP Code:
native FCNPC_GoTo(npcidFloat:xFloat:yFloat:ztype MOVE_TYPE_AUTOFloat:speed MOVE_SPEED_AUTObool:UseMapAndreas falseFloat:radius 0.0bool:setangle trueFloat:dist_offset 0.0stopdelay 250);
native FCNPC_GoToPlayer(npcidplayeridtype MOVE_TYPE_AUTOFloat:speed MOVE_SPEED_AUTObool:UseMapAndreas falseFloat:radius 0.0bool:setangle trueFloat:dist_offset 0.0Float:dist_check 1.5stopdelay 250); 
Reply
#58

Quote:
Originally Posted by Bombo
View Post
Не срабатывает функция MeleeAttack() :
PHP Code:
    //далее функция рассчитана на плагин FCNPC
    
for(0MAX_PLAYERS; ++i)
    {
        
//если это игрок - пропускаем
        
if(IsPlayerNPC(i) && FCNPC_IsSpawned(i) && !FCNPC_IsDead(i))
        {
            
//ищем ближайшего игрока
            
for(0MAX_PLAYERS; ++j)
            {
                if(
miss_player[j])
                    continue;
                
dx floatsub(fPlayersCoords[i][f_X],fPlayersCoords[j][f_X]);
                
dy floatsub(fPlayersCoords[i][f_Y],fPlayersCoords[j][f_Y]);
                
dz floatsub(fPlayersCoords[i][f_Z],fPlayersCoords[j][f_Z]);
                
len VectorSize(dx,dy,dz);
                
//если игрок в зоне досягаемости зомби - атака
                
if(len 1.2)
                {
                    
//наводимся
                    
FCNPC_AimAt(ifPlayersCoords[j][f_X], fPlayersCoords[j][f_Y], fPlayersCoords[j][f_Z], false);
                    
//атакуем
                    
FCNPC_MeleeAttack(i100true);
                    break;
                }
                
//если игрок в поле зрения зомби - преследование
                
if(len 99.0)
                {
                    
//если за игроком уже бегжит 5 или более зомби - ищем другого игрока поблизости
                    
if(>= MAX_ZOMBIES_ON_PLAYER)
                        continue;
                    
//если зомби поворачивается в сторону игрока - отбой
                    
if(FCNPC_IsAiming(i))
                    {
                        
FCNPC_StopAttack(i);
                        
FCNPC_StopAim(i);
                    }
                    
//преследуем
                    
FCNPC_GoTo(ifloatadd(fPlayersCoords[j][f_X],floatdiv(floatmul(0.5,dx),len)), floatadd(fPlayersCoords[j][f_Y],floatdiv(floatmul(0.5,dy),len)), fPlayersCoords[j][f_Z], MOVE_TYPE_RUN0.8true);
                    break;
                }
            }
            
//если в поле зрения зомби никого нету - останавливаем его
            
if(FCNPC_IsAiming(i))
            {
                
FCNPC_StopAttack(i);
                
FCNPC_StopAim(i);
            }
        }
    } 
Если же в обоих местах закомментировать FCNPC_StopAttack(i), то MeleeAttack() срабатывает, но при этом анимация бега иногда заменяется анимацией атаки.
Ну, естественно оно не срабатывает - ты сразу же, после прицеливания, останавливаешь атаку, анимация просто не успевает сработать. А замена анимации бега на анимацию атаки - это тоже нормально, потому что движком н игры не предусмотрен бег и атака с помощью боевого стиля.
Reply
#59

Quote:
Originally Posted by ZiGGi
View Post
Ну, естественно оно не срабатывает - ты сразу же, после прицеливания, останавливаешь атаку, анимация просто не успевает сработать. А замена анимации бега на анимацию атаки - это тоже нормально, потому что движком н игры не предусмотрен бег и атака с помощью боевого стиля.
Да, точно, атака останавливается у всех ботов. Пропустил проверку после цикла. Теперь всё работает: и атака, и анимация бега.

PHP Code:
    //далее функция рассчитана на плагин FCNPC
    
for(0MAX_PLAYERS; ++i)
    {
        
//если это игрок - пропускаем
        
if(IsPlayerNPC(i) && FCNPC_IsSpawned(i) && !FCNPC_IsDead(i))
        {
            
//ищем ближайшего игрока
            
for(0MAX_PLAYERS; ++j)
            {
                if(
miss_player[j])
                    continue;
                
dx floatsub(fPlayersCoords[i][f_X],fPlayersCoords[j][f_X]);
                
dy floatsub(fPlayersCoords[i][f_Y],fPlayersCoords[j][f_Y]);
                
dz floatsub(fPlayersCoords[i][f_Z],fPlayersCoords[j][f_Z]);
                
len VectorSize(dx,dy,dz);
                
//если игрок в зоне досягаемости зомби - атака
                
if(len 1.2)
                {
                    
//наводимся
                    
FCNPC_AimAt(ifPlayersCoords[j][f_X], fPlayersCoords[j][f_Y], fPlayersCoords[j][f_Z], false);
                    
//атакуем
                    
FCNPC_MeleeAttack(i100true);
                    break;
                }
                
//если игрок в поле зрения зомби - преследование
                
if(len 99.0)
                {
                    
//если за игроком уже бегжит 5 или более зомби - ищем другого игрока поблизости
                    
if(>= MAX_ZOMBIES_ON_PLAYER)
                        continue;
                    
//если зомби поворачивается в сторону игрока - отбой
                    
if(FCNPC_IsAiming(i))
                        
FCNPC_StopAim(i);
                    if(
FCNPC_IsAttacking(i))
                        
FCNPC_StopAttack(i);
                    
//преследуем
                    
FCNPC_GoTo(ifloatadd(fPlayersCoords[j][f_X],floatdiv(floatmul(0.5,dx),len)), floatadd(fPlayersCoords[j][f_Y],floatdiv(floatmul(0.5,dy),len)), fPlayersCoords[j][f_Z], MOVE_TYPE_RUN0.8true);
                    break;
                }
            }
            if(
== MAX_PLAYERS)
            {
                
//если в поле зрения зомби никого нету - останавливаем его
                
if(FCNPC_IsAiming(i))
                    
FCNPC_StopAim(i);
                if(
FCNPC_IsAttacking(i))
                    
FCNPC_StopAttack(i);
            }
        }
    } 
Спасибо за свежий взгляд на код!
Reply
#60

Привет, почему перестал писать список изменений в этой теме?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)