-
Content Count
2494 -
Joined
-
Last visited
-
Medals
Posts posted by sarogahtyp
-
-
Sorry I cant help with that wierd flying objects.
I think the given Information is not enough to analyze the problem. I posted which Info is needed.
My recommandation is that u first implement the HC manually as described in the common HC tutorials before u try to use that auto detection script.Do u know if ur Game Logics name is the same as used in that detection script? If not then equalize it.
-
I only had the first problem, when I was trying to convert a mission with no unit selected as player.
The second error is probably caused by a mod.
I had the same problem. And it is solved by selecting one unit as player unit in 2D editor. After that my import to eden worked fine.
-
Could u post ur code for implementing the HC, your command lines for server and HC and both profile files and servers server.cfg please?
Maybe someone could help u then.
-
thank u for ur answers guys i ll think about the whole thing and decide if i choose the solution of dux2.
the code posted at first post was an example only.
my intention is to have all information pinned at objects to easy run needed stuff at HC if it gets reconnected after disconnect.
the main reason is an issue with linux hc/server connection as u can see here:
http://feedback.arma3.com/view.php?id=27172
but u should use google cache to read it cause feedback tracker is down.
DEV container for WIP:
Spoilerif (!isServer) exitWith {true}; /* Author: Sarogahtyp Title: SSSS - Sarogahtyps Simple Server Statistics Description: Arguments: number - refresh time in seconds Return value: boolean - true if script has been finished */ _report_HC_base_string = "Saro_HC_stats_report_"; _report_plyr_base_string = "Saro_HC_stats_report_"; _report_HC_reply_timeout = 5; _report_plyr_reply_timeout = 10; _admin_check = []; _admin_obj = objNull; while {true} do { // wait for a logged in admin waitUntil { sleep (20 + random 20); _admin_check = (allPlayers - entities "HeadlessClient_F") select {(admin owner _x) != 0}; (count _admin_check > 0) }; _admin_obj = admin_check select 0; //throw infos as long as admin is logged in while {(admin owner _admin_obj) != 0} do { // collect server infos _s_fps = str diag_fps; // frames per second _s_just_players = allPlayers - entities "HeadlessClient_F"; // all player objects _s_plyr_num = count _just_players; // number of players _s_just_HCs = entities "HeadlessClient_F"; // all HC objects _s_HC_num = count _just_HCs; // number of headless clients _s_a_grp_num = {local _x and {alive _x} count units _x > 0} count allGroups; // all groups where alive units in _s_e_grp_num = {local _x and (count units _x) == 0 } count allGroups; // empty groups _s_d_grp_num = {local _x and ({alive _x} count units _x) == 0}count allGroups; //groups where only deads in _s_unit_num = {local _x} count allUnits; // living units _s_vec_num = {local _x} count (vehicles - entities "WeaponHolderSimulated"); // living vecs _s_wh_num = {local _x} count (entities "WeaponHolderSimulated") //weapons on ground _s_al_ent_num = {local _x} count entities [[], [], true, true]; // alive entities _s_de_ent_num = {local _x} count entities [[], ["Logic"], true]; //dead entities except logic //request not local on server available infos from HCs and players remotely //send request to all players for "_i" from 0 to (_s_plyr_num - 1) do { _str = format ["%1%2", _report_plyr_base_string, _i]; missionNamespace setVariable [_str, []]; [_str] remoteExecCall ["Saro_fnc_report_stats_to_server", (_s_just_players select _i)]; }; if (_s_HC_num > 0) then { // send request to all headless clients for "_i" from 0 to (_s_HC_num - 1) do { _str = format ["%1%2", _report_HC_base_string, _i]; missionNamespace setVariable [_str, []]; [_str] remoteExecCall ["Saro_fnc_report_stats_to_server", (_s_just_HCs select _i)]; }; //wait for reply of all HCs or break after timeout _break_time = diag_tickTime + _report_HC_reply_timeout; waitUntil { sleep (0.1 + random 0.1); _sum = 0; for "_i" from 0 to (_s_HC_num - 1) do { _str = format ["%1%2", _report_HC_base_string, _i]; if (count (missionNamespace getVariable _str) > 0) then { _sum = _sum + 1; }; (_sum == _s_HC_num or diag_tickTime > _break_time) }; }; //waitUntil end }; // HC_num > 0 end //wait for reply of all players or break after timeout _break_time = diag_tickTime + _report_plyr_reply_timeout; waitUntil { sleep (0.5 + random 0.5); _sum = 0; for "_i" from 0 to (_s_plyr_num - 1) do { _str = format ["%1%2", _report_plyr_base_string, _i]; if (count (missionNamespace getVariable _str) > 0) then { _sum = _sum + 1; }; (_sum == _s_plyr_num or diag_tickTime > _break_time) }; }; //waitUntil end //get local on server available infos for HCs and players //get local HC infos if (_s_HC_num > 0) then { for "_i" from 0 to (_s_HC_num - 1) do { _str = format ["%1%2", _report_HC_base_string, _i]; _tmp_array = missionNamespace getVariable _str; _owner_ID = owner (_s_just_HCs select _i); _tmp_array pushBack {groupOwner _x == _owner_ID and {alive _x} count units _x > 0} count allGroups; // all groups where alive units in _tmp_array pushBack {groupOwner _x == _owner_ID and (count units _x) == 0 } count allGroups; // empty groups _tmp_array pushBack {groupOwner _x == _owner_ID and ({alive _x} count units _x) == 0 }count allGroups; //groups where only deads in _tmp_array pushBack {owner _x == _owner_ID} count allUnits; // living units _tmp_array pushBack {owner _x == _owner_ID} count (vehicles - entities "WeaponHolderSimulated"); // living vecs _tmp_array pushBack {owner _x == _owner_ID} count (entities "WeaponHolderSimulated") //weapons on ground _tmp_array pushBack {owner _x == _owner_ID} count entities [[], [], true, true]; // alive entities _tmp_array pushBack {owner _x == _owner_ID} count entities [[], ["Logic"], true]; //dead entities except logic missionNamespace setVariable [_str, _tmp_array]; }; }; // HC_num > 0 end for "_i" from 0 to (_s_plyr_num) do { _str = format ["%1%2", _report_plyr_base_string, _i]; _tmp_array = missionNamespace getVariable _str; _owner_ID = owner (_s_just_players select _i); _tmp_array pushBack {groupOwner _x == _owner_ID and {alive _x} count units _x > 0} count allGroups; // all groups where alive units in _tmp_array pushBack {groupOwner _x == _owner_ID and (count units _x) == 0 } count allGroups; // empty groups _tmp_array pushBack {groupOwner _x == _owner_ID and ({alive _x} count units _x) == 0 }count allGroups; //groups where only deads in _tmp_array pushBack {owner _x == _owner_ID} count allUnits; // living units _tmp_array pushBack {owner _x == _owner_ID} count (vehicles - entities "WeaponHolderSimulated"); // living vecs _tmp_array pushBack {owner _x == _owner_ID} count (entities "WeaponHolderSimulated") //weapons on ground _tmp_array pushBack {owner _x == _owner_ID} count entities [[], [], true, true]; // alive entities _tmp_array pushBack {owner _x == _owner_ID} count entities [[], ["Logic"], true]; //dead entities except logic missionNamespace setVariable [_str, _tmp_array]; }; sleep (15 + random 15); }; // info while end }; // endless while (end) /* Author: Sarogahtyp Title: SSSS - Sarogahtyps Simple Server Statistics Function Name: Saro_fnc_report_stats_to_server; Description: function used via remote execution by server to recieve some statistical infos Arguments: String - name of global variable which should returned to server by publicVariableServer Return value: true */ params ["_ret_string"]; _tmp_info_array = []; _tmp_info_array pushBack str player; _tmp_info_array pushBack diag_fps; missionNamespace setVariable [_ret_string, _tmp_info_array]; publicVariableServer _ret_string; true
-
I ve some vehicles with variables in their variable space and I want to have them broadcasted betwenn headless client (HC) and server.
_squad setVariable["respawtime", 300];
I know that i could set the parameter public to true to broadcast it to all.
_squad setVariable["respawnable", 300, true];
But thats more network traffic than I need.
Is there a way to use publicVariableServer and publicVariableClient to broadcast that variable?
Or is the variable also transferred if I use setOwner to transfer the ownership between server and HC?
Thanks a lot for any advice.
-
IndeedPete gave u all u need!
You might want to do the tutorials (button in the top right corner) or consult the wiki: https://community.bistudio.com/wiki/Eden_Editor:_Introduction
But i copied the image for u:
-
I m very unhappy with that new mission.sqm format.
I used the mission.sqm to look for objects and their names, modify their init lines and to get the class names of the objects for my scripts in a fast way.
I think the mission.sqm format should be convertable from edens binary to text format and vice versa.
For me there is no need for the old 2d editor but i would appreciate to know there is a fall back option.
What I need for sure is an editable mission.sqm
-
1
-
-
...and hint format ["%1",owner HC1] returns 2, so, server....
Maybe I m wrong but I think 1 is server and 2 is the first connected client. I read that in a tutorial, I will post the link if i know where it was.
-
I thought about it again and i think i ve a workaround but one question remains.
My solution would be to rename the game logic to HC_D_UNIT2
then I could check the HC_D_UNIT2 for a present HC and link it to Xenos HC_D_UNIT:
if (!(isNil "HC_D_UNIT2") and !(isNull HC_D_UNIT2)) then { HC_D_UNIT = HC_D_UNIT2; _hc_present = true; } else { HC_D_UNIT = owner ServerObject; // any object hosted by server _hc_present = false; };
With that code I can switch Xenos HC_D_UNIT between Server and my HC and I could detect if HC is present and store it in _hc_present.
But will that work?
Especially the if then condition.
The question is, will the game logic now named HC_D_UNIT2 change to Null if the HC gets disconnected?Thank you for any help.
-
I can confirm that issue at domination map hosted on dedicated linux server.
If I connect with my client PC i get a bird/crow sometimes.
If I disconnect to lobby and choose another role/player then i can connect and play as usual.
If I diconnect to lobby again after that and choose the first role where i became a bird then i can play as soldier again, too.
That happend 2 times today.
And no i ve none hacked, cracked content on my PC.
Edit: I forgot to say that I imported the mission for use with eden 3d editor and uploaded it to the dedicated server with those mission.sqm which is in eden format now.
-
As far as I know you can spawn everything with createVehicle.
Why not trying createVehicleLocal to spawn ur AI?
I ve not tested anything, just a suggestion.
-
Hello guys,
in arma 3 there is an already opened issue.
The issue is that a linux headless client (HC) which is connected to a linux game server gets kicked for signature timeout after some time.
The command line parameter -cpucount=1 passed at HC start can extend the time until it gets kicked from some minutes (without cpucount=1) to some hours. In my case the HC gets kicked after nearly exact 3 1/2 hours.
I wrote a script at my linux machine which reconnects the HC after it was kicked within a minute.
Now the problem.
I m editing a domination map created by Xeno to implement some minor features.
I want that features executed at HC if it is connected.
I know that I can detect HC with
if (!isNil "HC_D_UNIT") then { _hc_present = true; };
Where HC_D_UNIT is the name of the HCs game logic.
What Xeno did in his d_init.sqf is something like that:
if (isNil "HC_D_UNIT") then { HC_D_UNIT = _this; };
_this represents the server which means if I try to detect the HC as mentioned above then _hc_present is always true because it points to the server now.
I think Xeno did that to ensure that all work which is thought to be done by HC should be done by server if HC is not connected until a timout.
I wont change Xenos code cause i dont know what depends on it.
What I need now is another method to detect if the HC is present or not.
Thank you for any advise.
-
Hey guys, i think i m doin a little mistake in my addon creation.
The addon i try to create is called inidb. I know that there is a downloadable release but its library (inidb.dll) is for windows only.
I downloaded the library linux sources from git hub (https://github.com/newtondev/inidb-linux) and compiled them to the needed inidb.so file for my virtual linux server.
The unpacked addon is part of that download and consists of a config.cpp file and a init.sqf.config.cpp:
class CfgPatches { class iniDBI { units[] = {}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {}; init = "call compile preprocessFileLineNumbers '\inidb\init.sqf'"; }; };
Those 2 files are the content of the folder inidb which i packed with cpbo to inidb.pbo
My folder structure at server is as described at git hub:
@inidb (folder)
db (folder)
inidb.so (file)
addons (folder)
inidb.pbo (file)
Im starting my server with the option: -mod=@inidb
Generaly my dedicated linux server is able to handle mods. I have other mods (not self created) which are running fine.
In my mission which should use the addon i ve the following init.sqf file:
init.sqf
if(isServer) then { call compile preProcessFile "\inidb\init.sqf"; };
The log file at server produces the following line:
Warning Message: Script inidb\init.sqf not found
I think there are 2 things which could cause this message and i need your help to get a clue whats goin wrong.
It could be that i did a mistake with the path to the addons init.sqf file.
The other thing could be that the addon is not loaded by the server for some reason, but i dont know.
I googled that problem fo a week and i tried other pathes as described above and i tried to autostart the script by setting up a module in config.cpp and in my mission. But nothing helped, i cant get it working.
Edit:
Ok, 24 hours r gone since i posted this, 50 views and no little answer. I think i m doin something wrong with that thread. For that reason i try to simplify it to some questions:
How defines an addon the path to its scripts?
Is it defined by the folder which was packed with cpbo?
What does that $PREFIX$ file do i read about? Do i need those file in my case and which content would be correct?
The script file in the addons pbo-file should be called from a script in my mission with call compile preProcessFile "\inidb\init.sqf"; what is to do that this works?
Are there any reasons which could cause a server to not load an addon?
Guys ur help would be very appreciated cause i m stuck with the creation of my mission and cant do a little step forward until the problem with that addon is solved.
**********************************************************
code container for WIP:
if (!isServer) exitWith {true}; /* Author: Sarogahtyp Title: SSSS - Sarogahtyps Simple Server Statistics Description: Arguments: number - refresh time in seconds Return value: boolean - true if script has been finished */ _admin_check = []; _admin_obj = objNull; while {true} do { // wait for a logged in admin waitUntil { sleep (20 + random 20); _admin_check = (allPlayers - entities "HeadlessClient_F") select {(admin owner _x) != 0}; (count _admin_check > 0) }; _admin_obj = admin_check select 0; //throw infos as long as admin is logged in while {(admin owner _admin_obj) != 0} do { // collect server infos _s_fps = str diag_fps; // frames per second _s_just_players = allPlayers - entities "HeadlessClient_F"; // all player objects _s_plyr_num = count _just_players; // number of players _s_just_HCs = entities "HeadlessClient_F"; // all HC objects _s_HC_num = count _just_HCs; // number of headless clients _s_a_grp_num = {local (leader _x) and alive (leader _x)} count allGroups; // all groups where alive units in _s_e_grp_num = { (count units _x) == 0 } count allGroups; // empty groups _s_d_grp_num = { ({!alive _x}count units _x) > 0 }count allGroups; //groups where only deads in _s_unit_num = {local _x} count allUnits; // living units _s_vec_num = {local _x} count (vehicles - entities "WeaponHolderSimulated"); // living vecs _s_wh_num = {local _x} count (entities "WeaponHolderSimulated") //weapons on ground _s_al_ent_num = {local _x} count entities [[], [], true, true]; // alive entities _s_de_ent_num = {local _x} count entities [[], ["Logic"], true]; //dead entities except logic //collect HC infos //request not available info from HCs remotely if (_s_HC_num >0) then { for "_i" from 0 to (_s_HC_num - 1) do { _str = format ["Saro_HC_report_%1", _i]; missionNamespace setVariable [_str, []]; [_str] remoteExecCall ["Saro_fnc_report_stats_to_server", (_s_just_HCs select _i)]; }; //wait until all HCs responded with desired info waitUntil { sleep (0.1 + random 0.1); _sum = 0; for "_i" from 0 to (_s_HC_num - 1) do { _str = format ["Saro_HC_report_%1", _i]; if (count (missionNamespace getVariable _str) > 0) then { _sum = _sum + 1; }; (_sum == _s_HC_num) }; }; }; sleep (15 + random 15); }; // info while end }; // endless while (end) /* Author: Sarogahtyp Title: SSSS - Sarogahtyps Simple Server Statistics Function Name: Saro_fnc_report_stats_to_server; Description: function used via remote execution by server to recieve some statistical infos Arguments: String - name of global variable which should returned to server by publicVariableServer Return value: true */ params ["_ret_string"]; _tmp_info_array = []; _tmp_info_array pushBack diag_fps; missionNamespace setVariable [_ret_string, _tmp_info_array]; publicVariableServer _ret_string;
-
nice video ... where can i get this flight deck man ?
back to taxi: what u really need is an ILS Path System for ur carrier... the carrier should add itself as a runway to the map when it spawns.
i know that it is possible to add ILS Data to existing maps like utes as done with the Khe Sanh addon, but i dont know if its possible to add it on the fly when the carrier spawns...
That would be an unbeatable feature for ur carrier, but a lot of work too. It would be possible to autostart, autoland and autotaxi with it...
But Ive to admit, i have no idea how that can be done.
-
okay ... as u said, everything is goin fine :-) ... i think i had a corrupted mission.sqf at this pc...
that taxiing problem ... did u try the following ?
doStop this; or/and
this disableAI "MOVE"; or/and
this flyInHeight 0;
that all i got in mind related to that problem :-)
-
with the following code the AI gets a perfect straight start at each runway :-)
the function needs some values so ... heres an call example (its very importent that u call JDogs \JDG_carrier\scr\nim_cat.sqf script instantly before the manual catapult start!):
hdl=[plane04, 4]execVM "\JDG_carrier\scr\nim_cat.sqf"; //JDogs Cata Snap In Script
hdl=[plane04, nimitz00, 4]execVM "cataself.sqf"; //acceleration and dir correction for AI Pilots
plane04 - in the example is the name of the aircraft object
nimitz00 - in the example is the name of the carrier object
4 - in the example is the number of the catapult as shown in JDogs Carrier Manual
_veh = _this select 0; //plane object
_nimitz = _this select 1; //nimitz object
_runway = _this select 2; //runway number
acc_pow = 6; // km/h or mph per step?
acc_len = 90; //speed limit, where acceleration stops
_v=20; //start velocity
// get the heading of the desired runway
_nimitz_dir = getDir _nimitz;
if(_runway == 1) then {_runway_dir = _nimitz_dir-5.;};
if(_runway == 2) then {_runway_dir = _nimitz_dir-1.7;};
if(_runway == 3) then {_runway_dir = _nimitz_dir-4.7;};
if(_runway == 4) then {_runway_dir = _nimitz_dir-.2;};
// accelerate plane
while{_v < acc_len }
do
{
(vehicle _veh) setvelocity [_v* sin (getdir (_veh)),_v * cos (getdir (_veh)),.1];
_v=_v+ acc_pow;
sleep 0.12;
// correct the heading of the plane
_cur_dir = getDir _veh;
_veh setDir _cur_dir - (_cur_dir - _runway_dir);
};
every movement behind the end of the runway is pilots work and those AI isnt the best pilot sometimes ;-)
edit 1: Im sorry but it doesnt work as i promised with this post... as i tested it at my pc at home it was perfect, but now i am at another pc and it fails :-(
i dont know on what it depends but i ll try to determine it...
edit 2: I updated the runway angles to the correct values provided by JDog. Plz ignore that last edit message cuz that code works fine ... being confused isnt a mistake :-)
-
its me again ;-)
i got a PM from a forum member who said that my modification did not work perfect (as he wants it:)) at his AI start tests. Now I try to make the planes go perfectly straight down the runway without driving any curve while starting. To solve this problem i need the angles of each runway for the nimitz.
Cauz my english isnt the best, i try to get sure and explain it the other way around ;-) :
if the nimitz has a heading angle of 237.56 then i m nearly sure that runway 4 has the same angle of 237.56. But the angles of all other runways differ with a small value from that nimitz heading.
It would be very nice if someone could tell me that little difference angle for each of the runways 1, 2 and 3.
edit: i think i have the angles...
-
hello,
i dont know why i ve so much problems to start a plane with nimitz catapults.
everytime i do it with the script examples, everything looks good, but the catapult accelerates the plane into wrong direction.
Those wrong direction is determined by the view direction of my own char which mostly stands beside the plane to view the start.
That means if i look to the opposite direction, the plane will be accelarated backwards...
any help would be great :-)
PS: the only mod im starting with is the nimitz... iam using Arma2 without any expansions.
edit1: ithink i found the answer here
edit2: the workaround described at the link above showed me the way but did not solve my problem. I modified it with a direction correction for the plane and now i can start a-10, f35b and SU-35 planes and it looks nearly real. I also modified a value of the acceleration algorythm to get it work for me. For Users with similar problems i post it now :)
_veh = plane01;
_v=1;
while{_v<68}do{
(vehicle _veh) setvelocity [_v* sin (getdir (_veh)),_v * cos (getdir (_veh)),.1];
_v=_v+6;
sleep 0.12;
_veh setDir (getDir _veh)-1;
};
while{_v<100}do
{
_v=_v+6;
sleep 0.12;
_veh setDir (getDir _veh)-1;
};
How to board a ship from ship
in ARMA 3 - MISSION EDITING & SCRIPTING
Posted
On each client you could run
before boarding and after boarding
hideObject