|
|
Модератор форума: GUNNER161, Panikaha |
Форум РЕДАКТОР - ArmA 3 Скрипты оживление раненого при ревайве |
оживление раненого при ревайве |
› Пятница
› 09.08.2019
› 14:58
› Сообщение #
здравствуйте уважаемый Slon. У меня есть скрипт моего друга, который "оживляет" отправленного в состояние "300" игрока, если у него есть желтая аптечка-ипп при игре в ванильную арму с бисовским ревайвом. но переодически есть такой баг, что игрок, который ожил становиться невидимым для других игроков-клиентов. Может быть что-то посоветуете или подправите или может есть более простой скрипт такого действия?
Код fnc_RW_Revive = { private _trigger = _this select 0; private _unit = player; private _timeRevive = time + random [1,1,1]; private _reviveItem = "FirstAidKit"; private _timer = 8; //время неуязвимости после авто-оживления _unit allowDamage false; _unit setVariable ["#rev_state", 1]; //выходим из цикла потери крови функции reviveBleedOut sleep 0.5; _unit setVariable ["#rev_state", 2]; //возвращаем всё как было _unit setVariable ["#rev_damage",0]; _unit setVariable ["#rev_bleed",0]; if (_reviveItem in items _unit) then { //если есть аптечка while {time < _timeRevive} do { sleep 0.1; if (not (lifeState _unit == "INCAPACITATED")) exitWith {}; //если успели оживить }; if (lifeState _unit == "INCAPACITATED") then { [_unit, false] remoteExec ["setUnconscious", 0]; [ "#rev", 1, _unit ] call BIS_fnc_reviveOnState; _unit removeItem _reviveItem; sleep _timer; }; } else { //если нет аптечки waitUntil {sleep 0.1; not (lifeState _unit == "INCAPACITATED")}; }; _unit allowDamage true; true; }; private _autoRevive = createTrigger ["EmptyDetector",[0,0,0],false]; _autoRevive setTriggerActivation ["NONE","PRESENT",true]; _autoRevive setTriggerStatements ["lifeState player == ""INCAPACITATED"""," [thisTrigger]spawn fnc_RW_Revive;",""]; Добавлено (09.08.2019, 15:00) Добавлено (09.08.2019, 15:02)
www.armatop.info - Территория боевых действий
www.arma3realwar.ru |
› Пятница
› 09.08.2019
› 20:51
› Сообщение #
Как образуется Баг никто не знает, поэтому избавиться от него не понятно как ))
попробуй убрать две строки _unit allowDamage ****; Наличие аптечки опредляется этой строкой if (_reviveItem in items _unit) then { Замени её например так if ((random 10) > 5) then { вероятность 50% что вылечишься. |
› Суббота
› 10.08.2019
› 02:22
› Сообщение #
_unit allowDamage ****;
данную команду мы поставили спец потому что анимации бисовские переворота со спины на живот\руки медленные, и если бот рядом, то он стреляет по вам не переставая, и не дает "встать и взять оружие в руки" и кладет вас постоянно. поэтому на время "оживления" игрок сделан "неубиваемым". про 50% понял. потестим отпишу. спасибо. Добавлено (11.08.2019, 04:55)
www.armatop.info - Территория боевых действий
www.arma3realwar.ru |
› Воскресенье
› 11.08.2019
› 07:10
› Сообщение #
random 10 даёт случайное число от 0 до 10
(random 10) > 5 - если число больше 5 но излечивается, т.е. 0 - 5 умирает. 5.1 - 10 лечит да. если поставить 4 то 60% лечит. |
› Воскресенье
› 11.08.2019
› 23:33
› Сообщение #
спасибо за разъяснения. еще вопрос. есть скрипт который создает список севших в машину игроков\бот. можно в нем как-то дописать дополнить и сделать строчку типа "всего: Х чел" чтоб он считал просто количество? не могли бы помочь?
Код Private ["_name","_vehicle","_vehname","_weapname","_weap","_target","_picture","_hudnames","_ui"]; disableSerialization; while {true} do { 1000 cutRsc ["HudNames","PLAIN"]; _ui = uiNameSpace getVariable "HudNames"; _HudNames = _ui displayCtrl 99999; if (player != vehicle player) then { _name = ""; _vehicle = assignedVehicle player; _vehname= getText (configFile >> "CfgVehicles" >> (typeOf vehicle player) >> "DisplayName"); _weapname = getarray (configFile >> "CfgVehicles" >> typeOf (vehicle player) >> "Turrets" >> "MainTurret" >> "weapons"); _weap = ""; if (count _weapname > 0) then { _weap = _weapname select 0; }; _name = format ["<t size='0.9' color='#00ff00'>%1</t><br/>", _vehname]; { _role = roleDescription _x; if((driver _vehicle == _x) || (gunner _vehicle == _x)) then { if(driver _vehicle == _x) then { _name = format ["<t size='0.7' color='#FFCC00'>%1 %2</t> <img size='0.6' color='#00ff00' image='a3\ui_f\data\IGUI\Cfg\Actions\getindriver_ca.paa'/> <t size='0.7' color='#FFFFFF'>%3</t><br/>", _name, (name _x), _role]; } else { _target = cursorTarget; _picture = getText (configFile >> "cfgVehicles" >> typeOf _target >> "displayname"); if (_weap != "") then { }; _name = format ["<t size='0.7' color='#FFCC00'>%1 %2</t> <img size='0.6' color='#00ff00' image='a3\ui_f\data\IGUI\Cfg\Actions\getingunner_ca.paa'/> <t size='0.7' color='#FFFFFF'>%3</t><br/>", _name, (name _x), _role]; }; } else { _name = format ["<t size='0.7' color='#FFCC00'>%1 %2</t> <img size='0.6' color='#00ff00' image='a3\ui_f\data\IGUI\Cfg\Actions\getincargo_ca.paa'/> <t size='0.7' color='#FFFFFF'>%3</t><br/>", _name, (name _x), _role]; }; } forEach crew _vehicle; _HudNames ctrlSetStructuredText parseText _name; _HudNames ctrlCommit 0; }; sleep 1; };
www.armatop.info - Территория боевых действий
www.arma3realwar.ru |
› Понедельник
› 12.08.2019
› 00:05
› Сообщение #
тут несколько строк такого плана
Код _name = format ["<t size='0.7' color='#FFCC00'>%1 %2</t> <img size='0.6' color='#00ff00' image='a3\ui_f\data\IGUI\Cfg\Actions\getindriver_ca.paa'/> <t size='0.7' color='#FFFFFF'>%3</t><br/>", _name, (name _x), _role]; надо дописать в конце перед и кавычками. Код <t size='0.7' color='#FFFFFF'>%3</t> <t size='0.7' color='#FFFFFF'>'количество - '%4</t><br/> и в конце строки, перед квадратной скобкой _name, (name _x), _role, count (crew _vehicle)] |
› Понедельник
› 12.08.2019
› 02:41
› Сообщение #
Спасибо еще раз) сделал. Все работает. Учел на будущее.
Добавлено (12.08.2019, 03:59) Код _name = format ["<t size='0.9' color='#00ff00'>%1</t><br/>", _vehname]; вставил в эту строку, тк куда вы написали получился дубляж "итого:" после каждого паасажира. Код _name = format ["<t size='0.8' color='#ff0000'>%1</t><br/><t size='0.7' color='#00e660'>Пассажиров: %2 чел</t><br/>", _vehname, count (crew _vehicle)]; http://joxi.ru/Y2LQzx5T7DOx9A Добавлено (13.08.2019, 06:20) Добавлено (13.08.2019, 06:38) Добавлено (17.08.2019, 02:55) Код class Extended_InitPost_EventHandlers { class LandVehicle { A3RU_VehInit = "_this call compile preprocessFileLineNumbers '\a3_main\Misc\Scripts\veh_clear.sqf'"; }; }; сам скрипт Код private _veh = _this select 0; if (isServer) then { if !(_veh isKindOf "StaticWeapon") then { private _cfg = configFile >> "CfgVehicles" >> "DAR_MTVRBase"; private _cfgCargo = _cfg >> "a3ru_noCargoClear"; if ( (isNull _cfgCargo) || {!(isNull _cfgCargo) && {_cfgCargo in configProperties [_cfg, "true", false]}} ) then { if ((getNumber _cfgCargo) == 0) then { clearItemCargoGlobal _veh; clearWeaponCargoGlobal _veh; clearMagazineCargoGlobal _veh; clearBackpackCargoGlobal _veh; if ((_veh isKindOF "Tank") || (_veh isKindOF "APC_Tracked_02_base_F") || (_veh isKindOf "Car")) then { _veh addItemCargoGlobal ["ToolKit", 1]; _veh addItemCargoGlobal ["MediKit", 1]; _veh addBackpackCargoGlobal ["UNS_USMC_E3", 1]; }; }; }; }; }; смысл у него просто и нам очень удобный. в технике из любого мода очищается снаряжение и добавляется нам нужное, ремнабор, рюкзак и тд. Но данный скрипт имеет какое-то ограничение на водную и воздушную технику, не могу никак это обрезать\переделать. т е на класс "Ship" и "Air" он не распостраняется. Не совсем понял для чего тут это, но в любом случае этот скрипт больше не имеет хвостов в других файлах. проверено. откуда берется ограничение или что это такое - a3ru_noCargoClear не знаю. Вообщем вопрос такой. может можно переписать этот смысл как-то по другому\проще) ? Код if !(_veh isKindOf "StaticWeapon") then { private _cfg = configFile >> "CfgVehicles" >> "DAR_MTVRBase"; private _cfgCargo = _cfg >> "a3ru_noCargoClear"; if ( (isNull _cfgCargo) || {!(isNull _cfgCargo) && {_cfgCargo in configProperties [_cfg, "true", false]}} ) then { убрав эту образно часть. сделав очищение только классов Tank, Air, Ship, APC без очищения статики StaticWeapon. Заранее спасибо.
www.armatop.info - Территория боевых действий
www.arma3realwar.ru |
› Суббота
› 17.08.2019
› 07:55
› Сообщение #
Ограничение класса техники в этой строке
if ((_veh isKindOF "Tank") || (_veh isKindOF "APC_Tracked_02_base_F") || (_veh isKindOf "Car")) меняй на своё усмотрение, или вообще сотри. Параметр a3ru_noCargoClear самодельный, вставлено в аддон как ключ, тоже можно убрать. собсна, весь файл в минимальном варианте выглядит так Код private _veh = _this select 0; if (isServer) then { clearItemCargoGlobal _veh; clearWeaponCargoGlobal _veh; clearMagazineCargoGlobal _veh; clearBackpackCargoGlobal _veh; _veh addItemCargoGlobal ["ToolKit", 1]; _veh addItemCargoGlobal ["MediKit", 1]; _veh addBackpackCargoGlobal ["UNS_USMC_E3", 1]; }; |
› Воскресенье
› 18.08.2019
› 06:35
› Сообщение #
сделал и простой вариант выше, и другой, вплоть до указания старрших классов tank, car, air ship. Вообщем какая-то засада)) в любом случает очищает только наземную технику типа танки, машины,бтр из любыхз модов и тд. НО НЕ очищает авиацию и лодки\катера. никак не могу понять, может что-то в арма в этих классах (авиа\море) быть не сделано, что простая бисовская команда не работает даже в простом исполнении?
касательно авиации. Если просто написать в инит вертолета Код clearItemCargoGlobal this; clearWeaponCargoGlobal this; clearMagazineCargoGlobal this; clearBackpackCargoGlobal this; то работает. а если Код private _veh = _this select 0; if (isServer) then { clearItemCargoGlobal _veh; clearWeaponCargoGlobal _veh; clearMagazineCargoGlobal _veh; clearBackpackCargoGlobal _veh; }; то нет. Что может быть?
www.armatop.info - Территория боевых действий
www.arma3realwar.ru |
› Воскресенье
› 18.08.2019
› 23:33
› Сообщение #
|
› Четверг
› 22.08.2019
› 03:56
› Сообщение #
Спасибо. попробую поиграть с запуском скрипта, может получится что-то...
Добавлено (05.09.2019, 14:08) Код { _x setVariable ["tag", _x addAction ["", "", "", 0, false, false, "", " if (!alive _target) exitWith { _target removeAction (_target getVariable 'tag'); }; _dist = (_this distance _target) / 15; _color = getArray (configFile/'CfgInGameUI'/'SideColors'/call { if (playerSide getFriend side _target < 0.5) then [ {'colorEnemy'}, {'colorFriendly'} ] }); _color set [3, 1 - _dist]; drawIcon3D [ '', _color, [ visiblePosition _target select 0, visiblePosition _target select 1, (visiblePosition _target select 2) + ((_target modelToWorld ( _target selectionPosition 'head' )) select 2) + 0.4 + _dist / 1.5 ], 0, 0, 0, name _target, 2, 0.03, 'PuristaMedium' ]; false "]]; } forEach (allUnits - [player]); наводишь курсором на бота и видишь ник http://joxi.ru/nAyJv5KHgR1Wjr Хотел вместо ника вынести туда роль бота, которая указывается тут http://joxi.ru/brRKzNZF7Ge4am добавил строчки так http://joxi.ru/Q2K1zXQfLpj3yr но ничего не произошло. Не подскажите как правильно
www.armatop.info - Территория боевых действий
www.arma3realwar.ru |
› Суббота
› 07.09.2019
› 23:14
› Сообщение #
точно не знаю, попробуй это
https://community.bistudio.com/wiki/roleDescription |
› Вторник
› 10.09.2019
› 02:19
› Сообщение #
как раз с ней и пробовал..не показывает ничего(
Добавлено (26.09.2019, 04:45) Код [b]_chopper[/b] = selectRandom a3e_arr_O_transport_heli; _pos = [0,-2.04932,0]; _dir = 0; Мне нужно в "его" инит добавить такие команды veh = [this, 60, 3600] execVM "vehicle.sqf"; this setFuel random[0.25,0.5,1]; (1 это респавн вертолета после разных событий. 2 это рандомное кол-во топливо при респе). Если поставить вертолет в редакторе и вписать это в инит, то все хорошо. я не знаю, как тоже самое вписать в некую переменную _chopper , которая является "неким вертолетом" при старте миссии. пробовал по простому типа _chopper setFuel random[0.25,0.5,1]; но дает ошибки. В общем я так понимаю нужен правильный синтаксис... Добавлено (26.09.2019, 21:43)
www.armatop.info - Территория боевых действий
www.arma3realwar.ru |
| |||
| |||
Чат сайта |