|
|
Модератор форума: GUNNER161, Panikaha |
Форум РЕДАКТОР - ArmA 3 Скрипты Создание киллфида |
Создание киллфида |
› Пятница
› 21.08.2015
› 11:25
› Сообщение #
День добрый,
Как можно реализовать киллфид как на этом видео? |
› Пятница
› 21.08.2015
› 15:48
› Сообщение #
Мужик с пистолетом стреляет безоружных. Чего тут реализовывать?
|
› Пятница
› 21.08.2015
› 16:18
› Сообщение #
Slon, причем тут в кого он стреляет? я об UI говорю, как такое можно реализовать, может есть готовые примеры?
|
› Пятница
› 21.08.2015
› 16:29
› Сообщение #
Цитата киллфид , UI |
› Пятница
› 21.08.2015
› 16:50
› Сообщение #
Как понимаю это сообщение в левом верхнем углу об убийстве игроком другого игрока/бота.
|
› Пятница
› 21.08.2015
› 17:13
› Сообщение #
agentsmi, да да, абсолютно верно.
Slon, в будущем буду более подробно излогать свою мысль PS: нашел реализацию через хинт, но разработку уже давным давно заброслили. Да и через хинт не удобно получается, многое что нужно отобразить, он перекрывает http://www.armaholic.com/page.php?id=19101 |
› Пятница
› 21.08.2015
› 17:49
› Сообщение #
информацию о том кто кого, даёт назначение обработчика типа "Killed"
а вывод текста можно устроить самодельным титлом https://community.bistudio.com/wiki/Arma_3:_Event_Handlers#Killed https://community.bistudio.com/wiki/Description.ext#rscTitles |
› Пятница
› 21.08.2015
› 18:06
› Сообщение #
Slon, я так понимаю, что мне нужно что то типо этого addMPEventHandler MPKilled?
а вот с UI я не умею вообще никак, можешь показать пример? |
› Пятница
› 21.08.2015
› 18:11
› Сообщение #
dimaS1k, угу. даже вот так для начала
{ _ix = _x addMPEventHandler ["mpkilled", {hint str _this}]; } forEach AllUnits; позже, вместо hint str _this нужно сделать вывод в свой титл. |
› Пятница
› 21.08.2015
› 18:28
› Сообщение #
Код DMSK_killTicker = { _this addMPEventHandler ['MPKilled',{ _unit = _this select 0; _killer = _this select 1; _newKill = [_unit,_killer]; if (count DMSK_killArray > 100) then {DMSK_killArray = []}; DMSK_killArray set [count DMSK_killArray,_newKill call DMSK_parseKill]; [] spawn DMSK_killList; if (player == _killer) then {_newKill spawn DMSK_killPopUp}; } ]; }; DMSK_parseKill = { _line = ""; _killerName = ""; _victimName = ""; _killerString = ""; _victimString = ""; _killerColor = "#99D5FF"; _victimColor = "#99D5FF"; _victim = _this select 0; _killer = _this select 1; if (!(isplayer _killer)) then { _killerName = getText (configFile >> "CfgVehicles" >> format["%1",typeOf _killer] >> "Displayname"); if(vehicle _killer != _killer) then {_killerName = getText (configFile >> "CfgVehicles" >> format[Localize "STR_DMSK_killTicker_CREW",typeof vehicle _killer] >> "Displayname")}; }else{_killerName = name _killer}; if (!(isplayer _victim)) then { _victimName = getText (configFile >> "CfgVehicles" >> format["%1",typeOf _victim] >> "Displayname"); if(vehicle _victim != _victim) then {_victimName = getText (configFile >> "CfgVehicles" >> format[Localize "STR_DMSK_killTicker_CREW",typeof vehicle _victim] >> "Displayname")}; }else{_victimName = name _victim}; if ((_killer==player) or (_killer == vehicle player)) then { _killerColor = "#00CC00"; //Green (Yellow #FFFF00) } else { if (side group _killer == west) then {_killerColor = "#1a66b3";}; if (side group _killer == east) then {_killerColor = "#991a1a";}; if (side group _killer == resistance) then {_killerColor = "#1a991a";}; if (side group _killer == civilian) then {_killerColor = "#801a99";}; }; if (_victim==player) then { _victimColor = "#00CC00"; //Green (Yellow #FFFF00) } else { if (side group _victim == west) then {_victimColor = "#1a66b3";}; if (side group _victim == east) then {_victimColor = "#991a1a";}; if (side group _victim == resistance) then {_victimColor = "#1a991a";}; if (side group _victim == civilian) then {_victimColor = "#801a99";}; }; _killerString = format["<t color='%1'>%2</t>",_killerColor ,_killerName]; _victimString = format["<t color='%1'>%2</t>",_victimColor,_victimName]; _killweapon = getText(configFile >> "CfgWeapons" >> format ["%1",currentWeapon _killer] >> "displayname"); _dist = round (_victim distance _killer); //the line which shows the final formatted kill _line = switch(true) do { case(_killer == _victim): {format [Localize "STR_DMSK_killTicker_Suicide_feed",_killerString]}; case(isNull _killer): {format [Localize "STR_DMSK_killTicker_WTF",_victimString]}; default {format [Localize "STR_DMSK_killTicker_Killed",_killerString,_victimString,_killWeapon,_dist]}; }; _line; }; DMSK_killPopUp = { _victim = _this select 0; _killer = _this select 1; _victimName = ""; _victimString = ""; _victimColor = "#99D5FF"; if (!(isplayer _victim)) then { _victimName = getText (configFile >> "CfgVehicles" >> format["%1",typeOf _victim] >> "Displayname"); if(vehicle _victim != _victim) then {_victimName = getText (configFile >> "CfgVehicles" >> format[Localize "STR_DMSK_killTicker_CREW",typeof vehicle _victim] >> "Displayname")}; }else{_victimName = name _victim}; if (side group _victim == west) then {_victimColor = "#1a66b3";}; if (side group _victim == east) then {_victimColor = "#991a1a";}; if (side group _victim == resistance) then {_victimColor = "#1a991a";}; if (side group _victim == civilian) then {_victimColor = "#660080";}; _victimString = format["<t color='%1'>%2</t>",_victimColor,_victimName]; _line = if ((_killer == player) and (_victim == player)) then { Localize "STR_DMSK_killTicker_Suicide_MSG"; } else { format [Localize "STR_DMSK_killTicker_Killed_MSG",_victimString]; }; [_line,0,0.8,2,0,0,7017] spawn bis_fnc_dynamicText; }; DMSK_killList = { //flush kills and show most recent if (time - DMSK_killTime > 37) then { DMSK_displayedKills = []; }; DMSK_displayedKills set [count DMSK_displayedKills, DMSK_killArray select (count DMSK_killArray - 1)]; _tickerText = ""; _c = 0; for "_i" from (count DMSK_displayedKills) to 0 step -1 do{ _c = _c + 1; _tickerText = format ["%1<br />%2",DMSK_displayedKills select _i,_tickerText]; if (_c > 8) exitWith{}; }; hintsilent parsetext _tickerText; //["<t size='0.4' align='right'>" + _tickerText + "</t>",safeZoneX,safeZoneY,10,0,0,7016] call bis_fnc_dynamicText; DMSK_killTime = time; }; //declare global variables DMSK_killArray = []; DMSK_displayedKills = []; DMSK_killTime = 0; //start kill registration for player if (!isNull player) then { player spawn DMSK_killTicker; }; if (isServer) then { //ai { if (!(isPlayer _x)) then { _x spawn DMSK_killTicker}; } forEach allUnits; }; Тут скрипт тилука переделали, а можешь помочь с выводом его в виде титла, слева сверху, под индикаторами техники |
| |||
| |||
Чат сайта |