-
Posts
840 -
Joined
-
Last visited
-
Days Won
12
Content Type
Profiles
Forums
Articles
Posts posted by Donnovan
-
-
I really don't watched the link until now, but i will never put so much entusiasm is a process i don't understand.
It's like to be a man of science reading science news.
-
Hi,
Where can i find the file addmagazinecargo.log?
I made a windows search in my computer (all HDs) and can't find it.
Thankyou!
-
I want to put date and time on the log messages so i can know when the event happned. It's not the virtual ingame date and time, but real world date and time...
diag_log format["EPOCH SERVERTRADE: Player: %1 (%2) sold a %3 in/at %4 for %5",(name _player), (getPlayerUID _player), _classname, _traderCity, _price];
...but to do that i need a function that return the date and time of the server machine, and i can't find it. Anyone know such function?Thankyou!
-
Nice raziel23x. Its a lot of servers!
Thanks Defent, this will help on the site project.
IMPORTANT FIND
There is a player on my server with special characters in his name. This is broking the string manipulation in a very stange way. MySql believe that the lines with his name are bigger than it really is, causing errors.
-
I'm not sure, but i believe if your crate is on client side, you need to broadcast the variable change so the server receive it and does not clean the crate. So instead of this:
_this setVariable ["permaLoot",true];
Where _this is your Crate, you need to use that:_this setVariable ["permaLoot",true,true];
The last true will make the change be broadcasted to the server.Here info about the setVariable comand: https://community.bistudio.com/wiki/setVariable
-
Some statistics about the chat would be nice.
INPORTANT:
Its neat to take a look at your log file healthy if you want to use that.
I just installed SARGE AI, and due to a change in the way Arma 2 OA engine respond to manipulation of null strings, SARGE AI is giving tons of errors messages. Those errors made my arma2oaserver.rpt reach 900 Megabytes. MySql did well even on the 900 Megabytes rpt file, but this is not a good thing to happen.
-
I suggest you to do that. Nice idea.
We can add new server messages to create new statistics.
-
Here my update_from_log.bat file:
"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql.exe" --user=YourDbUser --password=YourDbPassword --host=localhost --port=3306 "dayz_epoch" < "D:\DayZ_Backup\CREATE LOG TABLES.sql"
1) The SQL in the first post is on the file D:\DayZ_Backup\CREATE LOG TABLE.sql.2) C:\Program Files\MySQL\MySQL Server 5.7\ it's where MySql Server is installed.
3) "dayz_epoch" is the default name for the Data Base.
4) --host=localhost is the ip of the machine running MySql Server, localhost means it's in the same machini running the .bat file.
If you schedule this .bat in Windows Schedule Manager, you can run it periodically and update your extra statistic tables with the frequency you want.
-
Table SELLS:
Table KILLS:
Table RUNNING_OVER:
-
Rai,
I created a schedule in windows to run this SQL statement every 10 minutos.
This SQL statement read the DayZ Epoch server log file and search for lines related to:
- Sells
- Buys
- Kills
- Running Over (a kill where the kill weapon is a vehicle)
After find the lines it create 4 tables in your dayz_epoch data base (along with the original tables, like object_data, player_data, etc..., but not in then). Those new tables are, respectively:
table SELLS:
PLAYER_NAME, PLAYER_UID, PRODUCT, TRADER, VALOR, CURRENCY, UNITY, QUANTITY
table BUYS:
PLAYER_NAME, PLAYER_UID, PRODUCT, TRADER, VALOR, CURRENCY, UNITY, QUANTITY
table KILLS:
KILLER, VICTIM, WEAPON, DISTANCE
table RUNNING_OVER:
VICTIM, DRIVER, VEHICLE
PS: It also create a auxiliar table called CURRENCY.
IMPORTANT:
The SQL statement bellow does not mess with the original DayZ Epoch data tables. But since the use of it require some knowlegdge about MySql and i can't garantee the persons using this file will have it or even if my own knowledge is sufficient, i ask you to just use this intended help if you don't mind to be at your own if something strange happens.
DROP TABLE IF EXISTS SERVER_RPT; CREATE TABLE SERVER_RPT(LOG_TXT VARCHAR(1000)) ENGINE=MyISAM; LOAD DATA LOCAL INFILE 'E:/Steam/steamapps/common/Arma 2 Operation Arrowhead/instance_11_Chernarus/arma2oaserver.RPT' INTO TABLE SERVER_RPT LINES TERMINATED BY '\r\n'; DROP TABLE IF EXISTS KILLS; CREATE TABLE KILLS(VICTIM VARCHAR(48), KILLER VARCHAR(48), WEAPON VARCHAR(48), DISTANCE MEDIUMINT) ENGINE=MyISAM; INSERT INTO KILLS SELECT SUBSTRING(LOG_TXT, 18, LOCATE(' was killed by ', LOG_TXT) - 18) AS VICTIM, SUBSTRING(LOG_TXT, LOCATE(' was killed by ', LOG_TXT) + 15, LOCATE(' with weapon ', LOG_TXT) - (LOCATE(' was killed by ', LOG_TXT) + 15) + 1) AS KILLER, SUBSTRING(LOG_TXT, LOCATE(' with weapon ', LOG_TXT) + 12, LOCATE(' from ', LOG_TXT) - (LOCATE(' with weapon ', LOG_TXT) + 12) + 1) AS WEAPON, SUBSTRING(LOG_TXT, LOCATE(' from ', LOG_TXT) + 6, LENGTH(LOG_TXT) - 2 - (LOCATE(' from ', LOG_TXT) + 6) + 1) AS DISTANCE FROM SERVER_RPT WHERE LOG_TXT LIKE '%"PKILL: %'; DELETE FROM KILLS WHERE DISTANCE = 0; DROP TABLE IF EXISTS RUNNING_OVER; CREATE TABLE RUNNING_OVER(VICTIM VARCHAR(48), DRIVER VARCHAR(48), VEHICLE VARCHAR(48)) ENGINE=MyISAM; INSERT INTO RUNNING_OVER SELECT SUBSTRING(LOG_TXT, 18, LOCATE(' was killed by ', LOG_TXT) - 18) AS VICTIM, SUBSTRING(LOG_TXT, LOCATE(' was killed by ', LOG_TXT) + 15, LOCATE(' with weapon ', LOG_TXT) - (LOCATE(' was killed by ', LOG_TXT) + 15) + 1) AS DRIVER, SUBSTRING(LOG_TXT, LOCATE(' with weapon ', LOG_TXT) + 12, LOCATE(' from ', LOG_TXT) - (LOCATE(' with weapon ', LOG_TXT) + 12) +1) AS VEHICLE FROM SERVER_RPT WHERE LOG_TXT LIKE '%"PKILL: %' AND LOG_TXT LIKE '% from 0m"%'; DROP TABLE IF EXISTS CURRENCY; CREATE TABLE CURRENCY (CURRENCY varchar(48), UNITY VARCHAR(16), QUANTITY INT) ENGINE=MyISAM; INSERT INTO CURRENCY VALUES ('ItemBriefcase100oz','Gold',100),('ItemGoldBar','Gold',1),('ItemGoldBar10oz','Gold',10),('ItemSilverBar','Silver',1),('ItemSilverBar10oz','Silver',10); DROP TABLE IF EXISTS SELLS; CREATE TABLE SELLS(PLAYER_NAME VARCHAR(48), PLAYER_UID VARCHAR(48), PRODUCT VARCHAR(48), TRADER VARCHAR(48), VALOR MEDIUMINT, CURRENCY VARCHAR(48), UNITY VARCHAR(16), QUANTITY MEDIUMINT) ENGINE=MyISAM; INSERT INTO SELLS(PLAYER_UID, PRODUCT, TRADER, VALOR, CURRENCY) SELECT SUBSTRING(SUBSTRING_INDEX(SUBSTRING_INDEX(LOG_TXT, ' ', -9), ' ', 1), 2, LENGTH(SUBSTRING_INDEX(SUBSTRING_INDEX(LOG_TXT, ' ', -9), ' ', 1))-2) AS PLAYER_UID, SUBSTRING_INDEX(SUBSTRING_INDEX(LOG_TXT, ' ', -6), ' ', 1) AS PRODUCT, SUBSTRING_INDEX(SUBSTRING_INDEX(LOG_TXT, ' ', -4), ' ', 1) AS TRADER, REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(LOG_TXT, ' ', -2), ' ', 1), 'x', '') AS VALOR, REPLACE(SUBSTRING_INDEX(LOG_TXT, ' ', -1), '"', '') AS CURRENCY FROM (SELECT REPLACE(REPLACE(REPLACE(LOG_TXT, 'Unknown Trader City', 'Unknown'), 'Hero Trader', 'Hero'), 'Bandit Trader', 'Bandit') AS LOG_TXT FROM SERVER_RPT) AS SERVER_RPT WHERE LOG_TXT LIKE '% "EPOCH SERVERTRADE: Player: %' AND LOG_TXT LIKE '% sold a %'; UPDATE SELLS SET SELLS.PLAYER_NAME = (SELECT PlayerName FROM player_data WHERE player_data.PlayerUID = SELLS.PLAYER_UID), SELLS.UNITY = (SELECT CURRENCY.UNITY FROM CURRENCY WHERE CURRENCY.CURRENCY = SELLS.CURRENCY), SELLS.QUANTITY = (SELECT CURRENCY.QUANTITY * SELLS.VALOR FROM CURRENCY WHERE CURRENCY.CURRENCY = SELLS.CURRENCY); DROP TABLE IF EXISTS BUYS; CREATE TABLE BUYS(PLAYER_NAME VARCHAR(48), PLAYER_UID VARCHAR(48), PRODUCT VARCHAR(48), TRADER VARCHAR(48), VALOR MEDIUMINT, CURRENCY VARCHAR(48), UNITY VARCHAR(16), QUANTITY MEDIUMINT) ENGINE=MyISAM; INSERT INTO BUYS(PLAYER_UID, PRODUCT, TRADER, VALOR, CURRENCY) SELECT SUBSTRING(SUBSTRING_INDEX(SUBSTRING_INDEX(LOG_TXT, ' ', -9), ' ', 1), 2, LENGTH(SUBSTRING_INDEX(SUBSTRING_INDEX(LOG_TXT, ' ', -9), ' ', 1)) - 2) AS PLAYER_UID, SUBSTRING_INDEX(SUBSTRING_INDEX(LOG_TXT, ' ', -6), ' ', 1) AS PRODUCT, SUBSTRING_INDEX(SUBSTRING_INDEX(LOG_TXT, ' ', -4), ' ', 1) AS TRADER, REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(LOG_TXT, ' ', -2), ' ', 1), 'x', '') AS VALOR, REPLACE(SUBSTRING_INDEX(LOG_TXT, ' ', -1), '"', '') AS CURRENCY FROM (SELECT REPLACE(REPLACE(REPLACE(LOG_TXT, 'Unknown Trader City', 'Unknown'), 'Hero Trader', 'Hero'), 'Bandit Trader', 'Bandit') AS LOG_TXT FROM SERVER_RPT) AS SERVER_RPT WHERE LOG_TXT LIKE '% "EPOCH SERVERTRADE: Player: %' AND LOG_TXT LIKE '% bought a %'; UPDATE BUYS SET BUYS.PLAYER_NAME = (SELECT PlayerName FROM player_data WHERE player_data.PlayerUID = BUYS.PLAYER_UID), BUYS.UNITY = (SELECT CURRENCY.UNITY FROM CURRENCY WHERE CURRENCY.CURRENCY = BUYS.CURRENCY), BUYS.QUANTITY = (SELECT CURRENCY.QUANTITY * BUYS.VALOR FROM CURRENCY WHERE CURRENCY.CURRENCY = BUYS.CURRENCY);
CONFIG IT TO YOUR SYSTEM:
Change the green part of line number 3:
LOAD DATA LOCAL INFILE 'E:/Steam/steamapps/common/Arma 2 Operation Arrowhead/instance_11_Chernarus/arma2oaserver.RPT'
To meet the place of your DayZ Epoch Server log file, the arma2oaserver.RPT file.Thankyou!
-
ghostfur,
You need to put that at the end of your fn_selfActions.sqf file:
private ["_handGun"]; _handGun = currentWeapon player; if ((_handGun in ["glock17_EP1","M9","M9SD","Makarov","MakarovSD","revolver_EP1","UZI_EP1","Sa61_EP1","Colt1911"]) && (player ammo _handGun > 0) && canStand player && (speed player <= 1) && _canDo) then { if ((is_confirmation == 0) && (s_player_suicide < 0)) then { name_on_menu = "<t color=""#303030"">Retire from Life</t>"; s_player_suicide = player addaction[(name_on_menu),"custom\suicide.sqf",_handGun,0,false,true,"", ""]; }; if ((is_confirmation == 1) && (s_player_suicide_confirm < 0)) then { name_on_menu = "<t color=""#d00020"">Confirm Retire from Life!</t>"; s_player_suicide_confirm = player addaction[(name_on_menu),"custom\suicide.sqf",_handGun,0,false,true,"", ""]; }; } else { if (is_confirmation == 0) then { player removeAction s_player_suicide; }; if (is_confirmation == 1) then { player removeAction s_player_suicide_confirm; }; s_player_suicide = -1; s_player_suicide_confirm = -1; is_confirmation = 0; };
-
hambeast, i was expecting more compression. As a test i used 7-Zip in my mission files and i get a 240 Kb file from 1000 Kb of umcompressed data. The paa images also compressed really really well, for my surprise.
Thakyou guys, i will try the two things.
Edit:
Can't find PBO Commander, but found a PBO plugin for a File Manager with the name Total Commander. Is this one?
Edit 2:
The solution in Edit only works if i disable the compression option. Tried to compress the default files and then only the sqf files and not worked, i get stuck on the loading screen whit this error on Arma 2 OA cliente log file:
Checksum
Error decoding dayz_code\init\variables.sqf from mpmissions\__cur_mp.chernarus\
Checksum
Error decoding dayz_code\init\compiles.sqf from mpmissions\__cur_mp.chernarus\
Checksum
Error decoding custom\walkamongstthedead\config.sqf from mpmissions\__cur_mp.chernarus\
Warning: no type entry inside class RscDisplayClientGetReady/controls/B_Cancel
Warning: no type entry inside class RscDisplayClientGetReady/controls/B_Continue
Warning: z\addons\dayz_communityassets\models\compass.p3d:0 Error while trying to generate ST for points: 863, 853, 852
Checksum
Error decoding ca\Modules\Functions\init.sqf from mpmissions\__cur_mp.chernarus\
ScriptVM file mpmissions\__CUR_MP.Chernarus\ca\Modules\Functions\init.sqf cannot be opened!
Compression is good, from 900Kb to 403Kb.
Oh man...
Anyone with some light? Thankyou in advance.
PS.:
It's not the case i don't want to do the work my self, i'm working on that for some hours now, and i belive compression was abandoned on newer revisions of PBO files that are used on newer tittles like Arma 2 and Arma 2 OA. Hope this help someone with the same idea.
If you believe someone is trying to make you free work for him, for sure this someone is not an unknow person from the internet.
Thankyou.
-
Hi,
Sometimes my server have lag because of too many persons connecting at the same time and downloading the mission files, so a compressed mission file PBO will decrease download size and avoid lag.
Is it possible to have a compressed PBO mission file?
Thankyou in advance.
-
Hi,
BUILDINGS ON THE SERVER FILE
I believe to know one cons about have the buildings on the server file: this rise the use of the server bandwidth, and if your bandwidth is already at maximum use, this can generate lag and desync.
Anyone can confirm?
Explanation: the new buildings are streamed to the clients when they are near it.
-
Anyone have and can share the file?
-
Just a check: Have you not added the server by ip anytime?
I'm not sure if i understand what ports you have opened to make it work, really sorry for that, can be my bad english.
I understand those are the ports you have opened to allow your server to be in DayZ Commander:
- Allowed Inbound Rules / Ports:
- UDP 2303 (dayZ Commander)
- UDP 6500 (Gamespy Master Requests)
- Allowed Outbound Rules / Ports:
- UDP 2303 (dayZ Commander)
- TCP 28900 (Master Server)
- UDP 27900 (Master Server)
- Other Ports / Extras:
- Added Allow for Inbound and Outbound on port 2302 for both UCP and TCP...
- Extra: Allowed All ICMP V4 (Ping)
-
Usually the modular base objects eat the vehicle on restart. Not too sure why this happens.
If you have the vehicle near a DayZ Epoch base building object, move it away and test it out then.
In the database, check if the damage value is 1.
Kind-sir, this "eat" is intermitent? I started my server and had multiple players talking about missing vehicles on their bases. I closed the server and restarted it again, then the vehicles are ok.
If player disconnect and reconnect to the server, this can solve the "eat" problem? Without server restart?
-
You could either remove some of the lower end items from the array, or add multiple cinderblock entries to the array to increase the chance of them being chosen.
The goal is more or less, 7 Cinder Blocks on the loot.
// load construction _scount = count DZMSConSupply; for "_x" from 0 to 30 do { if (random 1 < 7/30) then { _item = ["CinderBlocks"]; _crate addMagazineCargoGlobal [_item,1]; } else { _sSelect = floor(random (_sCount - 1)); _item = (DZMSConSupply - ["CinderBlocks"]) select _sSelect; _crate addMagazineCargoGlobal [_item,1]; }; };
I also can do a code that is a little simplier:// load construction _scount = count DZMSConSupply; for "_x" from 0 to 30 do { if (random 1 < _KVAL) then { _item = ["CinderBlocks"]; _crate addMagazineCargoGlobal [_item,1]; } else { _sSelect = floor(random _sCount); _item = DZMSConSupply select _sSelect; _crate addMagazineCargoGlobal [_item,1]; }; };
Where _KVAL is the solution for the equation: _KVAL + (1 - _KVAL)*(1/15) = 7/30_KVAL = 5/28
The solution about duplicade Cinder Block entries is what i was looking for! Its the best and simpliest solution.
But just adding Cinder Blocks to the array i can't reach the "7/30 chance of cinder", but i can reach a very near "4/18 chance of cinder".
Adding 3 more Cinders, i will have 1+3 Cinder Blocks and 15+3 itens on the arrays, what gives the chance of 4/18.
-
Thankyou very much TheVampire.
I talked with the ingame admin and he sayd the players are receiving lots of itens, but they was expecting more cinder blocks in the loot. I will change the code, thankyou very much for it, to increase the chance of each one of the 30 itens be cinder block.
Bai!
-
Hi Cannon!
Yes, its related to not allow players to teleport, what they cant do by default. Hacking yeah.
May be! i will try to make a false positive on the tests.
-
Hi,
Really thanks for all the comments on the code, it helps a lot.
We did the change from "medical" or "weapon" to "supply" on the functions...
[_crate,"weapon"] ExecVM DZMSBoxSetup;
...in some of the missions, and then we also corrected the text messages from weapon/medical to supply. Nothing more.
When our suply mission started whe expected to win 30 construction items, but at the end we found only 2 cinder blocks.
Besides the changes i already did, i also need to change the crate utilized in the mission to allow insertion of 30 itens inside it? May be the original crate in the mission is too small to acomodate 30 construction itens.
Help is apreciated,
-
Thanks raymix, i apreciate, but seens its local, i will take a better look.
Already did the code but not tested it, and to gain me some more motivation i will post it here. My lovely lovely small code.Intended to be server side. It check players average speed each second and kill who had more than 120 meters/second average speed.
_don_max_speed = 120 //Max speed in meters per second _don_admins = ["123456789","987654321","192837465","564738291"]; while {true} do { don_ah_units = playableUnits; sleep 1; don_ah_units_pos = playableUnits; for "_up" from 0 to count don_ah_units_pos do { for "_u" from 0 to count don_ah_units do { if ((don_ah_units_pos select _up) !in _don_admins) && isPlayer (don_ah_units_pos select _up) && (don_ah_units_pos select _up) == (don_ah_units select _u)) then { _don_travel_m = (don_ah_units_pos select _up) distance (don_ah_units select _u); //distance moved in 1 second (see "sleep 1;" on line 6) if (_don_travel_m > _don_max_speed) then { (don_ah_units_pos select _up) setDamage 1.0; }; }; }; }; };
-
Believe i found it!
The path given as the "-profiles=..." startup parameter is used when launching the Arma 2 dedi. If, for example, you would launch the Arma 2:OA dedicated server using:
arma2oaserver.exe -profiles=D:\Games\ArmA2
then the BattlEye working directory would be:
D:\Games\ArmA2\BattlEye
My batch file have the the profiles set tlike this:
-profiles=instance_11_Chernarus
So bans.txt should be in D:/steam/steamapps/connom/Arma 2 OA/instance_11_Chernarus/.
Thanks for the reply, insertcoins.
-
Hi,
I banned a player in this way:
1) - Connected to de server
2) - Loged as admin with the chat command #login Password
3) - Banned the player with the chat command #exec ban PlayerID
Now i want to unban hin, and seens there is no #exec unban command, so i'm in search of the proper bans.txt file to remove hin from it.
Where can i find it? My game folder is D:\steam\steamapps\connom\ARMA 2 AO\.
I use DayZ Epoch 1.0.4.2a server, DayZ Epoch 1.0.4.2 client and the server is on my machine, so there is no need to use a FTP client.
Thank you in advance.
Custom Buildings Permanent Vehicle System
in A2: Custom Bases (1.0.5.1)
Posted
Rai,
Badies of custom vehicles in custom buildings/bases/maps:
1) - They kill you if you enters it.
2) - If you solved 1). They dissapear at server restart. In other words, they back to the original point with the original status (fuel, loot and damage).
3) - People may get the vehicle, put valious loot in it, and then loose this loot after server restart.
*Glegs Script for vehicles in custom maps*
What is it? Glegs is a new way to spawn vehicles in your custom map. To use it you need to remove the original vehicle spawn entries generated by the map editor and add Glegs vehicle spawn entrie.
The Glegs premisses:
Premisse A: Custom map should spawn fixed vehicles that does not dissapears on server restart.
Glegs acomplishment: OK!
This alone creates a problem: After many servers restarts, you will have many vehicles spawned on the same point since vehicles are now fix and does not dissapears on serve start.
Premisse B On server restarts, new vehicles should spawn only if there is not another vehicle of the same type in a x meters radius arround the spawn point.
Glegs acomplishment: OK!
For Glegs to work, you need to colect 4 informations about the vehicles to spawn in your custom maps:
Vehicles position in map: [x, y, z] Example: [67555.3333, 14320.01333, 0.002]
OBS: if you don't know z, you can leave it as 0 or something positive but small, like 0.02.
Vehicle Classname: The Classname of the Vehicle Example: BRDM2_HQ_TK_GUE_EP1
Vehicle Check Radius: The x in Premisse B. The radius the vehicle need to leave before another one is able to spawn.
Vehicle Direction: The direction the vehicle will face (0 to 360, but any value can be used).
So now you can create the array with your vehicles, ready for Glegs:
Example:
[[x, y, z],"VehicleClassName", Vehicle_Radius_check, Direction]
And here is Glegs code: Just insert your vehicles on the blank area: Important: The last vehicle will not have a "," at the end of the line.Put this code in the custom map sqf file, at the end of it.
Remove the old vehicles entryes, the ones created by the game editor. They are someting like:
Now your custom map vehicles will be permanent.RESULTS IN YOUR CUSTOM MAP:
- Permanent Vehicles that persist after server restart.
- You don't die after entering the vehicles.
- When you restart the server, new vehicles only spawn if the spawned vehicles of the previous restart have been moved away.