Jump to content

Donnovan

Member
  • Posts

    840
  • Joined

  • Last visited

  • Days Won

    12

Reputation Activity

  1. Like
    Donnovan reacted to Defent in [Request] Convert the old Player UID's to Steam ID   
    You could probably intergrate this to a website by using PHP too. Does look like a neat idea. Good job.
  2. Like
    Donnovan got a reaction from Defent in Statistics Based on Server Log File   
    Thanks for pointing this raziel23x!

    I changed the file name, and forgot to update here.

    Here is the one ok: http://177.54.147.235/index.asp
  3. Like
    Donnovan reacted to Defent in Statistics Based on Server Log File   
    You can check my example if you want to print chat and kills on the website, without having them saved to the database. The database would get really proper full if you saved chat. 
    You can also use it to find bans, php scripts are quite customizable. 
     
    I'm pretty sure you can use it to read from the database and print it out as well.
     

  4. Like
    Donnovan reacted to itsatrap in Statistics Based on Server Log File   
    hmm, why drop the database when update ?
  5. Like
    Donnovan reacted to raziel23x in Statistics Based on Server Log File   
    The link no works
  6. Like
    Donnovan reacted to goatservers in [HOW-TO] New Steam-Only Arma Update   
    I followed this guide after the commander update aswell, but my server shows on steam but not commander
     
    Edit: Working now had to add the server to commander using the it's steam query port
  7. Like
    Donnovan reacted to calamity in [Release] Gebriel Safe Zones Maybe   
    I would like to add this to my server  but
    but Where do I put the safezone coords ???
  8. Like
    Donnovan reacted to DY357LX in Placed Map Objects Accurately Using Infistar Anti-Hack   
    Really? That's cool. Thanks for letting us know. I guess people on older versions can test the code posted.
  9. Like
    Donnovan reacted to cen in Placed Map Objects Accurately Using Infistar Anti-Hack   
    Yea it's really well done.
  10. Like
    Donnovan reacted to DY357LX in Placed Map Objects Accurately Using Infistar Anti-Hack   
    Maybe it's just me, but whenever I spawn a building/object via Infistar, it seems to go in a random spot.
    It's pretty difficult to place objects accurately.
     
    So, when I found out you could make a file called admin_start.sqf in your ArmA 2 Operation Arrowhead folder and press ALT+F11 to execute the script, I made this script to make my placements more accurate.
     
    (This code will place the object directly on your head so make sure to have God Mode on.)
     
    Make a file called admin_start.sqf in your ArmA 2 Operation Arrowhead folder (same folder as your ArmA2OA.exe) then paste this code in:
    _objectPlaced = "Land_Misc_Cargo2C"; // Automagically grab position of player (for output later). _objectPosition = (getPos player); // Spawn object on top of player. _placement = _objectPlaced createVehicle getPos player; // Set its position to ontop of the player _placement setPos (getPos player); // Get the direction the player is facing + alter rotation _placement setDir (getDir player + 180); // Wait 3 seconds sleep 3; // Set the height of the object (in meters) if required //_placement setPos [(getPos _placement) select 0, (getPos _placement) select 1, 0.2]; systemchat format ["Placed %1 at %2 - remember to INSERT it into the database",_objectPlaced,_objectPosition]; Go ingame, position yourself, press ALT+F11. You can alt-tab out of the game to change the classname without having to restart the server.
     
    You can find classnames for almost everything here:
    http://www.armatechsquad.com/ArmA2Class151656165165341654165165165165f/index.php
     
    The code is very simple (probably not 100% perfect but t works) and commented to help.
    _objectPlaced = "Land_Misc_Cargo2C"; is where you place the classname of the object you wish to spawn.
     
    If you wish to set the height of the object, remove the "//" from the line, enable the Infistar Debug Monitor and use the last numbers in the brackets.
    For example:
    _placement setPos [(getPos _placement) select 0, (getPos _placement) select 1, 12.34]; will set the object to 12.34 (meters) in the air.
     
    I find this very useful for admin events and helping players position tricky objects in their bases.
     
    Thanks to:
    Infistar for the Admin Tools.
    BioHazard for assistance in testing.
     
     
  11. Like
    Donnovan got a reaction from 31_D!4b10 in [Release] Gebriel Safe Zones Maybe   
    If you like my work, please consider a donation:

    $USD

    $EURO

    *** UPDATED WITH A MAJOR BUG FIX IN THE DATE 2014-10-06 1:10 PM
    *** This update will fix the Repair Vehicle working always in all cases
    *** without the need of vehicle parts, wheell, glass, motor or tools
    *** for vehicles that entered the safezone.

    *** The only file that change is the file safezone.sqf.

    Rai!

    Gebriel


    We, from Clodovil BR Server, are proud to present you, the Gebriel Safe Zones. (safe as heaven).

    SAFEZONES?
    Safezones are excluding areas where peace must be maintained or, sadly, forced.

    WHAT MOST SAFE PREVENTS
    Cant kill other players
    Cant destroy vehicles
    Cant access any gear for any player/vehicle

    WHAT GEBRIEL PREVENTS
    Cant kill other players
    Cant destroy vehicles
    Can't mess with any player gear
    Can't mess with vehicles you does not have ownerity
    Can't mess with gear of vehicles you does not have ownerity

    VEHICLE OWNERITY?
    Is when you have acess to a vehicle inside a safe zone, you have access to the vehicle and to the vehicle gear.

    HOW TO HAVE VEHICLE OWNERITY IN THE SAFE ZONE?
    You must enter the safe zone inside the vehicle.
    If a group of 10 people is on a truck and this truck enters the safe zone, those 10 players will have access to the truck and to the truck gear. No more players will have access to it.

    HOW TO REMOVE VEHICLE OWNERITY?
    You must try to invade the vehicle you does not have ownerity. After the first invasion try, a 8 minutes counter will start, and when the counter reachs zero the vehicle will loose it ownerity and will be avaliable to all players, until someone enters again in the safe with it.

    HOW TO STOP THE 8 MINUTOS COUNTER?
    One or more of the vehicle owners need to re-enters in the safe with the vehicle.

    WHAT ABOUT VEHICLES THAT ON SERVER START ARE IN THE SAFE ZONES?
    They don't have ownerity and don't have god mode. But if a player re-enters with it in the safe zone, he will gain ownerity over it.

    NOTE
    Vehicle ownerity is something that only exists inside safe zones.

    {[THE CODE]} {[THE CODE]} {[THE CODE]}

    1) INIT.SQF
    At the end of your init.sqf file, add this code:


    if (!isServer) then { //Gebriel Safe [] execVM "custom\safezone.sqf"; }; 2) [MISSION FOLDER]\CUSTOM\SAFEZONE.SQFThis bellow is the main script, it's called from the init.sqf file.
    Create a new text file, put this code bellow in it, rename the text file to safezone.sqf and put it in your [mission folder]\custom\ folder (create this folder if necessary).
    Thanks for Maca134 for the Custom Remote Messages Script:


    //Gebriel Safezones //By Donnovan from Brazil don_incar = 0; don_firedEH_1 = nil; don_godon_1 = 0; inSafeZone = false; [] spawn { private ["_runOneTime","_canbuild","_don_passengers","_don_veh_crew","_don_player_veh","_don_veh_driver"]; waitUntil {!(isNil "canbuild")}; _runOneTime = false; _canbuild = canbuild; while {true} do { waitUntil {!((_canbuild && canbuild) || (!_canbuild && !canbuild)) || !_runOneTime}; _canbuild = canbuild; if (!canbuild) then { player_zombieCheck = {}; fnc_usec_damageHandler = {}; fnc_usec_unconscious = {}; player allowDamage false; player removeAllEventHandlers "handleDamage"; don_godon_1 = 1; inSafeZone = true; sleep 0.025; [] spawn { private ["_myHdEh"]; while {!canbuild} do { _myHdEh = player addEventHandler ["handleDamage", {0}]; sleep 0.02; player removeEventHandler ["handleDamage",_myHdEh]; }; }; if (isNil "don_firedEH_1") then { don_firedEH_1 = 0; sleep 0.025; don_firedEH_1 = player addEventHandler ["Fired",{ cutText ["Can't fire with godon.","PLAIN DOWN", 2]; deleteVehicle (_this select 6); }]; }; }; if (canbuild && _runOneTime) then { [] spawn { for "_x" from 1 to 30 do { if (_x >= 6) then {cutText [format ["%1 seconds to godoff and shoton.", 31-_x], "PLAIN DOWN"];}; sleep 1; if (!canbuild) exitWith {}; if (_x == 30) then { cutText ["Godoff and Shoton!", "PLAIN DOWN"]; player_zombieCheck = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_zombieCheck.sqf"; fnc_usec_damageHandler = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_damageHandler.sqf"; fnc_usec_unconscious = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_unconscious.sqf"; player allowDamage true; player removeAllEventHandlers "handleDamage"; player addEventHandler ["handleDamage", {_this call fnc_usec_damageHandler;}]; player removeEventHandler ["Fired", don_firedEH_1]; don_firedEH_1 = nil; don_godon_1 = 0; inSafeZone = false; }; }; }; }; if (!canbuild && don_incar == 1) then { _don_player_veh = don_player_veh; don_veh_crew = crew _don_player_veh; _don_veh_driver = driver _don_player_veh; _don_player_veh allowDamage false; _don_player_veh removeAllEventHandlers "handleDamage"; _don_player_veh addEventHandler ["handleDamage", {0}]; _don_player_veh removeAllEventHandlers "Fired"; _don_player_veh addEventHandler ["Fired",{deleteVehicle (_this select 6);}]; //PASSENGERS NAMES _don_passengers = ""; {if (Alive _x) then {_don_passengers = _don_passengers + format [" %1",name _x];};} forEach don_veh_crew; _don_veh_crew = []; {if (Alive _x) then {_don_veh_crew = _don_veh_crew + [getPlayerUID _x];};} forEach don_veh_crew; //ASSING OWNERS if (player == _don_veh_driver) then { _don_player_veh setVariable ["don_ownerity_code", format ["%1_%2", getPlayerUID player, round diag_tickTime], true]; _don_player_veh setVariable ["don_crew", _don_veh_crew, true]; //CHANGE _don_player_veh setVariable ["don_passengers", _don_passengers, true]; }; }; if (canbuild && don_incar == 1) then { _don_player_veh = don_player_veh; _don_veh_driver = driver _don_player_veh; [_don_player_veh] spawn { for "_x" from 1 to 15 do { sleep 1; if (!canbuild) exitWith {}; if (_x == 15) then { (_this select 0) allowDamage true; (_this select 0) removeAllEventHandlers "handleDamage"; (_this select 0) addEventHandler ["handleDamage", {_this call vehicle_handleDamage;}]; (_this select 0) removeAllEventHandlers "Fired"; }; }; }; //DISASSING OWNERS if (player == _don_veh_driver) then { _don_player_veh setVariable ["don_ownerity_code", nil, true]; _don_player_veh setVariable ["don_crew", nil, true]; _don_player_veh setVariable ["don_passengers", nil, true]; }; }; _runOneTime = true; }; }; [] spawn { private ["_don_veh_crew","_wait_time","_last_mark","_max_time"]; while {true} do { _max_time = 480; waitUntil {sleep 0.0625; vehicle player != player}; don_player_veh = vehicle player; don_incar = 1; if (!canbuild) then { //VEHICLE OWNERITY CHECK _don_veh_crew = don_player_veh getVariable ["don_crew", nil]; if (isNil "_don_veh_crew") then {_don_veh_crew = [getPlayerUID player];}; if !(getPlayerUID player in _don_veh_crew) then { call compile format ['if (isNil "don_%1") then {don_%1 = diag_tickTime;}; _last_mark = don_%1;', don_player_veh getVariable ["don_ownerity_code", 0]]; _wait_time = diag_tickTime - _last_mark; if (_wait_time < _max_time) then { player action ["getOut", don_player_veh]; [objNull, player, rSAY, "error1"] call RE; cuttext [format ["Owners:%1. %2 seconds to liberate.", don_player_veh getVariable ["don_passengers","Owners not found"], round (_max_time - _wait_time)], "PLAIN DOWN"]; cad_pvar_smessage = [format ["%1 is messing with your vehicle! %2 seconds to liberate!", name player, round (_max_time - _wait_time)], _don_veh_crew]; publicVariable "cad_pvar_smessage"; } else { call compile format ['don_%1 = nil;', don_player_veh getVariable ["don_ownerity_code", 0]]; //DISASSING OWNERS don_player_veh setVariable ["don_ownerity_code", nil, true]; don_player_veh setVariable ["don_crew", nil, true]; don_player_veh setVariable ["don_passengers", nil, true]; cuttext [format ["Vehicle is now free for all!"], "PLAIN DOWN"]; cad_pvar_smessage = [format ["One of your safe vehicle is now free and player %1 is in it!", name player], _don_veh_crew]; publicVariable "cad_pvar_smessage"; }; }; don_player_veh allowDamage false; don_player_veh removeAllEventHandlers "handleDamage"; don_player_veh addEventHandler ["handleDamage", {0}]; don_player_veh removeAllEventHandlers "Fired"; don_player_veh addEventHandler ["Fired",{deleteVehicle (_this select 6);}]; }; if (canbuild) then { don_player_veh allowDamage true; don_player_veh removeAllEventHandlers "handleDamage"; don_player_veh addEventHandler ["handleDamage", {_this call vehicle_handleDamage;}]; don_player_veh removeAllEventHandlers "Fired"; //DISASSING OWNERS if (player == driver don_player_veh) then { don_player_veh setVariable ["don_ownerity_code", nil, true]; don_player_veh setVariable ["don_crew", nil, true]; don_player_veh setVariable ["don_passengers", nil, true]; }; }; waitUntil {sleep 0.0625; vehicle player == player}; don_incar = 0; don_player_veh = nil; }; }; //Thanks Maca for the Remote Message idea "cad_pvar_smessage" addPublicVariableEventHandler { private ["_message", "_receivers"]; _message = (_this select 1) select 0; _receivers = (_this select 1) select 1; if (getPlayerUID player in _receivers) then {cutText [_message, "PLAIN DOWN"];}; }; 3) [MISSION FOLDER]\DAYZ_CODE\COMPILE\FN_GEARMENUCHECKS.SQFThis code bellow goes at the end of your custom dayz_code\compile\fn_gearMenuChecks.sqf.
    Thanks for Maca134 for the no-player-gear-acess-in-safe script.

    To have a custom dayz_code\compile\fn_gearMenuChecks.sqf file you will need a custom dayz_code\init\compiles.sqf, since the first is called in game by the second, so you need a custom compiles.sqf that calls your custom fn_gearMenuChecks.sqf file, and since compiles.sqf is now custom, you need to change the call in init.sqf to it, since compiles.sqf is called in-game by init.sqf.

    More on that later! Sorry for now! If you have any doubt, please ask!


    //Prevents players opening others backpacks MACA123 if (isNil "inSafeZone") then {inSafeZone = false;}; if ((!canbuild || inSafeZone) and _cTarget isKindOf "Man" and alive _cTarget and (((vehicle player) distance _cTarget) < 12)) then { cutText ["Cannot access other players gear in the safezone." , "PLAIN DOWN"]; _display closeDisplay 1; }; //Gebriel Safezones //by Donnovan from Brazil if (!canbuild) then { private ["_don_iscar","_don_ismycar","_don_crew"]; _don_iscar = false; _don_ismycar = false; if (_cTarget isKindOf "LandVehicle" || _cTarget isKindOf "Air" || _cTarget isKindOf "Ship" ) then { _don_crew = _cTarget getVariable ["don_crew", nil]; if (isNil "_don_crew") then {_don_crew = [getPlayerUID player];}; _don_iscar = true; if ((getPlayerUID player) in _don_crew) then {_don_ismycar = true;}; }; if (_don_iscar && !_don_ismycar) then { [objNull, player, rSAY, "error1"] call RE; cutText ["You can't access this vehicle gear!" , "PLAIN DOWN"]; _display closeDisplay 1; }; }; 4) ERROR1.OGGThe scipt have a sound file, download it on this link and put the file at the root of your mission folder: http://s000.tinyupload.com/index.php?file_id=69305942403778252911

    Add the sound declaration in description.ext. Here is my description.ext:



    //DONN sounds class CfgSounds { sounds[] = {error1}; class error1 { name="error1"; sound[]={error1.ogg,1,1}; titles[] = {}; }; };You could have more custom sounds on class CfgSounds, if so you need to acomodate then together.
    This bellow is a example where the Gebriel Safezones error1.ogg sound coexists with another 2 custom sounds (diescream.ogg and caloideploy.ogg):

    //DONN sounds class CfgSounds { sounds[] = {dieScream,caloideploy,error1}; class dieScream { name="dieScream"; sound[]={diescream.ogg,1,1}; titles[] = {}; }; class caloideploy { name="caloideploy"; sound[]={deploys\bike\caloi_deploy.ogg,1,1}; titles[] = {}; }; class error1 { name="error1"; sound[]={error1.ogg,1,1}; titles[] = {}; }; }; 5) BATTLEYE FILTERSOn the BE filter publicvariable.txt, search for the line that starts with 5 "". At the end of this line add a space and after the space add !"cad_pvar_s".
  12. Like
    Donnovan got a reaction from MasterHiggins in [Release] Gebriel Safe Zones Maybe   
    If you like my work, please consider a donation:

    $USD

    $EURO

    *** UPDATED WITH A MAJOR BUG FIX IN THE DATE 2014-10-06 1:10 PM
    *** This update will fix the Repair Vehicle working always in all cases
    *** without the need of vehicle parts, wheell, glass, motor or tools
    *** for vehicles that entered the safezone.

    *** The only file that change is the file safezone.sqf.

    Rai!

    Gebriel


    We, from Clodovil BR Server, are proud to present you, the Gebriel Safe Zones. (safe as heaven).

    SAFEZONES?
    Safezones are excluding areas where peace must be maintained or, sadly, forced.

    WHAT MOST SAFE PREVENTS
    Cant kill other players
    Cant destroy vehicles
    Cant access any gear for any player/vehicle

    WHAT GEBRIEL PREVENTS
    Cant kill other players
    Cant destroy vehicles
    Can't mess with any player gear
    Can't mess with vehicles you does not have ownerity
    Can't mess with gear of vehicles you does not have ownerity

    VEHICLE OWNERITY?
    Is when you have acess to a vehicle inside a safe zone, you have access to the vehicle and to the vehicle gear.

    HOW TO HAVE VEHICLE OWNERITY IN THE SAFE ZONE?
    You must enter the safe zone inside the vehicle.
    If a group of 10 people is on a truck and this truck enters the safe zone, those 10 players will have access to the truck and to the truck gear. No more players will have access to it.

    HOW TO REMOVE VEHICLE OWNERITY?
    You must try to invade the vehicle you does not have ownerity. After the first invasion try, a 8 minutes counter will start, and when the counter reachs zero the vehicle will loose it ownerity and will be avaliable to all players, until someone enters again in the safe with it.

    HOW TO STOP THE 8 MINUTOS COUNTER?
    One or more of the vehicle owners need to re-enters in the safe with the vehicle.

    WHAT ABOUT VEHICLES THAT ON SERVER START ARE IN THE SAFE ZONES?
    They don't have ownerity and don't have god mode. But if a player re-enters with it in the safe zone, he will gain ownerity over it.

    NOTE
    Vehicle ownerity is something that only exists inside safe zones.

    {[THE CODE]} {[THE CODE]} {[THE CODE]}

    1) INIT.SQF
    At the end of your init.sqf file, add this code:


    if (!isServer) then { //Gebriel Safe [] execVM "custom\safezone.sqf"; }; 2) [MISSION FOLDER]\CUSTOM\SAFEZONE.SQFThis bellow is the main script, it's called from the init.sqf file.
    Create a new text file, put this code bellow in it, rename the text file to safezone.sqf and put it in your [mission folder]\custom\ folder (create this folder if necessary).
    Thanks for Maca134 for the Custom Remote Messages Script:


    //Gebriel Safezones //By Donnovan from Brazil don_incar = 0; don_firedEH_1 = nil; don_godon_1 = 0; inSafeZone = false; [] spawn { private ["_runOneTime","_canbuild","_don_passengers","_don_veh_crew","_don_player_veh","_don_veh_driver"]; waitUntil {!(isNil "canbuild")}; _runOneTime = false; _canbuild = canbuild; while {true} do { waitUntil {!((_canbuild && canbuild) || (!_canbuild && !canbuild)) || !_runOneTime}; _canbuild = canbuild; if (!canbuild) then { player_zombieCheck = {}; fnc_usec_damageHandler = {}; fnc_usec_unconscious = {}; player allowDamage false; player removeAllEventHandlers "handleDamage"; don_godon_1 = 1; inSafeZone = true; sleep 0.025; [] spawn { private ["_myHdEh"]; while {!canbuild} do { _myHdEh = player addEventHandler ["handleDamage", {0}]; sleep 0.02; player removeEventHandler ["handleDamage",_myHdEh]; }; }; if (isNil "don_firedEH_1") then { don_firedEH_1 = 0; sleep 0.025; don_firedEH_1 = player addEventHandler ["Fired",{ cutText ["Can't fire with godon.","PLAIN DOWN", 2]; deleteVehicle (_this select 6); }]; }; }; if (canbuild && _runOneTime) then { [] spawn { for "_x" from 1 to 30 do { if (_x >= 6) then {cutText [format ["%1 seconds to godoff and shoton.", 31-_x], "PLAIN DOWN"];}; sleep 1; if (!canbuild) exitWith {}; if (_x == 30) then { cutText ["Godoff and Shoton!", "PLAIN DOWN"]; player_zombieCheck = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_zombieCheck.sqf"; fnc_usec_damageHandler = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_damageHandler.sqf"; fnc_usec_unconscious = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_unconscious.sqf"; player allowDamage true; player removeAllEventHandlers "handleDamage"; player addEventHandler ["handleDamage", {_this call fnc_usec_damageHandler;}]; player removeEventHandler ["Fired", don_firedEH_1]; don_firedEH_1 = nil; don_godon_1 = 0; inSafeZone = false; }; }; }; }; if (!canbuild && don_incar == 1) then { _don_player_veh = don_player_veh; don_veh_crew = crew _don_player_veh; _don_veh_driver = driver _don_player_veh; _don_player_veh allowDamage false; _don_player_veh removeAllEventHandlers "handleDamage"; _don_player_veh addEventHandler ["handleDamage", {0}]; _don_player_veh removeAllEventHandlers "Fired"; _don_player_veh addEventHandler ["Fired",{deleteVehicle (_this select 6);}]; //PASSENGERS NAMES _don_passengers = ""; {if (Alive _x) then {_don_passengers = _don_passengers + format [" %1",name _x];};} forEach don_veh_crew; _don_veh_crew = []; {if (Alive _x) then {_don_veh_crew = _don_veh_crew + [getPlayerUID _x];};} forEach don_veh_crew; //ASSING OWNERS if (player == _don_veh_driver) then { _don_player_veh setVariable ["don_ownerity_code", format ["%1_%2", getPlayerUID player, round diag_tickTime], true]; _don_player_veh setVariable ["don_crew", _don_veh_crew, true]; //CHANGE _don_player_veh setVariable ["don_passengers", _don_passengers, true]; }; }; if (canbuild && don_incar == 1) then { _don_player_veh = don_player_veh; _don_veh_driver = driver _don_player_veh; [_don_player_veh] spawn { for "_x" from 1 to 15 do { sleep 1; if (!canbuild) exitWith {}; if (_x == 15) then { (_this select 0) allowDamage true; (_this select 0) removeAllEventHandlers "handleDamage"; (_this select 0) addEventHandler ["handleDamage", {_this call vehicle_handleDamage;}]; (_this select 0) removeAllEventHandlers "Fired"; }; }; }; //DISASSING OWNERS if (player == _don_veh_driver) then { _don_player_veh setVariable ["don_ownerity_code", nil, true]; _don_player_veh setVariable ["don_crew", nil, true]; _don_player_veh setVariable ["don_passengers", nil, true]; }; }; _runOneTime = true; }; }; [] spawn { private ["_don_veh_crew","_wait_time","_last_mark","_max_time"]; while {true} do { _max_time = 480; waitUntil {sleep 0.0625; vehicle player != player}; don_player_veh = vehicle player; don_incar = 1; if (!canbuild) then { //VEHICLE OWNERITY CHECK _don_veh_crew = don_player_veh getVariable ["don_crew", nil]; if (isNil "_don_veh_crew") then {_don_veh_crew = [getPlayerUID player];}; if !(getPlayerUID player in _don_veh_crew) then { call compile format ['if (isNil "don_%1") then {don_%1 = diag_tickTime;}; _last_mark = don_%1;', don_player_veh getVariable ["don_ownerity_code", 0]]; _wait_time = diag_tickTime - _last_mark; if (_wait_time < _max_time) then { player action ["getOut", don_player_veh]; [objNull, player, rSAY, "error1"] call RE; cuttext [format ["Owners:%1. %2 seconds to liberate.", don_player_veh getVariable ["don_passengers","Owners not found"], round (_max_time - _wait_time)], "PLAIN DOWN"]; cad_pvar_smessage = [format ["%1 is messing with your vehicle! %2 seconds to liberate!", name player, round (_max_time - _wait_time)], _don_veh_crew]; publicVariable "cad_pvar_smessage"; } else { call compile format ['don_%1 = nil;', don_player_veh getVariable ["don_ownerity_code", 0]]; //DISASSING OWNERS don_player_veh setVariable ["don_ownerity_code", nil, true]; don_player_veh setVariable ["don_crew", nil, true]; don_player_veh setVariable ["don_passengers", nil, true]; cuttext [format ["Vehicle is now free for all!"], "PLAIN DOWN"]; cad_pvar_smessage = [format ["One of your safe vehicle is now free and player %1 is in it!", name player], _don_veh_crew]; publicVariable "cad_pvar_smessage"; }; }; don_player_veh allowDamage false; don_player_veh removeAllEventHandlers "handleDamage"; don_player_veh addEventHandler ["handleDamage", {0}]; don_player_veh removeAllEventHandlers "Fired"; don_player_veh addEventHandler ["Fired",{deleteVehicle (_this select 6);}]; }; if (canbuild) then { don_player_veh allowDamage true; don_player_veh removeAllEventHandlers "handleDamage"; don_player_veh addEventHandler ["handleDamage", {_this call vehicle_handleDamage;}]; don_player_veh removeAllEventHandlers "Fired"; //DISASSING OWNERS if (player == driver don_player_veh) then { don_player_veh setVariable ["don_ownerity_code", nil, true]; don_player_veh setVariable ["don_crew", nil, true]; don_player_veh setVariable ["don_passengers", nil, true]; }; }; waitUntil {sleep 0.0625; vehicle player == player}; don_incar = 0; don_player_veh = nil; }; }; //Thanks Maca for the Remote Message idea "cad_pvar_smessage" addPublicVariableEventHandler { private ["_message", "_receivers"]; _message = (_this select 1) select 0; _receivers = (_this select 1) select 1; if (getPlayerUID player in _receivers) then {cutText [_message, "PLAIN DOWN"];}; }; 3) [MISSION FOLDER]\DAYZ_CODE\COMPILE\FN_GEARMENUCHECKS.SQFThis code bellow goes at the end of your custom dayz_code\compile\fn_gearMenuChecks.sqf.
    Thanks for Maca134 for the no-player-gear-acess-in-safe script.

    To have a custom dayz_code\compile\fn_gearMenuChecks.sqf file you will need a custom dayz_code\init\compiles.sqf, since the first is called in game by the second, so you need a custom compiles.sqf that calls your custom fn_gearMenuChecks.sqf file, and since compiles.sqf is now custom, you need to change the call in init.sqf to it, since compiles.sqf is called in-game by init.sqf.

    More on that later! Sorry for now! If you have any doubt, please ask!


    //Prevents players opening others backpacks MACA123 if (isNil "inSafeZone") then {inSafeZone = false;}; if ((!canbuild || inSafeZone) and _cTarget isKindOf "Man" and alive _cTarget and (((vehicle player) distance _cTarget) < 12)) then { cutText ["Cannot access other players gear in the safezone." , "PLAIN DOWN"]; _display closeDisplay 1; }; //Gebriel Safezones //by Donnovan from Brazil if (!canbuild) then { private ["_don_iscar","_don_ismycar","_don_crew"]; _don_iscar = false; _don_ismycar = false; if (_cTarget isKindOf "LandVehicle" || _cTarget isKindOf "Air" || _cTarget isKindOf "Ship" ) then { _don_crew = _cTarget getVariable ["don_crew", nil]; if (isNil "_don_crew") then {_don_crew = [getPlayerUID player];}; _don_iscar = true; if ((getPlayerUID player) in _don_crew) then {_don_ismycar = true;}; }; if (_don_iscar && !_don_ismycar) then { [objNull, player, rSAY, "error1"] call RE; cutText ["You can't access this vehicle gear!" , "PLAIN DOWN"]; _display closeDisplay 1; }; }; 4) ERROR1.OGGThe scipt have a sound file, download it on this link and put the file at the root of your mission folder: http://s000.tinyupload.com/index.php?file_id=69305942403778252911

    Add the sound declaration in description.ext. Here is my description.ext:



    //DONN sounds class CfgSounds { sounds[] = {error1}; class error1 { name="error1"; sound[]={error1.ogg,1,1}; titles[] = {}; }; };You could have more custom sounds on class CfgSounds, if so you need to acomodate then together.
    This bellow is a example where the Gebriel Safezones error1.ogg sound coexists with another 2 custom sounds (diescream.ogg and caloideploy.ogg):

    //DONN sounds class CfgSounds { sounds[] = {dieScream,caloideploy,error1}; class dieScream { name="dieScream"; sound[]={diescream.ogg,1,1}; titles[] = {}; }; class caloideploy { name="caloideploy"; sound[]={deploys\bike\caloi_deploy.ogg,1,1}; titles[] = {}; }; class error1 { name="error1"; sound[]={error1.ogg,1,1}; titles[] = {}; }; }; 5) BATTLEYE FILTERSOn the BE filter publicvariable.txt, search for the line that starts with 5 "". At the end of this line add a space and after the space add !"cad_pvar_s".
  13. Like
    Donnovan reacted to macdog in Server Hardware and OS setups - Everything under the app level.   
    Hey,
     
    There is probably not that much discussion on this as there isn't a massive amount you can do hardware-wise, so really most optimizations are software based (and by that I mean SQF optimizations rather than system software).  Of course, you need to start with decent hardware, but you very quickly hit a wall.
     
    IMO the main things to focus on are CPU and network, and even then once you hit a point (quite early on), there is little you can do.
     
    CPU: The arma2 engine is known to be largely single threaded.  Yes, it "can" use multiple CPUs, but in reality the amount it can effectively do in parallel is low, so you really end up with a 2 CPU/Core situation.  And the second thread is really just IO offload (handling network connections etc..).  What that means is that you want to get CPU with the highest clock speed possible, not the most cores.  In practical terms that usually means a quad-core processor and in fact the desktop range of CPU (such as intel i7) can be a good bet here (some more on that later).  If you really want max performance, make sure hyper-threading is off also (only makes sense if you want to run multiple servers on the same hardware at a profit, as opposed to running a serve at max performance).
     
    Network.  You don't need much bandwidth, even for a high pop server, but consistently is important (both bandwidth and latency).  If you are renting from a hosting provider then you will likely to be subject to what they provide.  The lowest you usually see a dedicated hardware server rental come with is 100mbps guranteed.  This is more than enough, the issue is the quality, and in reality, you are unlikely to know until you try it, although you can do some research to get an indication (check their peering etc.. but I wont go into that here).
     
    Really, not much else is likely to make a difference hardware wise.
     
    Memory. Arma2 server is 32bit, so theoretical max usage is 4GB.  From memory I don't think it has been compiled to use large address spaces (wrong term, but cba to look it up know) so in fact I believe actually caps out at 2GB.  Even so, a 50 player epoch server with ~5k DB objects still comes in comfortably below that level.  Memory speed however will make a marginal difference.  ECC ram (the type you get in proper servers) will be slower but includes more error checking.  Its a game server, not a banking system, so you dont need ECC, so best to go for performance.  That again usually means looking at the desktop range of technology as opposed to server tech (ie, the i7 mentioned above).  So, for a windows instance running 1 game server, anything above 4GB (even with mysql running on the same box) is wasted.
     
    Storage: Maybe I am missing something, but from all testing/measuring I have done, this makes almost zero difference to performance.  The arma2 server process should be running entirely in RAM and unless you have badly underspecced the server (see above) then nothing should be getting swapped out to disk.  The epoch DB is so small (even with ~5k objects), that I'm pretty sure will be entirely cached by mysql.  Even so, I haven't checked but I assume DB writes are asych (ie, lazy) so shouldn't really impact performance anyway.  Most reads happen when the game server starts up.  In this case the only difference I would expect an SSD to make is faster server restarts (of the order of maybe 30 secs vs 1min).  Again, keen to hear if I have this one wrong, as I see lots of people bragging about SSDs, but honestly dont think it gives them anything.
     
    Everything else comes down to how reliable do you want it to be.  I have mentioned desktop class tech a couple of times.  There are providers that do this, but you may not get things like redundant power supplies.  All hardware goes pop at some point, so this means you could be left off-line for a few hours to maybe a day or 2.
     
    Personally, this is what I use: http://www.online.net/en/dedicated-server/dedibox-lt2k14  Not quite following all my own advice, but it close enough to ideal, reliable (enough) and cheap!  This currently hosts 1 epoch server that can cope with 50 players, but only has half the resources assigned, so should cope with 2 maxed out servers.  Thats even with 2 AI mission systems running, so if I get around to sorting out headless clients, things should get better.
     
    What disappointing me the most is from the little I have read into Arma3 servers, most of the same limitations apply.  Not done much reading, so honestly hope I am wrong here and someone can correct me :)
  14. Like
    Donnovan reacted to Adminlaststand in how to edit sqf building files   
    you need to get the biedi and sqf files from the guy, put them in a directory called guysname.chernarus and copy that to the arma profiles directory probably this on windows 7
     
    c:\users\yourname\documents\arma 2 other profiles\youringamename\missions\guysname.chernarus
     
    then open the editor and load it in.
     
    A
  15. Like
    Donnovan reacted to hambeast in How to kick player ?   
    there's a kick and ban command built into the game engine.
     
    However, I prefer the method with a bit more logging and its pretty easy.
     
    just use public variables.  Example
     
    [code]
    // door unlock
    _pos = position Player;
    _name = name Player;
    _doorCombo = 1234;
     
    if (_unlockFailed) then {
     PV_BadKeyEntered = [_name,_doorCombo,_pos];
     publicVariable "PV_BadKeyEntered";
    };
    [/code]
     
    Just make sure you put an entry in the publicVariables.txt for the pv so it kicks them.  It will log the time it happened, the name of the player, the door combo, and the pos.  You relly don't need to record the player name since the player will be passed to BattlEye anyways but this is just for an example.
  16. Like
    Donnovan reacted to Storm in How to kick player ?   
    Well depends.
    You can just force disconnect the client from the server which is pretty much what some kicking commands do.\
    Which the it isn't at all coded into the client for force disconnect.
  17. Like
    Donnovan reacted to Flosstradamus in 1.0.5 - what beta? (sorry if answered already!)   
    103718 works fine with 1.0.5. But June 30th is when gamespy shuts down so everyone will need to update to 124879.
  18. Like
    Donnovan reacted to hambeast in 1.0.5 - what beta? (sorry if answered already!)   
    umm 103718 and 112555 are not compatible.  You can run the new patch on either though
  19. Like
    Donnovan reacted to BetterDeadThanZed in 1.0.5 - what beta? (sorry if answered already!)   
    That depends on the server admin for the server you are playing on. My servers are still on 103718. Once we are required to switch to the new Arma 2 OA beta, they will be on 124879.
  20. Like
    Donnovan reacted to Darth_Rogue in Players losing gear in backpack after restart   
    Shouldn't it give you a dialog message if you try to log out too close to someone else?  That's kinda shitty if it wipes your pack without giving you  a warning first to give you a chance to fix it.
  21. Like
    Donnovan reacted to fr1nk in Players losing gear in backpack after restart   
    This was added way back in 1.0.2.4:
     
    [ADDED] If you logout near another player your backpack contents will be wiped. It it very important you do not logout next to another player. Change with DZE_BackpackGuard Default: true;  
    Not sure if that's what happened in your case.
  22. Like
    Donnovan reacted to ViktorReznov in Epoch v1.0.1 item list.   
    Thanks for the sample script mate! Loaded it up on my server (mimicked it for ammo, weapons and vehicles and worked like a charm!
     
    For all interested at the full list (afaik, could modify the script to output more if needed) please look at it on my dropbox for dl or browsing, up to you. Would have used pastebin but it exceeded the free users size limit
     
    https://www.dropbox.com/s/qm4ymk63vzt8h4z/CNEpoch1.0.4.2.txt
  23. Like
    Donnovan got a reaction from Defent in Statistics Based on Server Log File   
    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!
  24. Like
    Donnovan got a reaction from Creep in Statistics Based on Server Log File   
    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!
  25. Like
    Donnovan reacted to Kind-Sir in "Invisible" vehicles.   
    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.
×
×
  • Create New...