Jump to content

xeenenta

Member
  • Content Count

    3
  • Joined

  • Last visited

  • Medals

Community Reputation

10 Good

About xeenenta

  • Rank
    Rookie

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hi Everyone, I'm looking for some help regarding a zeus module that I am creating. To give some background, the module (when placed) should prompt the user to use sliders to configure a radius and number of AI with which to garrison buildings within said defined radius. I think I'm running into an issue with execution locality, as this works perfectly in the editor. Expected behavior: User selects the module in zeus and places it somewhere on the map Dialog box appears to ask them to configure radius and number of AI User hits OK and it calls another function to start placing AI relative to the module location In singleplayer this works as above (I imagine this is due to the server and client both being local) In multiplayer, the function to create the dialog is executed on the server (evidenced by debug output to the console), but a dialog does not appear for Zeus My module is defined as follows: class xeen_module_base: Module_F { icon = "\xeen_modules\insignia.paa"; category = "xeen_modules"; isGlobal = 0; isTriggerActivated = 1; isDisposable = 1; is3DEN = 0; curatorCanAttach = 1; scope = 1; scopeCurator = 1; }; class xeen_moduleGarrison: xeen_module_base { displayName = "Garrison Area"; function = "xeen_fnc_garrisonModuleDialog"; functionPriority = 10; scope = 2; scopeCurator = 2; class Attributes: AttributesBase { class GarrisonSpread: Edit { property = "xeen_moduleGarrison_GarrisonSpread"; displayName = "Unit Spread (m)"; tooltip = "The distance of buildings to be garrisoned"; typeName = "NUMBER"; defaultValue = "50"; }; class MaxPerBuilding: Edit { property = "xeen_moduleGarrison_MaxPerBuilding"; displayName = "Max units per building"; tooltip = "Max units per building"; typeName = "NUMBER"; defaultValue = "5"; }; //class ModuleDescription: ModuleDescription{}; // Module description should be shown last }; #include "description.hpp" }; and it calls the following function: /* * Author: Xeenenta * Opens the dialog menu for the garrison module * * Arguments: * 0: Logic <LOGIC> * * Return Value: * None * * Example: * [_logic] call xeen_garrison_fnc_garrisonModuleDialog * * Public: No */ // Parameters params ["_logic"]; _logicLocation = getPos _logic; diag_log format ["Spawning display with logic %1", _logicLocation]; // Create display createDialog "garrisonModuleDialog"; _display = findDisplay 99; // Set Variable _display setVariable ["_logicLocation", _logicLocation]; diag_log "Finished spawning display"; and my dialog is defined here: class garrisonModuleDialog { idd = 99; access = 0; movingEnable = false; enableSimulation = false; class ControlsBackground { class IGUIBack_2200: IGUIBack { idc = 2200; x = 0; y = 0.4; w = 1; h = 0.6; }; class RscStructuredText_1100: RscStructuredText { idc = 1100; text = "AI per building:"; //--- ToDo: Localize; x = 0.025; y = 0.68; w = 0.17; h = 0.05; }; class RscStructuredText_1101: RscStructuredText { idc = 1101; text = "Garrison Radius:"; //--- ToDo: Localize; x = 0.025; y = 0.44; w = 0.17; h = 0.05; }; class RscStructuredText_1102: RscStructuredText { idc = 1102; text = "0"; //--- ToDo: Localize; x = 0.1625; y = 0.68; w = 0.06; h = 0.05; }; class RscStructuredText_1103: RscStructuredText { idc = 1103; text = "0m"; //--- ToDo: Localize; x = 0.2; y = 0.44; w = 0.06; h = 0.05; }; }; class Controls { class RscButtonMenuOK_2600: RscButtonMenuOK { idc = 1234; x = 0.875; y = 0.88; w = 0.1; h = 0.1; onButtonClick = "[(findDisplay 99) getVariable ['_logicLocation', objNull], sliderPosition 1901, sliderPosition 1900] call xeen_fnc_garrisonModuleInit; (findDisplay 99) closeDisplay 1;" }; class RscButtonMenuCancel_2700: RscButtonMenuCancel { x = 0.75; y = 0.88; w = 0.1; h = 0.1; }; class RscSlider_1900: RscSlider { idc = 1900; x = 0.025; y = 0.74; w = 0.95; h = 0.1; type = 43; arrowEmpty = "\A3\ui_f\data\gui\cfg\slider\arrowEmpty_ca.paa"; arrowFull = "\A3\ui_f\data\gui\cfg\slider\arrowFull_ca.paa"; border = "\A3\ui_f\data\gui\cfg\slider\border_ca.paa"; thumb = "\A3\ui_f\data\gui\cfg\slider\thumb_ca.paa"; color[] = {1,1,1,0.5}; coloractive[] = {1,1,1,1}; sliderPosition = 0; sliderRange[] = {0,10}; sliderStep = 1; lineSize = 1; onSliderPosChanged="((findDisplay 99) displayCtrl 1102) ctrlSetStructuredText parseText str(sliderPosition 1900)" }; class RscSlider_1901: RscSlider { idc = 1901; x = 0.025; y = 0.5; w = 0.95; h = 0.1; type = 43; arrowEmpty = "\A3\ui_f\data\gui\cfg\slider\arrowEmpty_ca.paa"; arrowFull = "\A3\ui_f\data\gui\cfg\slider\arrowFull_ca.paa"; border = "\A3\ui_f\data\gui\cfg\slider\border_ca.paa"; thumb = "\A3\ui_f\data\gui\cfg\slider\thumb_ca.paa"; color[] = {1,1,1,0.5}; coloractive[] = {1,1,1,1}; sliderPosition = 5; sliderRange[] = {0,100}; sliderStep = 10; lineSize = 1; onSliderPosChanged="((findDisplay 99) displayCtrl 1103) ctrlSetStructuredText parseText str(sliderPosition 1901)" }; }; class Objects { }; }; Any thoughts? Full source code can be found at: https://github.com/Xeenenta/xeenenta-enhanced-battlefield if anyone wanted to go digging around.
  2. Reaper Crew are soon to embark on a new campaign called Operation Sabertooth: Campaign Overview Operation Sabertooth is an offensive counter insurgency campaign that is seeking to tackle an insurgent threat in northern Clafghan. Recent years have seen an escalation in conflict with a religious movement called the ‘Free Takistan Guerrillas’ by the Clafghan Armed Forces. The group has been using the mountainous areas as a staging post to launch attacks against the countries of Israel and Clafghan. You can find out more at: https://reapercrew.co.uk/operations-and-campaigns/operation-sabertooth/ Additionally, we have also released footage from one of our operations called Operation Sovereign where we were playing as Ukrainian Special Forces trying to halt a Russian offensive. You can see the footage below:
  3. Introduction Welcome to Reaper Crew! We’re a UK-based ArmA 3 unit dedicated to striking the perfect balance between engaging gameplay and realistic military elements—without compromising the fun. Whether you're new to ArmA or a seasoned operator, we offer a relaxed, inclusive environment where the focus is always on quality experiences. Key Details Unit Type: Semi-Serious Region/Timezone: UK/EU (Operations at 19:00 UK Time) Primary Language: English Playstyle: Gameplay-first, with a touch of realism Operations: Weekly missions every Saturday at 19:00 UK time Factions: Any faction, changing on a mission-by-mission basis for variety Community Size: 25+ players per operation At Reaper Crew, we prioritize flexibility and enjoyment over rigid rules. There's no mandatory attendance, and minimal training means you can jump straight into the action. What We Offer A welcoming and relaxed community. Weekly missions with dynamic scenarios and diverse factions. Opportunities to try out different roles each mission. No mandatory attendance—play when it suits you! Minimal training requirements, so you can get into the action right away. If you value gameplay variety and a fun, low-pressure environment, you’ll feel right at home here. Requirements Age: 16+ Availability: No strict requirements—play when you can! Mods: Our mod pack ensures smooth and immersive gameplay (details provided on joining). Other: A functional microphone and Discord are required for effective communication. How to Join Joining Reaper Crew is simple! Just follow these steps: Join our Discord at https://discord.gg/HXnNYyk. Introduce yourself and let us know you’re interested. Jump into an op—no lengthy application process or red tape! Closing Thank you for considering Reaper Crew! If you’re looking for a fun, laid-back community with exciting missions and endless variety, we’d love to have you join us. Check out our Discord today and get started—see you on the battlefield!
×