mirror of
https://github.com/EpochModTeam/Epoch.git
synced 2024-08-30 18:22:13 +00:00
Push Released server files 0.3.0.3 b4
This commit is contained in:
parent
4b311ce697
commit
a2cd7b4a0f
21
Server Install Pack/@epochhive/EpochServer.ini
Normal file
21
Server Install Pack/@epochhive/EpochServer.ini
Normal file
@ -0,0 +1,21 @@
|
||||
[EpochServer]
|
||||
BattlEyePath = C:\BattlEye
|
||||
InstanceID = NA123
|
||||
LogAbuse = 1
|
||||
IP = 127.0.0.1
|
||||
Port = 2302
|
||||
Password = changeme
|
||||
|
||||
[Redis]
|
||||
IP = 127.0.0.1
|
||||
Port = 6379
|
||||
DB = 0
|
||||
Password = foobared
|
||||
|
||||
[SteamAPI]
|
||||
Logging = 0
|
||||
Key =
|
||||
VACBanned = 0
|
||||
VACMinimumNumberOfBans = 0
|
||||
VACMaximumDaysSinceLastBan = 0
|
||||
PlayerAllowOlderThan = 0
|
BIN
Server Install Pack/@epochhive/addons/a3_epoch_server.pbo
Normal file
BIN
Server Install Pack/@epochhive/addons/a3_epoch_server.pbo
Normal file
Binary file not shown.
Binary file not shown.
126
Server Install Pack/@epochhive/epochah.hpp
Normal file
126
Server Install Pack/@epochhive/epochah.hpp
Normal file
File diff suppressed because one or more lines are too long
100
Server Install Pack/@epochhive/epochconfig.hpp
Normal file
100
Server Install Pack/@epochhive/epochconfig.hpp
Normal file
@ -0,0 +1,100 @@
|
||||
serverRestart = false; // true sends #shutdown command to server after the time specified in ForceRestartTime
|
||||
forceRestartTime = 14400; // 4 hour restarts
|
||||
|
||||
StorageSlotsLimit = 1500; // Max storage slots allowed. Warning! Higher the number lower performance.
|
||||
BuildingSlotsLimit = 1500; // Max building slots allowed. Warning! Higher the number lower performance.
|
||||
|
||||
// Time based
|
||||
StaticDateTime[] = {2035,6,10,7,0}; // {0,0,0,8,0} would forces the server to start at 8am each time it is started while allowing the year, month and day to stay real time. Any values left at 0 will result in no change.
|
||||
timeDifference = 0; // Server uses real time this will allow you to offset just the hour.
|
||||
timeMultiplier = 4; // Sets a time multiplier for in-game time. The command range is now capped at 0.1 - 120 to avoid performance problems.
|
||||
lootMultiplier = 0.5; // 1 = max loot bias. This controls how much loot can payout per Epoch loot container.
|
||||
// Events
|
||||
WeatherChangeTime = 1200; // This controls how fast the weather changes as well as how fast shipping containers and earthquakes happen.
|
||||
WeatherStaticForecast[] = {}; // Default: {75.5,0,{0,0,0},0,{1,1}}; // Clear day; {19,1,{1,1,40},1,{5,5}}; // Cold Foggy Rainy Overcast Windy; Format: {temp <scalar>,rain <scalar>,fog <array>,overcast <scalar>,wind <array>}
|
||||
events[] = {
|
||||
{ 3600, "CarnivalSpawner" }, // SECOND <scalar>, EVENT <string>
|
||||
{ 1200, "EarthQuake" },
|
||||
{ 1200, "ContainerSpawner" },
|
||||
{ 300, "PlantSpawner" } //No comma on last Entry
|
||||
};
|
||||
|
||||
// Antagonists
|
||||
antagonistChanceTrash = 0.09; //9% chance when player loot a trash object
|
||||
antagonistChancePDeath = 0.33; //33% chance when player was killed from a other player (selfkill doesn't count)
|
||||
antagonistChanceLoot = 0.09; //9% chance when player click "SEARCH" on a loot object
|
||||
|
||||
// Player Related
|
||||
cloneCost = 100; // debt incurred on player death
|
||||
|
||||
// vehicles - Max vehicle slots is calculated from per vehicle limits below. Warning! Higher the number lower the performance.
|
||||
vehicleLockTime = 1800; // Controls how many seconds it takes to allow another person/group to unlock vehicle.
|
||||
allowedVehiclesList[] = {
|
||||
{"C_Offroad_01_EPOCH",8},
|
||||
{"C_Quadbike_01_EPOCH",8},
|
||||
{"C_Hatchback_01_EPOCH",10},
|
||||
{"C_Hatchback_02_EPOCH",10},
|
||||
{"C_SUV_01_EPOCH",10},
|
||||
{"C_Rubberboat_EPOCH",5},
|
||||
{"C_Rubberboat_02_EPOCH",5},
|
||||
{"C_Rubberboat_03_EPOCH",5},
|
||||
{"C_Rubberboat_04_EPOCH",5},
|
||||
{"C_Van_01_box_EPOCH",8},
|
||||
{"C_Van_01_transport_EPOCH",9},
|
||||
{"C_Boat_Civil_01_EPOCH",5},
|
||||
{"C_Boat_Civil_01_police_EPOCH",5},
|
||||
{"C_Boat_Civil_01_rescue_EPOCH",5},
|
||||
{"B_Heli_Light_01_EPOCH",2},
|
||||
{"B_SDV_01_EPOCH",2},
|
||||
{"B_MRAP_01_EPOCH",3},
|
||||
{"B_Truck_01_transport_EPOCH",1},
|
||||
{"B_Truck_01_covered_EPOCH",2},
|
||||
{"B_Truck_01_mover_EPOCH",1},
|
||||
{"B_Truck_01_box_EPOCH",1},
|
||||
{"O_Truck_02_covered_EPOCH",2},
|
||||
{"O_Truck_02_transport_EPOCH",1},
|
||||
{"O_Truck_03_covered_EPOCH",1},
|
||||
{"O_Truck_02_box_EPOCH",1},
|
||||
{"I_Heli_light_03_unarmed_EPOCH",1},
|
||||
{"O_Heli_Light_02_unarmed_EPOCH",1},
|
||||
{"I_Heli_Transport_02_EPOCH",1},
|
||||
{"O_Heli_Transport_04_EPOCH",1},
|
||||
{"O_Heli_Transport_04_bench_EPOCH",1},
|
||||
{"O_Heli_Transport_04_box_EPOCH",1},
|
||||
{"O_Heli_Transport_04_covered_EPOCH",1},
|
||||
{"B_Heli_Transport_03_unarmed_EPOCH",1},
|
||||
{"jetski_epoch",7},
|
||||
{"K01",2},
|
||||
{"K02",2},
|
||||
{"K03",2},
|
||||
{"K04",2},
|
||||
{"ebike_epoch",7},
|
||||
{"mosquito_epoch",7}
|
||||
};
|
||||
|
||||
// Traders
|
||||
taxRate = 0.1; // controls the price increase for purchases
|
||||
starterTraderItems[] = { { "ItemSodaBurst", "meatballs_epoch", "MortarBucket", "CinderBlocks", "VehicleRepair", "CircuitParts", "ItemCorrugated", "PartPlankPack", "ItemRock", "ItemRope", "ItemStick" }, { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 } }; // Starter Items for fresh spawned trader first array is classnames second is quantity.
|
||||
NPCSlotsLimit = 50; // Max number of traders static or dynamic. Warning! Higher the number lower performance.
|
||||
forceStaticTraders = false; // disables traders moving from work to home
|
||||
|
||||
// Markers
|
||||
showEarthQuakes = true; // show mineral viens caused by earthquakes
|
||||
showShippingContainers = true; // Show location of events based loots (plants, shipping container, Carnival)
|
||||
SHOW_TRADERS = true; // Show locations of traders
|
||||
SHOW_JAMMERS = false; // Shows location of base jammers
|
||||
SHOW_BOATLOOT = true; // Shows the location of shipwreck loot
|
||||
DEBUG_VEH = false; // DEBUG ONLY used to debug spawing of vehicles
|
||||
|
||||
// Hive Related
|
||||
expiresBuilding = "604800"; // expiration date in seconds for buildings
|
||||
expiresPlayer = "2592000"; // expiration date in seconds for players
|
||||
expiresBank = "7776000"; // expiration date in seconds for players bank
|
||||
expiresVehicle = "604800"; // expiration date in seconds for vehicles
|
||||
expiresAIdata = "604800"; // expiration date in seconds for NPC Trader inventory
|
||||
hiveAsync = true; // true = asynchronous hive calls (non blocking), false = synchronous hive calls (blocking)
|
||||
|
||||
// Admin Features
|
||||
hiveAdminCmdExec = false; // true = enables extra (To Be Released) feature to allow execution of code via hive.
|
||||
hiveAdminSavePlayerList = true; // true = enables saving of playerUID array to hive value PLAYERS:#InstanceID.
|
||||
hiveAdminCmdTime = 5; // how many seconds between each command queue call.
|
BIN
Server Install Pack/@epochhive/epochserver.so
Normal file
BIN
Server Install Pack/@epochhive/epochserver.so
Normal file
Binary file not shown.
1
Server Install Pack/@epochhive/libhiredis.so
Normal file
1
Server Install Pack/@epochhive/libhiredis.so
Normal file
@ -0,0 +1 @@
|
||||
libhiredis.so.0.10
|
BIN
Server Install Pack/@epochhive/libhiredis.so.0.10
Normal file
BIN
Server Install Pack/@epochhive/libhiredis.so.0.10
Normal file
Binary file not shown.
1
Server Install Pack/@epochhive/libpcre.so
Normal file
1
Server Install Pack/@epochhive/libpcre.so
Normal file
@ -0,0 +1 @@
|
||||
libpcre.so.3.13.1
|
BIN
Server Install Pack/@epochhive/libpcre.so.3
Normal file
BIN
Server Install Pack/@epochhive/libpcre.so.3
Normal file
Binary file not shown.
458
Server Install Pack/BEC/Plugins/WatchDog/__init__.py
Normal file
458
Server Install Pack/BEC/Plugins/WatchDog/__init__.py
Normal file
@ -0,0 +1,458 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
|
||||
#============================================================
|
||||
__version__ = "0.16"
|
||||
__license__ = "Gpl v2"
|
||||
__copyright__ = "Copyright 2014, Stian Mikalsen"
|
||||
__author__ = "Stian Mikalsen"
|
||||
__description__ = 'File Reloader for Bec 1.596+'
|
||||
__author_email__ = "stianmikalsen@hotmail.com"
|
||||
__maintainer__ = "You and yourself. ;), me if you gimme a beer ;)"
|
||||
#============================================================
|
||||
|
||||
# This Plugin will reloade current files if they change, get edited etc.
|
||||
# Admins.xml, Commands.xml, WhiteList.txt, BadWords.txt, BadNames.txt
|
||||
|
||||
# This means that you can edit your Admins.xml or WhiteList.txt ,..., without restarting Bec.exe for it to have effect.
|
||||
# The plugin is set to watch over the files every 5th second.
|
||||
|
||||
# Note. its unknown if the plugin will work if the file(s) are stored on network drive(s).
|
||||
# I am unsure is os.stat(filename).st_mtime will work on them.
|
||||
# Nor do i know if it will work with linux/wine.
|
||||
|
||||
#--------------------------------------------------------------------------------------------------
|
||||
|
||||
#
|
||||
# If you want it to start no matter what server, then leave it empty
|
||||
# Default set to start on any configuration...
|
||||
# Else put in the name of the config file you want to start this on. remember the quotes around the name. ["myconf.cfg"]
|
||||
SERVERS = []
|
||||
|
||||
|
||||
# Include your mission filter file if you are using mission BE filters. include the full name. but not the path,
|
||||
#MISSIONS = [
|
||||
# "test.altis",
|
||||
# "warfare.altis"]
|
||||
MISSIONS = []
|
||||
|
||||
|
||||
|
||||
|
||||
##############################################################################################
|
||||
# Unless you know what you are doing..
|
||||
# Do not edit anything below this line.
|
||||
##############################################################################################
|
||||
|
||||
BE_FILTER_FILES = [
|
||||
"addbackpackcargo.txt",
|
||||
"addmagazinecargo.txt",
|
||||
"addweaponcargo.txt",
|
||||
"attachto.txt",
|
||||
"createvehicle.txt",
|
||||
"deleteVehicle.txt",
|
||||
"mpeventhandler.txt",
|
||||
"publicvariable.txt",
|
||||
"publicvariableval.txt",
|
||||
"remotecontrol.txt",
|
||||
"remoteexec.txt",
|
||||
"scripts.txt",
|
||||
"selectplayer.txt",
|
||||
"setdamage.txt",
|
||||
"setpos.txt",
|
||||
"setvariable.txt",
|
||||
"setvariableval.txt",
|
||||
"teamswitch.txt",
|
||||
"waypointcondition.txt",
|
||||
"waypointstatement.txt"]
|
||||
|
||||
|
||||
# Import some common modules.
|
||||
import os
|
||||
import sys
|
||||
import thread
|
||||
import time
|
||||
|
||||
# Import custom modules
|
||||
sys.path.append(os.getcwd()+"\\Plugins\\\WatchDog")
|
||||
from Lib.BecClasses import Timec as CT
|
||||
from Lib.BecClasses import File_Logging as FL
|
||||
from Lib.Bec_XmlHandler import XmlParser as XP
|
||||
|
||||
|
||||
# Debug mode
|
||||
Debug = True
|
||||
#Debug = False
|
||||
|
||||
class WatchDogs(object):
|
||||
|
||||
def __init__(self, instance):
|
||||
self.bec = instance
|
||||
self.checkinterval = 5 # never set 0
|
||||
self.dogs_sniff_my_files()
|
||||
|
||||
# function to start the monitor threads.
|
||||
# we create one thread for each file we want to monitor.
|
||||
def dogs_sniff_my_files(self):
|
||||
|
||||
###############################
|
||||
# Admins.xml
|
||||
try:
|
||||
thread.start_new_thread(self.sniff_admins,())
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+' : Creating watchdog for admin file...'
|
||||
FL().LogBeClient(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
print Logstring
|
||||
except Exception, WatchDog_admins_threadtask_error:
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+" : Can't create watchdog for admin file"
|
||||
print Logstring,":\n",WatchDog_admins_threadtask_error
|
||||
FL().LogBecError(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
pass
|
||||
|
||||
###############################
|
||||
# Commands.xml
|
||||
try:
|
||||
thread.start_new_thread(self.sniff_commands,())
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+' : Creating watchdog for command file...'
|
||||
FL().LogBeClient(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
print Logstring
|
||||
except Exception, WatchDog_commands_threadtask_error:
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+" : Can't create watchdog for command file"
|
||||
print Logstring,":\n",WatchDog_commands_threadtask_error
|
||||
FL().LogBecError(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
pass
|
||||
|
||||
###############################
|
||||
# Whitelist file
|
||||
if self.bec.Bec_Cfg_Misc_WhiteListFile:
|
||||
|
||||
if not self.bec._Bec_whitelist:
|
||||
self.bec._Bec_whitelist.append('ffffffffffffffffffffffffffffffff')
|
||||
|
||||
try:
|
||||
thread.start_new_thread(self.sniff_whitelist,())
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+' : Creating watchdog for whitelist file...'
|
||||
FL().LogBeClient(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
print Logstring
|
||||
except Exception, WatchDog_whitelist_threadtask_error:
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+" : Can't create watchdog for whitelist file"
|
||||
print Logstring,":\n",WatchDog_whitelist_threadtask_error
|
||||
FL().LogBecError(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
pass
|
||||
|
||||
###############################
|
||||
# Badwords file
|
||||
if self.bec._Bec_unwantedwords:
|
||||
try:
|
||||
thread.start_new_thread(self.sniff_badwords,())
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+' : Creating watchdog for badwords file...'
|
||||
FL().LogBeClient(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
print Logstring
|
||||
except Exception, WatchDog_badwords_threadtask_error:
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+" : Can't create watchdog for badwords file"
|
||||
print Logstring,":\n",WatchDog_badwords_threadtask_error
|
||||
FL().LogBecError(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
pass
|
||||
|
||||
###############################
|
||||
# Badnames file
|
||||
if self.bec._Bec_unvalidnicks:
|
||||
try:
|
||||
thread.start_new_thread(self.sniff_badnames,())
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+' : Creating watchdog for badnames file...'
|
||||
FL().LogBeClient(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
print Logstring
|
||||
except Exception, WatchDog_badnames_threadtask_error:
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+" : Can't create watchdog for badnames file"
|
||||
print Logstring,":\n",WatchDog_badnames_threadtask_error
|
||||
FL().LogBecError(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
pass
|
||||
|
||||
###############################
|
||||
# BE filter files
|
||||
try:
|
||||
thread.start_new_thread(self.sniff_be_filters,())
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+' : Creating watchdog for BE filter files...'
|
||||
FL().LogBeClient(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
print Logstring
|
||||
except Exception, WatchDog_BeFilter_threadtask_error:
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+" : Can't create watchdog for be filter files"
|
||||
print Logstring,":\n",WatchDog_BeFilter_threadtask_error
|
||||
FL().LogBecError(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
pass
|
||||
|
||||
########################################################################
|
||||
# Sniffing thread jobs..
|
||||
########################################################################
|
||||
def sniff_whitelist(self):
|
||||
while True:
|
||||
try:
|
||||
sniff_old = os.stat( self.bec.Bec_Cfg_Misc_WhiteListFile ).st_mtime
|
||||
time.sleep( self.checkinterval )
|
||||
sniff_new = os.stat( self.bec.Bec_Cfg_Misc_WhiteListFile ).st_mtime
|
||||
except:
|
||||
# so many issue. ifile removed etc..
|
||||
sniff_old = False
|
||||
sniff_new = False
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+" Error in checking Whitelist file"
|
||||
print Logstring,":\n",WatchDog_fileread_error
|
||||
FL().LogBecError(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
|
||||
if sniff_old != sniff_new:
|
||||
try:
|
||||
self.bec._Bec_whitelist = FL().ReadWhiteListFile( self.bec.Bec_Cfg_Misc_WhiteListFile )
|
||||
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+' : Whitelist file changed. reloading data...'
|
||||
FL().LogBeClient(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
print Logstring
|
||||
except Exception, WatchDog_fileread_error:
|
||||
# if an error occures when reading the whitelist file.
|
||||
# disable the whitelist system until the file is valid.
|
||||
# self.bec._Bec_whitelist = False
|
||||
|
||||
# we may not want to do that since the list may already contain guids of players...
|
||||
# and the data from the file is read to mem. the onconnect will use this as the checkpoint.
|
||||
# we can validate the list instead.
|
||||
|
||||
|
||||
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+" Error in reading Whitelist file"
|
||||
print Logstring,":\n",WatchDog_fileread_error
|
||||
FL().LogBecError(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
|
||||
def sniff_badwords(self):
|
||||
while True:
|
||||
try:
|
||||
sniff_old = os.stat( self.bec.Bec_Cfg_Misc_WordFilterFile ).st_mtime
|
||||
time.sleep( self.checkinterval )
|
||||
sniff_new = os.stat( self.bec.Bec_Cfg_Misc_WordFilterFile ).st_mtime
|
||||
except:
|
||||
# so many issue. ifile removed etc..
|
||||
sniff_old = False
|
||||
sniff_new = False
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+" Error in checking Badwords file"
|
||||
print Logstring,":\n",WatchDog_fileread_error
|
||||
FL().LogBecError(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
|
||||
if sniff_old != sniff_new:
|
||||
try:
|
||||
self.bec._Bec_unwantedwords = FL().ReadFile( self.bec.Bec_Cfg_Misc_WordFilterFile )
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+' : Badwords file changed. reloading data...'
|
||||
FL().LogBeClient(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
print Logstring
|
||||
|
||||
except Exception, WatchDog_fileread_error:
|
||||
self.bec._Bec_unwantedwords = False
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+" Error loading Badwords file"
|
||||
print Logstring,":\n",WatchDog_fileread_error
|
||||
FL().LogBecError(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
pass
|
||||
|
||||
def sniff_badnames(self):
|
||||
while True:
|
||||
try:
|
||||
sniff_old = os.stat( self.bec.Bec_Cfg_Misc_NickFilterFile ).st_mtime
|
||||
time.sleep( self.checkinterval )
|
||||
sniff_new = os.stat( self.bec.Bec_Cfg_Misc_NickFilterFile ).st_mtime
|
||||
except:
|
||||
# so many issue. ifile removed etc..
|
||||
sniff_old = False
|
||||
sniff_new = False
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+" Error in checking Badnames file"
|
||||
print Logstring,":\n",WatchDog_fileread_error
|
||||
FL().LogBecError(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
|
||||
if sniff_old != sniff_new:
|
||||
try:
|
||||
self.bec._Bec_unvalidnicks = FL().ReadFile( self.bec.Bec_Cfg_Misc_NickFilterFile )
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+' : Badnames file changed. reloading data...'
|
||||
FL().LogBeClient(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
print Logstring
|
||||
except Exception, WatchDog_fileread_error:
|
||||
self.bec._Bec_unvalidnicks = False
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+" Error loading Badnames file"
|
||||
print Logstring,":\n",WatchDog_fileread_error
|
||||
FL().LogBecError(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
pass
|
||||
|
||||
def sniff_admins(self):
|
||||
while True:
|
||||
try:
|
||||
sniff_old = os.stat( self.bec.Bec_Cfg_Main_Admins ).st_mtime
|
||||
time.sleep( self.checkinterval )
|
||||
sniff_new = os.stat( self.bec.Bec_Cfg_Main_Admins ).st_mtime
|
||||
except:
|
||||
# so many issue. ifile removed etc..
|
||||
sniff_old = False
|
||||
sniff_new = False
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+" Error in checking Admin file"
|
||||
print Logstring,":\n",WatchDog_fileread_error
|
||||
FL().LogBecError(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
|
||||
if sniff_old != sniff_new:
|
||||
try:
|
||||
# Get the updated file.
|
||||
test = XP()._admin( self.bec.Bec_Cfg_Main_Admins )
|
||||
|
||||
# If we have admins, continue...
|
||||
if len(test) > 0:
|
||||
|
||||
# if we removed an admin from the file that was online. update this too.
|
||||
for key in self.bec.Bec_adminsconnected.keys():
|
||||
guid = self.bec.Bec_adminsconnected[key][1]
|
||||
|
||||
if not guid in test.keys():
|
||||
del self.bec.Bec_adminsconnected[key]
|
||||
|
||||
self.bec._Bec_admins = test
|
||||
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+' : Admin file changed. reloading data...'
|
||||
FL().LogBeClient(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
print Logstring
|
||||
|
||||
# we removed all our admins from the admins.xml file...
|
||||
else:
|
||||
# set the dict empty...
|
||||
self.bec._Bec_admins = {}
|
||||
self.bec.Bec_adminsconnected = {}
|
||||
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+' : Admin file changed. But no admins defined...'
|
||||
FL().LogBeClient(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
print Logstring
|
||||
|
||||
except Exception, WatchDog_fileread_error:
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+" Error Parsing Admin file"
|
||||
print Logstring,":\n",WatchDog_fileread_error
|
||||
FL().LogBecError(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
pass
|
||||
|
||||
def sniff_commands(self):
|
||||
while True:
|
||||
try:
|
||||
sniff_old = os.stat( self.bec.Bec_Cfg_Main_Commands ).st_mtime
|
||||
time.sleep( self.checkinterval )
|
||||
sniff_new = os.stat( self.bec.Bec_Cfg_Main_Commands ).st_mtime
|
||||
except:
|
||||
# so many issue. ifile removed etc..
|
||||
sniff_old = False
|
||||
sniff_new = False
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+" Error in checking Command file"
|
||||
print Logstring,":\n",WatchDog_fileread_error
|
||||
FL().LogBecError(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
|
||||
if sniff_old != sniff_new:
|
||||
try:
|
||||
|
||||
# Get the updated command file
|
||||
test = XP()._commands( self.bec.Bec_Cfg_Main_Commands )
|
||||
|
||||
# If we have commands, continue...
|
||||
if len(test) > 0:
|
||||
|
||||
self.bec._Bec_commands = test
|
||||
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+' : Command file changed. reloading data...'
|
||||
FL().LogBeClient(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
print Logstring
|
||||
|
||||
# We have removed all commands form the commands.xml file.
|
||||
else:
|
||||
|
||||
# set the dict empty...
|
||||
self.bec._Bec_commands = {}
|
||||
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+' : Command file changed. But no commands defined...'
|
||||
FL().LogBeClient(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
print Logstring
|
||||
|
||||
except Exception, WatchDog_fileread_error:
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+" Error Parsing Command file"
|
||||
print Logstring,":\n",WatchDog_fileread_error
|
||||
FL().LogBecError(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
pass
|
||||
|
||||
def sniff_be_filters(self):
|
||||
|
||||
# Append the mission prefix to the list of filters.
|
||||
befilters = BE_FILTER_FILES[:]
|
||||
bemf = []
|
||||
if len(MISSIONS) > 0:
|
||||
for mission in MISSIONS:
|
||||
for filter in befilters:
|
||||
missionfilter = mission+"\\"+filter
|
||||
bemf.append(missionfilter)
|
||||
|
||||
# Validate the file path. see which exists..
|
||||
befilters = befilters + bemf
|
||||
vaild_befilters = []
|
||||
for file in befilters:
|
||||
if os.path.isfile(self.bec.Bec_Cfg_Main_BePath+"\\"+file):
|
||||
vaild_befilters.append(file)
|
||||
|
||||
run = True
|
||||
if len(vaild_befilters) == 0:
|
||||
run = False
|
||||
Logstring = CT().GetTime()+" : No BE filter files found or is not defined.. Skipping watchdog for BE filter files."
|
||||
print Logstring
|
||||
FL().LogBecError(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
|
||||
while run:
|
||||
check_list = {}
|
||||
for file in vaild_befilters:
|
||||
try:
|
||||
sniff_old = os.stat( self.bec.Bec_Cfg_Main_BePath+"\\"+file ).st_mtime
|
||||
check_list[file] = sniff_old
|
||||
except:
|
||||
check_list[file] = False
|
||||
|
||||
time.sleep( self.checkinterval )
|
||||
|
||||
for file in vaild_befilters:
|
||||
try:
|
||||
sniff_old = os.stat( self.bec.Bec_Cfg_Main_BePath+"\\"+file ).st_mtime
|
||||
except:
|
||||
sniff_old = False
|
||||
|
||||
if sniff_old != check_list[file]:
|
||||
|
||||
if file.endswith("scripts.txt"):
|
||||
self.bec._Bec_queuelist.append("loadScripts")
|
||||
else:
|
||||
self.bec._Bec_queuelist.append("loadEvents")
|
||||
|
||||
if Debug:
|
||||
Logstring = CT().GetTime()+' : BE Filter file:'+file+' was changed. reloading data...'
|
||||
FL().LogBeClient(self.bec.Bec_Cfg_Main_LogDirPath, Logstring)
|
||||
print Logstring
|
||||
|
||||
|
||||
# start function for the plugin that Bec uses.
|
||||
def start(x):
|
||||
WatchDogs(x)
|
20
Server Install Pack/DB/Redis-License.txt
Normal file
20
Server Install Pack/DB/Redis-License.txt
Normal file
@ -0,0 +1,20 @@
|
||||
http://redis.io/topics/license
|
||||
|
||||
Redis license and trademark information
|
||||
Redis is open source software released under the terms of the three clause BSD license. Most of the Redis source code was written and is copyrighted by Salvatore Sanfilippo and Pieter Noordhuis. A list of other contributors can be found in the git history.
|
||||
The Redis trademark and logo are owned by Salvatore Sanfilippo and can be used in accordance with the Redis Trademark Guidelines.
|
||||
Three clause BSD license
|
||||
Every file in the Redis distribution, with the exceptions of third party files specified in the list below, contain the following license:
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
Neither the name of Redis nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
Third party files and licenses
|
||||
Redis uses source code from third parties. All this code contians a BSD or BSD-compatible license. The following is a list of third party files and information about their copyright.
|
||||
Redis uses the LHF compression library. LibLZF is copyright Marc Alexander Lehmann and is released under the terms of the two clause BSD license.
|
||||
Redis uses the sha1.c file that is copyright by Steve Reid and released under the public domain. This file is extremely popular and used among open source and proprietary code.
|
||||
When compiled on Linux Redis uses the Jemalloc allocator, that is copyright by Jason Evans, Mozilla Foundation and Facebook, Inc and is released under the two clause BSD license.
|
||||
Inside Jemalloc the file pprof is copyright Google Inc and released under the three clause BSD license.
|
||||
Inside Jemalloc the files inttypes.h, stdbool.h, stdint.h, strings.h under the msvc_compat directory are copyright Alexander Chemeris and released under the three clause BSD license.
|
||||
The libraries hiredis and linenoise also included inside the Redis distribution are copyright Salvatore Sanfilippo and Pieter Noordhuis and released under the terms respectively of the three clause BSD license and two clause BSD license.
|
6
Server Install Pack/DB/redis.conf
Normal file
6
Server Install Pack/DB/redis.conf
Normal file
@ -0,0 +1,6 @@
|
||||
bind 127.0.0.1
|
||||
maxmemory 1gb
|
||||
save 900 1
|
||||
save 300 10
|
||||
save 60 1000
|
||||
requirepass Changeme9832
|
1
Server Install Pack/DB/start-redis.cmd
Normal file
1
Server Install Pack/DB/start-redis.cmd
Normal file
@ -0,0 +1 @@
|
||||
START redis-server.exe redis.conf
|
26
Server Install Pack/INSTALL.txt
Normal file
26
Server Install Pack/INSTALL.txt
Normal file
@ -0,0 +1,26 @@
|
||||
A3 EPOCH Server Install Guide
|
||||
|
||||
Prerequisites:
|
||||
|
||||
Visual C++ Redistributable Packages for Visual Studio 2013:
|
||||
http://www.microsoft.com/en-us/download/details.aspx?id=40784
|
||||
|
||||
== INSTALL ==
|
||||
|
||||
1. Remove any previous @Epoch folders and Install A3 Epoch client files (@Epoch) into Arma3 root directory.
|
||||
2. Remove any previous @EpochHive folder and copy all server files from zip into Arma3 root directory.
|
||||
3. Open "DB" folder and start redis-server.exe with the parameter "redis.conf" or use start-redis.cmd. (Only one redis instance is needed per box, All servers connecting to the same redis will share character data by default.)
|
||||
4. Open @EpochHive folder and edit EpochServer.ini BattlEyePath to match your server path to Battleye.
|
||||
5. If running multiple servers on the same box, open "@EpochHive" folder and edit the "EpochServer.ini" setting "InstanceID" to a unique string for each A3 Epoch server.
|
||||
6. Open "SC" folder and edit the config.cfg server name, password, etc.
|
||||
7. Open the SC/Battleye folder and rename example-BEServer.cfg to BEServer.cfg and change the RConPassword.
|
||||
7. Look at the "start-A3-cmd-line-example.txt" file for an example command line for starting your server.
|
||||
|
||||
== NOTES ==
|
||||
|
||||
* As of 0.2.5.2 Server Hotfix Build A you only need BEC (http://ibattle.org/) with watchdog plugin (included in BEC folder) if you use do not use a PVS prefix.
|
||||
* You should use a service restarter (like firedaemon) to keep the redis server and Arma 3 server running.
|
||||
* A3 Server should be restarted every 4 hours. A good option ssing BEC http://ibattle.org/ scheduler and the #shutdown rcon command works well. (Scheduler Example: https://gist.github.com/vbawol/38b2f57d89c2c36106b3)
|
||||
* The log rotator found in tools should only need one path to Arma 3 changed and should be ran just before the Arma 3 server starts. (firedeamon Pre/post service: Before Event)
|
||||
* It is recommended that you use ASM https://github.com/fred41/ASM to monitor your server performance.
|
||||
* Go to http://epochmod.com/forum/ for more help if needed.
|
9
Server Install Pack/LICENSE.txt
Normal file
9
Server Install Pack/LICENSE.txt
Normal file
@ -0,0 +1,9 @@
|
||||
Epoch Mod - http://www.epochmod.com
|
||||
Arma 3: Epoch Mod is currently licensed under:
|
||||
|
||||
Epoch Mod by Epoch Mod Team is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
|
||||
http://creativecommons.org/licenses/by-nc-nd/4.0/
|
||||
|
||||
You must also abide by all license and game usage restrictions from BI:
|
||||
Arma 3: End User License: https://www.bistudio.com/community/licenses/arma3-end-user-license
|
||||
Arma 3: Game Content Rules: https://www.bistudio.com/community/game-content-usage-rules
|
12
Server Install Pack/README.txt
Normal file
12
Server Install Pack/README.txt
Normal file
@ -0,0 +1,12 @@
|
||||
Arma 3: Epoch Mod - EpochMod.com
|
||||
|
||||
Developers
|
||||
Aaron Clark - [VB]AWOL - Game Design, Code
|
||||
Kenneth Bente - Axle - Public Relations
|
||||
Paul Tomany - Sequisha - Models, Textures
|
||||
Darren Harrison - Kiory - Models, Textures
|
||||
Damian Clark - [VB]GREEN - Graphics
|
||||
Niklas Wagner - Skaronator - Code - http://skaronator.com/
|
||||
Andrew Gregory - Axeman - AI Code
|
||||
Florian Kinder - Fank - DLL Code
|
||||
Denis Erygin - devd - Linux DLL Support
|
117
Server Install Pack/Tools/log-rotator.cmd
Normal file
117
Server Install Pack/Tools/log-rotator.cmd
Normal file
@ -0,0 +1,117 @@
|
||||
@echo off
|
||||
|
||||
:::::::::::::: CONFIG ::::::::::::::::::
|
||||
|
||||
:: Set your Arma3 Epoch Base installation directory. LEAVE OFF THE ENDING \
|
||||
set arma3srvpath=C:\Program Files (x86)\Steam\SteamApps\common\Arma 3
|
||||
|
||||
:: Set your Default server profile name. This is the name of the directory that stores your server.cfg
|
||||
:: This will be used in the case that you don't launch this script without the server param.
|
||||
:: Example: SC, US6, Chicago13, ect
|
||||
:: DEFAULTPROFILE
|
||||
set srvname=SC
|
||||
:: Delete Original log files after they have been rotated? This keeps your logs more organized and saves space.
|
||||
:: This will not work unless the server is stopped first. This option works best set to 1 when using FireDaemon's Pre/Post Service tab
|
||||
set deloriglogs=1
|
||||
|
||||
::::::::::: ADVANCED CONFIG ::::::::::::
|
||||
:: Don't touch anything below this point unless you know what your doing.
|
||||
|
||||
:: Setting Server Profile to Use
|
||||
IF "%1"=="" (
|
||||
set servername=%srvname%
|
||||
) else (
|
||||
set servername=%1
|
||||
)
|
||||
|
||||
TITLE ArmaIII Epoch %servername% Server Log Rotater
|
||||
|
||||
:: Set Debug Mode
|
||||
set debug=0
|
||||
:: Set Debug Timeout in seconds
|
||||
set dbsecs=10
|
||||
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::: STOP EDITING ::::::::::::::::::::::::::::::::::::::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
|
||||
:: Display Debug output
|
||||
if %debug% == 1 (
|
||||
echo Server Name = %servername%
|
||||
echo ArmaIII Server Path = "%arma3srvpath%"
|
||||
timeout %dbsecs%
|
||||
)
|
||||
|
||||
:: Set Time and Date
|
||||
SET HOUR=%time:~0,2%
|
||||
SET dtStamp9=%date:~-4%%date:~4,2%%date:~7,2%_0%time:~1,1%%time:~3,2%_%time:~6,2%
|
||||
SET dtStamp24=%date:~-4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%_%time:~6,2%
|
||||
::Make Date Stamp
|
||||
if "%HOUR:~0,1%" == " " (SET dtStamp=%dtStamp9%) else (SET dtStamp=%dtStamp24%)
|
||||
ECHO Todays Date and time (%date%)(%time%) / %dtStamp%
|
||||
if %debug% == 1 (
|
||||
timeout %dbsecs%
|
||||
)
|
||||
|
||||
echo (%date%) (%time%) Starting Log Rotation.
|
||||
|
||||
:: Make the Rotated Log Directorys
|
||||
if exist "%arma3srvpath%\%servername%\RotatedLogs" goto maketsdir
|
||||
mkdir "%arma3srvpath%\%servername%\RotatedLogs"
|
||||
:maketsdir
|
||||
if exist "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%" goto makebedir
|
||||
mkdir "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%"
|
||||
:makebedir
|
||||
if exist "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\BattlEye" goto rotatelogs
|
||||
mkdir "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\BattlEye"
|
||||
|
||||
if exist "%arma3srvpath%\DBbackups\RotatedLogs\%dtStamp%\DBbackups" goto rotatelogs
|
||||
mkdir "%arma3srvpath%\DBbackups\RotatedLogs\%dtStamp%\DBbackups"
|
||||
|
||||
:rotatelogs
|
||||
:: Starting Log Rotation. If there are any other logs, just follow the format below, and make sure to NOT touch any of the varibles.
|
||||
copy "%arma3srvpath%\%servername%\BattlEye\scripts.log" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\BattlEye\scripts.log"
|
||||
copy "%arma3srvpath%\%servername%\BattlEye\createvehicle.log" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\BattlEye\createvehicle.log"
|
||||
copy "%arma3srvpath%\%servername%\BattlEye\deletevehicle.log" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\BattlEye\deletevehicle.log"
|
||||
copy "%arma3srvpath%\%servername%\BattlEye\attachto.log" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\BattlEye\attachto.log"
|
||||
copy "%arma3srvpath%\%servername%\BattlEye\publicvariable.log" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\BattlEye\publicvariable.log"
|
||||
copy "%arma3srvpath%\%servername%\BattlEye\remoteexec.log" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\BattlEye\remoteexec.log"
|
||||
copy "%arma3srvpath%\%servername%\BattlEye\selectplayer.log" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\BattlEye\selectplayer.log"
|
||||
copy "%arma3srvpath%\%servername%\BattlEye\setpos.log" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\BattlEye\setpos.log"
|
||||
copy "%arma3srvpath%\%servername%\BattlEye\setvariable.log" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\BattlEye\setvariable.log"
|
||||
copy "%arma3srvpath%\%servername%\BattlEye\setdamage.log" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\BattlEye\setdamage.log"
|
||||
copy "%arma3srvpath%\%servername%\BattlEye\addmagazinecargo.log" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\BattlEye\addmagazinecargo.log"
|
||||
copy "%arma3srvpath%\%servername%\BattlEye\addbackpackcargo.log" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\BattlEye\addbackpackcargo.log"
|
||||
copy "%arma3srvpath%\%servername%\BattlEye\addweaponcargo.log" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\BattlEye\addweaponcargo.log"
|
||||
copy "%arma3srvpath%\%servername%\BattlEye\mpeventhandler.log" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\BattlEye\mpeventhandler.log"
|
||||
::copy "%arma3srvpath%\dump.rdb" "%arma3srvpath%\DBbackups\RotatedLogs\%dtStamp%\DBbackups\dump.rdb"
|
||||
copy "%arma3srvpath%\DB\dump.rdb" "%arma3srvpath%\DBbackups\RotatedLogs\%dtStamp%\DBbackups\dump.rdb"
|
||||
copy "%arma3srvpath%\%servername%\A3Master_*.log" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\A3Master_*.log"
|
||||
copy "%arma3srvpath%\%servername%\arma3server_*.rpt" "%arma3srvpath%\%servername%\RotatedLogs\%dtStamp%\arma3server_*.rpt"
|
||||
|
||||
|
||||
echo (%date%) (%time%) Logs are backed up now...
|
||||
echo (%date%) (%time%) Removing original log files.
|
||||
del /Q /F "%arma3srvpath%\%servername%\BattlEye\scripts.log"
|
||||
del /Q /F "%arma3srvpath%\%servername%\BattlEye\createvehicle.log"
|
||||
del /Q /F "%arma3srvpath%\%servername%\BattlEye\attachto.log"
|
||||
del /Q /F "%arma3srvpath%\%servername%\BattlEye\deletevehicle.log"
|
||||
del /Q /F "%arma3srvpath%\%servername%\BattlEye\selectplayer.log"
|
||||
del /Q /F "%arma3srvpath%\%servername%\BattlEye\publicvariable.log"
|
||||
del /Q /F "%arma3srvpath%\%servername%\BattlEye\remoteexec.log"
|
||||
del /Q /F "%arma3srvpath%\%servername%\BattlEye\setpos.log"
|
||||
del /Q /F "%arma3srvpath%\%servername%\BattlEye\setvariable.log"
|
||||
del /Q /F "%arma3srvpath%\%servername%\BattlEye\addmagazinecargo.log"
|
||||
del /Q /F "%arma3srvpath%\%servername%\BattlEye\addbackpackcargo.log"
|
||||
del /Q /F "%arma3srvpath%\%servername%\BattlEye\addweaponcargo.log"
|
||||
del /Q /F "%arma3srvpath%\%servername%\BattlEye\mpeventhandler.log"
|
||||
del /Q /F "%arma3srvpath%\%servername%\BattlEye\setdamage.log"
|
||||
del /Q /F "%arma3srvpath%\%servername%\A3Master_*.log"
|
||||
del /Q /F "%arma3srvpath%\%servername%\arma3server_*.rpt"
|
||||
|
||||
if %debug% == 1 (
|
||||
timeout %dbsecs%
|
||||
)
|
||||
|
||||
:: Done
|
||||
exit
|
283
Server Install Pack/epoch_linux_startscript.sh
Normal file
283
Server Install Pack/epoch_linux_startscript.sh
Normal file
@ -0,0 +1,283 @@
|
||||
#!/bin/bash
|
||||
# armaserver: ArmA 3 Linux Dedicated Server Control Script
|
||||
#
|
||||
# original was:
|
||||
# armaserver: ArmA 2 Linux Dedicated Server Control Script
|
||||
# (c) 2010 BIStudio
|
||||
# ArmA 2 binary version must be 1.04 or later
|
||||
#
|
||||
##
|
||||
### modified by Nasdero
|
||||
### V 1.01 - 28.03.2015
|
||||
### added BEPATH and changed handling of logfiles in ${ARMA_DIR}
|
||||
#### modified by [VB]AWOL for Official Epoch Linux Support
|
||||
#=======================================================================
|
||||
#======== CONFIGURATION PARAMETERS ========
|
||||
#======== MUST BE EDITED MANUALLY TO FIT YOUR SYSTEM PARAMETERS ========
|
||||
#=======================================================================
|
||||
export LD_LIBRARY_PATH=.:$HOME/epoch:$HOME/epoch/@epochhive:$LD_LIBRARY_PATH;
|
||||
ARMA_DIR=/home/arma3
|
||||
PORT=2302
|
||||
NAME=sc
|
||||
#NAME= your game name, if you run a Team Death Match server Name=tdm
|
||||
#but you need a folder called tdm in the ${CFG_DIR} folder
|
||||
#run the "check" parameter on this file here, it will give you all infos
|
||||
DELDAYS=7
|
||||
#DELDAYS=7 => old logfiles will be deleted after 7 days
|
||||
#
|
||||
OTHERPARAMS="-maxMem=2047 -nosound -exthreads=1 -noCB -autoinit -loadMissionToMemory"
|
||||
# sample in the next row
|
||||
#OTHERPARAMS="-cpucount=4 -maxMem=2047 -nosound -exthreads=1 -noCB"
|
||||
#MODS=
|
||||
# sample in the next row
|
||||
#MODS=@CBA_A3\;@tmr_alt\;@a3mp
|
||||
MODS=@epoch
|
||||
SERVERMODS=@epochhive
|
||||
#=======================================================================
|
||||
# !!!!!!!!!! DO NOT EDIT ANYTHING BELOW THIS LINE !!!!!!!!!!
|
||||
#=======================================================================
|
||||
CFG_DIR=${ARMA_DIR}
|
||||
CONFIG=${CFG_DIR}/${NAME}/config.cfg
|
||||
CFG=${CFG_DIR}/${NAME}/basic.cfg
|
||||
LOG_DIR=${ARMA_DIR}/logs
|
||||
BEPATH=${CFG_DIR}/${NAME}/battleye/
|
||||
#PROFILES= not working on linux as far as I know, arma 3 uses Player
|
||||
#what ever we try until now, don't use -profiles= in startcmd !!!!!
|
||||
#PROFILES=${CFG_DIR}/${NAME}
|
||||
PROFILES=${NAME}
|
||||
PIDFILE=${ARMA_DIR}/${PORT}.pid
|
||||
RUNFILE=${ARMA_DIR}/${PORT}.run
|
||||
LOGFILE=${LOG_DIR}/port_${PORT}.`date +%d.%m.%y_%H%M`.log
|
||||
SERVER=${ARMA_DIR}/arma3server
|
||||
#=======================================================================
|
||||
ulimit -c 1000000
|
||||
|
||||
case "$1" in
|
||||
|
||||
|
||||
start)
|
||||
# check if there is a server running or not
|
||||
ps ax | grep ${SERVER} | grep ${PORT} > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo -e "\033[31mThere is a Server already running (${SERVER} at Port ${PORT})\033[0m"
|
||||
echo -e "\033[31mIt can happen, when you started a Server and stopped it to fast!\033[0m"
|
||||
echo -e "\033[31mJust stop the Server again and it should be good to start!\033[0m"
|
||||
echo $output | ps ax | grep ${SERVER} | grep ${PORT}
|
||||
else
|
||||
echo -e "Starting A3 server @PORT \033[35m${PORT}\033[0m..."
|
||||
# file to mark we want server running...
|
||||
echo "go" >${RUNFILE}
|
||||
# launch the background watchdog process to run the server
|
||||
nohup </dev/null >/dev/null $0 watchdog &
|
||||
fi
|
||||
;;
|
||||
|
||||
stop)
|
||||
echo -e "Stopping A3 server if there is one (Port=\033[35m${PORT}\033[0m)..."
|
||||
if [ -f ${RUNFILE} ]; then
|
||||
# ask watcher process to exit by deleting its runfile...
|
||||
rm -f ${RUNFILE}
|
||||
else
|
||||
echo -e "\033[31mThere is no runfile (${RUNFILE}), Server shouldn't be up, will shut it down if it is up!\033[0m"
|
||||
fi
|
||||
# and terminate ArmA 3 server process
|
||||
if [ -f ${PIDFILE} ]; then
|
||||
kill -TERM $(< ${PIDFILE})
|
||||
if [ -f ${PIDFILE} ]; then
|
||||
rm -f ${PIDFILE}
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
status)
|
||||
if [ -f ${RUNFILE} ]; then
|
||||
echo -e "\033[32mRunfile exist, Server should be up or is starting...\033[0m"
|
||||
echo -e "\033[35mIf the Server is \033[31mnot done\033[35m with its start, you will \033[31mnot get\033[35m a PID file info in the next rows.\033[0m"
|
||||
echo -e "\033[35mIf the Server is \033[32mdone\033[35m with its start, you will \033[32mget\033[35m a PID file and process info in the next rows.\033[0m"
|
||||
else
|
||||
echo -e "\033[31mRunfile doesn't exist, Server should be down or is going down...\033[0m"
|
||||
fi
|
||||
if [ -f ${PIDFILE} ]; then
|
||||
PID=$(< ${PIDFILE})
|
||||
echo -e "\033[32mPID file exists (PID=\033[35m${PID}\033[0m)..."
|
||||
if [ -f /proc/${PID}/cmdline ]; then
|
||||
echo -e "\033[32mServer process seems to be running...\033[0m"
|
||||
echo $output | ps ax | grep ${SERVER} | grep ${PORT}
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
restart)
|
||||
$0 stop
|
||||
sleep 5s
|
||||
$0 start
|
||||
;;
|
||||
|
||||
watchdog)
|
||||
# zip old logfile and move it to old directory
|
||||
cd ${LOG_DIR}
|
||||
if [ -f port_${PORT}*.log ]; then
|
||||
for i in port_${PORT}*.log; do tar -cvzf $i.tgz $i; rm $i; done
|
||||
mv port_${PORT}*.tgz old/
|
||||
echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Zipping logfiles from ${LOG_DIR} to ${LOG_DIR}/old"
|
||||
else
|
||||
echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] No old logfile to zip in ${LOG_DIR}"
|
||||
fi
|
||||
|
||||
# zip old logfiles and move them to old directory
|
||||
cd ${ARMA_DIR}
|
||||
if find ./*.log -type f; then
|
||||
for i in *.log; do tar -cvzf $i.`date +%d.%m.%y_%H%M`.tgz $i; rm $i; done
|
||||
mv *.tgz log ${LOG_DIR}/old
|
||||
echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Zipping logfiles from ${ARMA_DIR} to ${LOG_DIR}/old"
|
||||
else
|
||||
echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] No old logfiles to zip in ${ARMA_DIR}"
|
||||
fi
|
||||
|
||||
# delete old logs when older then ${DELDAYS} days
|
||||
find ${LOG_DIR}/old -iname "*log.tgz" -mtime +${DELDAYS} -delete
|
||||
echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Deleting all zipped logfile in ${LOG_DIR}/old when older then ${DELDAYS} days."
|
||||
|
||||
# this is a background watchdog process. Do not start directly
|
||||
while [ -f ${RUNFILE} ]; do
|
||||
# launch the server...
|
||||
cd ${ARMA_DIR}
|
||||
echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Starting server (port ${PORT})..."
|
||||
export LD_LIBRARY_PATH=.:${ARMA_DIR}:${ARMA_DIR}/@epochhive:$LD_LIBRARY_PATH
|
||||
|
||||
${SERVER} >>${LOGFILE} 2>&1 -config=${CONFIG} -cfg=${CFG} -port=${PORT} -name=${NAME} -pid=${PIDFILE} -mod=${MODS} -servermod=${SERVERMODS} -bepath=${BEPATH} ${OTHERPARAMS}
|
||||
|
||||
if [ -f ${RUNFILE} ]; then
|
||||
echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Server died, waiting to restart..."
|
||||
sleep 5s
|
||||
else
|
||||
echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Server shutdown intentional, watchdog terminating"
|
||||
fi
|
||||
done
|
||||
;;
|
||||
|
||||
check)
|
||||
clear
|
||||
echo -ne "\033[33mArmA 3 directory:\033[0m ${ARMA_DIR} "
|
||||
if [ -d ${ARMA_DIR} ]; then
|
||||
echo -e "\033[32mOK\033[0m"
|
||||
else
|
||||
echo -e "\033[31mMISSING!\033[0m"
|
||||
echo -e "========= Check your settings (ARMA_DIR)! =========\n"
|
||||
fi
|
||||
|
||||
echo -ne "\033[33mServer executable:\033[0m ${SERVER} "
|
||||
if [ -x ${SERVER} ]; then
|
||||
echo -e "\033[32mOK\033[0m"
|
||||
else
|
||||
echo -e "\033[31mMISSING!\033[0m"
|
||||
echo -e "========= Server executable not found, arma3server should be in that folder when path is right =========\n"
|
||||
fi
|
||||
|
||||
echo -ne "\033[33mCFG directory:\033[0m ${CFG_DIR}/${NAME} "
|
||||
if [ -d ${CFG_DIR}/${NAME} ]; then
|
||||
echo -e "\033[32mOK\033[0m"
|
||||
else
|
||||
echo -e "\033[31mMISSING!\033[0m"
|
||||
echo -e "========= We need that folder for the config files! You can use the next row to create it: ========="
|
||||
echo -e "\033[35mmkdir ${CFG_DIR}/${NAME}\033[0m\n"
|
||||
fi
|
||||
|
||||
echo -ne "\033[33mConfig file:\033[0m ${CONFIG} "
|
||||
if [ -f ${CONFIG} ]; then
|
||||
echo -e "\033[32mOK\033[0m"
|
||||
else
|
||||
echo -e "\033[31mMISSING!\033[0m"
|
||||
echo -e "========= We need this file in that folder =========\n"
|
||||
fi
|
||||
|
||||
echo -ne "\033[33mBasic file:\033[0m ${CFG} "
|
||||
if [ -f ${CFG} ]; then
|
||||
echo -e "\033[32mOK\033[0m"
|
||||
else
|
||||
echo -e "\033[31mMISSING!\033[0m"
|
||||
echo -e "========= We need this file in that folder =========\n"
|
||||
fi
|
||||
|
||||
echo -ne "\033[33mBattleye directory:\033[0m ${BEPATH} "
|
||||
if [ -d ${BEPATH} ]; then
|
||||
echo -e "\033[32mOK\033[0m"
|
||||
else
|
||||
echo -e "\033[31mMISSING!\033[0m"
|
||||
echo -e "========= We need that folder for the Battleye files! You can use the next row to create it: ========="
|
||||
echo -e "\033[35mmkdir ${BEPATH}\033[0m\n"
|
||||
fi
|
||||
|
||||
echo -ne "\033[33mArma3Profile:\033[0m ${CFG_DIR}/${NAME}/users/${NAME}/${NAME}.arma3profile "
|
||||
if [ -f ${CFG_DIR}/${NAME}/users/${NAME}/${NAME}.arma3profile ]; then
|
||||
echo -e "\033[32mOK\033[0m"
|
||||
else
|
||||
echo -e "\033[31mMISSING!\033[0m"
|
||||
echo -e "========= We need that file! You can create it like this, edit it then for your need later: ========="
|
||||
echo -e "========= ( https://community.bistudio.com/wiki/Arma_3_Dedicated_Server) ****.Arma3Profile =========\033[35m"
|
||||
echo -n 'echo -e "version=2;\nviewDistance=3000;\npreferredObjectViewDistance=3000;\nterrainGrid=12.5;\nactiveKeys[]=\n{\n};" > '
|
||||
echo -n "${CFG_DIR}/${NAME}/users/${NAME}/${NAME}.arma3profile"
|
||||
echo -e "\n\033[0m"
|
||||
fi
|
||||
|
||||
echo -ne "\033[33mLog directory:\033[0m ${LOG_DIR} "
|
||||
if [ -d ${LOG_DIR} ]; then
|
||||
echo -e "\033[32mOK\033[0m"
|
||||
else
|
||||
echo -e "\033[31mMISSING!\033[0m"
|
||||
echo -e "========= We need that folder. You can use the next row to create it: ========="
|
||||
echo -e "\033[35mmkdir ${LOG_DIR}\033[0m\n"
|
||||
fi
|
||||
|
||||
echo -ne "\033[33mOld Log directory:\033[0m ${LOG_DIR}/old "
|
||||
if [ -d ${LOG_DIR}/old ]; then
|
||||
echo -e "\033[32mOK\033[0m"
|
||||
else
|
||||
echo -e "\033[31mMISSING!\033[0m"
|
||||
echo -e "========= We need that folder. You can use the next row to create it: ========="
|
||||
echo -e "\033[35mmkdir ${LOG_DIR}/old\033[0m\n"
|
||||
fi
|
||||
|
||||
echo -ne "\033[33mProfile directory:\033[0m ~/.local/share/Arma\ 3\ -\ Other\ Profiles/${NAME} "
|
||||
if [ -d ~/.local/share/Arma\ 3\ -\ Other\ Profiles/${NAME} ]; then
|
||||
echo -e "\033[32mOK\033[0m"
|
||||
else
|
||||
echo -e "\033[31mMISSING!\033[0m"
|
||||
echo -e "========= You should create this folder. You can use the next row for that: ========="
|
||||
echo -e "========= ( Not sure if we need this? Capital letters are ok ?) ========="
|
||||
echo -e "\033[35mmkdir -p ~/.local/share/Arma\ 3\ -\ Other\ Profiles/${NAME}\033[0m\n"
|
||||
fi
|
||||
|
||||
echo -ne "\033[33mArma3Profile symlink:\033[0m ~/.local/share/Arma\ 3\ -\ Other\ Profiles/${NAME}/${NAME}.Arma3Profile "
|
||||
if [ -L ~/.local/share/Arma\ 3\ -\ Other\ Profiles/${NAME}/${NAME}.Arma3Profile ]; then
|
||||
echo -e "\033[32mOK\033[0m"
|
||||
else
|
||||
echo -e "\033[31mMISSING!\033[0m"
|
||||
echo -e "========= You should creat this symlink. You can use the next row for that: ========="
|
||||
echo -e "========= ( Capital letters are ok in ~/.local/share/Arma 3.. !) ========="
|
||||
echo -e "\033[35mln -s ${CFG_DIR}/${NAME}/${NAME}.arma3profile ~/.local/share/Arma\ 3\ -\ Other\ Profiles/${NAME}/${NAME}.Arma3Profile\033[0m\n"
|
||||
fi
|
||||
|
||||
echo -e "\n\033[33mPort number will be: \033[0m${PORT}"
|
||||
echo -e "\033[33mPID file will be: \033[0m${PIDFILE}"
|
||||
echo -e "\033[33mRUN file will be: \033[0m${RUNFILE}"
|
||||
|
||||
echo -e "\n\033[33mStart cmd will be:\033[0m"
|
||||
echo -e "${SERVER} >>${LOGFILE} 2>&1 -config=${CONFIG} -cfg=${CFG} -port=${PORT} -name=${NAME} -pid=${PIDFILE} -mod=${MODS} ${OTHERPARAMS}"
|
||||
|
||||
echo -e "\n\033[31mIf you got something MISSING, you have to work from the top to the bottom, fix the top issue and start the check again!\033[0m"
|
||||
;;
|
||||
|
||||
log)
|
||||
# you can see the logfile in realtime, no more need for screen or something else
|
||||
clear
|
||||
echo "To stop viewing the logfile press CTRL+C"
|
||||
echo "========================================"
|
||||
sleep 1s
|
||||
tail -f ${LOG_DIR}/port_${PORT}*.log
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "$0 (start|stop|restart|status|check|log)"
|
||||
;;
|
||||
esac
|
BIN
Server Install Pack/keys/aia_tp_2015_01_01.bikey
Normal file
BIN
Server Install Pack/keys/aia_tp_2015_01_01.bikey
Normal file
Binary file not shown.
BIN
Server Install Pack/keys/aia_tp_lite_2015_01_01.bikey
Normal file
BIN
Server Install Pack/keys/aia_tp_lite_2015_01_01.bikey
Normal file
Binary file not shown.
BIN
Server Install Pack/keys/epoch0303.bikey
Normal file
BIN
Server Install Pack/keys/epoch0303.bikey
Normal file
Binary file not shown.
BIN
Server Install Pack/mpmissions/epoch.Altis.pbo
Normal file
BIN
Server Install Pack/mpmissions/epoch.Altis.pbo
Normal file
Binary file not shown.
BIN
Server Install Pack/mpmissions/epoch.Bornholm.pbo
Normal file
BIN
Server Install Pack/mpmissions/epoch.Bornholm.pbo
Normal file
Binary file not shown.
BIN
Server Install Pack/mpmissions/epoch.Chernarus.pbo
Normal file
BIN
Server Install Pack/mpmissions/epoch.Chernarus.pbo
Normal file
Binary file not shown.
BIN
Server Install Pack/mpmissions/epoch.Stratis.pbo
Normal file
BIN
Server Install Pack/mpmissions/epoch.Stratis.pbo
Normal file
Binary file not shown.
22
Server Install Pack/sc/basic.cfg
Normal file
22
Server Install Pack/sc/basic.cfg
Normal file
@ -0,0 +1,22 @@
|
||||
// These options are created by default
|
||||
language="English";
|
||||
adapter=-1;
|
||||
3D_Performance=1.000000;
|
||||
Resolution_W=800;
|
||||
Resolution_H=600;
|
||||
Resolution_Bpp=32;
|
||||
|
||||
|
||||
// These options are important for performance tuning
|
||||
|
||||
MinBandwidth = 107374182; // Bandwidth the server is guaranteed to have (in bps). This value helps server to estimate bandwidth available. Increasing it to too optimistic values can increase lag and CPU load, as too many messages will be sent but discarded. Default: 131072
|
||||
MaxBandwidth = 1073741824; // Bandwidth the server is guaranteed to never have. This value helps the server to estimate bandwidth available.
|
||||
|
||||
MaxMsgSend = 256; // Maximum number of messages that can be sent in one simulation cycle. Increasing this value can decrease lag on high upload bandwidth servers. Default: 128
|
||||
MaxSizeGuaranteed = 512; // Maximum size of guaranteed packet in bytes (without headers). Small messages are packed to larger frames. Guaranteed messages are used for non-repetitive events like shooting. Default: 512
|
||||
MaxSizeNonguaranteed = 256; // Maximum size of non-guaranteed packet in bytes (without headers). Non-guaranteed messages are used for repetitive updates like soldier or vehicle position. Increasing this value may improve bandwidth requirement, but it may increase lag. Default: 256
|
||||
|
||||
MinErrorToSend = 0.002; // Minimal error to send updates across network. Using a smaller value can make units observed by binoculars or sniper rifle to move smoother. Default: 0.001
|
||||
MinErrorToSendNear = 0.02; // Minimal error to send updates across network for near units. Using larger value can reduce traffic sent for near units. Used to control client to server traffic as well. Default: 0.01
|
||||
|
||||
MaxCustomFileSize = 0; // (bytes) Users with custom face or custom sound larger than this size are kicked when trying to connect.
|
1
Server Install Pack/sc/battleye/addbackpackcargo.txt
Normal file
1
Server Install Pack/sc/battleye/addbackpackcargo.txt
Normal file
@ -0,0 +1 @@
|
||||
5 "" !"B_Parachute" !"B_AssaultPack_(cbr|dgtl|khk|mcamo|ocamo|rgr|sgg)" !"B_Carryall_(cbr|khk|mcamo|ocamo|oli|oucamo)" !"B_FieldPack_(blk|cbr|khk|ocamo|oli|oucamo)" !"B_Kitbag_(cbr|mcamo|rgr|sgg)" !"B_TacticalPack_(blk|mcamo|ocamo|oli|rgr)" !"smallbackpack_(red|green|teal|pink|)_epoch" !"(O|I|B)_UAV_01_backpack_F"
|
1
Server Install Pack/sc/battleye/addmagazinecargo.txt
Normal file
1
Server Install Pack/sc/battleye/addmagazinecargo.txt
Normal file
@ -0,0 +1 @@
|
||||
1 ""
|
1
Server Install Pack/sc/battleye/addweaponcargo.txt
Normal file
1
Server Install Pack/sc/battleye/addweaponcargo.txt
Normal file
@ -0,0 +1 @@
|
||||
5 "" !="(Binocular|Rangefinder|Hatchet|CrudeHatchet|WoodClub|Melee(Sledge|Maul)|ChainSaw|MultiGun|Rollins_F|Plunger)" !="(ruger_pistol|speargun|1911_pistol|akm|m14|M14Grn|m16|m16Red|m107|m107Tan|m249|m249Tan|m4a3|sr25|l85a2|l85a2_(pink|ugl))_epoch" !="SMG_(01|02)_F" !="hgun_(PDW2000|ACPC2|Rook40|P07|Pistol_heavy_0[1-2]|Pistol_Signal)_F" !="LMG_(Mk200|Zafir)_F" !="srifle_(EBR|GM6|LRR|DMR_01)_F" !="arifle_(Katiba|Katiba_C|Katiba_GL|SDAR|TRG21|TRG20|TRG21_GL|Mk20|Mk20C|Mk20C_plain|Mk20_GL|Mk20_plain|Mk20_GL_plain)_F" !="arifle_(MXC|MX|MX_GL|MXM|MXM_Black|MX_GL_Black|MX_Black|MXC_Black|MX_SW|MX_SW_Black)_F" !="srifle_DMR_0[2-6](_(camo|sniper|khaki|tan|multicam|woodland|spotter|blk|hex|olive)_|_)F" !="MMG_0[1-2]_(hex|tan|camo|black|sand)_F"
|
1
Server Install Pack/sc/battleye/attachto.txt
Normal file
1
Server Install Pack/sc/battleye/attachto.txt
Normal file
@ -0,0 +1 @@
|
||||
5 "" !WeaponHolderSimulated !Shot !"(LockBox|FirePlace|PlotPole|Jack)_EPOCH" !"Jack_SIM_EPOCH" !"LockBox_Ghost_EPOCH" !"CinderWallHalf_Ghost_EPOCH" !"(Tipi|StorageShelf|WoodFloor|WoodLargeWall|WoodStairs|WoodRamp)_Ghost_EPOCH" !"Foundation_Ghost_EPOCH" !"Land_Cages_F" !"Epoch_Sapper_F"
|
3
Server Install Pack/sc/battleye/createvehicle.txt
Normal file
3
Server Install Pack/sc/battleye/createvehicle.txt
Normal file
@ -0,0 +1,3 @@
|
||||
5 "" !="I_UAV_01_F" !="(I|B|O)_UAV_AI" !"_EPOCH" !="B_65x39_Minigun_Caseless_Red_splash" !="B_762x51_Minigun_Tracer_Yellow_splash" !="B_(Swing|Stick)" !"^SmokeShell" !"^G_40mm_" !"^F_40mm_" !"Sub_F_" !"^F_Signal_" !="mini_Grenade" !="GrenadeHand" !="LaserTarget(C|W|E)" !"^Chemlight_" !="(ClaymoreDirectionalMine|DemoCharge|SatchelCharge)_Remote_Ammo" !="SLAMDirectionalMine_Wire_Ammo" !="(CMflare_Chaff|Sapper_Charge|SapperB_Charge|ATMine_Range)_Ammo" !="APERS(TripMine_Wire|BoundingMine_Range|Mine_Range)_Ammo" !="Epoch_(Sapper|SapperB|Cloak)_F" !="GreatWhite_F" !="groundWeaponHolder" !="WeaponHolderSimulated" !="Epoch_(Male|Female)_F" !"Supply[0-9]" !"Steerable_Parachute_F" !="Epoch_Female_CamoRed_F" !="Land_Cages_F" !="(O|I|B)_UAV_01_backpack_F" !="I_(helipilot|helicrew)_F"
|
||||
5 "_EPOCH" !="(SapperHead|Jack)_SIM_EPOCH" !="Wood(Floor|LargeWall|Stairs|Ramp|Foundation)_EPOCH" !="(Tipi|StorageShelf|CinderWallHalf|Foundation|Wood(Floor|LargeWall|Stairs|Ramp|Foundation))_Ghost_EPOCH" !="(Tipi|StorageShelf|LockBox|FirePlace|FirePlaceOn|PlotPole|I_Soldier|Jack|Freezer|Tarp|CinderWallHalf)_EPOCH" !="(Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf|ToolRack|Shoebox|Bunk|Rabbit)_EPOCH" !="(Sheep|Goat|Snake|Hen|Cock|Fin|Alsatian)_random_EPOCH" !="(LockBox|CinderWall|CinderWallGarage|CinderWallHalf|PlotPole|Tipi|StorageShelf|Fireplace)_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorL|LargeWallDoorway|Stairs|Stairs2|Ramp)_SIM_EPOCH" !="(WoodFoundation|Foundation)_EPOCH"
|
||||
5 SeaGull
|
1
Server Install Pack/sc/battleye/deleteVehicle.txt
Normal file
1
Server Install Pack/sc/battleye/deleteVehicle.txt
Normal file
@ -0,0 +1 @@
|
||||
1 "" !="Land_MPS_EPOCH" !="SapperHead_SIM_EPOCH" !="Epoch_Sapper_F" !="Epoch_Cloak_F" !="LockBox_EPOCH" !="Rabbit_EPOCH" !="(Sheep|Goat|Snake|Hen|Cock)_random_EPOCH" !="LockBox_(Ghost|SIM)_EPOCH" !="CinderWallHalf_(Ghost|SIM)_EPOCH" !="CinderWall_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorway|Stairs|Stairs2|Ramp)_(Ghost|SIM)_EPOCH" !="Foundation_Ghost_EPOCH" !="Foundation_EPOCH"
|
2
Server Install Pack/sc/battleye/example-beserver.cfg
Normal file
2
Server Install Pack/sc/battleye/example-beserver.cfg
Normal file
@ -0,0 +1,2 @@
|
||||
RConPassword changemen0w
|
||||
MaxPing 350
|
1
Server Install Pack/sc/battleye/mpeventhandler.txt
Normal file
1
Server Install Pack/sc/battleye/mpeventhandler.txt
Normal file
@ -0,0 +1 @@
|
||||
5 ""
|
1
Server Install Pack/sc/battleye/publicvariable.txt
Normal file
1
Server Install Pack/sc/battleye/publicvariable.txt
Normal file
@ -0,0 +1 @@
|
||||
5 "" !="EPOCH_(UP|SAVE|PAINT|MAINT|REM)BUILD" !="EPOCH_(say3D|switchMove|(store|take)Crypto|TEMPOBJ|packJack|selectedGender)_PVS" !="EPOCH_(mineRocks|create(Object|AirDrop)|FillContainer|SapperObjs)_PVS" !="EPOCH_(load|revive|dead|push|force|respawn|check)Player_PVS" !="EPOCH_(build|equipped)Item_PVS" !="EPOCH_GROUP_(Upgrade|Player|create|Delete|Invite)_PVS" !="EPOCH_(lock|pack)Storage_PVS" !="EPOCH_(unlock|lock|fill|repair)Vehicle_PVS" !="EPOCH_(knockDownTree|destroyTrash|MAKETRADEREQ|MAKETRADE|S_S_VEHICLES|MAKENPCTRADE|oneWayTP)" !="EPOCH_Loot(Animal|Container|Building)" !="EPAH_[a-z]{5,10}" !="BIS_fnc_objectVar_obj2_[0-9]{1,10}" !="bis_fnc_sharedObjectives_serverUpdate"
|
8
Server Install Pack/sc/battleye/publicvariableval.txt
Normal file
8
Server Install Pack/sc/battleye/publicvariableval.txt
Normal file
@ -0,0 +1,8 @@
|
||||
5 "call"
|
||||
5 "compile"
|
||||
5 "spawn"
|
||||
5 "exec"
|
||||
5 "loadFile"
|
||||
5 "preprocessFile"
|
||||
5 "tostring"
|
||||
5 "\.sqf"
|
1
Server Install Pack/sc/battleye/remotecontrol.txt
Normal file
1
Server Install Pack/sc/battleye/remotecontrol.txt
Normal file
@ -0,0 +1 @@
|
||||
5 ""
|
1
Server Install Pack/sc/battleye/remoteexec.txt
Normal file
1
Server Install Pack/sc/battleye/remoteexec.txt
Normal file
@ -0,0 +1 @@
|
||||
5 ""
|
97
Server Install Pack/sc/battleye/scripts.txt
Normal file
97
Server Install Pack/sc/battleye/scripts.txt
Normal file
@ -0,0 +1,97 @@
|
||||
7 "BIS_fnc_" !"setTaskLocal_customData" !"initDisplay" !"selectRandom" !"getCfgSubClasses" !"animalBehaviour" !"guiEffectTiles_coef" !"GUImessage" !"guiEffectTiles" !"param" !"setIDCStreamFriendly" !"overviewauthor" !"diagAARrecord" !"diagKey" !"feedbackMain" !"missionHandlers" !"getServerVariable" !"missionFlow" !"initParams" !"initRespawn" !"missionTasksLocal" !"missionConversationsLocal" !"missionCon" !"preload" !"logFormat" !"recompile" !"moduleInit" !"feedback_allowPP" !"feedback_allowDeathScreen" !"feedbackInit" !"initMultiplayer" !"MP" !"displayMission" !"feedback_fatiguePP" !"respawnBase" !"dirTo" !"secondsToString" !"guiMessage_status" !"selectRespawnTemplate" !"guiMessage_defaultPositions" !"startLoadingScreen_ids" !"damageChanged" !"incapacitatedEffect" !"invRemove" !"relpos" !"inString" !"findSafePos" !"isPosBlacklisted" !"timeToString" !"distance2D" !"effectKilled" !"dynamictext" !"inAngleSector" !="_this call (uinamespace getvariable 'BIS_fnc_effectFired');"
|
||||
7 "BIS_fnc_dynamictext" !", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;" !", 0, 0.4, 5, 2, 0, 2] spawn bis_fnc_dynamictext;" !", 0, 1, 6, 2, 0, 1] spawn bis_fnc_dynamictext;" !"snil '_fnc_scriptName') then {_fnc_scriptName}"
|
||||
7 forceRespawn
|
||||
7 setFriend
|
||||
7 setAmmo
|
||||
7 RscDebugConsole_watch
|
||||
7 enableFatigue
|
||||
7 setUnitRecoilCoefficient
|
||||
7 setWeaponReloadingTime
|
||||
7 allMissionObjects
|
||||
7 callExtension
|
||||
7 showCommandingMenu
|
||||
7 moveIn !="\"A3\functions_f\Misc\fn_moveIn.sqf\"" !="\"A3\functions_f\arrays\fn_removeIndex.sqf\"" !="player moveInAny _vehicle;\nEPOCH_antiWallCount = EPOCH_antiWallCount + 1;" !="[\"I_UAV_AI\", position _unit, [], 0, \"CAN_COLLIDE\"];\n_driver moveInAny _unit;" !="_driver moveInAny Epoch_mission_uav;" !="axeVIP moveInDriver vehicle axeVIP;" !="axeVIP moveInCargo vehicle axeVIP; !="_driver moveInDriver _axeCopter;" !="_unit moveInGunner _axeCopter;" !="axeVIP moveInDriver vehicle axeVIP;" !="axeVIP moveInCargo vehicle axeVIP;"
|
||||
7 attachTo !="EP_light attachTo [player];" !="_bomb attachTo [_unit, [0,0,0],\"Pelvis\"];" !="_dogHolder attachTo [_dog, [-0.2,1.2,0.7]];" !="EPOCH_target attachTo[player];" !="_sapperSmoke attachTo [_sapper,[0,0,-0.4]];"" !="_cage attachTo [_cage2,[0,1.3,0]];"
|
||||
7 enableCollisionWith
|
||||
7 hideObject !="_dogHolder hideobject true;" !="_dogHolder hideobject false;"
|
||||
7 setvelocity !="_bolt setPosATL _pos;\n_bolt setVelocity [0, 0, -10];" !="EPOCH_target setvelocitytransformation" !="_currentTarget setVelocity [0,0,-0.01];" !="_head setVelocity [\n(sin _dir * _speed), \n(cos _dir * _speed)" !="_vel = velocity this; _dir = getDir player; this setVelocity[(_vel select 0)+(sin _dir * 2),(_vel select 1)+(cos _dir * 2),(_vel select 2)];" !="_head setVelocity [random 2,random 2,10];"
|
||||
7 assignAs !="assignAsCargo" !="_unit assignAsGunner _axeCopter;" !="_driver assignAsDriver _axeCopter;" !="axeVIP assignAsDriver vehicle axeVIP;"
|
||||
7 assignAsCargo !="_x assignAsCargo axeGeneralsBoat;" !="axeVIP assignAsCargo vehicle player;" !="axeVIP assignAsCargo vehicle axeVIP;"
|
||||
7 playableunits !="getDir _x, name _x];};}forEach playableUnits;};if" !"{getplayeruid _x == _ownerVar} count playableunits" !="lbSetData[21500, _index, netId _x];\n} forEach(playableUnits - [player]);"
|
||||
7 allUnits !="allUnits-playableUnits;};if" !="{_x allowFleeing 0} forEach allUnits;" !="EPOCH_ESPMAP_TARGETS = allUnits + vehicles;"
|
||||
7 allowDamage !="player allowDamage true;vehicle player allowDamage true;" !="player allowDamage false;{missionNamespace setVariable[format['EPOCH_player%1"
|
||||
7 exec !="<execute expression=" !"RscDebugConsole_execute" !"execFSM" !"_executeStackedEventHandler" !"fn_execVM" !"fn_moduleExecute" !"fn_execRemote" !"fn_MPexec" !"bis_fnc_moduleExecute_activate" !"fn_tridentExecute" !"randomize_civ1" !"executed from" !"EPOCH_DebugGUI_exec" !"_handle = [_display] execVM _script;" !"execVM \"\A3\Structures_F\scripts" !="execVM \"\A3\Structures_F_EPC\Civ\PlayGround\scripts\Carousel_spin.sqf\"" !="reviveExecuteTemplates"
|
||||
7 addWeaponCargo !="_acceptHolder addWeaponCargo [_wWeapon, 1] ;"
|
||||
7 onMapSingleClick !="onMapSingleClick '';"
|
||||
7 addMagazine !"addMagazineCargo" !="player addMagazine _craftItem;" !="player addMagazine \"jerrycanE_epoch\";" !="player addMagazine \"emptyjar_epoch\";" !="player addMagazine \"jerrycan_epoch\";" !="player addMagazine \"Hatchet_swing\";" !="player addMagazine [(_x select 0),(_x select 1)]" !="player addMagazine _x;" !="if !(player canAdd (_x select 0)) exitWith {};\nplayer addMagazine[_x select 0, _x select 1];"
|
||||
7 addMagazineCargo !"_dogHolder addMagazineCargo [\"RabbitCarcass_EPOCH\", 1]" !"_dogHolder addMagazineCargo [\"Pelt_EPOCH\", 1]" !"_dogHolder addMagazineCargo [\"Venom_EPOCH\", 1]" !"_dogHolder addMagazineCargo [\"SnakeCarcass_EPOCH\", 1]" !"_dogHolder addMagazineCargo [\"ChickenCarcass_EPOCH\", 1]" !="_acceptHolder addMagazineCargo [_wAmmo, 1] ;"
|
||||
7 addItem !="player addItem _craftItem;" !="player addItem _x;" !="_plyr addItemToVest _missionItem;" !="axeVIP addItemToVest _item;" !="_plyr addItemToVest _missionItem;"
|
||||
7 addBackPack
|
||||
7 removeAllWeapons !="removeAllWeapons axeGeneral;"
|
||||
7 removeAllItems
|
||||
7 removeAllActions
|
||||
7 setTerrainGrid !="setTerrainGrid 25;"
|
||||
7 setViewDistance !"setViewDistance 1600"
|
||||
7 createGroup !="_grp = createGroup RESISTANCE;" !="if (isserver) then {\n_group = creategroup sidelogic;" !="grpVIPGeneral = createGroup RESISTANCE;" !="_grp = createGroup side _plyr;" !="_grp = createGroup side player;" !="_grp = createGroup _side;" !="_grp = createGroup (side _plyr);"
|
||||
7 createVehicleCrew
|
||||
7 createVehicleLocal !"\"#particlesource\" createVehicleLocal" !"\"#lightpoint\" createVehicleLocal" !"\"BloodSplat\" createVehicleLocal" !"[\"lightning1_F\", \"lightning2_F\"] call BIS_fnc_selectRandom;\n_lighting = _class createVehicleLocal"
|
||||
7 createUnit !="_unit = _grp createUnit[(_arrUnits select _i), _pos, [], 0, \"FORM\"];" !="_driver = _grp createUnit[\"I_UAV_AI\", position _unit, [], 0, \"CAN_COLLIDE\"];" !="axeGeneral = grpVIPGeneral createUnit ["I_officer_F", axeGeneralPos, [], 1, "CAN_COLLIDE"];"
|
||||
7 createAgent !="_unit = createAgent[_unitClass, _targetPos, [], 256, \"FORM\"];" !="_unit = createAgent [_unitClass, _targetPos, [], 120, \"FORM\"];" !="_animal = createAgent[_randomAIClass, _animalPos, [], 5, \"NONE\"];" !="_unit = createAgent [\"Epoch_Cloak_F\", _pos, [], 0, \"CAN_COLLIDE\"];" !="_unit = createAgent [\"Epoch_Sapper_F\", _targetPos, [], 180, \"FORM\"];" !="_sapper = createAgent ["Epoch_Sapper_F", getPos _cage2, [], 0, "FORM"];"
|
||||
7 createTeam
|
||||
7 createDialog !="createDialog \"QuickTake\";" !="createDialog \"InteractBank\";" !="createdialog \"SelectGender\";" !="_handled = createdialog _dialog;" !="if (!dialog) then {createDialog 'Skaronator_AdminMenu'};" !="if !(createdialog \"InteractItem\") exitWith {};" !="createDialog \"TapOut\";" !="if !(createdialog \"Trade\") exitWith {};" !="_ok = createdialog \"Interact\";" !="_ok = createdialog \"TradeNPCMenu\";" !="createDialog \"Epoch_myGroup\";" !="createDialog (if ((Epoch_my_GroupUID == \"\") && (Epoch_my_Group isEqualTo [])) then {\"EPOCH_createGrp\"} else {\"Epoch_myGroup\"});" !="createDialog \"GroupRequests\";" !="_ok = createdialog \"MissionSelect\";"
|
||||
7 deleteMarker
|
||||
7 setMarker
|
||||
7 createMarker
|
||||
7 assignItem !="axeVIP assignItem _item;"
|
||||
7 forceAddUniform
|
||||
7 removeAllMPEventHandlers
|
||||
7 setDamage !="_sapper setDamage 1;\n_sBomb setDamage 1;" !="_this setdamage 1;"
|
||||
7 setDammage
|
||||
7 displaySetEventHandler
|
||||
7 ctrlSetEventHandler !"BIS_fnc_guiMessage_status"
|
||||
7 addMPEventHandler
|
||||
7 addEventHandler !"displayAddEventHandler" !"ctrlAddEventHandler" !"FiredNear" !"EpeContactStart" !"InventoryClosed" !"GetOut" !"InventoryOpened" !"local" !"Respawn" !"Put" !"Take" !"Fired" !"Killed" !" [\"PostReset\",{BIS_EnginePPReset = true;} ];" !"_logic addeventhandler [\n\"local\""
|
||||
7 displayAddEventHandler !"[_display] call _fnc_animate;" !"tVersion select 4) == \"Development\") then" !"_display displayaddeventhandler\n[\n\"mousemoving\"," !"(findDisplay 46) displayAddEventHandler [\"KeyDown\",\"true\"];" !"(findDisplay 46) displayAddEventHandler [\"KeyDown\",\"_this call EPOCH_KeyDown\"];" !"_display displayaddeventhandler [\"unload\",\"uinamespace setvariable ['BIS_fnc_guiMess" !="findDisplay -1337 displayAddEventHandler ['Unload'"
|
||||
7 ctrlAddEventHandler !"rCfg >> \"refreshDelay\");" !" [\n\"draw\"," !" [\"buttonclick\"," !="(uiNamespace getVariable 'ESP_map') ctrlAddEventHandler['Draw', '_esp_targets = EPOCH_ESPMAP_TARGETS;"
|
||||
7 removeAllEventHandlers !="ctrlRemoveAllEventHandlers" !="_vehicle removeAllEventHandlers \"GetOut\";" !="_sapper removeAllEventHandlers \"Hit\";\n_sapper removeAllEventHandlers \"FiredNear\";"
|
||||
7 removeAllMissionEventHandlers
|
||||
7 ctrlRemoveAllEventHandlers !="(uiNamespace getVariable 'ESP_map') ctrlRemoveAllEventHandlers 'Draw';"
|
||||
7 removeEventHandler !="displayRemoveEventHandler" !="player removeEventHandler ['Fired', 0];" !"_currentTarget removeEventHandler[\"EpeContactStart\", _onContactEH]" !" [_adminVar,objnull];\npublicvariable _adminVar;\nplayer removeeventhandler [\"respawn\",_respawn];" !="_plyr removeEventHandler [\"FiredNear\", _smokeEH];"
|
||||
7 displayRemoveEventHandler !"BIS_fnc_guiMessage_status"
|
||||
7 switchCamera
|
||||
7 remoteControl !"fn_moduleRemoteControl.sqf"
|
||||
7 drawIcon3D !="drawIcon3D[\"\x\addons\a3_epoch_code\Data\Member.paa\",_color,_pos,1,1,0,_text,1,0.025,\"PuristaMedium\"];\n}forEach EPOCH_ESP_TARGETS;" !"drawIcon3D[format[\"\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa\",_stability],_color,(getPosATL EPOCH_stabilityTarget),5,5,0,\"\",1,0.05,\"PuristaMedium\"];" !"drawIcon3D[format[\"\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa\",_num],_color,_pos,4,4,0,\"\",1,0.05,\"PuristaMedium\"];" !"EPOCH_drawIcon3dStability" !"EPOCH_drawIcon3d" !"if (_condition) then {\ndrawIcon3D [_icon, _color, _position, _sizeX, _sizeY, _angle, _text," !="drawIcon3D [\"\A3\UI_F_MP_Mark\Data\Tasks\Misc\background.paa\""
|
||||
7 drawLine3D !"{\nfor [{_i = 1}, {_i < count _x}, {_i = _i + 1}] do {\ndrawLine3D [_x select (_i - 1), _x select _i, ((BIS_tracedShooter getVari"
|
||||
7 ctrlCreate
|
||||
7 ctrlDelete
|
||||
7 ctrlClassName
|
||||
7 ctrlModel
|
||||
7 ctrlModelDirection
|
||||
7 ctrlModelSide
|
||||
7 ctrlModelUp
|
||||
7 ctrlSetDirection
|
||||
7 ctrlSetModel
|
||||
7 deleteVehicleCrew !="[\"A3\functions_f\MP\fn_deleteVehicleCrew.sqf\",\".sqf\",0,false,false,false,\"A3\",\"MP\",\"deleteVehicleCrew\"]"
|
||||
7 loadFile
|
||||
7 selectPlayer !="selectPlayer _playerObject;"
|
||||
7 setGroupIconsVisible
|
||||
7 setGroupIconsSelectable
|
||||
7 setGroupIconParams
|
||||
7 addGroupIcon
|
||||
7 EPOCH_whitelist
|
||||
7 EPOCH_defaultVars_SEPXVar
|
||||
7 EPOCH_group_upgrade_lvl_SVar
|
||||
7 EPOCH_GROUP_Delete_PVS !="EPOCH_GROUP_Delete_PVS = [player,Epoch_personalToken];"
|
||||
7 Dayz_GUI_R
|
||||
7 dayz_originalPlayer
|
||||
7 zZombie_Base
|
||||
7 infiSTAR
|
||||
7 GodMode
|
||||
7 shazbot
|
||||
7 _typeofHookMonky
|
||||
7 _allocMemory
|
||||
7 _d3d9multipliervariable
|
||||
7 _runASM
|
||||
7 _addGFX_hookD3D9eventhandler
|
||||
7 _BEhookBYPASSBOB
|
||||
7 JJMMEE_INIT_MENU
|
1
Server Install Pack/sc/battleye/selectplayer.txt
Normal file
1
Server Install Pack/sc/battleye/selectplayer.txt
Normal file
@ -0,0 +1 @@
|
||||
5 "" !"Epoch_(Male|Female)_F"
|
1
Server Install Pack/sc/battleye/setdamage.txt
Normal file
1
Server Install Pack/sc/battleye/setdamage.txt
Normal file
@ -0,0 +1 @@
|
||||
5 ""
|
1
Server Install Pack/sc/battleye/setpos.txt
Normal file
1
Server Install Pack/sc/battleye/setpos.txt
Normal file
@ -0,0 +1 @@
|
||||
5 "" !="Epoch_(Male|Female)_F" !="SapperHead_SIM_EPOCH" !="(Tipi|StorageShelf|LockBox|FirePlace|FirePlaceOn|PlotPole)_EPOCH" !="(Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf|ToolRack|Rabbit)_EPOCH" !="(Sheep|Goat|Snake|Hen|Cock|Fin|Alsatian)_random_EPOCH" !="LockBox_SIM_EPOCH" !="(CinderWallHalf|CinderWall|Fireplace)_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorway|Stairs|Stairs2|Ramp)_SIM_EPOCH" !="(Foundation|WoodFoundation)_Ghost_EPOCH" !="Foundation_EPOCH" !="WoodFoundation_EPOCH"
|
1
Server Install Pack/sc/battleye/setvariable.txt
Normal file
1
Server Install Pack/sc/battleye/setvariable.txt
Normal file
@ -0,0 +1 @@
|
||||
5 "" !=(Offer|Accept|BUILD_SLOT|TRADE_ACTIVE|last_targeter) !="bis_fnc_objectvar_var"
|
9
Server Install Pack/sc/battleye/setvariableval.txt
Normal file
9
Server Install Pack/sc/battleye/setvariableval.txt
Normal file
@ -0,0 +1,9 @@
|
||||
5 "call"
|
||||
5 "compile"
|
||||
5 "spawn"
|
||||
5 "exec"
|
||||
5 "loadFile"
|
||||
5 "preprocessFile"
|
||||
5 ".sqf"
|
||||
5 "tostring"
|
||||
1 "[+;{(&%]" !"e\+00"
|
1
Server Install Pack/sc/battleye/teamswitch.txt
Normal file
1
Server Install Pack/sc/battleye/teamswitch.txt
Normal file
@ -0,0 +1 @@
|
||||
5 ""
|
1
Server Install Pack/sc/battleye/waypointcondition.txt
Normal file
1
Server Install Pack/sc/battleye/waypointcondition.txt
Normal file
@ -0,0 +1 @@
|
||||
5 ""
|
1
Server Install Pack/sc/battleye/waypointstatement.txt
Normal file
1
Server Install Pack/sc/battleye/waypointstatement.txt
Normal file
@ -0,0 +1 @@
|
||||
5 ""
|
67
Server Install Pack/sc/config.cfg
Normal file
67
Server Install Pack/sc/config.cfg
Normal file
@ -0,0 +1,67 @@
|
||||
// EPOCH SERVER CONFIG
|
||||
|
||||
// GLOBAL SETTINGS
|
||||
hostname = "EpochMod.com (0.3.0.3|1.44) ID02 YourHost";
|
||||
password = "";
|
||||
passwordAdmin = "!CHANGE_THIS_PASSWORD!";
|
||||
serverCommandPassword = "!CHANGE_THIS_PASSWORD!";
|
||||
logFile = "A3Master.log";
|
||||
verifySignatures = 2;
|
||||
BattlEye = 1;
|
||||
requiredBuild = 130654;
|
||||
|
||||
// WHITELIST FILE TYPES
|
||||
allowedLoadFileExtensions[] = {:};
|
||||
allowedPreprocessFileExtensions[] = {"sqf"};
|
||||
allowedHTMLLoadExtensions[] = {:};
|
||||
|
||||
// WELCOME MESSAGE ("message of the day")
|
||||
// It can be several lines, separated by comma
|
||||
// Empty messages "" will not be displayed at all but are only for increasing the interval
|
||||
|
||||
motd[] = {
|
||||
"Welcome to ArmA3 Epoch!",
|
||||
"Server hosted by YourHost"
|
||||
};
|
||||
motdInterval = 5; // Time interval (in seconds) between each message
|
||||
|
||||
// JOINING RULES
|
||||
maxPlayers = 50; // Maximum amount of players. Civilians and watchers, beholder, bystanders and so on also count as player.
|
||||
|
||||
// VOTING
|
||||
voteMissionPlayers = 200; // Prevents Votes.
|
||||
voteThreshold = 2; // Prevents Votes.
|
||||
// DISALLOW VOTING since 1.39
|
||||
allowedVoteCmds[] = {};
|
||||
allowedVotedAdminCmds[] = {};
|
||||
|
||||
// INGAME SETTINGS
|
||||
disableVoN = 0; // If set to 1, Voice over Net will not be available
|
||||
vonCodecQuality = 20; // Quality from 1 to 30
|
||||
forceRotorLibSimulation = 0; // Enforces the Advanced Flight Model on the server. Default = 0 (up to the player). 1 - forced AFM, 2 - forced SFM.
|
||||
persistent = 1; // If 1, missions still run on even after the last player disconnected.
|
||||
|
||||
// MISSIONS CYCLE (see below) (epoch.Altis, epoch.Stratis, epoch.Chernarus, epoch.Bornholm)
|
||||
class Missions
|
||||
{
|
||||
class Epoch {
|
||||
template = epoch.Altis; // DO NOT CHANGE THIS, IT WILL BREAK YOUR SERVER
|
||||
difficulty = "veteran"; // difficulty settings: veteran == NORMAL, mercenary == HARDCORE
|
||||
};
|
||||
};
|
||||
|
||||
kickDuplicate = 1;
|
||||
equalModRequired = 0;
|
||||
requiredSecureId = 2;
|
||||
timeStampFormat = "short";
|
||||
|
||||
// SCRIPTING ISSUES
|
||||
onUserConnected = "";
|
||||
onUserDisconnected = "";
|
||||
doubleIdDetected = "";
|
||||
|
||||
// SIGNATURE VERIFICATION
|
||||
onUnsignedData = "kick (_this select 0)"; // unsigned data detected
|
||||
onHackedData = "kick (_this select 0)"; //"ban (_this select 0)"; // tampering of the signature detected
|
||||
onDifferentData = "kick (_this select 0)";
|
||||
|
58
Server Install Pack/sc/users/sc/sc.arma3profile
Normal file
58
Server Install Pack/sc/users/sc/sc.arma3profile
Normal file
@ -0,0 +1,58 @@
|
||||
version=2;
|
||||
|
||||
viewDistance=3000;
|
||||
preferredObjectViewDistance=3000;
|
||||
terrainGrid=12.5;
|
||||
activeKeys[]=
|
||||
{
|
||||
};
|
||||
|
||||
class Difficulties
|
||||
{
|
||||
class veteran
|
||||
{
|
||||
class Flags
|
||||
{
|
||||
Armor=0;
|
||||
FriendlyTag=1;
|
||||
EnemyTag=0;
|
||||
MineTag=0;
|
||||
HUD=1;
|
||||
HUDWp=1;
|
||||
HUDWpPerm=1;
|
||||
HUDGroupInfo=1;
|
||||
AutoSpot=0;
|
||||
WeaponCursor=1;
|
||||
ClockIndicator=1;
|
||||
3rdPersonView=1;
|
||||
UltraAI=0;
|
||||
CameraShake=0;
|
||||
DeathMessages=1;
|
||||
NetStats=1;
|
||||
VonID=1;
|
||||
ExtendetInfoType=0;
|
||||
};
|
||||
skillFriendly=0.6;
|
||||
skillEnemy=0.6;
|
||||
precisionFriendly=0.28;
|
||||
precisionEnemy=0.28;
|
||||
};
|
||||
class mercenary
|
||||
{
|
||||
class Flags
|
||||
{
|
||||
HUD=1;
|
||||
AutoSpot=0;
|
||||
WeaponCursor=0;
|
||||
DeathMessages=1;
|
||||
NetStats=1;
|
||||
VonID=1;
|
||||
};
|
||||
skillFriendly=0.6;
|
||||
skillEnemy=0.6;
|
||||
precisionFriendly=0.28;
|
||||
precisionEnemy=0.28;
|
||||
};
|
||||
};
|
||||
|
||||
difficulty="veteran";
|
1
Server Install Pack/start-A3-cmd-line-example.txt
Normal file
1
Server Install Pack/start-A3-cmd-line-example.txt
Normal file
@ -0,0 +1 @@
|
||||
-mod=@Epoch;@EpochHive; -config=C:\arma3server\SC\config.cfg -ip=192.168.71.234 -port=2302 -profiles=SC -cfg=C:\arma3server\SC\basic.cfg -name=SC
|
Loading…
Reference in New Issue
Block a user