diff --git a/CurrentChangelog.txt b/CurrentChangelog.txt index fc0e085cc..b6b1e5fae 100644 --- a/CurrentChangelog.txt +++ b/CurrentChangelog.txt @@ -1,7 +1,10 @@ 4.15 - Fixed: Player did not get extra points for helping solving the sidemission (score was added on the client not on the server; available in ranked mode and when SQL database is available) -- Changed: All cluster/subammo type magazines removed from mission pylon loadout dialog (including 3rd party mods). Causing much too much lag!!! +- Changed: All cluster/subammo type magazines removed from mission pylon loadout dialog (including 3rd party mods). Causes much too much lag!!! - Changed: Added more score messages to the new UI score message system +- Fixed: Global Mobilization versions both had two accidentally placed blufor units +- Fixed: Global Mobilization player artillery had no crew at all so artillery called by players did not fire +- Fixed: Sniper teams were missing from all 3rd party mods/dlcs (d_sniper_x); Vanilla units got spawned instead of the correct mod/dlc ones - Added: Chinese translation by 小新 -- Updated: Russian translation +- Updated: Russian translation \ No newline at end of file diff --git a/co30_Domination.Altis/cfgfunctions.hpp b/co30_Domination.Altis/cfgfunctions.hpp index 78cd999a4..2dfc7e387 100644 --- a/co30_Domination.Altis/cfgfunctions.hpp +++ b/co30_Domination.Altis/cfgfunctions.hpp @@ -181,6 +181,7 @@ class cfgFunctions { addc(initplname); addc(scoreadded); addc(scoreaddqeue); +// addc(arsenalfilter); }; class Dom_UI { file = "clientui"; diff --git a/co30_Domination.Altis/changelog.txt b/co30_Domination.Altis/changelog.txt index fc0e085cc..77cc50393 100644 --- a/co30_Domination.Altis/changelog.txt +++ b/co30_Domination.Altis/changelog.txt @@ -1,7 +1,10 @@ 4.15 - Fixed: Player did not get extra points for helping solving the sidemission (score was added on the client not on the server; available in ranked mode and when SQL database is available) -- Changed: All cluster/subammo type magazines removed from mission pylon loadout dialog (including 3rd party mods). Causing much too much lag!!! +- Changed: All cluster/subammo type magazines removed from mission pylon loadout dialog (including 3rd party mods). Causes much too much lag!!! - Changed: Added more score messages to the new UI score message system +- Fixed: Global Mobilization versions both had two accidentally placed blufor units +- Fixed: Global Mobilization player artillery had no crew at all so artillery called by players did not fire +- Fixed: Sniper teams were missing from all 3rd party mods/dlcs (d_sniper_x); Vanilla units got spawned instead of the correct mod/dlc ones - Added: Chinese translation by 小新 - Updated: Russian translation diff --git a/co30_Domination.Altis/client/fn_arsenalfilter.sqf b/co30_Domination.Altis/client/fn_arsenalfilter.sqf new file mode 100644 index 000000000..92abbdd01 --- /dev/null +++ b/co30_Domination.Altis/client/fn_arsenalfilter.sqf @@ -0,0 +1,358 @@ +// by Xeno +#define THIS_FILE "fn_arsenalfilter.sqf" +#include "..\x_setup.sqf" + +// TODO +// Das ganze eigene Einlesen der Waffen ist gar nicht notwendig. +// Die Klassen sind doch alle in bis_fnc_arsenal_data + +// scopes with optics +//"getNumer (_x>>'scope') == 2 && {isClass (_x>>'ItemInfo') && {inheritsFrom (_x>>'ItemInfo') == configFile>>'CfgWeapons'>>'InventoryOpticsItem_Base_F')}}" configClasses (configFile >> "CfgWeapons") + +//private _weaponsar = "getNumber (_x>>'scope') == 2 && {getNumber (_x>>'ballisticsComputer') == 0}" configClasses (configFile >> "CfgWeapons"); + +private _cfgw = configFile>>"CfgWeapons"; + +private _weaponsar = "getNumber (_x>>'scope') == 2 && +{!(configName _x isEqualTo 'Zasleh2') && +{!isClass (_x>>'LinkedItems') && +{!isClass (_x>>'LinkedItemsMuzzle') && +{!isClass (_x>>'LinkedItemsAcc') && +{configName _x isKindOf ['RifleCore', configFile >> 'CfgWeapons'] || +{configName _x isKindOf ['PistolCore', configFile >> 'CfgWeapons'] || +{configName _x isKindOf ['DetectorCore', configFile >> 'CfgWeapons'] || +{configName _x isKindOf ['Binocular', configFile >> 'CfgWeapons'] || +{configName _x isKindOf ['Launcher', configFile >> 'CfgWeapons'] || +{configName _x isKindOf ['ItemCore', configFile >> 'CfgWeapons'] || +{configName _x isKindOf ['InventoryItem_Base_F', configFile >> 'CfgWeapons'] +}}}}}}}}}}}" configClasses _cfgw; + +private _glassesar = "getNumber (_x>>'scope') == 2 &&" configClasses (configFile>>"CfgGlasses"); + +diag_log "configClasses done..."; + +_glassesar = _glassesar apply {configName _x}; + +diag_log "##################################"; +diag_log "Glasses"; +{ + diag_log _x; +} forEach _glassesar; + +diag_log "##################################"; + +private _gogglesar = []; +private _binoar = []; +private _launcherar = []; +private _uniformsar = []; +private _vestsar = []; +private _itemsar = []; +private _helemtsar = []; +private _opticsar = []; +private _bipodsar = []; +private _muzzlesar = []; +private _flashlightar = []; +private _uavterminalar = []; +private _pistolar = []; +private _riflear = []; +private _minedetectorar = []; +private _mapsar = []; +private _compassar = []; +private _radioar = []; +private _watchar = []; + +{ + private _n = configName _x; + private _cfgo = _x; + __TRACE_1("","_n") + call { + if (_n isKindOf ["RifleCore", _cfgw]) exitWith { + _riflear pushBack _n; + private _cu = getText(_cfgo>>"cursor"), + if (_cu == "arifle") then { + // assault rifle + __TRACE_1("is assault rifle","_n") + + private _muzzles = getArray (_cfgo>>"muzzles"); + if (_muzzles findIf {_cfgo>>_x>>"cursorAim" == "gl"}) then { + //has grenade launcher + __TRACE_1("has underbarrel grenade launcher","_n") + } else { + _muzzles = _muzzles apply {toLowerANSI _x} + if ("secondary" in _muzzles) then { + // has secondary rifle like arifle_ARX_base_F + }; + }; + } else { + if (_cu == "srifle") then { + // sniper rifle + } else { + if (_cu == "mg") then { + // mg + } else { + if (_cu == "hgun") then { + // handgun + } else { + if (_cu == "smg") then { + // submachinegun + } else { + if (_cu == "gl") then { + // grenade launcher + }; + }; + }; + }; + }; + }; + }; + if (_n isKindOf ["Launcher", _cfgw]) exitWith { + _launcherar pushBack _n; + }; + if (_n isKindOf ["PistolCore", _cfgw]) exitWith { + _pistolar pushBack _n; + }; + if (_n isKindOf ["NVGoggles", _cfgw]) exitWith { + _gogglesar pushBack _n; + }; + if (_n isKindOf ["Binocular", _cfgw]) exitWith { + _binoar pushBack _n; + }; + if (_n isKindOf ["Uniform_Base", _cfgw]) exitWith { + _uniformsar pushBack _n; + }; + if (_n isKindOf ["Vest_Camo_Base", _cfgw] || {_n isKindOf ["Vest_NoCamo_Base", _cfgw]}) exitWith { + _vestsar pushBack _n; + }; + if (isClass (_cfgo>>"ItemInfo">>"HitpointsProtectionInfo">>"Head")) exitWith { + _helemtsar pushBack _n; + }; + if (isClass (_cfgo>>"ItemInfo">>"OpticsModes")) exitWith { + _opticsar pushBack _n; + }; + if (isClass (_cfgo>>"ItemInfo">>"MuzzleCoef")) exitWith { + _muzzlesar pushBack _n; + }; + if (isClass (_cfgo>>"ItemInfo">>"FlashLight")) exitWith { + _flashlightar pushBack _n; + }; + if (getNumber (_cfgo>>"ItemInfo">>"hasBipod") == 1) exitWith { + _bipodsar pushBack _n; + }; + if (_n isKindOf ["UavTerminal_base", _cfgw] || {getText (_cfgo>>"simulation") == "ItemCompass"}) exitWith { + _uavterminalar pushBack _n; + }; + if (_n isKindOf ["DetectorCore", _cfgw]) exitWith { + _minedetectorar pushBack _n; + }; + if (getText (_cfgo>>"simulation") == "ItemMap") exitWith { + _mapsar pushBack _n; + }; + if (getText (_cfgo>>"simulation") == "ItemCompass") exitWith { + _compassar pushBack _n; + }; + if (getText (_cfgo>>"simulation") == "ItemRadio") exitWith { + _radioar pushBack _n; + }; + if (getText (_cfgo>>"simulation") == "ItemWatch") exitWith { + _watchar pushBack _n; + }; + if (_n isKindOf ["ItemCore", _cfgw]) exitWith { + _itemsar pushBack _n; + }; + }; +} forEach _weaponsar; + +diag_log "forEach _weaponsar done..."; + +diag_log "##################################"; +diag_log "Rifles..."; +{ + diag_log _x; +} forEach _riflear; +diag_log "##################################"; +diag_log "Pistols..."; +{ + diag_log _x; +} forEach _pistolar; +diag_log "##################################"; +diag_log "Goggles..."; +{ + diag_log _x; +} forEach _gogglesar; +diag_log "##################################"; +diag_log "Binoculars..."; +{ + diag_log _x; +} forEach _binoar; +diag_log "##################################"; +diag_log "Launchers..."; +{ + diag_log _x; +} forEach _launcherar; +diag_log "##################################"; +diag_log "Optics..."; +{ + diag_log _x; +} forEach _opticsar; +diag_log "##################################"; +diag_log "Uniforms..."; +{ + diag_log _x; +} forEach _uniformsar; +diag_log "##################################"; +diag_log "Vests..."; +{ + diag_log _x; +} forEach _vestsar; +diag_log "##################################"; +diag_log "Helmets..."; +{ + diag_log _x; +} forEach _helemtsar; +diag_log "##################################"; +diag_log "Bipods..."; +{ + diag_log _x; +} forEach _bipodsar; +diag_log "##################################"; +diag_log "Muzzles..."; +{ + diag_log _x; +} forEach _muzzlesar; +diag_log "##################################"; +diag_log "Flashlights..."; +{ + diag_log _x; +} forEach _flashlightar; +diag_log "##################################"; +diag_log "UAV Terminals..."; +{ + diag_log _x; +} forEach _uavterminalar; +diag_log "##################################"; +diag_log "Mine Detectors..."; +{ + diag_log _x; +} forEach _minedetectorar; +diag_log "##################################"; +diag_log "Maps..."; +{ + diag_log _x; +} forEach _mapsar; +diag_log "##################################"; +diag_log "Compass..."; +{ + diag_log _x; +} forEach _compassar; +diag_log "##################################"; +diag_log "Radios..."; +{ + diag_log _x; +} forEach _radioar; +diag_log "##################################"; +diag_log "Watches..."; +{ + diag_log _x; +} forEach _watchar; +diag_log "##################################"; +diag_log "Items..."; +{ + diag_log _x; +} forEach _itemsar; + + +diag_log "##################################"; +diag_log ["Count _weaponsar", count _weaponsar]; +diag_log ["Count other arrays", (count _gogglesar) + (count _binoar) + (count _launcherar) + (count _opticsar) + (count _uniformsar) + (count _vestsar) + (count _helemtsar) + (count _itemsar) + (count _bipodsar) + (count _muzzlesar) + (count _flashlightar) + (count _uavterminalar) + (count _pistolar) + (count _riflear) + (count _minedetectorar) + (count _mapsar) + (count _compassar) + (count _radioar) + (count _watchar)]; + +_weaponsar = _weaponsar apply {configName _x}; + +_weaponsar = _weaponsar - _gogglesar - _binoar - _launcherar - _uniformsar - _vestsar - _itemsar - _helemtsar - _opticsar - _bipodsar - _muzzlesar - _flashlightar - _uavterminalar - _pistolar - _riflear - _minedetectorar - _mapsar - _compassar - _radioar - _watchar; + +diag_log ["Rest:", _weaponsar]; + + +/*d_remove_from_arsenal = [ + [], // rifles + [], // launchers + [], // handguns + [], // uniforms + [], // vests + [], // backpacks + [], // headgear + [], // glasses + [], // goggles + [], // binoculars + [], // ItemMap + [], // ItemGPS, UAV Terminal + [], // ItemRadio + [], // ItemCompass + [], // ItemWatch + [], // Heads + [], // Language? + [], // signs + [], + [], + [], + [], + [], // Grenades + ["APERSMineDispenser_Mag"], // Charges + [], // MineDector, FirstAidkit, MediKit + [], + [] // magazines + ];*/ + +/*// >> "type" +#define WeaponNoSlot 0 // dummy weapons +#define WeaponSlotPrimary 1 // primary weapons +#define WeaponSlotSecondary 4 // secondary weapons +#define WeaponSlotHandGun 2 // HandGun +#define WeaponSlotHandGunItem 16 // HandGun magazines +#define WeaponSlotItem 256 // items +#define WeaponSlotBinocular 4096 // binocular +#define WeaponHardMounted 65536 //vehicle weapons +#define WeaponSlotInventory 131072 // inventory items + +// >> "itemInfo" >> "type" +#define DEFAULT_SLOT 0 +#define MUZZLE_SLOT 101 +#define OPTICS_SLOT 201 +#define FLASHLIGHT_SLOT 301 +#define BIPOD_SLOT 302 +#define FIRSTAIDKIT_SLOT 401 +#define FINS_SLOT 501 +#define BREATHINGBOMB_SLOT 601 +#define NVG_SLOT 602 +#define GOGGLE_SLOT 603 +#define SCUBA_SLOT 604 +#define HEADGEAR_SLOT 605 +#define FACTOR_SLOT 607 +#define RADIO_SLOT 611 +#define HMD_SLOT 616 +#define BINOCULAR_SLOT 617 +#define MEDIKIT_SLOT 619 +#define TOOLKIT_SLOT 620 +#define VEST_SLOT 701 +#define UNIFORM_SLOT 801 +#define BACKPACK_SLOT 901 + +Then also for weapons you can filter them by cursor or cursorAim. + +//Stolen from BIS_fnc_itemType + +case "arifle": {"AssaultRifle"}; +case "bomb": {"BombLauncher"}; +case "cannon": {"Cannon"}; +case "gl": {"GrenadeLauncher"}; +case "laserdesignator": {"LaserDesignator"}; +case "mg": {"MachineGun"}; +case "missile": {"MissileLauncher"}; +case "mortar": {"Mortar"}; +case "rocket": {"RocketLauncher"}; +case "sgun": {"Shotgun"}; +case "throw": {"Throw"}; +case "smg": {"SubmachineGun"}; +case "srifle": {"SniperRifle"}; + +As well as BIS_fnc_itemType another good place to look at is BIS_fnc_loadInventory for some ideas on filtering. +/*) \ No newline at end of file diff --git a/co30_Domination.Altis/client/x_setupplayer.sqf b/co30_Domination.Altis/client/x_setupplayer.sqf index b05c11db4..c783f55e2 100644 --- a/co30_Domination.Altis/client/x_setupplayer.sqf +++ b/co30_Domination.Altis/client/x_setupplayer.sqf @@ -1035,6 +1035,8 @@ for "_i" from 0 to (count d_remove_from_arsenal - 1) do { }; }; +//call d_fnc_arsenalfilter; + if (d_with_ranked) then { 0 spawn d_fnc_weaponcargo_ranked; }; diff --git a/co30_Domination.Altis/init/fn_preinit.sqf b/co30_Domination.Altis/init/fn_preinit.sqf index ecacdad19..82a0e6f61 100644 --- a/co30_Domination.Altis/init/fn_preinit.sqf +++ b/co30_Domination.Altis/init/fn_preinit.sqf @@ -826,9 +826,7 @@ if (!d_tt_tanoa) then { #ifdef __MALDEN__ #include "d_specops_O_default.sqf" #endif - ]; - - d_sniper_E = [["East","OPF_F","Infantry","OI_SniperTeam"] call d_fnc_GetConfigGroup]; + ]; d_specops_W = call { if (d_rhs) exitWith { @@ -840,7 +838,15 @@ if (!d_tt_tanoa) then { [["West","BLU_F","Infantry","BUS_ReconTeam"] call d_fnc_GetConfigGroup] }; - d_sniper_W = [["West","BLU_F","Infantry","BUS_SniperTeam"] call d_fnc_GetConfigGroup]; + if (d_tanoa || {d_livonia}) then { + d_sniper_E = [["East","OPF_T_F","Infantry","O_T_SniperTeam"] call d_fnc_GetConfigGroup]; + d_sniper_W = [["West","BLU_T_F","Infantry","B_T_SniperTeam"] call d_fnc_GetConfigGroup]; + d_sniper_I = [["Indep","IND_F","Infantry","HAF_SniperTeam"] call d_fnc_GetConfigGroup]; + } else { + d_sniper_E = [["East","OPF_F","Infantry","OI_SniperTeam"] call d_fnc_GetConfigGroup]; + d_sniper_W = [["West","BLU_F","Infantry","BUS_SniperTeam"] call d_fnc_GetConfigGroup]; + d_sniper_I = [["Indep","IND_F","Infantry","HAF_SniperTeam"] call d_fnc_GetConfigGroup]; + }; #ifdef __RHS__ d_specops_E = [ @@ -867,6 +873,35 @@ if (!d_tt_tanoa) then { d_sabotage_E = [[["gm_gc_army_demolition_mpiaks74n_80_str"], ["gm_gc_army_demolition_mpiaks74n_80_win"]] select d_gmcwgwinter]; d_sabotage_W = [["gm_ge_army_demolition_g3a4_80_ols"]]; d_sabotage_G = [["CUP_I_GUE_Saboteur"]]; + + d_sniper_E = [[["gm_gc_army_squadleader_mpiak74n_80_str", "gm_gc_army_rifleman_mpiak74n_80_str"], ["gm_gc_army_squadleader_mpiak74n_80_win", "gm_gc_army_rifleman_mpiak74n_80_win"]] select d_gmcwgwinter]; + d_sniper_W = [[["gm_ge_army_squadleader_g3a3_p2a1_80_ols", "gm_ge_army_rifleman_g3a3_80_ols"], ["gm_ge_army_squadleader_g3a3_p2a1_parka_80_win", "gm_ge_army_rifleman_g3a3_parka_80_win"]] select d_gmcwgwinter]; +#endif + +#ifdef __CUP_CHERNARUS__ + d_sniper_E = [["East","CUP_O_RU","Infantry","CUP_O_RU_SniperTeam_VDV_M_EMR"] call d_fnc_GetConfigGroup]; + d_sniper_W = [["West","CUP_B_USMC","Infantry","CUP_B_USMC_SniperTeam"] call d_fnc_GetConfigGroup]; + d_sniper_I = [["Indep","CUP_I_NAPA","Infantry","CUP_I_NAPA_GrpInf_TeamSniper"] call d_fnc_GetConfigGroup]; +#endif +#ifdef __CUP_TAKISTAN__ + d_sniper_E = [["East","CUP_O_TK","Infantry","CUP_O_TK_SniperTeam"] call d_fnc_GetConfigGroup]; + d_sniper_W = [["West","CUP_B_US_Army","Infantry","CUP_B_US_Army_SniperTeam"] call d_fnc_GetConfigGroup]; + d_sniper_I = [["Indep","CUP_I_TK_GUE","Infantry","CUP_I_TK_GUE_SniperTeam"] call d_fnc_GetConfigGroup]; +#endif +#ifdef __CUP_SARA__ + d_sniper_E = [["East","CUP_O_SLA","Infantry","CUP_O_SLA_SniperTeam"] call d_fnc_GetConfigGroup]; + d_sniper_W = [["West","CUP_B_US_Army","Infantry","CUP_B_US_Army_SniperTeam"] call d_fnc_GetConfigGroup]; + d_sniper_I = [["Indep","CUP_I_RACS","Infantry","CUP_I_RACS_SniperTeam"] call d_fnc_GetConfigGroup]; +#endif +#ifdef __IFA3LITE__ + d_sniper_E = [["East","LIB_RKKA","Infantry","LIB_SOV_sniper_team"] call d_fnc_GetConfigGroup]; + d_sniper_W = [["West","LIB_WEHRMACHT","Infantry","LIB_GER_sniper_team"] call d_fnc_GetConfigGroup]; + d_sniper_I = [["Indep","LIB_US_ARMY","Infantry","LIB_US_Sniper_Team"] call d_fnc_GetConfigGroup]; +#endif +#ifdef __RHS__ + d_sniper_E = [["East","rhs_faction_vmf","rhs_group_rus_vmf_infantry_recon","rhs_group_rus_vmf_infantry_recon_squad_sniper"] call d_fnc_GetConfigGroup]; + d_sniper_W = [["West","rhs_faction_usarmy_d","rhs_group_nato_usarmy_d_infantry","rhs_group_nato_usarmy_d_infantry_squad_sniper"] call d_fnc_GetConfigGroup]; + d_sniper_G = [["Indep","rhssaf_faction_army","rhssaf_group_army_m10_digital_infantry","rhssaf_group_army_m10_digital_infantry_squad_sniper"] call d_fnc_GetConfigGroup]; #endif d_veh_a_E = [ diff --git a/co30_Domination.Altis/stringtable.xml b/co30_Domination.Altis/stringtable.xml index c0c546f8f..c168b5746 100644 --- a/co30_Domination.Altis/stringtable.xml +++ b/co30_Domination.Altis/stringtable.xml @@ -11448,7 +11448,7 @@ Chinese>砲擊取消了 points for reviving another player points for reviving another player points for reviving another player -points for reviving another player +очки за оживление другого игрока points for reviving another player @@ -11500,6 +11500,7 @@ Chinese>砲擊取消了 points for resolving the main target mission очки за выполнение основной задачи points for resolving the main target mission +points for resolving the main target mission points for clearing the main target! @@ -11508,7 +11509,7 @@ Chinese>砲擊取消了 points for clearing the main target! points for clearing the main target! points for clearing the main target! -points for clearing the main target! +очки за выполнение основного задания! points for clearing the main target! points for clearing the main target! @@ -11519,7 +11520,7 @@ Chinese>砲擊取消了 points for helping solving the sidemission! points for helping solving the sidemission! points for helping solving the sidemission! -points for helping solving the sidemission! +очки за помощь в вполнении дополнительного задания (сайд миссии)! points for helping solving the sidemission! points for helping solving the sidemission! diff --git a/mission_sqm/mission_blufor_weferlingen_summer.sqm b/mission_sqm/mission_blufor_weferlingen_summer.sqm index 957eb32fe..801844602 100644 Binary files a/mission_sqm/mission_blufor_weferlingen_summer.sqm and b/mission_sqm/mission_blufor_weferlingen_summer.sqm differ diff --git a/mission_sqm/mission_blufor_weferlingen_winter.sqm b/mission_sqm/mission_blufor_weferlingen_winter.sqm index 805542ecf..7c1caf011 100644 Binary files a/mission_sqm/mission_blufor_weferlingen_winter.sqm and b/mission_sqm/mission_blufor_weferlingen_winter.sqm differ