Jump to content
Sign in to follow this  
Bon

Advanced Artillery Request System

Recommended Posts

@Manzilla,

try

_arti_cond_other = "({_x hasWeapon 'Radio'} count units group player) > 0";

and change 'Radio' to the corresponding class name.

Share this post


Link to post
Share on other sites
@Manzilla,

try

_arti_cond_other = "({_x hasWeapon 'Radio'} count units group player) > 0";

and change 'Radio' to the corresponding class name.

Beautiful!!!! It works great. Thanks again bud.

EDIT:

Alright I've noticed something in my mission. Not sure if it's a conflict with some thing else or my mistake but it seems I can only use each cannon once. Regardless of how many shells I have left it seems that once I fire say Cannon 1 and it will not fire again. I can register for the support and when I hit confirm and execute, I get the message from Steel Rain but no shelss ever come and the shell count in the dialog menu is unchanged. But if I try to fire Cannon 2, it works once then the same thing happens as before. Once I get done with Cannon 5 I can't get any more cannons to actually fire the shells.

It sounds weird but if anyone has the time, just start up my mission and try it. I can't seem to figure out what I'm doing wrong.

Edited by Manzilla

Share this post


Link to post
Share on other sites
I just noticed that I left some default restrictions to have this menu enabled to the squad leaders class.

Please open the bon_artillery_init.sqf script and search the line which contains

_arti_cond_classes = ["USMC_Soldier_SL","RU_Soldier_SL"];

Change it to

_arti_cond_classes = [];

and tell me if the problem remains. For further information read the enclosed manual section "Availability restrictions".

In general I doubt there will be ever any conflicts with other artillery menus and stuff, as this system is an independent and closed component of scripts.

I've made this change but I'm still not getting any option in the action menu.

EDIT: Ignore me, it seems to be working now.

Edited by Laertes

Share this post


Link to post
Share on other sites

Bon,

I got it working - it was the class default that was killing it. But, I've noticed something that might be a bug or might be to do with trying to integrate with Domination.

The Tank shells don't work! All the others strike where I want them to, I use ACE and have been using the Rangefinder. But the Tank artillery rounds just don't appear - and, I can't get a laser strike to work either.

Rich

Share this post


Link to post
Share on other sites

I think I have read this thread correctly, and am still not sure if it has been answered or is possible. My question is can I use this with AI arty objects so they will really "fire" in the fire mission?

and will I have to edit the bon_arti_fire_advanced.sqf?

Share this post


Link to post
Share on other sites

@Manzilla: Cannons need a reload time, the more shells a cannon fired the longer it takes until it is available again for the next fire mission. Tested it and it works well.

@Lawman: In ACE2 SABOT-projectiles are not explosive (which is indeed realistic). Requesting "Tank" shells they do actually drop down, but you can hardly see the impacts. Try it out without ACE2, you will see it works.

Lasermarking works as well, stay with the Routine as it is written in the Manual: Select cannons, setup shell amount, shell type and spread "LASER", confirm the settings, press Execute, then send the laser and keep the target lasered the whole time.

@Meatball: It IS possible to combine it with real cannons, however, not implemented yet (since this system more concerns of REQUESTING, not FIRING). And for me I won't implement it because I have absolutely no experience in the ArmA2 Artillery stuff and have also no ambitions to change that. Instead I provided a script template (the bon_arti_fire_advanced.sqf) where someone else who knows about all that (i.e., firing different cannons or letting AI fire cannons) can implement the firing - all information that might be necessary are provided in this template, as position, which type of artillery was requested, how often a cannon should fire aso aso.

In case you, or someone else might give it a try, PM me, I will help with it as much as I can.

Share this post


Link to post
Share on other sites
@Manzilla: Cannons need a reload time, the more shells a cannon fired the longer it takes until it is available again for the next fire mission. Tested it and it works well.

I figured that out. My apologies.

All works well.

Share this post


Link to post
Share on other sites

changelog:

  • You can apply your current position with simply clicking on the area in the menu where your position is displayed.
  • All players can access their current position when opening the ingame map (even the players who have no access to this menu).

This is definitely starting to look interesting, but I haven't had time to try it yet. However, these two quoted points...

I would much rather like to have to put in the numbers manually, and have the error from input be added to the designated target. Let user select (buttons or dropdown) from a grid system, i.e.

6 Digit Grid (should be fairly easy to work out).

8 Digit Grid (requires more work to interpolate).

10 Digit Grid (might require too much a workload).

Automatic Grid (your current implementation, which I can then disable for higher challenge).

And then type in the numbers manually.

If you want to go "all the way", you can record the fire missions, and let the player call a new mission based on this aimpoint, but add a gun-target-line based shift adjustment. That wouldn't force him to update his coordinate.

Another thing might be prerecorded registrations from known targets. When player opens menu, a list of objects are scanned for in a 2-3km area. When object is found, a hidden marker is added and a dropdown list is filled. Typical objects can be churches and radio masts. When a dropdown is selected, the marker is turned on. This allows shifts from known targets.

I deny players GPS in order to make navigation a bit more challenging. Quote #2 kinda takes that away (if it shows grid coordinate, position have no use).

A game mission should require a marker (can be hidden even) that places the firebase (even if no physical guns are used). Distance from firebase to target should affect time of flight and dispersion. Preferably higher dispersion along the axis of aim (charge varies more than aimpoint).

Distribution should be more than a circular radius. Although it can simulate open and closed sheafs, we'll lack parallel and linear patterns, as well as range and lateral spreads for illumination.

Not criticizing, just giving input and keeping you busy :D

Share this post


Link to post
Share on other sites

I love the new version of your script, it is perhaps the greatest script I have used. The init file is extremely useful. Some suggestions that would make it perfect:

1. A "Rounds complete" message when the fire mission is done.

2. The ability to toggle the flavor text off, make it viewable to the observer only or to put it on the command channel instead of side

Edited by tyrspawn

Share this post


Link to post
Share on other sites

Hi fellas,

@CombatComm: Really :sorry:, forgot about your post.

Fact is, I have nothing to do with Domination, doesn't play it (that often), neither will I ever modify it. You have to ask the Domi Heroes in the Domination thread for this script to be integrated. Same story with Evolution.

@tyrspawn: imo this script is far far away of perfection, but :thanx:, was really happy when I read your post.

  • Just to make that clear first: The whole radio message stuff happens only on your own machine, no other player should be able to read it (would indeed be really annoying, and it would mean unnecessary network traffic).
    To have an option to turn all the chatter on and off might be a good point. But then somehow feedback of what you did would be missing. So best would be to cut only particular messages out, but that leads into too much variety for me to extract it to adjustable options.
    My suggestion just for you: The whole chatter stuff takes place in the bon_arti_request.sqf, just go through the script looking for each line that contains the word "sideChat", and comment it out if you want (by adding two slashes at the beginning of the line).
  • A "round complete" message is missing, because it is a bit complicated to implement in the current script: All the shell-creating / shooting stuff is relocated to the server machine. You setup your fire mission, press Execute, then the radio messages take place in a script running on your own machine, the firing stuff takes place in a script running on the server machine. This architecture has its reasons. ;)
    Now for such "round complete" message I'd need to detect when the server finishes firing, then make only the arty system user show a message that it is finished. Too much effort and too much unnecessary network traffic for this purpose.

There are lot of such small aspects that might be nice to have, but aren't worth the possible performance decrease it could cause. Hope you all agree with that. :cool:

Hf.

Share this post


Link to post
Share on other sites

having some trouble getting this to work...

followed integration steps 1-3; tried to load mission into editor and got this error message: Dom_Duala_Afrene_AI_127.isladuala\bon_artillery\Description.ext, line 0: Config: 'c' after Arik

any idea what I'm doing wrong? had the same problem trying to add this to domination quesh kibrul. haven't tried it on any other missions.

FYI am very new at mission editing.

Share this post


Link to post
Share on other sites
having some trouble getting this to work...

followed integration steps 1-3; tried to load mission into editor and got this error message: Dom_Duala_Afrene_AI_127.isladuala\bon_artillery\Description.ext, line 0: Config: 'c' after Arik

any idea what I'm doing wrong? had the same problem trying to add this to domination quesh kibrul. haven't tried it on any other missions.

FYI am very new at mission editing.

Hehe, that looks like an interesting issue, since there can't be a line 0 in a textfile. Also 'c' after Arik (whatever that means) doesn't seem to be related to anything of the arti script. May you provide me with your code, I'll then check it myself.

Share this post


Link to post
Share on other sites
Hehe, that looks like an interesting issue, since there can't be a line 0 in a textfile. Also 'c' after Arik (whatever that means) doesn't seem to be related to anything of the arti script. May you provide me with your code, I'll then check it myself.

thanks for the quick response. I got it to work, I think I'd put the cfgsounds line in the wrong place. I guess the lesson is don't drink and edit :(

awesome script!

Share this post


Link to post
Share on other sites
Hi fellas,

@CombatComm: Really :sorry:, forgot about your post.

Fact is, I have nothing to do with Domination, doesn't play it (that often), neither will I ever modify it. You have to ask the Domi Heroes in the Domination thread for this script to be integrated. Same story with Evolution.

@tyrspawn: imo this script is far far away of perfection, but :thanx:, was really happy when I read your post.

  • Just to make that clear first: The whole radio message stuff happens only on your own machine, no other player should be able to read it (would indeed be really annoying, and it would mean unnecessary network traffic).
    To have an option to turn all the chatter on and off might be a good point. But then somehow feedback of what you did would be missing. So best would be to cut only particular messages out, but that leads into too much variety for me to extract it to adjustable options.
    My suggestion just for you: The whole chatter stuff takes place in the bon_arti_request.sqf, just go through the script looking for each line that contains the word "sideChat", and comment it out if you want (by adding two slashes at the beginning of the line).
  • A "round complete" message is missing, because it is a bit complicated to implement in the current script: All the shell-creating / shooting stuff is relocated to the server machine. You setup your fire mission, press Execute, then the radio messages take place in a script running on your own machine, the firing stuff takes place in a script running on the server machine. This architecture has its reasons. ;)
    Now for such "round complete" message I'd need to detect when the server finishes firing, then make only the arty system user show a message that it is finished. Too much effort and too much unnecessary network traffic for this purpose.

There are lot of such small aspects that might be nice to have, but aren't worth the possible performance decrease it could cause. Hope you all agree with that. :cool:

Hf.

I think this is an easier "trick" way of doing rounds complete rather than calculating it mathematically... the variable for round delay can be multipled x the number of shells fired for an approximate "rounds complete", and then a sleep equal to that number of seconds could be put in to create the delay. That would just be a single calculation, no "server tracking." I know some things about scripting, just can't script heh.

Share this post


Link to post
Share on other sites
Is there a method to limited the number of ammo ?

thanks to reply

In the file bon_arti_init.sqf you can set number of cannons which will show up in the cannon list by setting HW_Arti_CannonNumber to the desired value. Furthermore the variable HW_arti_number_shells_per_hour can be used to set how many shells you can order within one hour.

Read the manual under "customization" for all the information.

Share this post


Link to post
Share on other sites

Found a bug.. this part of the init file has a localization issue:

//### Specify classes artillery should be restricted to, or leave the array empty

_arti_cond_classes = ["USMC_Soldier_SL","USMC_Soldier_TL","RU_Soldier_SL"];

If i'm the only one on my dedicated server i will have the call artillery command in my action menu, once someone JIPs, I still have it, but the JIP wont. If I respawn I won't have it. if he disconnects I will get it back as soon as he leaves (assuming i'm slotted as FTL or SL)

Is that part of the script supposed to give the arty commands to all players of that class? If not, am I supposed to add something to my init?

Edited by tyrspawn

Share this post


Link to post
Share on other sites

tyrspawn and all,

thanks for your report. I confirm this issue as a JIP problem: the script loads faster than the player needs to initialize (what is not the case at the mission start).

You have the options:

  1. Open the bon_arti_init.sqf and replace the code stated below the "you are finished here" by the following:
    [] spawn {
    if(isServer) then{
    	for "_i" from 1 to HW_Arti_CannonNumber do{
    		Server setVariable [format["Arti_WEST_Cannon%1_available",_i],true,true];
    		Server setVariable [format["Arti_EAST_Cannon%1_available",_i],true,true];
    		Server setVariable [format["Arti_GUER_Cannon%1_available",_i],true,true];
    		Server setVariable [format["Arti_CIV_Cannon%1_available",_i],true,true];
    	};
    	Server setVariable ["Arti_WEST_requestor",ObjNull,true];
    	Server setVariable ["Arti_EAST_requestor",ObjNull,true];
    	Server setVariable ["Arti_GUER_requestor",ObjNull,true];
    	Server setVariable ["Arti_CIV_requestor",ObjNull,true];
    	[] spawn {
    		while{true} do {
    			Server setVariable ["Arti_WEST_shellsleft",HW_arti_number_shells_per_hour,true];
    			Server setVariable ["Arti_EAST_shellsleft",HW_arti_number_shells_per_hour,true];
    			Server setVariable ["Arti_GUER_shellsleft",HW_arti_number_shells_per_hour,true];
    			Server setVariable ["Arti_CIV_shellsleft",HW_arti_number_shells_per_hour,true];
    			if(time>10) then{
    				Server setVehicleInit "
    					[playerSide,'HQ'] sideChat format['Artillery operator: %1 Rounds available.',HW_arti_number_shells_per_hour];
    				"; processInitCommands;
    			};
    			sleep 3600;
    		};
    	};
    };
    };
    if(isDedicated) exitWith{};
    WaitUntil{not isNull player};
    
    _arti_cond_class = "false";
    if(count _arti_cond_classes > 0) then {
    {_arti_cond_class = _arti_cond_class + " || typeOf player == " + str _x } foreach _arti_cond_classes;
    } else{_arti_cond_class = "true"};
    
    _arti_cond_side = "false";
    if(count _arti_cond_sides > 0) then {
    {_arti_cond_side = _arti_cond_side + " || playerSide == " + str _x} foreach _arti_cond_sides;
    } else{_arti_cond_side = "true"};
    
    _arti_cond_weapon = "false";
    if(count _arti_cond_weapons > 0) then {
    {_arti_cond_weapon = _arti_cond_weapon + " || player hasWeapon " + str _x} foreach _arti_cond_weapons;
    } else{_arti_cond_weapon = "true"};
    
    bon_arti_condition = _arti_cond_weapon + " && " + _arti_cond_other;
    
    arti_dlgUpdate = compile (preprocessFileLineNumbers (BON_ARTI_PATH+"bon_arti_func_dlgUpdate.sqf"));
    arti_func_keyspressed = compile (preprocessFileLineNumbers (BON_ARTI_PATH+"bon_arti_func_keyspressed.sqf"));
    arti_func_getSplashPos = compile (preprocessFileLineNumbers (BON_ARTI_PATH+"bon_arti_func_getSplashPos.sqf"));
    arti_func_getLaser = compile (preprocessFileLineNumbers (BON_ARTI_PATH+"bon_arti_func_getlaser.sqf"));
    sleep 0.1;
    
    if(local player && call compile _arti_cond_side && call compile _arti_cond_class) then {
    if(HW_arti_show_pos_on_map) then{
    	(findDisplay 46) displayAddEventHandler ["KeyDown","_this call arti_func_keyspressed"];
    };
    player addAction ["<t color='#FFCC00'>Call Artillery</t>",(BON_ARTI_PATH+"dialog\openMenu.sqf"),["Arti_dlg"],-1,false,true,"",bon_arti_condition];
    player addEventHandler ["Killed",{
    	[] spawn {
    		player removeAction bon_arti_action;
    		WaitUntil{alive player};
    		bon_arti_action = player addAction ["<t color='#FFCC00'>Call Artillery</t>",(BON_ARTI_PATH+"dialog\openMenu.sqf"),["Arti_dlg"],-1,false,true,"",bon_arti_condition];
    	};
    }];
    };
    
    
    if(true) exitWith{};
    

  2. Download the script again and insert it into your mission, replace the default settings in the bon_arti_init.sqf ABOVE the "you are finished here" with your own settings. There are some minor improvements in it (small traffic decreases, performance improvements) which, I think don't deserve to be called an update, but to be announced here ;)
    Location of changes (as mentioned before: these changes are minor improvements, no fixes):
    • file rename: bon_artillery\Description.ext -> bon\artillery\cfgSounds.sqf
    • in Description.ext: #include "bon_artillery\Description.ext" -> #include "bon_artillery\cfgSounds.sqf"
    • bon_artillery\bon_arti_init.sqf lines 52-EOF
    • bon_artillery\dialog\openMenu.sqf lines 9,10

    Found a bug.. this part of the init file has a localization issue:

    //### Specify classes artillery should be restricted to, or leave the array empty

    _arti_cond_classes = ["USMC_Soldier_SL","USMC_Soldier_TL","RU_Soldier_SL"];

    If i'm the only one on my dedicated server i will have the call artillery command in my action menu, once someone JIPs, I still have it, but the JIP wont. If I respawn I won't have it. if he disconnects I will get it back as soon as he leaves (assuming i'm slotted as FTL or SL)

    Is that part of the script supposed to give the arty commands to all players of that class? If not, am I supposed to add something to my init?

Edited by Bon

Share this post


Link to post
Share on other sites

Thanks much!

FYI:

Description.ext was missing from the zip on the site. I had to copy it over from an old release.

It also says to import that file into the cfgsounds class in the manual. This causes preprocessor to crash.

Question:

Think you could tip me off to how to add in some delays? I want an X second delay between "Shot,over", another X second delay between "splash, over" and another X second delay after it before shells land down. If you don't feel like explaining ill just dig into the script, but was hoping for a hint.

Edited by tyrspawn

Share this post


Link to post
Share on other sites

I'm having trouble running your great looking mod,Ive added all your files,into the editor,and it all goes well,it plays through apart from the artillery never lands.Im using ACE,CBA and a few others etc, it finds the target ok,the radio chatter comes through,it says its prepare for splash(or similar). Im only using the laser method i have try'd various other ways but no joy.

Has anybody else had similar problems,that you could shed some light on the matter for me?

Sorry i've sorted it,i didnt hit confirm!!!! thats held me up for about 3hrs!

next time pay attention to the videos!!!

Edited by nukey

Share this post


Link to post
Share on other sites

Bon: any chance I could talk to you on MSN/skype? Found more issues with your script and multiplayer. Trying to make it a standard feature of my multiplayer campaign... and having more JIP and multiplayer issues.

Share this post


Link to post
Share on other sites

I have followed every step you have in the directions. But it is not working, why is this? it does not give me the option to call artillery.

---------- Post added at 04:34 PM ---------- Previous post was at 04:21 PM ----------

Ok got the option finally. But the shells never actually hit. do i need to put artillery units on that map?

Share this post


Link to post
Share on other sites

Total editing noob here :o

What exactly do you do with:

Now, you might probably have a CfgSounds class

defined already, then only copy the line

#include “bon_artillery\Description.extâ€

INTO your CfgSounds class.

I wouln't even know where to find 'CfgSounds class' ,let alone define it?

The rest of the install explanations in the manual, I can find where I need to put them, however it feels asthough I'm missing a couple of obvious steps.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×