Jump to content


  • Content Count

  • Joined

  • Last visited

  • Medals

Everything posted by KernelPanicAkr

  1. Hello! I have been a roleplay modder for quite some time already (since 2013), and now I am developing my own roleplay framework. I am trying to achieve the feeling of it being a standalone game inside the A3 platform and breaking the conventions inside the current RP Armaverse with new features and game mechanics. Since there's doubt on which features implement, I have decided that it is better to directly ask the community on their opinion. So, if you could spare a few minutes to answer a few questions, it would help me a great deal! Link to get Google Form: Google Forms You can also give us feedback here at this post, and we will answer as shortly as posible. Again, thank you for your time!
  2. Yes! I know this project comes late, but as any game people leave if there is no new content. In the RPG spectrum of the Armaverse is even more complicated, because people have stopped playing when RP became mainstream and the community went toxic. This is why there probably will be a 2-tier system (this is an idea, but might go well). A demo mode in a public server where you could try most of the features without downloading anything (trying to target a 20 hours gameplay worth until maxed out), and a private server version with all the actual content. The prior would be a little more open in RP aspects, whilst the later will be highly enforced RP. This tries to bring some fresh air into the armaverse. I am focusing in giving a sense of a new game instead of a game mode (trying to meet Premium DLC quality standards without making it a DLC). About the bulk of the economics, the good thing of the current design is that we can you add to stock if not enough players get the resources through a few simple scripts. It would be lost work in the coding area, but its a feature that I personally want to be (at least) tried by someone. About crafting, I am bringing the Eve system to Arma, somewhat. There might be blueprints, but the target is that every usable item is manufactured by a player (with the right skills) in a factory. Economic growth comes from optimization, bulk economics and knowing what you are doing. The view behind thsis is to see what is real value items have, as each individual item in the intermediate steps between ore yield and a SUV can be sold at any price (by sold I mean posting a "Sell Order" and hope someone bites). And as for last, thank for you feedback! I do take into account all the input I am getting through the GForm and other media. Feel free to gives us as many ideas as you want!
  3. So... What is Project Arcana? Ambitious. It's a new gamemode alike KoTH or Wasteland, but built from scratch and adding new abilities to the players in the area of magic (if you want to call it that way). The goal is to create a new combat dynamic with fire bolts, lightnings, astral projections for intel, healers, buffers, debuffers, sensory-types, while maintaining the gameplay equilibrium (the most difficult part). Players will be able to specialize in a Psien branch and develop their character through that tree, or reset and start over another. The principle of design is that is has to look smooth or it's not going in (hint "This is a scketchi output for a production release" <-- nope). I am aiming to make it as easy to edit/extend as I can, right now there's no docs (cos so early is not worth it) but I will document e-v-e-r-y-t-h-i-n-g (even Arma 3 vanilla stuff that's unclear). PLEASE MAKE SUGGESTIONS When? Who? How? When?:No idea, when it's ready, I guess a month to 1.0. Who?:Right now I am alone, and it's still an on-going process, adding new stuff each day, from design to implementation. I have been in the Arma scene for a while, mostly developing the hard stuff in roleplay server (life_server overhauls, creating network-savy functions, data managment in DB, stuff...), and lately I have been doing some experimental stuff that somehow ended up making this big idea. I am currently looking to add more people to the team if someone is interested. I can do it on my own, but having a sidekick surely will boost the development time. Right now the most needed are scripters (SQF, and if someone knows C++ with threading and networking PLEASE DO COME HERE WE HAVE COOKIES, CHOCOLATE COOKIES). Once in 1.0 we will need a basic modeler familiar with basic, but just for UV adjustments, material edition, stuff like that. Mostly for visual effects. How?:Many Monster cans, pizza and cigarettes. And beer. Lots. Links: Code (GitHub) LICENSE (CC Attr-NC-SA 4.0) Wiki Media: I am not at home right now. Will post some when there's something to show (teleport spell ready + basic core functionality up un running). Roadmap: Get Arma local client running. Get Arma serverside running. Get network RPC server running. Get network RPC client running. Surprise. Intense testing. Moar testing. Beta. Moar moars. Profit.
  4. Thanks, I'll need it! Yeah, that's why I always get back to Arma scripting, you can achieve so many things... I love it.
  5. Just checked them, they are quite good! But Asset-wise, for now it will be around basic meshes for particles/effects (for example, a sphere for a shield) :( . After getting the basic done, if we get a good artist new real assets may happen, as of right now, mostly code and basic meshes.
  6. So, I thought it would be a great idea to implement an scheduled keyHandler, to avoid random freezes 'n stuff. Here you have the code, what you think? init.sqf (findDisplay 46) displayAddEventHandler ["Keydown", AKR_fnc_onKeyDown]; fn_onKeyDown.sfq #include "Keycodes.h" private ["_handled", "_ctrl", "_dikCode", "_shift", "_ctrlKey", "_alt"]; _ctrl = _this select 0; _dikCode = _this select 1; _shift = _this select 2; _ctrlKey = _this select 3; _alt = _this select 4; _handled = false; _target = cursorTarget; //Include here the keys whose default behaviuor is going to be overriden. _overrideKeys = [ DIK_0, DIK_1, DIK_2, DIK_3, DIK_4, DIK_5, DIK_6, DIK_7, DIK_8, DIK_9, DIK_F1, DIK_F2, DIK_F3,DIK_F4,DIK_F5,DIK_F6,DIK_F7,DIK_F8,DIK_F9,DIK_F10,DIK_F11,DIK_F12, DIK_ESCAPE, DIK_GRAVE, DIK_J, DIK_M, DIK_P ]; if(_dikCode in _overrideKeys) then { _handled = true; }; _this spawn AKR_fnc_asyncKeydown; _handled fn_asyncKeydown.sqf #include "Keycodes.h" disableSerialization; _ctrl = _this select 0; _dikCode = _this select 1; _shift = _this select 2; _ctrlKey = _this select 3; _alt = _this select 4; switch (_dikCode) do { // Numeric case DIK_0: { }; case DIK_1: { }; case DIK_2: { }; case DIK_3: { }; case DIK_4: { }; case DIK_5: { }; case DIK_6: { }; case DIK_7: { }; case DIK_8: { }; case DIK_9: { }; //System Keys case DIK_F1: { }; case DIK_F2: { createDialog "RscDisplayDebugPublic"; }; case DIK_F3: { }; case DIK_F4: { }; case DIK_F5: { }; case DIK_F6: { }; case DIK_F7: { }; case DIK_F8: { }; case DIK_F9: { }; case DIK_F10: { }; case DIK_F11: { }; case DIK_F12: { }; // Special case DIK_GRAVE: { }; //QWERTY case DIK_F : { }; case DIK_M : { if(!dialog) then { createDialog "MapDialog"; }; }; // Others case DIK_ESCAPE : { if(dialog && !(missionNamespace getVariable["cantClose", false])) then { closeDialog 0; } else { createDialog "PauseDialog"; }; }; default { }; }; Keycodes.h #define DIK_ESCAPE 0x01 #define DIK_1 0x02 #define DIK_2 0x03 #define DIK_3 0x04 #define DIK_4 0x05 #define DIK_5 0x06 #define DIK_6 0x07 #define DIK_7 0x08 #define DIK_8 0x09 #define DIK_9 0x0A #define DIK_0 0x0B #define DIK_MINUS 0x0C /* - on main keyboard */ #define DIK_EQUALS 0x0D #define DIK_BACK 0x0E /* backspace */ #define DIK_TAB 0x0F #define DIK_Q 0x10 #define DIK_W 0x11 #define DIK_E 0x12 #define DIK_R 0x13 #define DIK_T 0x14 #define DIK_Y 0x15 #define DIK_U 0x16 #define DIK_I 0x17 #define DIK_O 0x18 #define DIK_P 0x19 #define DIK_LBRACKET 0x1A #define DIK_RBRACKET 0x1B #define DIK_RETURN 0x1C /* Enter on main keyboard */ #define DIK_LCONTROL 0x1D #define DIK_A 0x1E #define DIK_S 0x1F #define DIK_D 0x20 #define DIK_F 0x21 #define DIK_G 0x22 #define DIK_H 0x23 #define DIK_J 0x24 #define DIK_K 0x25 #define DIK_L 0x26 #define DIK_SEMICOLON 0x27 #define DIK_APOSTROPHE 0x28 #define DIK_GRAVE 0x29 /* accent grave */ #define DIK_LSHIFT 0x2A #define DIK_BACKSLASH 0x2B #define DIK_Z 0x2C #define DIK_X 0x2D #define DIK_C 0x2E #define DIK_V 0x2F #define DIK_B 0x30 #define DIK_N 0x31 #define DIK_M 0x32 #define DIK_COMMA 0x33 #define DIK_PERIOD 0x34 /* . on main keyboard */ #define DIK_SLASH 0x35 /* / on main keyboard */ #define DIK_RSHIFT 0x36 #define DIK_MULTIPLY 0x37 /* * on numeric keypad */ #define DIK_LMENU 0x38 /* left Alt */ #define DIK_SPACE 0x39 #define DIK_CAPITAL 0x3A #define DIK_F1 0x3B #define DIK_F2 0x3C #define DIK_F3 0x3D #define DIK_F4 0x3E #define DIK_F5 0x3F #define DIK_F6 0x40 #define DIK_F7 0x41 #define DIK_F8 0x42 #define DIK_F9 0x43 #define DIK_F10 0x44 #define DIK_NUMLOCK 0x45 #define DIK_SCROLL 0x46 /* Scroll Lock */ #define DIK_NUMPAD7 0x47 #define DIK_NUMPAD8 0x48 #define DIK_NUMPAD9 0x49 #define DIK_SUBTRACT 0x4A /* - on numeric keypad */ #define DIK_NUMPAD4 0x4B #define DIK_NUMPAD5 0x4C #define DIK_NUMPAD6 0x4D #define DIK_ADD 0x4E /* + on numeric keypad */ #define DIK_NUMPAD1 0x4F #define DIK_NUMPAD2 0x50 #define DIK_NUMPAD3 0x51 #define DIK_NUMPAD0 0x52 #define DIK_DECIMAL 0x53 /* . on numeric keypad */ #define DIK_OEM_102 0x56 /* < > | on UK/Germany keyboards */ #define DIK_F11 0x57 #define DIK_F12 0x58 #define DIK_F13 0x64 /* (NEC PC98) */ #define DIK_F14 0x65 /* (NEC PC98) */ #define DIK_F15 0x66 /* (NEC PC98) */ #define DIK_KANA 0x70 /* (Japanese keyboard) */ #define DIK_ABNT_C1 0x73 /* / ? on Portugese (Brazilian) keyboards */ #define DIK_CONVERT 0x79 /* (Japanese keyboard) */ #define DIK_NOCONVERT 0x7B /* (Japanese keyboard) */ #define DIK_YEN 0x7D /* (Japanese keyboard) */ #define DIK_ABNT_C2 0x7E /* Numpad . on Portugese (Brazilian) keyboards */ #define DIK_NUMPADEQUALS 0x8D /* = on numeric keypad (NEC PC98) */ #define DIK_PREVTRACK 0x90 /* Previous Track (#define DIK_CIRCUMFLEX on Japanese keyboard) */ #define DIK_AT 0x91 /* (NEC PC98) */ #define DIK_COLON 0x92 /* (NEC PC98) */ #define DIK_UNDERLINE 0x93 /* (NEC PC98) */ #define DIK_KANJI 0x94 /* (Japanese keyboard) */ #define DIK_STOP 0x95 /* (NEC PC98) */ #define DIK_AX 0x96 /* (Japan AX) */ #define DIK_UNLABELED 0x97 /* (J3100) */ #define DIK_NEXTTRACK 0x99 /* Next Track */ #define DIK_NUMPADENTER 0x9C /* Enter on numeric keypad */ #define DIK_RCONTROL 0x9D #define DIK_MUTE 0xA0 /* Mute */ #define DIK_CALCULATOR 0xA1 /* Calculator */ #define DIK_PLAYPAUSE 0xA2 /* Play / Pause */ #define DIK_MEDIASTOP 0xA4 /* Media Stop */ #define DIK_VOLUMEDOWN 0xAE /* Volume - */ #define DIK_VOLUMEUP 0xB0 /* Volume + */ #define DIK_WEBHOME 0xB2 /* Web home */ #define DIK_NUMPADCOMMA 0xB3 /* , on numeric keypad (NEC PC98) */ #define DIK_DIVIDE 0xB5 /* / on numeric keypad */ #define DIK_SYSRQ 0xB7 #define DIK_RMENU 0xB8 /* right Alt */ #define DIK_PAUSE 0xC5 /* Pause */ #define DIK_HOME 0xC7 /* Home on arrow keypad */ #define DIK_UP 0xC8 /* UpArrow on arrow keypad */ #define DIK_PRIOR 0xC9 /* PgUp on arrow keypad */ #define DIK_LEFT 0xCB /* LeftArrow on arrow keypad */ #define DIK_RIGHT 0xCD /* RightArrow on arrow keypad */ #define DIK_END 0xCF /* End on arrow keypad */ #define DIK_DOWN 0xD0 /* DownArrow on arrow keypad */ #define DIK_NEXT 0xD1 /* PgDn on arrow keypad */ #define DIK_INSERT 0xD2 /* Insert on arrow keypad */ #define DIK_DELETE 0xD3 /* Delete on arrow keypad */ #define DIK_LWIN 0xDB /* Left Windows key */ #define DIK_RWIN 0xDC /* Right Windows key */ #define DIK_APPS 0xDD /* AppMenu key */ #define DIK_POWER 0xDE /* System Power */ #define DIK_SLEEP 0xDF /* System Sleep */ #define DIK_WAKE 0xE3 /* System Wake */ #define DIK_WEBSEARCH 0xE5 /* Web Search */ #define DIK_WEBFAVORITES 0xE6 /* Web Favorites */ #define DIK_WEBREFRESH 0xE7 /* Web Refresh */ #define DIK_WEBSTOP 0xE8 /* Web Stop */ #define DIK_WEBFORWARD 0xE9 /* Web Forward */ #define DIK_WEBBACK 0xEA /* Web Back */ #define DIK_MYCOMPUTER 0xEB /* My Computer */ #define DIK_MAIL 0xEC /* Mail */ #define DIK_MEDIASELECT 0xED /* Media Select */ /* Alternate names for keys, to facilitate transition from DOS. */ #define DIK_BACKSPACE DIK_BACK /* backspace */ #define DIK_NUMPADSTAR DIK_MULTIPLY /* * on numeric keypad */ #define DIK_LALT DIK_LMENU /* left Alt */ #define DIK_CAPSLOCK DIK_CAPITAL /* CapsLock */ #define DIK_NUMPADMINUS DIK_SUBTRACT /* - on numeric keypad */ #define DIK_NUMPADPLUS DIK_ADD /* + on numeric keypad */ #define DIK_NUMPADPERIOD DIK_DECIMAL /* . on numeric keypad */ #define DIK_NUMPADSLASH DIK_DIVIDE /* / on numeric keypad */ #define DIK_RALT DIK_RMENU /* right Alt */ #define DIK_UPARROW DIK_UP /* UpArrow on arrow keypad */ #define DIK_PGUP DIK_PRIOR /* PgUp on arrow keypad */ #define DIK_LEFTARROW DIK_LEFT /* LeftArrow on arrow keypad */ #define DIK_RIGHTARROW DIK_RIGHT /* RightArrow on arrow keypad */ #define DIK_DOWNARROW DIK_DOWN /* DownArrow on arrow keypad */ #define DIK_PGDN DIK_NEXT /* PgDn on arrow keypad */ /* Alternate names for keys originally not used on US keyboards. */ #define DIK_CIRCUMFLEX DIK_PREVTRACK /* Japanese keyboard */
  7. I understood that spawns are stacked for execution, so I think it's better to have that delayed action rather that a microfreeze in a MP battle. But I'm looking how to optimice it the most, any suggestions?
  8. KernelPanicAkr

    Problem with Public Variable

    The thing of publicVariable is... That costs much bandwidth. I have pretty bad experience using it. Didn't know about the new function, will look into it.
  9. I've been scripting for Lifelike mods, and sometimes the Keyhandler called heavy functions and the game had small freezes, but this way you it's run smoothly. Also it's separeted into another file to improve readibility
  10. Can be done, you would need to learn tons of scripting to get a grasp of it. You would need to create a script that detects the user-placed object, store them to a database, and another script to load those objects at mission startup. It's messy and prone to bugs, but yeah, could be done.
  11. I'm working on my own RP framework, and yeah, from scratch (if we ignore we are all using Bohemia's engine). I'm doing it on my free time, and I will warn you, takes hell of a time to make the basics, the EHs, database connection (I'm using a Java core), HUDs, textures... And only the basic to get it moving, without real content. I'd recommend you hire someone, because it's going to be complicated to find someone doing that for free.
  12. KernelPanicAkr

    Problem with Public Variable

    Another way to aproach it: init.sqf (clientside): #define WAIT_TIME 10 waitUntil {time > 0}; _tCheck = time; waitUntil {!isNil "correctserver" || (_tCheck + WAIT_TIME < time)}; if(isNil "correctserver") exitWith { failMission "END6"; }; hint "Starting server."; You can use waitUntil and sleep in "init.sqf" as it's run in scheduled environment. Anyway, this kind of protection is useless, someone with averege skill knowledge would override that. I'd recomend looking into a "code transfer", meaning: All the important code of the mission, even the placement of some objects could be stored server side (creating an addon, just like AltisLifeRPG), and when the player joins in, this server addon would be called and would upload the data to the client throught a BIS_fnc_MP function. I could give you an example code if you need it really bad.
  13. Wow! Thanks! It's waaay more complete than anything I found. I'll look into it.
  14. Hi there! I've been scripting for a while now, and now I'm working on a rich HUD that would require a 3D model, but I can't find any references or examples of CT_OBJECT_CONT_ANIM, CT_OBJECT, CT_OBJECT_CONTAINER, excepting Killzonekid's example (wasn't what I needed, lacks info). It seems its not used in the \A3\ assets, and I can't find anything useful on the net. Could someone enlighten me about thesemisterious UI types? Thank you!
  15. KernelPanicAkr

    adding music to existing server

    I was looking for something similar and found an interesting project on GitHub by "maca134". It's a mod that allows players to listen realtime online radio. Link: https://github.com/maca134/arma-nradio
  16. Today I found that camSetDir wont work as intended. So I made a workarround with similar behaviour. /* * Desc: Changes view direction of a camera. * Params: * * param 0: <Object> Camera itself. * param 1: <Float> Map direction. * param 2: <Float> Inclination. */ AKR_cameraSetTargetDir = { _camera = [_this, 0, objNull, [objNull]] call BIS_fnc_param; _dir = [_this select 1, 0, 0, [-1]] call BIS_fnc_param; _inclination = [_this select 1, 1, 0, [-1]] call BIS_fnc_param; _camPos = getPos _camera; _relPos = [sin(_dir), cos(_dir), _inclination]; _result = _camPos vectorAdd _relPos; _camera camSetTarget (_result); _camObj camCommit 0; };
  17. Hi!, I'm trying to create a server-side Addon, but I'm getting trouble in declarating my functions in CfgFuntions. I'm used to the description.ext way, and I thought it would be the same with Addons, but they don't get compiled at all. Dumping config.cpp. All paths are correct, just like description.ext, and no "No found" error, just nothing pops out, but I get "Undefined" error when calling any function. I could use some help. class CfgPatches { class Addon_core { units[] = {}; weapons[] = {}; fileName = "Addon_core.pbo"; author[] = {"User"}; requiredVersion = 1.000000; }; }; class CfgFunctions { class PL_Core { tag = "PL"; class Core { file = "code"; class asyncInit {}; }; class Config { file = "code\Config"; class loadConfiguration {}; }; }; }
  18. Hi, I'm trying to define a new Ammo type in a Mission (non-moded). I thought it could be possible to do so in the Description.ext. I'm trying to override "launch_RPG32_F", defining "launch_RPG32_EMP_F". Here's what I'm doing so far: class CfgPatches { class RPG32_EMP_F { requiredaddons = {"A3_Weapons_F"}; requiredversion = 1.000000; weapons = {"RPG32_EMP_F"}; }; }; class CfgAmmo { /*extern*/ class Default; /*extern*/ class BulletCore; /*extern*/ class RPG32_F; class RPG32_EMP_F: RPG32_F { displayName = "EMP Rocket"; displayNameShort = "EMP Rocket"; descriptionShort = "EMP Rocket"; model = "\A3\weapons_f\launchers\RPG32\tbg32v_rocket_item.p3d"; picture = "\A3\Weapons_F\launchers\RPG32\data\UI\gear_tbg32v_rocket_ca.paa"; ammo = "R_TBG32V_EMP_F"; mass = 40; }; }; class CfgWeapons { /*extern*/ class launch_RPG32_F; class launch_RPG32_EMP_F: launch_RPG32_F { _generalMacro = "launch_RPG32_EMP_F"; magazines = {"RPG32_EMP_F"}; }; }; I usually get EOF, and I'm getting lost. I just want to create a new ammo type, recycling all the models & stuff. What could I do? ---------- Post added at 22:36 ---------- Previous post was at 22:25 ---------- Update: Now won't crash, but still, it don't detects the new ammo type. class CfgPatches { class RPG32_EMP_F { requiredaddons[] = {"A3_Weapons_F"}; weapons[] = {"RPG32_EMP_F"}; author[]= {"Akryllax"}; }; }; class CfgAmmo { /*extern*/ class R_PG32V_F; class R_TBG32V_EMP_F: R_PG32V_F { hit = 0; indirectHit = 0; indirectHitRange = 50; explosive = 1; }; }; class CfgMagazines { /*extern*/ class Default; /*extern*/ class BulletCore; /*extern*/ class RPG32_F; class RPG32_EMP_F: RPG32_F { displayName = "EMP Rocket"; displayNameShort = "EMP Rocket"; descriptionShort = "EMP Rocket"; ammo = "R_TBG32V_EMP_F"; }; }; class CfgWeapons { /*extern*/ class launch_RPG32_F; class launch_RPG32_EMP_F: launch_RPG32_F { _generalMacro = "launch_RPG32_EMP_F"; magazines = {"RPG32_EMP_F"}; }; };
  19. KernelPanicAkr

    Create new ammo tipes

    There's no work arround? I need the rocket to do 0 damage, while it can be done by HandleDamage, for localitys issues I prefer to avoid it.
  20. I still can't understand what will be the impact of this. Will the Addons be loaded in runtime? (I mean, as the MP Missions are loaded) Or we will still need to restart the game to load Mods/Addons? It would be amazing that Mods could be loaded when entering a server, so we could modify/extend/add stuff beyond standart scripting :)
  21. It's just a recomendation... Ident your code, it'll be easy for you and for others to understand, and to see syntax errors at first glance.
  22. I managed to make them work (locally at least, but only with human players) using: this && (local player) && (vehicle player in thisList) Borrowed from somewhere in AltisLife code, can't remember author.