|
|
Модератор форума: GUNNER161, Panikaha |
Форум РЕДАКТОР - ArmA 3 Скрипты Скрипт награды водителю за перевозку игроков |
Скрипт награды водителю за перевозку игроков |
› Воскресенье
› 19.07.2015
› 18:04
› Сообщение #
За каждый километр что водитель провез игрока он получает награду в виде очков.
На данный момент имеется след: в init.sqf onPlayerRespawn.sqf в Transportaward.sqf в функции QS_fnc_TransportAward P.S. Все условия соблюдаются тестовое сообщение есть при посадке в верт и сообщение функции при выходе игрока с места "cargo". (когда EH срабатывает) Но очки не начисляются. Подскажите пожалуйста что не так? |
› Воскресенье
› 19.07.2015
› 18:35
› Сообщение #
для начала сократи условия до нормального, а дополнителные проверки надо вынести ЗА цикл.
а бессмысленные вообще убрать вот так Код while {true} do { _vtidx = nil; sleep 0.5; WaitUntil {vehicle player!=player}; if ( !((vehicle player) isKindOf 'ParachuteBase') && !((vehicle player) isKindOf 'BIS_Steerable_Parachute') ) then { VEH_Transport=vehicle player; _vtidx = VEH_Transport addEventHandler ["getout",{_this call QS_fnc_TransportAward}]; VEH_TransportPos=getPosATL VEH_Transport; hqSideChat = "Transportawar.sqf"; publicVariable "hqSideChat"; [WEST,"HQ"] sideChat hqSideChat; }; WaitUntil {vehicle player==player}; if !(isNil "_vtidx") then { VEH_Transport removeEventHandler ["getout",_vtidx]; }; }; а такая штука ваще не имеет смысла (local player) Player - всегда локальный, кроме выделенного сервера, потому что его там нет .............................. в Функции. проверка if (((_location select 2) < 5) && (_unit==player) && (_place=="cargo")) then а потом идёт if ((isPlayer _driver) && (isPlayer _unit)) then ты Уже убедился что _unit==player зачем ещё раз проверять? .......................... а проблема кроется в том что Один игрок (пассажир) пытается изменить рейтинг другому (водителю), а это может сделать только игрок сам себе, или сервер. понадобится ещё одна функция, которая этим займётся ..................... Имеет смысл контролировать только тот транспорт где Игрок сам Водитель, и сам будет себе начислять очки. |
› Воскресенье
› 19.07.2015
› 20:47
› Сообщение #
Внес все изменения
_driver addRating ((Rating _driver) + _rating); //не добавляет всеравно Добавлено (19.07.2015, 20:47) Transportaward.sqf Спойлер//Transport award while {true} do { _vtidx = nil; sleep 0.5; WaitUntil {vehicle player!=player}; if ( !((vehicle player) isKindOf 'ParachuteBase') && !((vehicle player) isKindOf 'BIS_Steerable_Parachute') ) then { VEH_Transport=vehicle player; _vtidx = VEH_Transport addEventHandler ["getout",{_this call QS_fnc_TransportAward}]; VEH_TransportPos=getPosATL VEH_Transport; //имеются сомнения на счет данной строчки hqSideChat = "Скрипт награды за транспортировку запущен, т.к. выполнены все условия"; publicVariable "hqSideChat"; [WEST,"HQ"] sideChat hqSideChat; }; WaitUntil {vehicle player==player}; if !(isNil "_vtidx") then { VEH_Transport removeEventHandler ["getout",_vtidx]; }; }; initPlayerLocal.sqf onPlayerRespawn.sqf |
› Воскресенье
› 19.07.2015
› 21:16
› Сообщение #
|
› Воскресенье
› 19.07.2015
› 21:25
› Сообщение #
|
| |||
| |||
Чат сайта |