Jump to content

LHammonds

Members
  • Posts

    58
  • Joined

  • Days Won

    1

Everything posted by LHammonds

  1. @Canute thank you for the video. That's a relief that we have the potential to fix the existing world. Is there a list of POI's that must be in the game to progress the storyline? Right now it seems to just be the Eve trader but we are new to this mod. Thanks, LHammonds
  2. Is there a way to spawn the Eve Trader in an RWG world? We created a 12k map but the Eve quest says "NO TRADER" If not, is there a list of required POI's so I can verify if an RWG map has all the necessary locations? Thanks, LHammonds
  3. Negative. Fresh install. Map generation without this mod and it works. Install this mod and it goes boom.
  4. The Modlet of "CP48 Complete" works when installed on Windows. It does not when on a Linux server (same file) which makes me think its a case sensitivity issue. 2022-05-02T14:24:36 11.838 INF Border placement took 1.6485641 seconds 2022-05-02T14:29:47 322.724 INF Writing data files time passed: 43.3857223 seconds NullReferenceException: Object reference not set to an instance of an object. at WorldGenerationEngineFinal.PrefabLoader.LoadPrefabs (System.Boolean _applyMapping, System.Boolean _fixChildblocks, System.Boolean _allowMissingBlocks) [0x00056] in <d4ada918396a4fec85e8744f879cad41>:0 at WorldGenerationEngineFinal.WorldBuilder.PrepPrefabAndRoadGeneration () [0x00000] in <d4ada918396a4fec85e8744f879cad41>:0 at WorldGenerationEngineFinal.WorldBuilder+<Generate>d__72.MoveNext () [0x001d7] in <d4ada918396a4fec85e8744f879cad41>:0 at UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) [0x00026] in <78e7b8b0366947078a3cf35c4afac365>:0 Thanks for keeping this mod going. LHammonds
  5. EDIT: Moved post to this thread.
  6. If you do "sudo su" to switch into the root, doing "crontab -e" should show you the root crontab schedule. If you are having problems with scripts not running in the schedule, it might be due to the reduced environment (not having a search path to find programs when the full path is not explicit). Try adding the following in root's crontab schedule: SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # # Crontab SYNTAX: # minute(0-59) hour(0-23) day-of-month(1-31) month(1-12) day-of-week(0-6) command-to-execute # 5 * * * * /usr/local/bin/7dtd.sh start "!" NOTE: You didn't include a full path to where 7dtd.sh was located which means the root crontab simply could not execute it because the default schedule does not have a search path environment variable defined. You could specify the full path like I did but if there are any programs in the script that do not explicitly specify the full path, they would also fail. Having the environment path variable defined helps prevent failure like this but also increases the security risk for hijacked commands but it is a low risk. Reference Post LHammonds
  7. Awesome. Thanks for sharing Starvation with us. Got it installed, seems to be working. Died in 1st 5 minutes of the game. * Realistic (checked off) Sincerely, LHammonds
  8. What version of the scripts are you running? What version was the server? What operating system is the scripts running on? I did not have an issue running "7dtd.sh upgradeengine" when going from 16.2 to 16.3. LHammonds
  9. No sir. If I wrote an install script, it would likely only work for this one specific version and only in the exact way I would set it up. Since this is something VERY few people would do, I'd kinda be wasting my time doing it. This was more of an exercise in seeing if I could do it. But in a real-world scenario, I'd rather not maintain manual installs like this. I'd much rather just have a 2nd instance of the server running so that my "vanilla" server could be mostly hands-free when it comes to running and updating it. The modded server will still need to be manually updated with the mods but at least the upgrade process of the game engine would still be handled by alloc's scripts making it less complicated. The notes I made should help you with a 2nd, 3rd, etc. instance though. Keep in mind that there is no RAM/CPU performance gains having multiple engines on the same server...it will still consume every bit as much RAM/CPU for each version of the engine you are running as if it were running individually. Meaning, if each server engine needs 6 GB to run smoothly, you will need at least 12 GB for two running, or at least 18 GB for three, etc. LHammonds EDIT 1: Could have swore there was another script conversation going on. I must be going senile in my old age. EDIT 2: Yep, senile. Was a different thread.
  10. I wonder if it would be possible at some point to "link" servers together similar to how Spigot does for Minecraft. Imagine joining a single server from the server list and it is a "hub world" where you can jump into multiple other servers via teleportation...such as one with PVP, one with PVE, etc. but everyone can chit-chat on the screen between the servers. Admins/Moderators able to handle multiple servers at one time. :-) EDIT: Sorry, thought I was in the PC "multiplayer"...good luck. LHammonds
  11. Hmmm...that is a good question. Sure would be nice if Alloc's script could handle that but I know it is designed for a single engine with multiple instances...so if you modify XML of the engine, it affects all instances. I'll see if I can figure out the best way to setup a single server that can host multiple modded engines using Alloc's fixes...and then post back here with my documentation on how to do the same for yourself. I look into setting up the following: - vanilla engine (no mods), Navezgane map on port 25000, RandomGen map on port 25010 - modded engine, ValMod Overhaul + Compopack, Navezgane map on port 25020, RandomGen map onport 25030 EDIT #1: Looking good so far. I have 2 engines installed in different folders. Still need to create instances and test but I have to go for now. Will publish dox after testing. EDIT #2: Went to install the serverfixes and it only worked for the 1st server. So either it won't work or I missed editing a file somewhere or need to manually install the fixes rather than using the management script. EDIT #3: Here is a copy of my notes so far. They are no way to be considered a "tutorial" at the moment. Once I get all the steps figured out, I'll create an actual tutorial people can follow. EDIT #4: Success! I now have 2 separate engines running on the same server. One vanilla, one modded. Each has two instances running Navezgane and RandomGen and all of them have their own web server map running. LHammonds
  12. Well....technically yes. Install Oracle VirtualBox on the Windows Server, install Ubuntu Server 16.04 LTS and enjoy. ;-) Here is how I install a Ubuntu Server (long-living production-quality). Steps are pretty-much the same if installing under VMware or VirtualBox now that the virtualization tools are built into the install process. LHammonds
  13. I'm running version 106 (2016-12-08) of the scripts and the output shows the player count correctly. I then did the updatescripts: 7dtd.sh updatescripts A newer version of the scripts is available. Local: v.106 Available: v.108 Continue? (yn) y Updating... Update done. Note: This updated only script files. If the global config file /etc/7dtd.conf contains changes for the newer version or there were new files added to the user folder /home/sdtd those changes have not been applied! Now my instances are not showing up and cannot start the servers because it does not recognize the instance names anymore. I checked the /etc/7dtd.conf and it seems I need to re-edit the following values which got reset to default: export SDTD_BASE=/home/sdtd export SDTD_BACKUP_ROOT=/home/sdtd/backup Once I got the scripts to see the correct location and backup targets, I could then start the instances. Here is what it looks like with the instance command when they are offline and then online (but with no users connected) Instances not started: 7dtd.sh instances list Instance name | Running | Players | Port ---------------------+----------+---------+------ hamcraft | no | -/ 8 | 28000 nav | no | -/ 8 | 28010 valmod | no | -/ 8 | 28020 2 of 3 instances started: 7dtd.sh instances list Instance name | Running | Players | Port ---------------------+----------+---------+------ hamcraft | yes | 8/28000 | 0 nav | yes | 8/28010 | 0 valmod | no | -/ 8 | 28020 Thanks, LHammonds
  14. Howdy, Just thought I'd drop by and share another script I created for my server which is based on Alloc's fixes. Source: http://hammondslegacy.com/forum/viewtopic.php?f=40&t=213&p=508#p508 Here is a horde notification script for players which I tested on Ubuntu Server 16.04 LTS but should work for most other flavors of Linux since it uses Bash. Create a file such as sdtd-horde-notify.sh and set permissions on it: mkdir -p /var/scripts/prod touch /var/scripts/prod/sdtd-horde-notify.sh chown root:root /var/scripts/prod/sdtd-horde-notify.sh chmod 755 /var/scripts/prod/sdtd-horde-notify.sh Add the following text to the script: #!/bin/bash ############################################################# ## Name : sdtd-horde-notify.sh ## Version : 1.1 ## Date : 2017-05-25 ## Author : LHammonds ## Purpose : Notify players once a day about approaching horde night. ## 1. Only process this script if there are players online. ## 2. Only process this script if the time is > 5:00 am in-game. ## 3. Finally, send chat message with how many days until horde night. ## Parameters : #1 = 7dtd server instance name (required) ## Installation : Run from crontab every few minutes. ## Compatibility : Verified on Ubuntu Server 14.04 thru 16.04 LTS ## 7 Days to Die, Alpha 15.2 ###################### CHANGE LOG ########################### ## DATE VER WHO WHAT WAS CHANGED ## ---------- --- --- --------------------------------------- ## 2017-05-08 1.0 LTH Created script. ## 2017-05-25 1.1 LTH Added multi-instance support. ############################################################# ## Import standard variables and functions. ## source /usr/local/lib/7dtd/common.sh ## Check parameter. if [ "${1}" == "" ]; then echo -e "[ERROR] Missing required parameter. Enter the server instance." echo -e "Syntax: ${ScriptName} [serverInstance]" echo -e "Example 1: ${ScriptName} HamCraft" echo -e "Example 2: ${ScriptName} WalkingDead" echo -e "Example 3: ${ScriptName} Vanilla" echo -e "Here is a list of valid instances:" 7dtd.sh instances list exit 1 else InstanceName="${1}" fi TempFile="/tmp/sdtd-gettime-${InstanceName}.txt" LastRun="/tmp/sdtd-lastrun-${InstanceName}.txt" Hour2Notify=5 ## Send ListPlayers command results to a temporary file. telnetCommand ${InstanceName} "lp" > ${TempFile} ## Get the last line of the file. Example: Total of 0 in the game PlayerCount=`tail -n 1 ${TempFile}` ## Get the 3rd column of the line. Example: 0 PlayerCount=`echo ${PlayerCount} | cut -d' ' -f3` ## Delete the temporary file. rm ${TempFile} if [[ ${PlayerCount} == 0 ]]; then ## No active players online. No need to send in-game message. echo "[iNFO] No players online, aborting script." ## Remove last run file to allow next person online to get the message. if [ -f ${LastRun} ]; then rm ${LastRun} fi exit 0 else echo "[iNFO] ${PlayerCount} players online." fi ## Send gettime command results to a temporary file. telnetCommand ${InstanceName} "gettime" > ${TempFile} ## Get the last line of the file. Example: Day 115, 05:22 DayLine=`tail -n 1 ${TempFile}` ## Get the 2nd column of the line. Example: 115, CurrentDay=`echo ${DayLine} | cut -d' ' -f2` ## Remove the comma. Example: 115 CurrentDay="${CurrentDay//,}" ## Get the in-game time. Example: 05:22 CurrentTime=`echo ${DayLine} | cut -d' ' -f3` ## Get the in-game hour. Example: 05 CurrentHour=`echo ${CurrentTime} | cut -d':' -f1` ## Force number to decimal (base 10) by removing any leading zeroes. Example: 5 CurrentHour=$((10#${CurrentHour})) ## Get the remainder from dividing by 7. Example: 3 Remainder=`expr ${CurrentDay} % 7` ## Subtract the remainder from 7 to get how many days until the 7th night. DaysToHorde=`expr 7 - ${Remainder}` if [[ ${DaysToHorde} == 1 ]]; then DayPlural="day" else DayPlural="days" fi if [[ ${CurrentHour} -gt ${Hour2Notify} ]]; then ## It is not too early in the day to send the notification. if [ -f ${LastRun} ]; then ## If last message sent was today, abort script. PriorDay=`tail -n 1 ${LastRun}` if [[ ${PriorDay} == ${CurrentDay} ]]; then ## Message already sent today, abort script. exit 0 else ## We are in a new day. if [[ ${Remainder} == 0 ]]; then telnetCommand ${InstanceName} "say \"[ffff00][iNFO] [00ff00]Horde night tonight!\"" else telnetCommand ${InstanceName} "say \"[ffff00][iNFO] [00ff00]${DaysToHorde} ${DayPlural} until horde night.\"" fi ## Create last run file with date when message was sent. echo ${CurrentDay} > ${LastRun} fi else ## Messasge not sent today, send the chat message. if [[ ${Remainder} == 0 ]]; then telnetCommand ${InstanceName} "say \"[ffff00][iNFO] [00ff00]Horde night tonight!\"" else telnetCommand ${InstanceName} "say \"[ffff00][iNFO] [00ff00]${DaysToHorde} ${DayPlural} until horde night.\"" fi ## Create last run file with date when message was sent. echo ${CurrentDay} > ${LastRun} fi else ## Too early in the morning to message players, abort script. exit 0 fi ## Delete the temporary file. rm ${TempFile} You can then schedule it in the root account (accessible by doing "sudo su" from your admin account) and then type "crontab -e" Example crontab schedule: ######################################## # Name: Crontab Schedule for root user # Author: LHammonds ############# Update Log ############### # 2016-01-18 - LTH - Created schedule ######################################## SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # Crontab SYNTAX: # minute(0-59) hour(0-23) day-of-month(1-31) month(1-12) day-of-week(0-6) command-to-execute # # Adjust the time clock # 0 1-23 * * * /usr/sbin/ntpdate ntp.ubuntu.com > /dev/null 2>&1 # # 7dtd: Notify players each in-game day about approaching horde night # */5 * * * * /var/scripts/prod/sdtd-horde-notify.sh HamCraft > /dev/null 2>&1 */5 * * * * /var/scripts/prod/sdtd-horde-notify.sh WalkingDead > /dev/null 2>&1 */5 * * * * /var/scripts/prod/sdtd-horde-notify.sh Vanilla > /dev/null 2>&1 Summary of what it is doing: The schedule is configured to run the script every 5 minutes for instances of servers called "HamCraft", "WalkingDead" and "Vanilla" Even though it runs often, it will only generate an in-game message once per day shortly after the desired hour...which is set to 5am in the script via the "Hour2Notify" variable. Here are all the possible messages players will see in the game: [iNFO] 6 days until horde night. [iNFO] 5 days until horde night. [iNFO] 4 days until horde night. [iNFO] 3 days until horde night. [iNFO] 2 days until horde night. [iNFO] 1 day until horde night. [iNFO] Horde night tonight!
  15. Thank you for creating and sharing this mod. It is obvious you put a LOT of time and effort into it. The 28.016.full version looks like it is an SDX mod (since screenshots show new models). You should probably mention that on the 1st page description that SDX is required and also mention it in the install instructions. It also looks like it is for version Alpha 14.5 of 7 Days to Die but the 1st post mentions Alpha 13.6 Thanks, LHammonds English to Russian Translation (via Google): Благодарим Вас за создание и совместное использование этого мода . Очевидно, вы положили много времени и усилий в нее . Версия 28.016.full выглядит как это мод SDX (так как скриншоты показывают новые модели ) . Вы , вероятно, следует отметить, что на 1-ом описании страницы , которая требуется SDX , а также отметить, что в инструкции по установке . Кроме того, похоже, что это для версии Альфа 14.5 7 дней , чтобы умереть , но первое сообщение упоминает Альфа 13.6 Благодаря, LHammonds
  16. Thanks for creating and sharing. I printed out a few copies for my kids. LHammonds
  17. This particular script just handles shutting down the 7dtd instances that are running. If you look at the example crontab schedule, you can see the 7dtd-shutdown script is being called 3 times which is shutting down 3 instances that are running. Once the instances are down, you call a server reboot script like the crontab shows (reboot.sh). If you only maintain a single instance, you could incorporate the server reboot into the 7dtd-shutdown script. Once you know the instance is down, simply reboot the server at the end of the script. There's a bunch of ways you can handle it. My script was focusing primarily on the shutdown of the 7dtd instance only. If you want more information on the setup of Ubuntu Server or automation scripts, you can find what I have done on my forum. LHammonds
  18. Ok, here is a shutdown script which I tested on Ubuntu Server 14.04 and 16.04 LTS but should work for most other flavors of Linux since it uses Bash. EDIT: Yes, the same thing can be done with just a few lines of code but I like to standardize my scripts and make them re-usable as well as make it where as little needs to be changed in the script as practical. Create a file such as sdtd-shutdown.sh and set permissions on it: mkdir -p /var/scripts/prod touch /var/scripts/prod/sdtd-shutdown.sh chown root:root /var/scripts/prod/sdtd-shutdown.sh chmod 755 /var/scripts/prod/sdtd-shutdown.sh Add the following text to the script: #!/bin/bash ############################################# ## Name : sdtd-shutdown.sh ## Version : 1.0 ## Date : 2016-01-18 ## Author : LHammonds ## Purpose : Warn players and shutdown game. ## Compatibility : Verified on Ubuntu Server 14.04 thru 16.04 LTS ## Requirements : Must be run as root. ## Parameters : #1 = 7dtd server instance name (required) ## Run Frequency : Can run as often as needed. ## Exit Codes : None ################ CHANGE LOG ################# ## DATE WHO WHAT WAS CHANGED ## ---------- --- ---------------------------- ## 2016-01-18 LTH Created script. ############################################# ## Import standard variables and functions. ## . /usr/local/lib/7dtd/common.sh LogFile="/var/log/sdtd-shutdown.log" ## Requirement Check: Script must run as root user. if [ "$(id -u)" != "0" ]; then ## FATAL ERROR DETECTED: Document problem and terminate script. echo -e "\nERROR: Root user required to run this script.\n" echo -e "Type 'sudo su' to temporarily become root user.\n" exit fi ## Check parameter. if [ "${1}" == "" ]; then echo -e "[ERROR] Missing required parameter. Enter the server instance." echo -e "Syntax: ${ScriptName} [serverInstance]" echo -e "Example 1: ${ScriptName} alpha13" echo -e "Example 2: ${ScriptName} hamcraft" echo -e "Here is a list of valid instances:" 7dtd.sh instances list exit 1 else InstanceName="${1}" fi telnetCommand ${InstanceName} "say \"Server shutdown in 1 minute\"" sleep 30 telnetCommand ${InstanceName} "say \"Server shutdown in 30 seconds\"" sleep 20 telnetCommand ${InstanceName} "say \"Server shutdown in 10 seconds\"" sleep 7 telnetCommand ${InstanceName} "say \"Server shutdown in 3 seconds\"" sleep 1 telnetCommand ${InstanceName} "say \"Server shutdown in 2 seconds\"" sleep 1 telnetCommand ${InstanceName} "say \"Server shutdown in 1 second\"" sleep 1 telnetCommand ${InstanceName} "say \"Be right back!\"" sleep 1 telnetCommand ${InstanceName} "shutdown" echo "`date +%Y-%m-%d_%H:%M:%S` - [iNFO] Shutting down ${InstanceName} instance." | tee -a ${LogFile} You can then schedule it in the root account (accessible by doing "sudo su" from your admin account) and then type "crontab -e" Example crontab schedule: ######################################## # Name: Crontab Schedule for root user # Author: LHammonds ############# Update Log ############### # 2016-01-18 - LTH - Created schedule ######################################## SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # Crontab SYNTAX: # minute(0-59) hour(0-23) day-of-month(1-31) month(1-12) day-of-week(0-6) command-to-execute # # Adjust the time clock # 0 1-23 * * * /usr/sbin/ntpdate ntp.ubuntu.com > /dev/null 2>&1 # # 7dtd: Shutdown 7dtd instances for daily reboot: # 0 3 * * * /var/scripts/prod/sdtd-shutdown.sh HamCraft > /dev/null 2>&1 0 3 * * * /var/scripts/prod/sdtd-shutdown.sh WalkingDead > /dev/null 2>&1 0 3 * * * /var/scripts/prod/sdtd-shutdown.sh Vanilla > /dev/null 2>&1 2 3 * * * /var/scripts/prod/reboot.sh Summary of what it is doing: The schedule is configured to run the script 3 times simultaneously at 3:00am to shutdown 3 instances of servers called "HamCraft", "WalkingDead" and "Vanilla" The shutdown of the 7dtd instances should take just a little over 1 minute so a server-wide reboot script is scheduled to go off at 3:02am While connected to one of the servers during this period, players will get a notice that the server will be shutdown in 1 minute. Then get another notice 30 seconds later, etc. and eventually get disconnected automatically when the instance is shutdown. LHammonds
  19. When I around to configuring my server for automated messages via crontab, I'll post what I have done here so others can see (as well as my own forums). I plan to make a how-to article some day on how to setup a 7dtd server and Alloc is integral to that process. Again, can't thank you enough for what you've done.
  20. Nevermind, I figured it out. Needed multiple-enclosed quotes. #!/bin/bash . /usr/local/lib/7dtd/common.sh telnetCommand MehServerName 'say "hello world I love you"' I'd recommend updating the example here with this info with use of more than 1 word.
  21. I tried the following Bash script: #!/bin/bash . /usr/local/lib/7dtd/common.sh telnetCommand MehServerName "say hello world I love you" It will send "hello" to the server and I can see it in-game but I cannot get it to send anything after the 1st word. Here is the output of the command (ports and names changed to protect the innocent): *** Connected with 7DTD server. *** Server version: Alpha 13.6 (b2) Compatibility Version: Alpha 13.6 *** Dedicated server only build Server IP: Any Server port: 69696 Max players: 16 Game mode: GameModeSurvivalMP World: Random Gen Game name: MehServerName Difficulty: 2 Press 'help' to get a list of all commands. Press 'exit' to end session. 2016-01-14T20:24:14 524423.749 INF Executing command 'say hello world I love you' by Telnet from 127.0.0.1:44444 2016-01-14T20:24:14 524423.750 INF GMSG: Server: hello Am I doing something silly or does it not accept anything more than a single word? Thanks, LHammonds
  22. Saw this thread and just wanted to say thanks for the scripts...been using them for a long time. iLLNESS, if there is a way to issue a "say" command from the console, we could use crontab to schedule the in-game notifications, then issue the shutdown and then reboot. I've been wanting to implement automated reboots like this but haven't had the time to research...been just doing it manually whenever there is an update. My guess it will be Telnet commands like Alloc uses in 7dtd.sh
×
×
  • Create New...