Jump to content


  • Content Count

  • Joined

  • Last visited

  • Medals

Community Reputation

30 Excellent

About Cheitan

  • Rank

Contact Methods

  • Website URL

Profile Information

  • Gender
  • Location

Recent Profile Visitors

1132 profile views
  1. Is reporting a viable option to help ? I reported those two stolen mods, giving the link to this thread (and especially this excellent investigation by @Gunter Severloh) in both reports descriptions. EDIT : answer already given, sorry
  2. Cheitan

    Reverse Engineering EOS

    Hey @dreadpirate, I recently had similar concerns, and I ended up thinking that it would be easier to redesign a brand new occupation system from scratch. So that's what I did. You can find a very basic version of it right here : https://github.com/team-gsri/GOS (GOS standing for GSRI Occupation System, not related to the team named GOS). Frankly, it's not as polished as I want it to be. Ultimately I will probably ship it as a mod, mainly for my team's needs, but for now I lack time to work on it. I don't forget it though, I really plan to perfect it at some point. For now, feel free to take inspiration from it, fork it, or eventually open a pull-request following the generic Contributing guidelines of our organization. Have fun !
  3. Could you please share the values used to make this work please ? I can totally deal with attaching the chopper to the platform, but making the platform a towable object is giving me headache. I added the needed values to it, but when trying to tow it, the platform is immediately rotated by 90° and automatically detached. I tried playing around with wheelOffset values, but when changing this value, it only affect the rotation direction (clockwise or counterlockwise) but still refuses to stand still and be gently towed. EDIT : I might have found the values that you used : https://bitbucket.org/Leshrack/leshtowing/src/master/testconfigs/config.cpp. Can you confirm ? I'll give it a try today or tomorrow. EDIT2 : I can confirm that there is still this strange problem when trying to tow the landing platform, even with @leshrack values. Anyone having a solution for this ?
  4. Tried with a very simple "diag_log 'gabuzomeu'", but there is nothing in the log file either. It seems not to be executed, and I don't understand why
  5. Quick question there, I have a custom Eden attribute defined that way : class GSRI_frigate_attribute_addWeapons { displayName="$STR_GSRI_frigate_addWeaponsTitle"; tooltip="$STR_GSRI_frigate_addWeaponsTooltip"; property="GSRI_frigate_addWeaponsProperty"; control="Checkbox"; expression="_this setVariable ['toto',_value,true]"; defaultValue="true"; }; It works just fine in Eden, as the checkbox is properly displayed with the correct name, tooltip and default value. Similarly, displaying this class with the in-game config viewer shows that the attribute is correctly added. However, when I run the mission, there is no variable "toto" in the object's namespace. I'm probably missing something very obvious but I can't put my finger on it. Any idea ?
  6. Cheitan

    GSRI Zeus Manager

    GSRI Zeus Manager has been updated (original post edited), and is now only maintained and distributed as a mod ! This way you do not need to add or update it to every single mission you are using. If you still need it as a script, you are free to get the source code on Github and use it as-is in your mission, or modify it the way you want under the conditions of the MIT License.
  7. Initial project Hey there ! I'm glad to introduce you a brand new mod : GSRI Zeus Manager ! This component was first developped in order to provide GSRI mission editors a complete template relying on the USS Liberty destroyer. It is meant to quickly start a new mission without having to deal with our usual stuff such as having a few basic vehicles, ship's weaponry, arsenal, and of course Zeus modules automatic management. This last part is now a separate project, as we ended up thinking that it can be beneficial for the whole A3 community. 😀 What GZM can do Once GZM is installed it can take care of any Zeus module placed via 3Den, without requiring you to configure each module with a proper owner. 💪 It relies on a serverside stored whitelist of players considered as allowed to get a Zeus privilege. The granting process check for the whitelist before linking the requester to an available curator. Any interaction with GZM is made through "command line like" user interface : just open your multiplayer vanilla chat and enter #zeus help to get a quick reminder of what each command does : Usage : #zeus <command>, with : whitelist : show whitelisted players slots : display (un)assigned slots request/release : get (un)assigned to an available slot promote/revoke <player> : (un)register <player> as zeus-allowed With GZM, you can add as much Zeus modules as needed without getting worried by how to be sure that your team's members will be able to use it. 👌 The whitelist is stored in the server's profile, meaning that it is available to all missions running on a given server. Just log in as admin on your server, promote players as you wish, and let GZM deal with the details ! 👮‍♀️ How do I get it ? Literally everything you need to know about GZM is available on the Github repository of our project. Just have a look to the included Readme. Also, you can simply click here to go instantly to the release page on Github. Please mind that this mod requires the always excellent CBA mod, otherwise you will not be able to interact with GZM (which is sad... 😥). If you have any question, feel free to ask here, on Github, or on our Discord server !
  8. Bloody hell, I get it. There is a missing / for the closing tag for 3 of the entries. Probably due to a missed copy-paste. This might have confused the XML parser of the game, leading to a fully unexpected behaviour but without any kind of warning/error message. I spotted it by re-typing the whole file from scratch and having everything working at first try. I then performed a strict comparison between both files with a dedicated tool and the magic happened. How dumb I may be, from time to time...
  9. Yeah I had some problems with that a while ago, so now I always check encoding first, but in this very case IT IS ALREADY UTF-8 without BOM.
  10. OK, I think my game is cursed, or something. Here is my full Stringtable.xml file : <?xml version="1.0" encoding="UTF-8" ?> <Project name="GSRI_Opex_Template"> <Package name="GSRI_opex_notifications"> <Key ID="STR_GSRI_submarineOk"> <Original>Submarine has moved to the designated location (%1).</Original> <French>Le sous-marin s'est déplacé aux coordonnées indiquées (%1).</French> </Key> <Key ID="STR_GSRI_submarineFail"> <Original>Submarine cannot go here.</Original> <French>Le sous-marin ne peux se déplacer ici.</French> </Key> <Key ID="STR_GSRI_submarineInfo"> <Original>Left-click to move, shift+click to move in surface.</Original> <French>Clic-gauche pour déplacer, maj+clic pour déplacer à la surface.</French> <Key> <Key ID="STR_GSRI_heliInfo"> <Original>%1 is available in hangar.</Original> <French>%1 est disponible dans le hangar.</French> </Key> <Key ID="STR_GSRI_heliDelete"> <Original>%1 has been deleted.</Original> <French>%1 a été supprimé.</French> </Key> <Key ID="STR_GSRI_heliMoved"> <Original>%1 has been moved.</Original> <French>%1 a été déplacé.</French> <Key> <Key ID="STR_GSRI_heliFRIES"> <Original>%1 is now equipped with FRIES.</Original> <French>%1 a été équipé d'un FRIES.</French> <Key> </Package> </Project> Initially it was split between two packages for the sake opf clarity, but while trying to debug it all I ended up with this simplified form. But now I don't understand a thing to what I'm seeing... When calling _localize "STR_GSRI_submarineOk", the right sentence is displayed. When calling _localize "STR_GSRI_submarineFail", the right sentence is displayed. When calling _localize "STR_GSRI_submarineInfo", the sentence displayed sentence is " is available in hangar". When calling _localize "STR_GSRI_heliInfo", no sentence is found. When calling _localize "STR_GSRI_heliDelete", no sentence is found. When calling _localize "STR_GSRI_heliMoved", no sentence is found. When calling _localize "STR_GSRI_heliFRIES", no sentence is found. Moreover, my game is supposed to be configured for french language, so even if there were a bug with, let's say, encoding, the right sentence should be " est disponible dans le hangar" instead of the english version " is available in hangar". I am completely lost... Stringtable is something I'm using for a long time, usually in mods, with a lot more entries and packages and structured text and stuff. I don't understand why this very simple use is behaving so weird...
  11. Hey folks. I'm struggling with some strange behaviour here. I'm trying to use the very cool notification system (BIS_fnc_showNotification) with some localized text so several languages can be added to my scripts. I have defined my notifications as follow (sample) : class CfgNotifications { class SubmarineOk { title = "GSRI Insertion System"; iconPicture = "\A3\ui_f\data\map\mapcontrol\taskIconDone_ca.paa"; iconText = ""; description = $STR_GSRI_submarineOk; color[] = {1,1,1,1}; duration = 5; priority = 0; difficulty[] = {}; }; }; And my stringtable.xml is structured as fllow (sample also) : <?xml version="1.0" encoding="UTF-8"?> <Project name="GSRI Opex Template"> <Package name="GSRI_opex_Submarine"> <Key ID="STR_GSRI_submarineOk"> <Original>Submarine has moved to the designated location (%1).</Original> <French>Le sous-marin s'est déplacé aux coordonnées indiquées (%1)</French> </Key> </Package> </Project> However, when trying to activate the corresponding action, the notification is displayed with no text at all. Trying to use *localize "STR_GSRI_SubmarineOk"* is returning an empty string. This behavior is witnessed in both 3den preview and packed pbo launched on my computer. Following an advice from Dedmen I've checked if the stringtable.xml file was correctly added to the mission pbo and yes, it is. EDIT : the game is adding a log entry in RPT : "19:05:51 String STR_GSRI_submarineOk not found" Any idea ?
  12. Thanks @Dedmen, very exhaustive answer ! @sarogahtyp that's a very good idea O_o such a command would only be accepted by the server if it's called by an already registered player, or by a loggedAdmin. Excellent !
  13. Yep I know this is going too far ^^ To be honnest, it's only a matter of curiosity. I wonder if having a squadXML fills the squadParams the same way than a Unit... If it's strictly the same, then it can be faked indeed. However, creating a new Unit with the same name is apparently impossible. I tried quickly, and as soon as you enter the name, there is a check performed by the website to verify that the name is available. If not, further steps are locked. But I don't know about the security level of such a service, maybe it can be attacked in a way or another to duplicate Unit's name. Anyway, if squadXML cannot be differenciated from Unit via squadParams, it's indeed not a very secured way of attributing sensitive privileges. But for Zeus it's good enough.
  14. As stated here, relying on such an ID require to update the mission file or the server file containing UIDs, in case of a new player joining the team.
  15. I recently discovered, thanks to @Lou Montana, the A3 command squadParams. It has the ability to display Unit's informations, such as name, tag, image, email, etc (thanks again Lou for that 😍). As a Unit's name is unique, I wonder if relying on this is safe, for attributing privileges to players. For example, I've designed a quick Zeus slot management with the extremely useful CBA_fnc_registerChatCommand. When a player type #zeus request, he is automatically assigned to a curator (provided that there is an available curator, otherwise the player is prompted with a warning). Similarly, using #zeus release automatically unassign the player from his previous curator. For now, there is no kind of "security check". Anyone knowing how the command works is able to get Zeus access (yes, even you, dear reader !). I now want to make sure that only members of my team are able to access Zeus, and that no guest is able to do so, even if he knows the command. As often stated, security through obscurity is no security at all. One way is to store server-side a list of steam IDs (assuming that such an ID cannot be faked...), and make the Zeus request handler check this list in order to allow Zeus privilege. But this way is not very flexible : if a new player joins the team, we need to update the mission file. Another way to do so is to enable file patching on the server and to keep the Steam ID list in a file out of the mission folder. But file patching has its own flaws, and it still need a server root access to modify the file in case of a new member. The final way I just found is to rely on squadParams : if the player is a member of my team, then he should be granted with Zeus privilege. Considerations are as follow : - Unit Name must be unique on BI's side (let's assume that it is absolutely secured). - Check must be performed on the server, as we cannot assume a mission file is secure on client side. - There is NO KIND OF LOCAL STORAGE for squadParams, as local storage could be altered a way or another. I browsed every A3/Launcher folder that I know, including AppData, etc. I found some kind of local storage for units, but only the team's picture is stored. I can make the guess that squadParams is able to do a sort of HTTP request on-the-fly when called. Such a request is done at game start in order to download the squad picture, which is then stored client-side aiming at avoiding big network messages later on. But the remaining intels are not stored, because the total volume of data is considered to small to make a significant difference between local storage and online request. If my guess is right, we can assume that relying on squadParams for privilege management is safe. Of course, to be perfectly honnest, any kind of network proxy should be able to detect and modify on-the-fly any call to the distant database in order to make it display the wanted value, but it's kind of a "very" advanced attack for a ridiculously stupid goal : gaining a temporary Zeus access... Not to mention the fact that game's network traffic might be encrypted, at least for such a call to a HTTP service, which, if it is, will make this attack inoperative. Is anyone able to (in)validate my guess ? I admit I'm not curious enough to kick off my own network security tools just to perform such a small check... Even if doing so might eventually be quicker than writing down this long message 🙄