f3cuk / wicked-ai Goto Github PK
View Code? Open in Web Editor NEWWicked AI missions for your server
Wicked AI missions for your server
Enhancement for 2.2.0
Thanks to justchil for the idea
I know you're aware of this problem... it's become a major problem on a map I'm trying to populate. Reference: http://epochmod.com/forum/index.php?/topic/15671-release-wicked-ai-214/page-58#entry138625
I have anywhere from 5-20 players on my Lingor server and they are begging to have this fixed. I could probably extort a donation or two towards the cause lol.
I would recommend to move the variable wai_radio_announce from config.sqf to remote/remote.sqf.
This makes sure that wai_radio_announce is only enabled if the remote/remote.sqf is included in the mission/init.sqf and then auto enables it. This is possible because wai_radio_announce is a global variable and the game does not care where it got defined.
new remote/remote.sqf:
if (isServer) then {
wai_radio_announce = true;
};
if (!isDedicated) then {
current content of remote/remote.sqf
};
Soon as the heli crashes from being shot down there could be 3 dead bodies that spawn outside the chopper on the ground all with differing loot types and quantities. That way there is some reward for shooting down the heli that likes to pepper random vehicles with death from above. If you get to close to the heli patrol or choose to shoot at it, then you encounter substantial risk which should carry a reward for successfully eliminating the threat.
today i had this in my error log:
it came up while some bandits got para dropped after one of my players cleared an ikea mission.
23:15:34 Error in expression <tion = wai_mission_data select _mission select 3;
};
{
_x setVariable ["Aggress>
23:15:34 Error position: <select 3;
};
{
_x setVariable ["Aggress>
23:15:34 Error select: Type Number, expected Array,Config entry
23:15:34 File z\addons\dayz_server\WAI\compile\bandit_behaviour.sqf, line 14
In the next update can you add an option to have multiple mission running at the same time. If I have time I will write the code myself and make a pull request if that is ok with you.
16:25:33 Error in expression <um = (wai_mission_data select _mission) select 0;
wai_mission_data select _missi>
16:25:33 Error position: <select 0;
wai_mission_data select _missi>
16:25:33 Error select: Type Number, expected Array,Config entry
16:25:33 File z\addons\dayz_server\WAI\compile\heli_para.sqf, line 231
Hi,
can i have something wrong(missing) in my setup or its bug/normal behavior with ammoboxes in static/chernarus.sqf
i have setup there small bandit camp, with 2 spawned vehicles, AI, static guns all working fine but boxes dissapear after several minutes after restart (i dont look at yet it preciesly, but seems like there is connection with beginnig or ending of first mission after server restart)
there is no error in RPT, or elsewhere
i have this:
private ["_bedny_skalisty1","_crate_type_skalisty1",
"_bedny_skalisty2","_crate_type_skalisty2",
"_bedny_skalisty3","_crate_type_skalisty3",
"_vehicle1","_vehclass1",
"_vehicle1","_vehclass1"];
_crate_type_skalisty1 = crates_large call BIS_fnc_selectRandom;
_crate_type_skalisty2 = crates_large call BIS_fnc_selectRandom;
_crate_type_skalisty3 = crates_large call BIS_fnc_selectRandom;
_bedny_skalisty1 = createVehicle [_crate_type_skalisty1,[13702.116, 2902.0452, -3.4332275e-005],[],0,"CAN_COLLIDE"];
_bedny_skalisty2 = createVehicle [_crate_type_skalisty2,[13720.502, 2888.4939, -7.6293945e-006],[],0,"CAN_COLLIDE"];
_bedny_skalisty3 = createVehicle [_crate_type_skalisty3,[13715.475, 2892.6902, -3.0517578e-005],[],0,"CAN_COLLIDE"];
[_bedny_skalisty1,[10,ai_wep_sniper],[10,crate_tools_sniper],[7,crate_items_high_value],[4,crate_backpacks_large]] call dynamic_crate;
[_bedny_skalisty2,[10,ai_wep_machine],[10,crate_tools_buildable],[15,crate_items_food],[2,crate_backpacks_large]] call dynamic_crate;
[_bedny_skalisty3,[10,ai_wep_assault],[10,crate_tools],[40,crate_items_buildables],[2,crate_backpacks_large]] call dynamic_crate;
sorry for posting here, but on epochforum i cant make posts in your thread (i have fresh account)
Epoch 1.0.5.1 - no infistar, DZAI, WAI 2.1.4
thx for reply
Are there any plans to have AI start with 12000 blood and could get knocked out, bleed, self bandage/bloodbag etc?
Due to performance hit of assigning eventhandlers per AI when using large static missisions, it should be globally switchable, or possibly a variable passed to the spawn scripts?
Okay so i'm currently testing the Testbranch and i noticed a problem with making Zeds hostile to AI. Not only is the AI attacking Zombies now, it's also attacking stuff like player bases.
Im guessing CIVILLIAN is used for more then just the zombies. Removed it for now.
Hello, i am using this version of WAI with a couple of changes and additions to some missions, but no changes that i believe would cause this issue. Running Epoch Chernarus 1.0.5.1 / 125548.
In config.cfg i have:
wai_use_launchers = true; // add a rocket launcher to each spawned AI group
wai_remove_launcher = true; // remove rocket launcher from AI on death
and
ai_wep_launchers_AT = ["MAAWS","RPG18"];
ai_wep_launchers_AA = ["Strela","Igla"];
If i understood correctly this should spawn one AI unit in every group with a rocket launcher? However i am yet to come across a single rocket launcher/get fired at by AI with one in the few months i have had the missions running. No errors in .RPT and i haven't had time to attempt to see what may be the problem. Do think i read about someone having the same problem a few months ago on epochmod.com.
Can anyone confirm this issue, or have i fekked up somewhere? Thanks.
Found this, might be a way to go
_veh = vehicle _unit;
if ((_veh isKindOf "GAZ_Vodnik") or (_veh isKindOf "BRDM2_Base")) then {
SPAWN TANK
};
I have tested this many of times i noticed if you drive in to the mission you hit 10000 de-sync and the ai just stop moving Only effects the person that was in the vehicle not the hole server
can you please specify in the config.sqf for wai_kill_percent what different values = is 100 = 100% or does 0=100%
AI are spawning in random places which are not related to mission positions.
Yesterday i updated infistar, which is provided by GTX. I haven't seen such behaviour earlier.
mod is overpoch, map is napf
hey F3cuk like your version of Wai and i got a question where do you change the weapon loot like in the ammo boxes like you could on other i cant find the code string for it and no ammobox.sqf files ether
im making a Overpoch/napf and want to add loot from that table
thanks in advance
Just whantede to talk about standard mode the AI should be in, both Bandits and Hero's
BLUE (Never fire)
When hostile units are detected, they will track them, but will never fire back, even when fired upon.
This mode can only be set through the editor or script. No in-game commands to subordinates can set them to combat mode Blue.
GREEN (Hold fire - defend only)
When a player orders his units to "Hold fire", the units are set to combat mode Green.
WHITE (Hold fire, engage at will)
YELLOW (Fire at will)
If AI spots a target and decides it is in effective range, he will open fire. By default AI is set to YELLOW.
If a leader calls Target, the unit with aim without breaking formation.
RED (Fire at will, engage at will)
When a leader commands his units to Engage at will, combat mode RED is set. The AI does not keep formation and each member moves individualy. The leader command Disengage will set the units back to fire at will (YELLOW)
If Attack and Engage is called, the unit will break formation to find the best place to attack from (combat mode RED)
SAFE, CARELESS - Units will try to stay on roads, not caring about finding any cover
AWARE - Units try to stay mostly on roads, occasionally using cover
COMBAT, STEALTH - Units will try to utilize cover whenever possible
SAFE, CARELESS - Units will stay upright
AWARE, COMBAT - Units will stay upright most of the time, kneeling down occasionally
STEALTH - Units will be prone most of the time
Just got the idea instead of using the crashed version why not use the "flying" model and let the mission say bandit a loading gun/money on the plane stop them before it takes off.
If we use the dayz plane we can make it so when the mission end the plane/ heli flyes away :)
What about we suspend spawning in any objects / AI until a player gets withing X meters of the mission. This should prevent the server spending unnecessary resources.
Right now indicators don't work, they always show green even though individual parts are damaged.
Hello, i am using this version of WAI with a couple of changes and additions to some missions, but no changes that i believe would cause this issue. Running Epoch Chernarus 1.0.5.1 / 125548.
In config.cfg i have:
wai_clean_mission = true; // clean all mission buildings after a certain period
wai_clean_mission_time = 30; // time after a mission is complete to clean mission buildings
and in each mission (where applicable) i have:
_baserunover = createVehicle blah
and
_complete = [
[_mission,_crate], // mission number and crate
["crate"], // ["crate"], or ["kill"], or ["assassinate", _unitGroup],
[_vehicle,_baserunover], // cleanup objects
Now the objects/vehicles get cleaned up perfectly if the mission was to time out. However the mission doesn't get cleaned up if it gets completed. I tested by completing a mission, waiting for over 10 minutes and returning to the mission pos, everything was still there. I would like all the stuff to get cleaned up approx 5-10 mins after mission completion.
Anyone confirm this or am i doing something incorrectly. Haven't gotten any errors and i doubt my changes would cause this. (lets hope)
Hero President In Town
Mayors Mansion (thing it has already been said just making sure)
I think we need to switch logic cause right now we are confusing players. I think hero missions should be missions with heroes in them and bandit missions the other way around.
Use with the a3 version
epoch have there own vests and hats
http://epochmod.com/forum/index.php?/topic/29738-finding-item-ids/
Could be
Easy = blue
Hard = yellow
Extreme = red
Since this project most Likely will be a total rewrite of WAI I think it should have its own name ?
And since we make a lot of core code changes we should use an code version system like http://semver.org
I've noticed they try to engage tank traps quite frequently, I've not looked too much further into this yet
had a report of a player killed 10 AI at the "[Mission:[Bandit] Armed Vehicle]" was in the vicinity of the crate, he said he was near one of the vehicles that spawn for the mission.. the mission said no one completed it in time and the server cleaned it all up, including the dead bodies.
Hero AI (at the hero missions) WILL not shoot at hero players, even if you murder another AI right next to them. How ever, the Mounted AI will shoot at Hero's even if you didn't kill a hero first
The current solution for the new remote message has some problems that wasts a lot of resources, because you send a lot of publicVariables, which causes a lot of desyncs etc...
Two solutions:
1.
{
if((isPlayer _x) && (_x hasWeapon "ItemRadio")) then {
customRemoteMessage = ["systemChat","[RADIO] " + _msgstart,_x];
publicVariable "customRemoteMessage";
};
} count playableUnits;
Change this code to use publicVariableClient:
_clientID = owner _x;
_clientID publicVariableClient "customRemoteMessage";
Guess the best solution would be to place the check:
if(player hasWeapon "ItemRadio") then {
clientside to this place:
if (_player == player) then {
best regards
Legodev
The vehicle_patrols are way too easy to take out compared to normal player vehicles.
The AI vehicle armored HMMWV i was able to blow up with 1 DMR mag, whilst a normal armored HMMWV is much harder to take out.
Is there any way we can make the AI vehicle patrol cars harder to blow up?
In my old WAI it was easy to add launchers.. now.. Its a tad different. I run a militarised server and need Smaws and Stingers to protect the missions.
Would it be possible to have an option in the config to switch between it broadcasting over titletext and using radio (sidechat) instead or something else where you require a radio to receive the mission notification, I mean sure people could still see it on map but it'd give those with a radio and who are paying attention a head start. Also I'd allow people to scroll back through the mission notifications to see what's come up.
Just found this code in the Sarge AI. Thought it was better then a minefield ?
AI will lay down mines if there are enemy armour nearby.
//If use statics are enabled leader searches for static weapons near.
// Tanks enemies are contabiliced
if ( KRON_UPS_useMines && _Mines > 0 ) then {
_enemytanksnear = false;
{
if ( ("Tank" countType [_x] > 0 || "Wheeled_APC" countType [_x] >0
|| "Tank" countType [vehicle _x] > 0 || "Wheeled_APC" countType [vehicle _x] >0 )
&& alive _x && canMove _x && _npc distance _x <= _closeenough + KRON_UPS_safedist )
exitwith { _enemytanksnear = true; _enemytanknear = _x;};
} foreach _targets;
//If use mines are enabled and enemy armors near and no friendly armor put mine.
if ( _enemytanksnear && !isnull _enemytanknear && alive _enemytanknear ) then {
_friendlytanksnear = false;
{
if (!( alive _x && canMove _x)) then {_friendlytanks = _friendlytanks - [_x]};
if (alive _x && canMove _x && _npc distance _x <= _closeenough + KRON_UPS_safedist ) exitwith { _friendlytanksnear = true;};
}foreach _friendlytanks;
if (!_friendlytanksnear && random(100)<30 ) then {
_dir1 = [_currPos,position _enemytanknear] call KRON_getDirPos;
_mineposition = [position _npc,_dir1, 25] call MON_GetPos2D;
_roads = _mineposition nearroads 50;
if (count _roads > 0) then {_mineposition = position (_roads select 0);};
if ([_npc,_mineposition] call MON_CreateMine) then {
_Mines = _Mines -1;
if (KRON_UPS_Debug>0) then {diag_log format["%1: %3 puting mine for %2",_grpidx,typeof _enemytanknear, side _npc]};
};
};
};
};``
DMR should be DMR_DZ for ai_wep_sniper in config.cfg
So after testing the current setup for a while i found that spawning locations are still a bit buggy and missions often spawn in certain area's. The blacklist is still being ignored (might be setup incorrect).
Think we should revisit the default settings and set stuff like nearRoad to 0. It's good to have the options, but maybe not by default.
The mission starts and loads on the logs soon as it starts
But when you complete in game and check the logs nothing comes up
Then 5 / 10 minutes later it finally comes up in the logs saying completed
This also throws off the timer and missions take double the time to spawn
Don't know if anyone has noticed just thought ill post it :)
I get this
22:19:47 Error in expression <e = NEWBSARRAY select _i;
if (time - _time < 300) then
{
_uid = NEWBSA>
22:19:47 Error position: <_time < 300) then
{
_uid = NEWBSA>
22:19:47 Error Undefined variable in expression: _time
22:19:47 "nil player object attempting PV, :["","SERVER"]"
Then is does a static restart
Notched it only happens sometimes when mission starts or finishes
since AI might still be alive at the capture mission the check:
if(ai_ground_units == 0 && ai_vehicle_units == 0) then {
_playerPresent = true
};
will always fail, I'm pretty sure I know of a good workaround for this if you'd like me to go ahead with it
Hey guys,
Would you mind help me test the current set of files? I've been doing that today and think we are not far from release, but i wanna make sure not to overlook anything drastic.
Cheers,
f3cuk
Might be fun to do this.
_dayTime = dayTime;
if (_dayTime > 18.5 && _dayTime < 6) then {
// NIGHT
_smokeMarker = "ARTY_Flare_Medium" createVehicle getPosATL _loot_box;
_smokeMarker setPosATL (getPosATL _loot_box);
_smokeMarker attachTo [_loot_box, [0,0,0]];
} else {
// DAY
_smokeMarker = "smokeShellPurple" createVehicle getPosATL _loot_box;
_smokeMarker setPosATL (getPosATL _loot_box);
_smokeMarker attachTo [_loot_box,[0,0,0]];
};
How about a Heli Patrol that spawns only once certain conditions are met?
Here is my dirty hack I put into a static mission. It checks for when the number of static weapon placements have been reduced to less than 12 (18 to start with) and then at sometime in the next minute it will spawn a heli patrol.
[[13620.5,2946.62,0],[15144.0,232.000,0],200,10,"UH60M_EP1_DZ","hard","Random","Bandit"] spawn {
private ["_undeployed","_patrolpos","_spawnpos","_patrolrad","_waypoints","_heli","_skill","_skin","_type","_condition","_value"];
_undeployed = true; // Heli Patrol has not been deployed
_patrolpos = _this select 0;
_spawnpos = _this select 1;
_patrolrad = _this select 2;
_waypoints = _this select 3;
_heli = _this select 4;
_skill = _this select 5;
_skin = _this select 6;
_type = _this select 7;
_value = 12;
while {_undeployed} do {
_condition = ai_emplacement_units;
if(debug_mode) then { diag_log format["WAI: Skalisty mission heli-patrol test for %1 < %2", _condition, _value]; };
if (_condition < _value) then {
if(debug_mode) then { diag_log format["WAI: Skalisty mission heli-patrol spawning for %1 < %2", _condition, _value]; };
[
_patrolpos,
_spawnpos,
_patrolrad,
_waypoints,
_heli,
_skill,
_skin,
_type
] spawn heli_patrol;
_undeployed = false; // Heli Patrol has been deployed, do not deploy another
};
sleep 60;
};
};
I'm only a dirty hacker (copy/paste/debug) but I assume you could add _condition & _value and the loop into the heli_patrol code?
Mayor mission spawned and completed in about 10 seconds
16:20:59 "WAI: [Hero] mayors_mansion started at [5403.08,13170]"
16:20:59 "WAI: Spawned a group of 4 AI (Bandit) at [5403.08,13170,0]"
16:21:00 "WAI: Spawned a group of 4 AI (Bandit) at [5403.08,13170,0]"
16:21:00 "WAI: Spawned a group of 4 AI (Bandit) at [5403.08,13170,0]"
16:21:00 "WAI: Spawned a group of 4 AI (Bandit) at [5403.08,13170,0]"
16:21:01 "WAI: Spawned a group of 1 AI (Bandit) at [5403.08,13170,0]"
16:21:01 "WAI: Spawned in 2 M2StaticMG"
16:21:09 "WAI: [Hero] mayors_mansion ended at [5403.08,13170]"
missions compete with AI still alive and wai_kill_percent = 0;
Hi guys
Love the many updates, but every time i have to change my config settings :/
would be nice of we could make and config file where an server admin could but his changes in and they would overrid the defaults. but the file would not be overwritten be updates..
hope you get my idea
When you take a skin from one of the AI, It gives one a random skin from one of the AI and doesn't allow you to do it from any of them after that (killed 16 of them, took a skin from one, all of them lost the ability to give the skin after and the one i was trying to pull from didnt even give me the skin i was pulling.. )
13:35:49 Error in expression < getVariable["actionSet", false];
if (!_actionSet) then {
s_player_holderPickup>
13:35:49 Error position: <_actionSet) then {
s_player_holderPickup>
13:35:49 Error Undefined variable in expression: _actionset
13:35:49 File z\addons\dayz_code\init\object_BackpackAction.sqf, line 13
This bug is do to an error in the backpack config file in epoch 1.0.5.1
, its should be fixed in 1.0.5.2
Just went true Sarge AI and sow he had a lot of debugging and I thought we should also have it :)
// DEBUG
if (wai_debug) then {
diag_log "I do stuff";
};
but do we want more debug levels ? sarge have 2-3 levels...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.