Push Released server files 0.3.0.3 b4

This commit is contained in:
[VB]AWOL 2015-05-07 13:43:36 -05:00
parent 4b311ce697
commit a2cd7b4a0f
52 changed files with 1464 additions and 0 deletions

View 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

File diff suppressed because one or more lines are too long

View 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.

Binary file not shown.

View File

@ -0,0 +1 @@
libhiredis.so.0.10

Binary file not shown.

View File

@ -0,0 +1 @@
libpcre.so.3.13.1

Binary file not shown.

View 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)

View 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.

View File

@ -0,0 +1,6 @@
bind 127.0.0.1
maxmemory 1gb
save 900 1
save 300 10
save 60 1000
requirepass Changeme9832

View File

@ -0,0 +1 @@
START redis-server.exe redis.conf

View 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.

View 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

View 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

View 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

View 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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View 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.

View 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"

View File

@ -0,0 +1 @@
1 ""

View 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"

View 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"

View 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

View 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"

View File

@ -0,0 +1,2 @@
RConPassword changemen0w
MaxPing 350

View File

@ -0,0 +1 @@
5 ""

View 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"

View File

@ -0,0 +1,8 @@
5 "call"
5 "compile"
5 "spawn"
5 "exec"
5 "loadFile"
5 "preprocessFile"
5 "tostring"
5 "\.sqf"

View File

@ -0,0 +1 @@
5 ""

View File

@ -0,0 +1 @@
5 ""

View 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

View File

@ -0,0 +1 @@
5 "" !"Epoch_(Male|Female)_F"

View File

@ -0,0 +1 @@
5 ""

View 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"

View File

@ -0,0 +1 @@
5 "" !=(Offer|Accept|BUILD_SLOT|TRADE_ACTIVE|last_targeter) !="bis_fnc_objectvar_var"

View File

@ -0,0 +1,9 @@
5 "call"
5 "compile"
5 "spawn"
5 "exec"
5 "loadFile"
5 "preprocessFile"
5 ".sqf"
5 "tostring"
1 "[+;{(&%]" !"e\+00"

View File

@ -0,0 +1 @@
5 ""

View File

@ -0,0 +1 @@
5 ""

View File

@ -0,0 +1 @@
5 ""

View 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)";

View 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";

View 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