I'm not sure if this should go in this thread or not, but I've made some changes to Angelox's time script on my own server and thought I'd share in case anyone else is as lazy as I am.
I really like the time sync, but I tend to change my database password from time to time and the shifts.pl was a problem for me to edit every time (again - laziness). I also don't like keeping track of extra directories, so I took out the need for the hourX.sql files.
Finally, I run a Windows Server most of the time and seeing a blank window makes me feel like it's not doing anything. Obviously, I can look in the database and see that it is, but I added output anyway (take out the green line below if you don't want this).
My shifts.pl is as follows (you'll need to change the variables at the top of the script to match your database login information):
Code:
#!/usr/bin/perl -w
$dbhost = "localhost";
$dbuser = "user";
$dbpass = "pass";
$database = "db";
$timenow = 8;
while (1) {
print "Setting time shifter value to $timenow.\n"
`mysql --host=$dbhost --user=$dbuser --password=$dbpass --database=$database --execute="UPDATE quest_globals set value='$timenow' where name ='shifter';"`;
sleep 180;
$timenow++;
if ($timenow > 24) {
$timenow = 1;
}
}
This eliminates the need for the time.tar.gz file, but you'll still need to follow Angelox's instructions above for starting the script as well as complete the insert steps in Angelox's post above:
Code:
INSERT INTO quest_globals
(`charid`, `npcid`, `zoneid`, `name`, `value`)
VALUES
(0, 0, 0, 'shifter', '1');
INSERT INTO quest_globals
(`charid`, `npcid`, `zoneid`, `name`, `value`)
VALUES
(0, 0, 20, 'kith', '1');
INSERT INTO quest_globals
(`charid`, `npcid`, `zoneid`, `name`, `value`)
VALUES
(0, 0, 51, 'lrathe', '1');
Also, I wasn't clear when I first set this up about adding the quest lines but Angelox helped me out on that one. From his quests, he has this spawn event for NPCs in zones he wants the time to be updated on (mostly it's on the Nexus Scion and Priest of Discord templates since they're in so many zones):
Code:
# Night and Day checker
#Angelox's
#This script will re-sync zone time
sub EVENT_SPAWN {
if ($shifter==20) {quest::settime(20,0);}
elsif ($shifter==21){quest::settime(21,0);}
elsif ($shifter==22){quest::settime(22,0);}
elsif ($shifter==23){quest::settime(23,0);}
elsif ($shifter==24){quest::settime(24,0);}
elsif ($shifter==1){quest::settime(1,0);}
elsif ($shifter==2){quest::settime(2,0);}
elsif ($shifter==3){quest::settime(3,0);}
elsif ($shifter==4){quest::settime(4,0);}
elsif ($shifter==5){quest::settime(5,0);}
elsif ($shifter==6){quest::settime(6,0);}
elsif ($shifter==7){quest::settime(7,0);}
elsif ($shifter==8){quest::settime(8,0);}
elsif ($shifter==9){quest::settime(9,0);}
elsif ($shifter==10){quest::settime(10,0);}
elsif ($shifter==11){quest::settime(11,0);}
elsif ($shifter==12){quest::settime(12,0);}
elsif ($shifter==13){quest::settime(13,0);}
elsif ($shifter==14){quest::settime(14,0);}
elsif ($shifter==15){quest::settime(15,0);}
elsif ($shifter==16){quest::settime(16,0);}
elsif ($shifter==17){quest::settime(17,0);}
elsif ($shifter==18){quest::settime(18,0);}
elsif ($shifter==19){quest::settime(19,0);}
}
I had a problem comparing the diffs between quests because such a huge block was different when adding this code in, so I shortened it to the following:
Code:
sub EVENT_SPAWN {
if ($shifter > 0 && $shifter < 25) {quest::settime($shifter,0);}
}
Day & Night shifts add such nostalgia for me that this is one of my favorite addons for the emulator. Mahalo Angelox!