mirror of
https://github.com/EpochModTeam/Epoch.git
synced 2024-08-30 18:22:13 +00:00
Merge pull request #836 from ravmustang/Temp-Group-System
Temp group system
This commit is contained in:
commit
828909e74c
@ -1 +1 @@
|
||||
5 "" !="bis_fnc_execvm \[\[.+\],\"initPlayerServer.sqf\"]" !="bis_fnc_effectkilled(airdestruction|secondaries) \[.+\]" !="epoch_server_checkplayer \[[A-Z]{1} [A-Za-z]{4,10} [0-9]{1,3}-[0-9]{1,3}:[0-9]{1,3}( \(.+\)|) REMOTE\]" !="epoch_server_(save(_vehicles|building)|(lock|pack)Storage|(upgrade|remove|paint|maint)build) \[.+\]" !="epoch_server_((load|respawn|dead|invite|revive|teleport)Player|(upgrade|updateplayer|create|delete)Group) \[.+\]" !="epoch_server_(deadplayerdetonate|triggerantagonist|playersetvariable|missioncomms|make(marker|SP)|removemarker) \[.+\]" !="epoch_server_(knockDownTree|mineRocks|lootAnimal|handle_(say3d|switchmove|sapperObjs)) \[.+\]" !="epoch_server_((repair|fill|lock)Vehicle|(loot|fill)Container|(store|take)Crypto|make(NPC|)Trade) \[.+\]" !="epoch_server_(paycrypto|tradeRequest|equippeditem|packJack|create(object|AirDrop)|airDropCrate|destroytrash|unpackBackpack) \[.+\]" !="epoch_(localcleanup|fnc_saveplayer|client_bitePlayer|serverlootobject|fnc_updateplayerstats) \[.+\]" !="cup_fnc_handletow \[.+\]" !="bis_fnc_reviveinitaddplayer \[.+\]"
|
||||
5 "" !="bis_fnc_execvm \[\[.+\],\"initPlayerServer.sqf\"]" !="bis_fnc_effectkilled(airdestruction|secondaries) \[.+\]" !="epoch_server_checkplayer \[[A-Z]{1} [A-Za-z]{4,10} [0-9]{1,3}-[0-9]{1,3}:[0-9]{1,3}( \(.+\)|) REMOTE\,[0-9]{1,3}]" !="epoch_server_(save(_vehicles|building)|(lock|pack)Storage|(upgrade|remove|paint|maint)build) \[.+\]" !="epoch_server_((load|respawn|dead|invite|revive|teleport)Player) \[.+\]" !="epoch_server_((upgrade|updateplayer|inviteplayer|create|delete)(Temp|)Group) \[.+\]" !="epoch_server_(deadplayerdetonate|triggerantagonist|playersetvariable|missioncomms|make(marker|SP)|removemarker) \[.+\]" !="epoch_server_(knockDownTree|mineRocks|lootAnimal|handle_(say3d|switchmove|sapperObjs)) \[.+\]" !="epoch_server_((repair|fill|lock)Vehicle|(loot|fill)Container|(store|take)Crypto|make(NPC|)Trade) \[.+\]" !="epoch_server_(paycrypto|tradeRequest|equippeditem|packJack|create(object|AirDrop)|airDropCrate|destroytrash|unpackBackpack) \[.+\]" !="epoch_(localcleanup|fnc_saveplayer|client_bitePlayer|serverlootobject|fnc_updateplayerstats) \[.+\]" !="cup_fnc_handletow \[.+\]" !="bis_fnc_reviveinitaddplayer \[.+\]"
|
||||
|
@ -32,7 +32,7 @@
|
||||
7 createUnit !="_driver = _grp createUnit[\"I_UAV_AI\", position _unit, [], 0, \"CAN_COLLIDE\"];" !="axeGeneral = grpVIPGeneral createUnit [\"I_officer_F\", axeGeneralPos, [], 1, \"CAN_COLLIDE\"];" !="bis_functions_mainscope = _grpLogic createunit [\"Logic\",[9,9,9],[],0,\"none\"];" !="_unit = _grp createUnit[selectRandom _arrUnits, _pos, [], 0, \"FORM\"];" !="_driver = (group player) createUnit[\"I_UAV_AI\", position axeUAV, [], 0, \"CAN_COLLIDE\"];"
|
||||
7 createAgent !="bis_revive_ratioLethal = createAgent [\"Logic\", [10,10,0], [], 0, \"CAN_COLLIDE\"];" !="_unit = createAgent[_unitClass, _targetPos, [], 256, \"FORM\"];" !="_unit = createAgent [_unitClass, _targetPos, [], 120, \"FORM\"];" !="_animal = createAgent[_randomAIClass, _animalPos, [], 5, \"NONE\"];" !="_unit = createAgent [\"Epoch_Cloak_F\", _pos, [], 0, \"CAN_COLLIDE\"];" !="_unit = createAgent [\"Epoch_Sapper_F\", _targetPos, [], 180, \"FORM\"];" !="_sapper = createAgent [\"Epoch_Sapper_F\", getPos _cage2, [], 0, \"FORM\"];" !="_unit = createAgent[_unitClass, position player, [], _zRange, \"FORM\"];" !="_animal = createAgent[_randomAIClass, _animalPos, [], 0, \"CAN_COLLIDE\"];" !="_axeSapper = createAgent [\"Epoch_Sapper_F\", _pos, [], 12, \"FORM\"];" !="_nestMate = createAgent [\"Epoch_Sapper_F\", _garrPos, [], 0, \"FORM\"];"
|
||||
7 createTeam
|
||||
7 createDialog !="createDialog \"rmx_dynamenu\";" !="createDialog \"rmx_craftingUI\";" !="createDialog \"QuickUpgrade\";" !="createDialog \"QuickTake\";" !="createDialog \"InteractBank\";" !="createdialog \"SelectGender\";" !="_handled = createdialog _dialog;" !="if !(createdialog \"InteractItem\") exitWith {};" !="createDialog _tapDiag;" !="if !(createdialog \"Trade\") exitWith {};" !="_ok = createdialog \"Interact\";" !="_ok = createdialog \"TradeNPCMenu\";" !="createDialog \"Epoch_myGroup\";" !="createDialog (if ((Epoch_my_GroupUID == \"\") && (Epoch_my_Group isEqualTo [])) then {\"EPOCH_createGrp\"} else {\"Epoch_myGroup\"});" !="createDialog \"GroupRequests\";" !="_ok = createdialog \"MissionSelect\";" !="createDialog 'Skaronator_AdminMenu';"
|
||||
7 createDialog !="createDialog \"rmx_dynamenu\";" !="createDialog \"rmx_craftingUI\";" !="createDialog \"QuickUpgrade\";" !="createDialog \"QuickTake\";" !="createDialog \"InteractBank\";" !="createdialog \"SelectGender\";" !="_handled = createdialog _dialog;" !="if !(createdialog \"InteractItem\") exitWith {};" !="createDialog _tapDiag;" !="if !(createdialog \"Trade\") exitWith {};" !="_ok = createdialog \"Interact\";" !="_ok = createdialog \"TradeNPCMenu\";" !="createDialog \"Epoch_myGroup\";" !="createDialog (if ((Epoch_my_GroupUID == \"\") && (Epoch_my_Group isEqualTo [])) then {\"EPOCH_createGrp\"} else {\"Epoch_myGroup\"});" !="createDialog \"GroupRequests\";" !="_ok = createdialog \"MissionSelect\";" !="createDialog 'Skaronator_AdminMenu';" !="createDialog \"Epoch_myTempGroup\";" !="createDialog (if ((Epoch_my_tempGroupUID == \"\") && (Epoch_my_tempGroup isEqualTo [])) then {\"EPOCH_createTempGrp\"} else {\"Epoch_myTempGroup\"});" !="createDialog \"tempGroupRequests\";"
|
||||
7 createDisplay !="createDisplay \"rmx_dynamenu\";" !="createDisplay \"rmx_moveDynamicHUD\";" !="_parent createdisplay _displayClass;" !="finddisplay 151 createdisplay 'RscDisplayOptionsLayout'"
|
||||
7 deleteMarker !="deleteMarkerLocal _mName;"
|
||||
7 setMarker !="CBA_fnc_setMarkerPersistent\"" !="\\fnc_setMarkerPersistent" !="\"setMarkerPersistent" !="_mName setMarkerShapeLocal _mShape;" !="_mName setMarkerTypeLocal _mType;"
|
||||
|
@ -1,8 +1,8 @@
|
||||
/*%FSM<COMPILE "F:\Program Files (x86)\Steam\steamapps\common\Arma 3 Tools\FSMEditor\scriptedFSM.cfg, Epoch Login">*/
|
||||
/*%FSM<COMPILE "C:\Program Files (x86)\Steam\steamapps\common\Arma 3 Tools\FSMEditor\scriptedFSM.cfg, Epoch Login">*/
|
||||
/*%FSM<HEAD>*/
|
||||
/*
|
||||
item0[] = {"INIT",0,250,-25.000000,-375.000000,75.000000,-325.000000,0.000000,"INIT"};
|
||||
item1[] = {"FINISH",1,4346,-149.463196,1518.792480,-49.463196,1568.792480,0.000000,"FINISH"};
|
||||
item1[] = {"FINISH",1,250,-149.463196,1518.792480,-49.463196,1568.792480,0.000000,"FINISH"};
|
||||
item2[] = {"true",8,218,-150.000000,-125.000000,-50.000000,-75.000000,0.000000,"true"};
|
||||
item3[] = {"Version_Check",2,250,-25.000000,-75.000000,75.000000,-25.000000,0.000000,"Version Check"};
|
||||
item4[] = {"Player_Object_Re",4,218,-150.000000,75.000000,-50.000000,125.000000,0.000000,"Player" \n "Object Ready"};
|
||||
@ -17,7 +17,7 @@ item12[] = {"Empty_PlayerUID",4,218,125.000000,125.000000,225.000000,175.000000,
|
||||
item13[] = {"ERROR_PlayerUID",2,250,275.000000,125.000000,375.000000,175.000000,0.000000,"ERROR" \n "PlayerUID Empty"};
|
||||
item14[] = {"",7,210,471.000061,145.999908,478.999939,154.000092,0.000000,""};
|
||||
item15[] = {"Timeout_No_Respo",4,218,125.000000,875.000000,225.000000,925.000000,0.000000,"Timeout" \n "No Response"};
|
||||
item16[] = {"Response",4,218,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"};
|
||||
item16[] = {"Response",4,4314,-150.000000,825.000000,-50.000000,875.000000,0.000000,"Response"};
|
||||
item17[] = {"Setup_Player_Var",2,250,-25.000000,1075.000000,75.000000,1125.000000,0.000000,"Setup Player" \n "Variables"};
|
||||
item18[] = {"Request_Hive",2,250,-25.000000,575.000000,75.000000,625.000000,0.000000,"Request Hive"};
|
||||
item19[] = {"Timeout_No_Respo",4,218,125.000000,575.000000,225.000000,625.000000,0.000000,"Timeout" \n "No Response"};
|
||||
@ -183,8 +183,8 @@ link93[] = {82,76};
|
||||
link94[] = {83,16};
|
||||
link95[] = {83,22};
|
||||
link96[] = {84,31};
|
||||
globals[] = {0.000000,0,0,0,0,640,480,1,247,6316128,1,-346.821808,275.273865,1776.441162,823.351685,577,884,1};
|
||||
window[] = {2,-1,-1,-1,-1,923,156,1140,156,3,595};
|
||||
globals[] = {0.000000,0,0,0,0,640,480,1,247,6316128,1,-618.033569,546.485168,2139.147705,423.870514,573,844,1};
|
||||
window[] = {2,-1,-1,-1,-1,959,-1728,-744,192,3,595};
|
||||
*//*%FSM</HEAD>*/
|
||||
class FSM
|
||||
{
|
||||
@ -1391,6 +1391,7 @@ class FSM
|
||||
"_mass = _C_SET deleteAt 0;" \n
|
||||
"" \n
|
||||
"Epoch_my_GroupUID = _C_SET deleteAt 0;" \n
|
||||
"Epoch_my_tempGroupUID = """";" \n
|
||||
"Epoch_canBeRevived = _C_SET deleteAt 0;" \n
|
||||
"Epoch_personalToken = _C_SET deleteAt 0;" \n
|
||||
"Epoch_my_Group = _C_SET deleteAt 0;" \n
|
||||
|
@ -16,7 +16,6 @@
|
||||
private ["_BtnLeave","_ret","_txt"];
|
||||
//[[[end]]]
|
||||
disableSerialization;
|
||||
_BtnLeave = (findDisplay -1300) displayCtrl 31;
|
||||
Epoch_my_Group params [
|
||||
["_groupName",""],
|
||||
["_leaderName",""],
|
||||
@ -25,7 +24,6 @@ Epoch_my_Group params [
|
||||
["_memberArray",[]]
|
||||
];
|
||||
if (getPlayerUID player == Epoch_my_GroupUID) then {
|
||||
_BtnLeave ctrlSetText "Delete Group";
|
||||
_txt = format["Do you want to delete your Group called %1?",_groupName];
|
||||
_txt spawn {
|
||||
_ret = [_this,"Epoch Group Menu",true,true] call BIS_fnc_GUImessage;
|
||||
|
@ -82,6 +82,10 @@ if (_currentMaxMember < _groupSize) then {
|
||||
};
|
||||
};
|
||||
|
||||
if (_playerIsLeader) then {
|
||||
(findDisplay -1300) displayCtrl 31 ctrlSetText "Delete Group";
|
||||
};
|
||||
|
||||
|
||||
{
|
||||
_picture = EPOCH_group_level_img select _forEachIndex; //0 = lead / 1 = mod / 2 = member
|
||||
|
@ -0,0 +1,47 @@
|
||||
/*
|
||||
Author: Niklas Wagner - EpochMod.com
|
||||
|
||||
Contributors: Aaron Clark
|
||||
|
||||
Description:
|
||||
TODO: DESC-TBA
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/groupTemp/EPOCH_cTempGroup_BtnCreate.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_array","_groupName","_ret","_timeout","_txt","_txtCtrl","_upgradePrice"];
|
||||
//[[[end]]]
|
||||
disableSerialization;
|
||||
_txtCtrl = (findDisplay -1200) displayCtrl 21;
|
||||
_array = toArray(ctrlText _txtCtrl);
|
||||
|
||||
if (count _array > 24) then {
|
||||
_array resize 24;
|
||||
};
|
||||
|
||||
if (count (_array-[32]) == 0) then { //32 = SPACE
|
||||
["Your group need a name!","Epoch Temp Group Menu",true,false] spawn BIS_fnc_GUImessage;
|
||||
} else {
|
||||
_groupName = toString(_array);
|
||||
_txtCtrl ctrlSetText _groupName;
|
||||
|
||||
_groupName spawn {
|
||||
_txt = format["Do you want to create your temp group called %1? You can disband/leave this group to create a new one!",_this];
|
||||
_ret = [_txt,"Epoch Temp Group Menu",true,true] call BIS_fnc_GUImessage;
|
||||
if (_ret) then {
|
||||
[player,_this,Epoch_personalToken] remoteExec ["EPOCH_server_createTempGroup",2];
|
||||
_timeout = diag_tickTime+10;
|
||||
waitUntil {
|
||||
((Epoch_my_tempGroupUID != "") && !(Epoch_my_tempGroup isEqualTo [])) || ((_timeout - diag_tickTime) <= 0)
|
||||
};
|
||||
(findDisplay -1200) closeDisplay 0;
|
||||
if ((Epoch_my_tempGroupUID != "") && !(Epoch_my_tempGroup isEqualTo [])) then {
|
||||
createDialog "Epoch_myTempGroup";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -0,0 +1,21 @@
|
||||
/*
|
||||
Author: Niklas Wagner - EpochMod.com
|
||||
|
||||
Contributors: Aaron Clark
|
||||
|
||||
Description:
|
||||
TODO: DESC-TBA
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/groupTemp/EPOCH_cTempGroup_onLoad.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_textCtrl"];
|
||||
//[[[end]]]
|
||||
if!(Epoch_my_tempGroup isEqualTo [])exitWith {(findDisplay -1200) closeDisplay 0};
|
||||
disableSerialization;
|
||||
_textCtrl = (findDisplay -1200) displayCtrl 22;
|
||||
_textCtrl CtrlSetText format ["%1, Temp Groups are free forever",name player];
|
@ -0,0 +1,18 @@
|
||||
/*
|
||||
Author: Niklas Wagner - EpochMod.com
|
||||
|
||||
Contributors: Aaron Clark
|
||||
|
||||
Description:
|
||||
TODO: DESC-TBA
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/groupTemp/EPOCH_itempGroup_acceptInvite.sqf
|
||||
*/
|
||||
if (Epoch_invited_tempGroupUID != "") then {
|
||||
[Epoch_invited_tempGroupUID,getPlayerUID player,true,false,player,Epoch_personalToken] remoteExec ["EPOCH_server_updatePlayerTempGroup",2];
|
||||
};
|
||||
(findDisplay -1500) closeDisplay 0;
|
@ -0,0 +1,22 @@
|
||||
/*
|
||||
Author: Niklas Wagner - EpochMod.com
|
||||
|
||||
Contributors: Aaron Clark
|
||||
|
||||
Description:
|
||||
TODO: DESC-TBA
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/groupTemp/EPOCH_iTempGroup_onLoad.sqf
|
||||
*/
|
||||
disableSerialization;
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_display","_text"];
|
||||
//[[[end]]]
|
||||
_display = findDisplay -1400;
|
||||
if (Epoch_invited_tempGroupUID == "" || Epoch_invited_tempGroupName == "") exitWith { _display closeDisplay 0};
|
||||
_text = _display displayCtrl 21;
|
||||
_text ctrlSetText format ["Join the temp group called %1?",Epoch_invited_tempGroupName];
|
@ -0,0 +1,25 @@
|
||||
/*
|
||||
Author: Niklas Wagner - EpochMod.com
|
||||
|
||||
Contributors: Aaron Clark
|
||||
|
||||
Description:
|
||||
TODO: DESC-TBA
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/groupTemp/EPOCH_iTempGroup_refresh.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_index"];
|
||||
//[[[end]]]
|
||||
if !(Epoch_invited_tempGroupUIDs isEqualTo []) then {
|
||||
Epoch_invited_tempGroupUIDsPrev = Epoch_invited_tempGroupUIDs;
|
||||
lbClear 1500;
|
||||
{
|
||||
_index = lbAdd[1500, _x select 1];
|
||||
lbSetData[1500, _index, _x select 0];
|
||||
} forEach Epoch_invited_tempGroupUIDs;
|
||||
};
|
@ -0,0 +1,58 @@
|
||||
/*
|
||||
Author: Niklas Wagner - EpochMod.com
|
||||
|
||||
Contributors: Aaron Clark
|
||||
|
||||
Description:
|
||||
TODO: DESC-TBA
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/groupTemp/EPOCH_tempGroup_BtnInvite.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_BtnInvite","_InvitePlayerCombo","_groupSize","_currentMember","_found","_playerName","_playerUID","_ret","_txt","_upgradePrice","_upgradeSlots"];
|
||||
//[[[end]]]
|
||||
disableSerialization;
|
||||
_BtnInvite = (findDisplay -1300) displayCtrl 30;
|
||||
_playerUID = getPlayerUID player;
|
||||
|
||||
Epoch_my_tempGroup params [
|
||||
["_groupName",""],
|
||||
["_leaderName",""],
|
||||
["_groupSize",0],
|
||||
["_modArray",[]],
|
||||
["_memberArray",[]]
|
||||
];
|
||||
|
||||
Epoch_my_Group params [
|
||||
["_groupName2",""],
|
||||
["_leaderName2",""],
|
||||
["_groupSize2",0],
|
||||
["_modArray2",[]],
|
||||
["_memberArray2",[]]
|
||||
];
|
||||
|
||||
if (_playerUID == Epoch_my_tempGroupUID || {_x select 0 == _playerUID}count (_modArray) > 0) then {
|
||||
_currentMember = count(_modArray) + count(_memberArray) + 1;
|
||||
if (_currentMember < _groupSize) then {
|
||||
_InvitePlayerCombo = (findDisplay -1300) displayCtrl 41;
|
||||
_playerUID = _InvitePlayerCombo lbData (lbCurSel _InvitePlayerCombo);
|
||||
_playerName = _InvitePlayerCombo lbText (lbCurSel _InvitePlayerCombo);
|
||||
if (_playerUID != "" && _playerName != "" && ({_playerUID in _x} count (_modArray) == 0) && ({_playerUID in _x} count (_memberArray) == 0) && ({_playerUID in _x} count (_modArray2) == 0) && ({_playerUID in _x} count (_memberArray2) == 0) && !(_playerUID == Epoch_my_tempGroupUID)) then {
|
||||
_txt = format["Do you want to add %1 to your Temp Group?",_playerName];
|
||||
[_playerUID,_txt,_groupName] spawn {
|
||||
params ["_playerUID","_txt","_groupName"];
|
||||
_ret = [_txt,"Epoch Temp Group Menu",true,true] call BIS_fnc_GUImessage;
|
||||
if (_ret) then {
|
||||
[_playerUID,Epoch_my_tempGroupUID,_groupName,player,Epoch_personalToken] remoteExec ["EPOCH_server_invitePlayerTempGroup",2];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
true
|
||||
} else {
|
||||
false
|
||||
};
|
@ -0,0 +1,48 @@
|
||||
/*
|
||||
Author: Niklas Wagner - EpochMod.com
|
||||
|
||||
Contributors: Aaron Clark
|
||||
|
||||
Description:
|
||||
TODO: DESC-TBA
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/groupTemp/EPOCH_tempGroup_BtnKick.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_BtnKick","_group","_playerName","_playerUID","_ret","_selected","_txt"];
|
||||
//[[[end]]]
|
||||
disableSerialization;
|
||||
_BtnKick = (findDisplay -1300) displayCtrl 33;
|
||||
|
||||
_playerUID = getPlayerUID player;
|
||||
|
||||
Epoch_my_tempGroup params [
|
||||
["_groupName",""],
|
||||
["_leaderName",""],
|
||||
["_groupSize",0],
|
||||
["_modArray",[]],
|
||||
["_memberArray",[]]
|
||||
];
|
||||
|
||||
if (_playerUID == Epoch_my_tempGroupUID || {_x select 0 == _playerUID}count (_modArray) > 0) then {
|
||||
_group = (findDisplay -1300) displayCtrl 40;
|
||||
_selected = lbCurSel _group;
|
||||
if (_selected >= 0) then {
|
||||
_playerUID = _group lbData _selected;
|
||||
_playerName = _group lbText _selected;
|
||||
if (_playerUID != "" && _playerName != "") then {
|
||||
_txt = format["Do you want to kick %1 from your Temp Group?",_playerName];
|
||||
[_playerUID,_txt] spawn {
|
||||
params ["_playerUID","_txt"];
|
||||
_ret = [_txt,"Epoch Temp Group Menu",true,true] call BIS_fnc_GUImessage;
|
||||
if (_ret) then {
|
||||
[Epoch_my_tempGroupUID,_playerUID,false,false,player,Epoch_personalToken] remoteExec ["EPOCH_server_updatePlayerTempGroup",2];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -0,0 +1,42 @@
|
||||
/*
|
||||
Author: Niklas Wagner - EpochMod.com
|
||||
|
||||
Contributors: Aaron Clark
|
||||
|
||||
Description:
|
||||
TODO: DESC-TBA
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/groupTemp/EPOCH_tempGroup_BtnLeave.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_BtnLeave","_ret","_txt"];
|
||||
//[[[end]]]
|
||||
disableSerialization;
|
||||
Epoch_my_tempGroup params [
|
||||
["_groupName",""],
|
||||
["_leaderName",""],
|
||||
["_groupSize",0],
|
||||
["_modArray",[]],
|
||||
["_memberArray",[]]
|
||||
];
|
||||
if (getPlayerUID player == Epoch_my_tempGroupUID) then {
|
||||
_txt = format["Do you want to delete your Temp Group called %1?",_groupName];
|
||||
_txt spawn {
|
||||
_ret = [_this,"Epoch Temp Group Menu",true,true] call BIS_fnc_GUImessage;
|
||||
if (_ret) then {
|
||||
[player,Epoch_personalToken] remoteExec ["EPOCH_server_deleteTempGroup",2];
|
||||
};
|
||||
};
|
||||
} else {
|
||||
_txt = format["Do you want to leave the %1 Temp Group?",_groupName];
|
||||
_txt spawn {
|
||||
_ret = [_this,"Epoch Temp Group Menu",true,true] call BIS_fnc_GUImessage;
|
||||
if (_ret) then {
|
||||
[Epoch_my_tempGroupUID,getPlayerUID player,false,false,player,Epoch_personalToken] remoteExec ["EPOCH_server_updatePlayerTempGroup",2];
|
||||
};
|
||||
};
|
||||
};
|
@ -0,0 +1,46 @@
|
||||
/*
|
||||
Author: Niklas Wagner - EpochMod.com
|
||||
|
||||
Contributors: Aaron Clark
|
||||
|
||||
Description:
|
||||
TODO: DESC-TBA
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/group/EPOCH_Group_BtnMod.sqf
|
||||
*/
|
||||
disableSerialization;
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_group","_isMember","_playerUID","_ret","_selected","_txt"];
|
||||
//[[[end]]]
|
||||
if (getPlayerUID player == Epoch_my_tempGroupUID) then {
|
||||
_group = (findDisplay -1300) displayCtrl 40;
|
||||
_selected = lbCurSel _group;
|
||||
if (_selected >= 0) then {
|
||||
_playerUID = _group lbData _selected;
|
||||
if (_playerUID != "") then {
|
||||
_isMember = (_group lbPicture _selected) == (EPOCH_group_level_img select 2);
|
||||
_txt = if (_isMember) then {
|
||||
format["Do you want to give %1 moderator permissions?",_group lbText _selected];
|
||||
} else {
|
||||
format["Do you want to remove %1 moderator permissions?",_group lbText _selected];
|
||||
};
|
||||
|
||||
[_playerUID,_isMember,_txt] spawn {
|
||||
params ["_playerUID","_isMember","_txt"];
|
||||
_ret = [_txt,"Epoch Temp Group Menu",true,true] call BIS_fnc_GUImessage;
|
||||
if (_ret) then {
|
||||
[Epoch_my_tempGroupUID,_playerUID,true,_isMember,player,Epoch_personalToken] remoteExec ["EPOCH_server_updatePlayerTempGroup",2];
|
||||
};
|
||||
};
|
||||
};
|
||||
} else {
|
||||
["You need to select a player!", 5] call Epoch_message;
|
||||
};
|
||||
true
|
||||
} else {
|
||||
false
|
||||
};
|
@ -0,0 +1,43 @@
|
||||
/*
|
||||
Author: Niklas Wagner - EpochMod.com
|
||||
|
||||
Contributors: Aaron Clark
|
||||
|
||||
Description:
|
||||
TODO: DESC-TBA
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/group/EPOCH_Group_Combo.sqf
|
||||
*/
|
||||
disableSerialization;
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_BtnInvite","_ctrl","_currentMember","_playerUID","_selected"];
|
||||
//[[[end]]]
|
||||
|
||||
Epoch_my_tempGroup params [
|
||||
["_groupName",""],
|
||||
["_leaderName",""],
|
||||
["_groupSize",0],
|
||||
["_modArray",[]],
|
||||
["_memberArray",[]]
|
||||
];
|
||||
|
||||
_ctrl = _this select 0;
|
||||
_selected = _this select 1;
|
||||
_playerUID = getPlayerUID player;
|
||||
if (_playerUID == Epoch_my_tempGroupUID || {_x select 0 == _playerUID}count (_modArray) > 0) then {
|
||||
_BtnInvite = (findDisplay -1300) displayCtrl 30;
|
||||
_currentMember = count(_modArray) + count(_memberArray) + 1;
|
||||
if (_currentMember < _groupSize) then {
|
||||
_BtnInvite ctrlSetText format ["Invite %1",_ctrl lbtext _selected];
|
||||
};
|
||||
true
|
||||
} else {
|
||||
if (_selected != -1) then {
|
||||
_ctrl lbSetCurSel -1;
|
||||
};
|
||||
false
|
||||
};
|
@ -0,0 +1,39 @@
|
||||
/*
|
||||
Author: Niklas Wagner - EpochMod.com
|
||||
|
||||
Contributors: Aaron Clark
|
||||
|
||||
Description:
|
||||
TODO: DESC-TBA
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/groupTemp/EPOCH_tempGroup_List.sqf
|
||||
*/
|
||||
disableSerialization;
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_BtnKick","_BtnSetMod","_img"];
|
||||
//[[[end]]]
|
||||
params ["_ctrl","_selected"];
|
||||
|
||||
if (getPlayerUID player == Epoch_my_tempGroupUID) then {
|
||||
_img = _ctrl lbPicture _selected;
|
||||
|
||||
_BtnSetMod = (findDisplay -1300) displayCtrl 32;
|
||||
_BtnKick = (findDisplay -1300) displayCtrl 33;
|
||||
|
||||
switch _img do {
|
||||
case {getPlayerUID player == _ctrl lbData _selected}:{_BtnSetMod ctrlEnable false;_BtnKick ctrlEnable false};
|
||||
case(EPOCH_group_level_img select 0) : {_BtnSetMod ctrlEnable false; _BtnKick ctrlEnable false};
|
||||
case(EPOCH_group_level_img select 1) : {_BtnSetMod ctrlEnable true; _BtnKick ctrlEnable true; _BtnSetMod ctrlSetText "Remove Mod"};
|
||||
case(EPOCH_group_level_img select 2) : {_BtnSetMod ctrlEnable true; _BtnKick ctrlEnable true; _BtnSetMod ctrlSetText "Set Mod"};
|
||||
};
|
||||
true
|
||||
} else {
|
||||
if (_selected != -1) then {
|
||||
_ctrl lbSetCurSel -1;
|
||||
};
|
||||
false
|
||||
};
|
@ -0,0 +1,18 @@
|
||||
/*
|
||||
Author: Niklas Wagner - EpochMod.com
|
||||
|
||||
Contributors: Aaron Clark
|
||||
|
||||
Description:
|
||||
TODO: DESC-TBA
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/group/EPOCH_Group_invitePlayer.sqf
|
||||
*/
|
||||
if !(_this in Epoch_invited_tempGroupUIDs) then {
|
||||
Epoch_invited_tempGroupUIDs pushBack _this;
|
||||
["Temp Group request received", 5] call Epoch_message;
|
||||
};
|
@ -0,0 +1,94 @@
|
||||
/*
|
||||
Author: Niklas Wagner - EpochMod.com
|
||||
|
||||
Contributors: Aaron Clark
|
||||
|
||||
Description:
|
||||
TODO: DESC-TBA
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/groupTemp/EPOCH_tempGroup_onLoad.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_BtnInvite","_GroupMemberList","_InvitePlayerCombo","_currentMaxMember","_display","_found","_index","_myPlayerUID","_onlinePUID","_picture","_playerIsLeader","_playerIsMod","_playerUID","_players"];
|
||||
//[[[end]]]
|
||||
disableSerialization;
|
||||
_display = findDisplay -1300;
|
||||
_BtnInvite = _display displayCtrl 30;
|
||||
|
||||
_GroupMemberList = _display displayCtrl 40;
|
||||
_InvitePlayerCombo = _display displayCtrl 41;
|
||||
|
||||
Epoch_my_tempGroup params [
|
||||
["_groupName",""],
|
||||
["_leaderName",""],
|
||||
["_groupSize",0],
|
||||
["_modArray",[]],
|
||||
["_memberArray",[]]
|
||||
];
|
||||
|
||||
_currentMaxMember = count(_modArray) + count(_memberArray) + 1;
|
||||
|
||||
(_display displayCtrl 21) ctrlSetText format["Temp Name: %1 (%2/%3 Slots)",_groupName,_currentMaxMember,_groupSize];
|
||||
|
||||
_myPlayerUID = getPlayerUID player;
|
||||
_playerIsLeader = _myPlayerUID == Epoch_my_tempGroupUID;
|
||||
_playerIsMod = {_x select 0 == _myPlayerUID}count (_modArray) > 0;
|
||||
(_display displayCtrl 32) ctrlEnable false;
|
||||
(_display displayCtrl 33) ctrlEnable false;
|
||||
|
||||
_onlinePUID = [];
|
||||
{
|
||||
_onlinePUID pushBack (getPlayerUID _x);
|
||||
}forEach (units group player);
|
||||
|
||||
if (_currentMaxMember < _groupSize) then {
|
||||
_players = player nearEntities [["Epoch_Male_F","Epoch_Female_F","LandVehicle","Ship","Air","Tank"], 10];
|
||||
|
||||
if (_playerIsLeader || _playerIsMod) then {
|
||||
{
|
||||
if (!isNull _x) then {
|
||||
if (isPlayer _x && alive _x) then {
|
||||
_index = _InvitePlayerCombo lbAdd format["%1",name _x];
|
||||
_InvitePlayerCombo lbSetData [_index,getPlayerUID _x];
|
||||
};
|
||||
};
|
||||
}forEach (_players-(units group player));
|
||||
};
|
||||
|
||||
if ((lbSize _InvitePlayerCombo) == 0) then {
|
||||
_InvitePlayerCombo ctrlEnable false;
|
||||
_BtnInvite ctrlEnable false;
|
||||
_BtnInvite ctrlSetText (if (_playerIsLeader || _playerIsMod) then {"No one nearby to invite."} else {"Must be an Owner or a Mod to invite!"});
|
||||
} else {
|
||||
_InvitePlayerCombo lbSetCurSel 0;
|
||||
lbsort _InvitePlayerCombo;
|
||||
};
|
||||
};
|
||||
|
||||
if (getPlayerUID player == Epoch_my_tempGroupUID) then {
|
||||
(findDisplay -1300) displayCtrl 31 ctrlSetText "Delete TempGrp";
|
||||
};
|
||||
|
||||
{
|
||||
_picture = EPOCH_group_level_img select _forEachIndex; //0 = lead / 1 = mod / 2 = member
|
||||
{
|
||||
_playerUID = _x select 0;
|
||||
|
||||
_index = _GroupMemberList lbAdd format["%1",_x select 1];
|
||||
_GroupMemberList lbSetColor [_index,if (_playerUID in _onlinePUID) then {[1,1,1,1]}else{[1,1,1,0.45]}];
|
||||
_GroupMemberList lbSetPicture [_index, _picture];
|
||||
|
||||
if (_playerIsLeader || _playerIsMod) then {
|
||||
_GroupMemberList lbSetData [_index,_playerUID];
|
||||
};
|
||||
}forEach _x;
|
||||
}forEach
|
||||
[
|
||||
[[Epoch_my_tempGroupUID,_leaderName]],
|
||||
_modArray,
|
||||
_memberArray
|
||||
];
|
@ -0,0 +1,19 @@
|
||||
/*
|
||||
Author: Niklas Wagner - EpochMod.com
|
||||
|
||||
Contributors: Aaron Clark
|
||||
|
||||
Description:
|
||||
TODO: DESC-TBA
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/groupTemp/EPOCH_tempGroup_update.sqf
|
||||
*/
|
||||
if (!isNull (findDisplay -1300)) then {
|
||||
(findDisplay -1300) closeDisplay 0;
|
||||
uisleep 0.2;
|
||||
createDialog "Epoch_myTempGroup";
|
||||
};
|
@ -0,0 +1,20 @@
|
||||
/*
|
||||
Author: Niklas Wagner - EpochMod.com
|
||||
|
||||
Contributors: Aaron Clark
|
||||
|
||||
Description:
|
||||
TODO: DESC-TBA
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/inventory/EPOCH_Inventory_itempGroup.sqf
|
||||
*/
|
||||
disableSerialization;
|
||||
(findDisplay 602) closeDisplay 0;
|
||||
if !(Epoch_invited_tempGroupUIDs isEqualTo[]) exitWith {
|
||||
createDialog "tempGroupRequests";
|
||||
};
|
||||
["No pending requests", 5] call Epoch_message;
|
@ -0,0 +1,17 @@
|
||||
/*
|
||||
Author: Niklas Wagner - EpochMod.com
|
||||
|
||||
Contributors: Aaron Clark
|
||||
|
||||
Description:
|
||||
TODO: DESC-TBA
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/gui/inventory/EPOCH_Inventory_tempGroup.sqf
|
||||
*/
|
||||
disableSerialization;
|
||||
(findDisplay 602) closeDisplay 0;
|
||||
createDialog (if ((Epoch_my_tempGroupUID == "") && (Epoch_my_tempGroup isEqualTo [])) then {"EPOCH_createTempGrp"} else {"Epoch_myTempGroup"});
|
@ -42,6 +42,11 @@ Epoch_invited_GroupName = "";
|
||||
Epoch_invited_GroupUIDs = [];
|
||||
Epoch_invited_GroupUIDsPrev = [];
|
||||
Epoch_my_Group = [];
|
||||
Epoch_invited_tempGroupUID = "";
|
||||
Epoch_invited_tempGroupName = "";
|
||||
Epoch_invited_tempGroupUIDs = [];
|
||||
Epoch_invited_tempGroupUIDsPrev = [];
|
||||
Epoch_my_tempGroup = [];
|
||||
EPOCH_lastPlayerPos = [0,0,0];
|
||||
EPOCH_prevOffer = [];
|
||||
EPOCH_drawIcon3d = false;
|
||||
|
@ -34,12 +34,26 @@ class player_inspect
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\player_inspect.paa";
|
||||
tooltip = "Examine";
|
||||
};
|
||||
class player_group_menu
|
||||
class Groups
|
||||
{
|
||||
condition = "true";
|
||||
action = "call EPOCH_Inventory_Group;";
|
||||
action = "";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\group_menu_ca.paa";
|
||||
tooltip = "Group Menu";
|
||||
tooltip = "Groups Menu";
|
||||
class Group
|
||||
{
|
||||
condition = "true";
|
||||
action = "call EPOCH_Inventory_Group;";
|
||||
icon = "perm_group_menu_ca.paa";//"x\addons\a3_epoch_code\Data\UI\buttons\perm_group_menu_ca.paa";
|
||||
tooltip = "Perm Group Menu";
|
||||
};
|
||||
class TempGroup
|
||||
{
|
||||
condition = "true";
|
||||
action = "call EPOCH_Inventory_TempGroup;";
|
||||
icon = "temp_group_menu_ca.paa";//"x\addons\a3_epoch_code\Data\UI\buttons\temp_group_menu_ca.paa";
|
||||
tooltip = "Temp Group Menu";
|
||||
};
|
||||
};
|
||||
class player_group_requests
|
||||
{
|
||||
@ -48,6 +62,13 @@ class player_group_requests
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\group_requests_ca.paa";
|
||||
tooltip = "Group Requests";
|
||||
};
|
||||
class player_tempGroup_requests
|
||||
{
|
||||
condition = "!(Epoch_invited_tempGroupUIDs isEqualTo[])";
|
||||
action = "call EPOCH_Inventory_itempGroup;";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\group_requests_ca.paa";
|
||||
tooltip = "Temp Group Requests";
|
||||
};
|
||||
|
||||
class base_mode_enable
|
||||
{
|
||||
|
@ -295,11 +295,31 @@ class CfgClientFunctions
|
||||
class iGroup_refresh {};
|
||||
class Group_update {};
|
||||
};
|
||||
class groupTemp
|
||||
{
|
||||
file = "epoch_code\gui\scripts\groupTemp";
|
||||
class tempGroup_invitePlayer {};
|
||||
class tempGroup_BtnMod {};
|
||||
class tempGroup_BtnInvite {};
|
||||
class tempGroup_onLoad {};
|
||||
class tempGroup_List {};
|
||||
class tempGroup_Combo {};
|
||||
class tempGroup_BtnLeave {};
|
||||
class tempGroup_BtnKick {};
|
||||
class cTempGroup_onLoad {};
|
||||
class cTempGroup_BtnCreate {};
|
||||
class iTempGroup_acceptInvite {};
|
||||
class iTempGroup_onLoad {};
|
||||
class iTempGroup_refresh {};
|
||||
class tempGroup_update {};
|
||||
};
|
||||
class gui_inventory
|
||||
{
|
||||
file = "epoch_code\gui\scripts\inventory";
|
||||
class Inventory_Group {};
|
||||
class Inventory_iGroup {};
|
||||
class Inventory_tempGroup {};
|
||||
class Inventory_itempGroup {};
|
||||
};
|
||||
class gui_missions
|
||||
{
|
||||
|
@ -315,6 +315,31 @@ class CfgRemoteExec
|
||||
{
|
||||
allowedTargets = 1;
|
||||
jip = 0;
|
||||
};
|
||||
class EPOCH_server_createTempGroup
|
||||
{
|
||||
allowedTargets = 2;
|
||||
jip = 0;
|
||||
};
|
||||
class EPOCH_server_invitePlayerTempGroup
|
||||
{
|
||||
allowedTargets = 2;
|
||||
jip = 0;
|
||||
};
|
||||
class EPOCH_server_updatePlayerTempGroup
|
||||
{
|
||||
allowedTargets = 2;
|
||||
jip = 0;
|
||||
};
|
||||
class EPOCH_server_deleteTempGroup
|
||||
{
|
||||
allowedTargets = 2;
|
||||
jip = 0;
|
||||
};
|
||||
class EPOCH_server_upgradeTempGroup
|
||||
{
|
||||
allowedTargets = 2;
|
||||
jip = 0;
|
||||
};
|
||||
};
|
||||
class Commands
|
||||
|
@ -60,8 +60,8 @@ if (_current_crypto >= _upgradePrice) then {
|
||||
|
||||
_contentArray = [_groupName, _leaderName, EPOCH_group_upgrade_lvl_SEPXVar select 0, [], []];
|
||||
|
||||
[["groupUpdate", _contentArray], (owner _leader)] call EPOCH_sendRemoteExecClient;
|
||||
[["groupUidUpdate", _groupID], (owner _leader)] call EPOCH_sendRemoteExecClient;
|
||||
[["groupUpdate", _contentArray], _leader] call EPOCH_sendRemoteExecClient;
|
||||
[["groupUidUpdate", _groupID], _leader] call EPOCH_sendRemoteExecClient;
|
||||
|
||||
_leader setVariable ["GROUP", _groupID];
|
||||
|
||||
|
@ -30,5 +30,6 @@ if (_groupID != "") then {
|
||||
} forEach (allPlayers select {(_x getVariable["GROUP", ""]) == _groupID});
|
||||
|
||||
_return = ["Group", _groupID] call EPOCH_fnc_server_hiveDEL;
|
||||
[["groupUpdate", []], _player] call EPOCH_sendRemoteExecClient;
|
||||
};
|
||||
_return
|
||||
|
@ -87,6 +87,7 @@ if ((_response select 0) == 1 && (_response select 1) isEqualType []) then {
|
||||
_x setVariable ["GROUP", nil];
|
||||
[_x] joinSilent (createGroup [west, true]);
|
||||
[["resetGroup", true], _x] call EPOCH_sendRemoteExecClient;
|
||||
[["groupUpdate", []], _x] call EPOCH_sendRemoteExecClient;
|
||||
} forEach (_allPlayers select {getPlayerUID _x == _selectedPlayerUID});
|
||||
{
|
||||
if (_x select 0 == _selectedPlayerUID) exitWith {
|
||||
|
@ -0,0 +1,54 @@
|
||||
/*
|
||||
Author: Aaron Clark - EpochMod.com
|
||||
|
||||
Contributors:
|
||||
|
||||
Description:
|
||||
Add HiveFunction: Create Group / Set Data
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_grouptemp/EPOCH_server_createTempGroup.sqf
|
||||
|
||||
Return:
|
||||
|
||||
true = group has been created and / or successfully saved!
|
||||
false = group exist already and hasn't been saved!
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_cIndex","_contentArray","_current_crypto","_groupID","_groupName","_leaderName","_playerCryptoLimit","_return","_textArr","_upgradePrice","_vars"];
|
||||
//[[[end]]]
|
||||
params ["_leader", "_groupName", ["_token","",[""]] ];
|
||||
if !([_leader, _token] call EPOCH_server_getPToken) exitWith{};
|
||||
|
||||
_return = false;
|
||||
_textArr = toArray(_groupName);
|
||||
|
||||
if (count _textArr > 24) exitWith{};
|
||||
// remove any disallowed chars in group name "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 -_"
|
||||
{
|
||||
if !(_x in [97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,49,50,51,52,53,54,55,56,57,48,32,45,95]) then {
|
||||
_textArr = _textArr - [_x];
|
||||
};
|
||||
} forEach _textArr;
|
||||
_groupName = toString _textArr;
|
||||
|
||||
if (_groupName != "") then {
|
||||
|
||||
_groupID = getPlayerUID _leader;
|
||||
|
||||
_leaderName = if (alive _leader) then {name _leader} else {"Dead Player"};
|
||||
|
||||
_contentArray = [_groupName, _leaderName, EPOCH_group_upgrade_lvl_SEPXVar select 0, [], []];
|
||||
|
||||
[["tempGroupUpdate", _contentArray], _leader] call EPOCH_sendRemoteExecClient;
|
||||
[["tempGroupUidUpdate", _groupID], _leader] call EPOCH_sendRemoteExecClient;
|
||||
|
||||
_leader setVariable ["TEMPGROUP", _groupID];
|
||||
_leader setVariable ["TEMPGROUPARRAY",_contentArray];
|
||||
|
||||
_return = true;
|
||||
};
|
||||
_return
|
@ -0,0 +1,49 @@
|
||||
/*
|
||||
Author: Aaron Clark - EpochMod.com
|
||||
|
||||
Contributors:
|
||||
|
||||
Description:
|
||||
Delete Group
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_grouptemp/EPOCH_server_deleteTempGroup.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_groupID","_return"];
|
||||
//[[[end]]]
|
||||
params ["_player",["_token","",[""]] ];
|
||||
|
||||
if !([_player, _token] call EPOCH_server_getPToken) exitWith{};
|
||||
|
||||
_return = false;
|
||||
_groupID = getPlayerUID _player;
|
||||
if (_groupID != "") then {
|
||||
|
||||
{
|
||||
_group = grpNull;
|
||||
_permGroup = _x getVariable["GROUP",""];
|
||||
if !(_permGroup isEqualTo "")then
|
||||
{
|
||||
{
|
||||
if ((_x getVariable["GROUP",""]) == _groupID) exitWith {
|
||||
_group = group _x;
|
||||
};
|
||||
} forEach _allPlayers;
|
||||
};
|
||||
|
||||
_x setVariable ["TEMPGROUP", nil];
|
||||
[["resetTempGroup", true], _x] call EPOCH_sendRemoteExecClient;
|
||||
if (isNull _group) then {
|
||||
_group = createGroup [west, true];
|
||||
};
|
||||
[_x] joinSilent _group;
|
||||
} forEach (allPlayers select {(_x getVariable["TEMPGROUP", ""]) == _groupID});
|
||||
|
||||
[["tempGroupUpdate", []], _player] call EPOCH_sendRemoteExecClient;
|
||||
_return = true;
|
||||
};
|
||||
_return
|
@ -0,0 +1,20 @@
|
||||
/*
|
||||
Author: Aaron Clark - EpochMod.com
|
||||
|
||||
Contributors:
|
||||
|
||||
Description:
|
||||
Invite Player
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_grouptemp/EPOCH_server_invitePlayerTempGroup.sqf
|
||||
*/
|
||||
params ["_playerUID","_var1","_var2","_player",["_token","",[""]]];
|
||||
if !([_player, _token] call EPOCH_server_getPToken) exitWith{};
|
||||
|
||||
{
|
||||
[_var1, _var2] remoteExec ['EPOCH_tempGroup_invitePlayer',_x];
|
||||
} forEach (allPlayers select {getPlayerUID _x == _playerUID});
|
@ -0,0 +1,136 @@
|
||||
/*
|
||||
Author: Aaron Clark - EpochMod.com
|
||||
|
||||
Contributors:
|
||||
|
||||
Description:
|
||||
Add or remove members from a group
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_grouptemp/EPOCH_server_updatePlayerTempGroup.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_allPlayers","_contentArray","_found","_group","_memberrange","_modOrMember","_modOrMemberArray","_modOrMemberRevert","_removePlayerArray","_response","_selectedPlayerName","_playerObj"];
|
||||
//[[[end]]]
|
||||
params [["_groupID",""],["_selectedPlayerUID",""],["_addOrRemove",false],["_modOrMemberVar",true],["_player",objnull],["_token",""]];
|
||||
|
||||
if !([_player, _token] call EPOCH_server_getPToken) exitWith {};
|
||||
|
||||
if (_groupID == "") exitWith{ diag_log format["Epoch: GROUP: No Temp Group Selected %1", _this]; };
|
||||
|
||||
diag_log format["Epoch: Temp GROUP: Update %1", _this];
|
||||
|
||||
_modOrMember = if (_modOrMemberVar) then [{3},{4}];
|
||||
_modOrMemberRevert = if (_modOrMemberVar) then [{4},{3}];
|
||||
_contentArray = [];
|
||||
{
|
||||
_contentArray = _x getVariable ["TEMPGROUPARRAY",[]];
|
||||
} forEach (allPlayers select {getPlayerUID _x == _groupID});
|
||||
|
||||
if !(_contentArray isEqualTo []) then {
|
||||
|
||||
_contentArray params ["_groupName","_leaderName","_groupSize","_modArray","_memberArray"];
|
||||
_allPlayers = allPlayers select {alive _x};
|
||||
|
||||
if (_addOrRemove) then { //Add
|
||||
_selectedPlayerName = "Dead Player";
|
||||
|
||||
{
|
||||
_selectedPlayerName = if (alive _x) then {name _x};
|
||||
if ((_x getVariable ["TEMPGROUP",""]) != _groupID) then {
|
||||
_group = grpNull;
|
||||
{
|
||||
if ((_x getVariable["TEMPGROUP",""]) == _groupID) exitWith {
|
||||
_group = group _x;
|
||||
};
|
||||
} forEach _allPlayers;
|
||||
|
||||
if (isNull _group) then {
|
||||
_group = createGroup [west, true];
|
||||
};
|
||||
_x setVariable ["TEMPGROUP", _groupID];
|
||||
[["tempGroupUidUpdate", _groupID], _x] call EPOCH_sendRemoteExecClient;
|
||||
[_x] joinSilent _group;
|
||||
};
|
||||
} forEach (_allPlayers select {getPlayerUID _x == _selectedPlayerUID});
|
||||
|
||||
// find player name from DB
|
||||
if (_selectedPlayerName == "Dead Player") then {
|
||||
_memberrange = ["PlayerData", _selectedPlayerUID] call EPOCH_fnc_server_hiveGETRANGE;
|
||||
if (count (_memberrange select 1) > 0) then {
|
||||
if (typename (_memberrange select 1 select 0) == "STRING") then {
|
||||
_selectedPlayerName = _memberrange select 1 select 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
_removePlayerArray = _contentArray select _modOrMemberRevert;
|
||||
|
||||
{
|
||||
if (_x select 0 == _selectedPlayerUID) exitWith {
|
||||
_removePlayerArray deleteAt _forEachIndex;
|
||||
_contentArray set [_modOrMemberRevert, _removePlayerArray];
|
||||
};
|
||||
} forEach _removePlayerArray;
|
||||
|
||||
_modOrMemberArray = _contentArray select _modOrMember;
|
||||
_modOrMemberArray pushBack [_selectedPlayerUID, _selectedPlayerName];
|
||||
|
||||
_contentArray set [_modOrMember, _modOrMemberArray];
|
||||
|
||||
} else {
|
||||
|
||||
//Remove
|
||||
_found = false;
|
||||
_group = grpNull;
|
||||
{
|
||||
_permGroup = _x getVariable["GROUP",""];
|
||||
_playerObj = _x;
|
||||
} forEach (_allPlayers select {getPlayerUID _x == _selectedPlayerUID});
|
||||
if !(_permGroup isEqualTo "")then
|
||||
{
|
||||
{
|
||||
if ((_x getVariable["GROUP",""]) == _groupID) exitWith {
|
||||
_group = group _x;
|
||||
};
|
||||
} forEach _allPlayers;
|
||||
};
|
||||
_playerObj setVariable ["TEMPGROUP", nil];
|
||||
if (isNull _group) then {
|
||||
_group = createGroup [west, true];
|
||||
};
|
||||
[_playerObj] joinSilent _group;
|
||||
[["resetTempGroup", true], _playerObj] call EPOCH_sendRemoteExecClient;
|
||||
[["tempGroupUpdate", []], _playerObj] call EPOCH_sendRemoteExecClient;
|
||||
{
|
||||
if (_x select 0 == _selectedPlayerUID) exitWith {
|
||||
_memberArray deleteAt _forEachIndex;
|
||||
_found = true;
|
||||
};
|
||||
} forEach _memberArray;
|
||||
|
||||
if (_found) then {
|
||||
_contentArray set [4, _memberArray];
|
||||
} else {
|
||||
{
|
||||
if (_x select 0 == _selectedPlayerUID) exitWith {
|
||||
_modArray deleteAt _forEachIndex;
|
||||
_found = true;
|
||||
};
|
||||
} forEach _modArray;
|
||||
_contentArray set [3, _modArray];
|
||||
};
|
||||
|
||||
if (!_found) then {
|
||||
diag_log format ["Epoch: %1 cannot remove Player! (%1)", __FILE__, _this]
|
||||
};
|
||||
};
|
||||
|
||||
{
|
||||
[["tempGroupUpdate", _contentArray], _x] call EPOCH_sendRemoteExecClient;
|
||||
} forEach (_allPlayers select {(_x getVariable["TEMPGROUP", ""]) == _groupID});
|
||||
|
||||
};
|
@ -0,0 +1,49 @@
|
||||
/*
|
||||
Author: Aaron Clark - EpochMod.com
|
||||
|
||||
Contributors:
|
||||
|
||||
Description:
|
||||
Upgrade group size
|
||||
|
||||
Licence:
|
||||
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
|
||||
|
||||
Github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_grouptemp/EPOCH_server_upgradeTempGroup.sqf
|
||||
*/
|
||||
//[[[cog import generate_private_arrays ]]]
|
||||
private ["_cIndex","_contentArray","_current_crypto","_found","_groupMemberPUID","_newGroupSize","_playerCryptoLimit","_response","_return","_upgradePrice","_vars"];
|
||||
//[[[end]]]
|
||||
params ["_groupID","_player",["_token","",[""]] ];
|
||||
if !([_player, _token] call EPOCH_server_getPToken) exitWith{};
|
||||
|
||||
_return = false;
|
||||
|
||||
// [_groupName, _leaderName, _groupSize, _modArray, _memberArray]
|
||||
if ((_response select 0) == 1 && (_response select 1) isEqualType []) then {
|
||||
_contentArray = (_response select 1);
|
||||
_found = EPOCH_group_upgrade_lvl_SEPXVar find (_contentArray select 2);
|
||||
|
||||
if ((_found != -1) && count EPOCH_group_upgrade_lvl_SEPXVar >= (_found + 3)) then {
|
||||
_newGroupSize = EPOCH_group_upgrade_lvl_SEPXVar select (_found + 2);
|
||||
|
||||
_upgradePrice = parseNumber (EPOCH_group_upgrade_lvl_SEPXVar select (_found+3));
|
||||
|
||||
_contentArray set [2, _newGroupSize];
|
||||
|
||||
_groupMemberPUID = [_groupID];
|
||||
{
|
||||
{
|
||||
_groupMemberPUID pushback(_x select 0);
|
||||
} forEach _x;
|
||||
} forEach [_contentArray select 3, _contentArray select 4];
|
||||
|
||||
{
|
||||
[["tempGroupUpdate", _contentArray], _x] call EPOCH_sendRemoteExecClient;
|
||||
} forEach (allPlayers select {getPlayerUID _x in _groupMemberPUID});
|
||||
|
||||
_return = true;
|
||||
};
|
||||
};
|
||||
_return
|
@ -27,6 +27,13 @@ class CfgServerFunctions
|
||||
class server_deleteGroup {};
|
||||
class server_invitePlayer {};
|
||||
};
|
||||
class epoch_grouptemp {
|
||||
class server_upgradeTempGroup {};
|
||||
class server_updatePlayerTempGroup {};
|
||||
class server_createTempGroup {};
|
||||
class server_deleteTempGroup {};
|
||||
class server_invitePlayerTempGroup {};
|
||||
};
|
||||
class epoch_bases {
|
||||
class swapBuilding {};
|
||||
class saveBuilding {};
|
||||
|
@ -21,12 +21,15 @@ class CfgSecConf
|
||||
};
|
||||
|
||||
class remoteExecClient{
|
||||
functions[] = {"bankBalance", "resetGroup", "groupUpdate", "groupUidUpdate", "healPlayer","tradeComplete"};
|
||||
functions[] = {"bankBalance", "resetGroup", "groupUpdate", "groupUidUpdate", "healPlayer","tradeComplete","resetTempGroup","tempGroupUpdate","tempGroupUidUpdate"};
|
||||
// code
|
||||
bankBalance = "EPOCH_bankBalance = _this;";
|
||||
resetGroup = "Epoch_my_Group = []; Epoch_my_GroupUID = '';";
|
||||
groupUpdate = "Epoch_my_Group = _this; call EPOCH_Group_update;";
|
||||
groupUidUpdate = "Epoch_my_GroupUID = _this;";
|
||||
resetTempGroup = "Epoch_my_tempGroup = []; Epoch_my_tempGroupUID = '';";
|
||||
tempGroupUpdate = "Epoch_my_tempGroup = _this; call EPOCH_tempGroup_update;";
|
||||
tempGroupUidUpdate = "Epoch_my_tempGroupUID = _this;";
|
||||
healPlayer = "{missionNamespace setVariable[format['EPOCH_player%1', _x], EPOCH_defaultVars select(EPOCH_customVars find _x)]} forEach['Temp','Hunger','Thirst','Toxicity','Stamina','HitPoints','BloodP','Alcohol','Radiation'];";
|
||||
tradeComplete = "EPOCH_TRADE_COMPLETE = _this;";
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user