Habilis

[Dev's Diary] Minimal $ Ragnarok online server & comunity

28 posts in this topic

Hello Boys and Gals

I decided to do a experiment project, on with how minimal $ input, I could make a decent

(by decent, I mean, players wouldn't want to delete the game client after 15 minutes playing)

Ragnarok Online server and Comunity

 

I will write it all in the Dev's Diary Format (Every entyr will follow standart : Day X : doing stuff  [What I've done])

 

 

Day 1: First steps

 

First of all, I needed a server software. After reading few reviews, I considered Hercules as my server software, mainly for it's hardware resources management.

 

Then, I needed hardware. Since this is minimal $ input, I have compiled it and configured it to run on my RaspberryPi 3, which runs already a webserver, OwnCloud.

It has an UPS made out of a PowerBank (for those who are curious http://raspi-ups.appspot.com/en/index.jsp)

 

Not and option for you ?

 

- You can spend 150-200$ for a year of VPS 

- Or, you could dustoff that Intel Core 2 duo that sits in your closet (im sure, for many of you, it does), it will run a server just fine...

 

 

Need to configure a home network (its actually really easy)

all I needed to do is give my server machine

- a static ip (good business practice)

- To that static IP, I needed to forward ports 3 ragnarok ports, 80/443 (80 if Im  planning to host a webserver aswell, 443 if Im planning to use SSL, you know that https:// link... will be explained later in the DevsDiary...)

 

 

I decided not to host a webserver for my Ragnarok Server Comunity.

If the game server is down, I want the web site still be available...

 

no problem go to Google and search for free web hosting, there are many of them just suit myself....

 

then I went to domain registrar (I used Godaddy) and look for a .com domain for my server

.com domain grants some credibility

When I have added my .com domain to the cart 

I went to google and search "cupons domain [site where I buy my domain] (in my case its godaddy)"

 

I got a cupon code for first year registration of .com domain for 99cents

 

Now I needed a website... there is plenty of website designs on these forums

I liked : https://rathena.org/board/files/file/3012-erods-unfinished-web-template/

 

Mainly because  it was already HTML, I didn't have to slice PSDs...

since, I just want a website with basic info

 

a little design and there you go

post-13352-0-24504000-1466689638_thumb.png

 

I've configured the DNS of my .com domain to the free webhosting

Now everyone can access my server Website from .com domain

 

So far I've spent 99cents on .com domain...


Day 2: Free Hosting Limitations

 

The Idea behind using a freehosting, is to keep site and comunity online during Game server downtime.

Sure free hostings limit possibilities. But Im designing a strategy to bypass those limitations in one way or another...

 

1) Free hostings do not allow open socket (used to check server status Online/Offline)

Its actually pretty easy to bypass

Free hostings offer Cron (Planified tasks)

 

So I will start writing API-like software to run on the webserver on same machine as RagnarokServer

Ragnariok  server Machine                                                                             Free Web Hosting                                                                    

Web-API (like)                                                     <---------------------               Cron job every 5 minutes with CURL call to Server machine

does open socket on 127.0.0.1

returns Plain Text Or JSON (undecided yet)

111 (1 - map is on 1- login is on 1 - char is on)   ------------------------->           Builds static HTML file with styling and all that good stuff

 

                                                                                                                        (if no reply from GameServer, Server considered offline)

                                                                                                                         WebSite just includes that static HTML

                                                                                                                         file using AJAX

 

 

True, the status is not very accurate, it has 5 minutes update lag. but its fully functionnal, no matter what crazy Limitation my free web hosting impose....

 

Im also thinking to add a API key concept Much like KeyChain VPN token some company give you to work from home...

 

My strategy is never reveal what my database connection string is....

In case a Hacker gets  a webshell on that free site the only thing he will see is the 

WEB-API adress and API token generation algorithm and SALT.

 

Im also thinking to add logging to API so if API spam or bruting attemps detected, I would just change API token Algorithm...

Edited by Habilis

Share this post


Link to post
Share on other sites

Day 3: More on Free Hosting Limitations

 

Apperantrly, the free webhosting doesn't allow cron or cronjobs to run as often as */5 (every 5 minutes)

Not a problem for me...

server is offline

post-13352-0-13876000-1467033392_thumb.jpg

server is online

post-13352-0-48138800-1467033392_thumb.jpg

 

First of all I wrote api-like controllers at my Ragnarok server machine's webserver

class api extends Controller
{
    public function getServerStatus($statusPass)
    {
        $output="";
        if($statusPass == "test1234")
        {
            $Status =  $this->ServerStatus();
            $output = $Status[0].";".$Status[1].";".$Status[2];
        }
        return $output;
    }

    private static function ServerStatus() {
        $Srv_Host = "127.0.0.1";

        // Login, Char, Map Server Port
        $Srv_Login = 6900;
        $Srv_Char = 6121;
        $Srv_Map = 5121;

        $Str_Online='1';
        $Str_Offline='0';

        // Disable Error Reporting (for this function)
        error_reporting(0);

        $Status = array();
        $LoginServer = fsockopen($Srv_Host, $Srv_Login, $errno, $errstr, 1);
        $CharServer = fsockopen($Srv_Host, $Srv_Char, $errno, $errstr, 1);
        $MapServer = fsockopen($Srv_Host, $Srv_Map, $errno, $errstr, 1);
        if(!$LoginServer){ $Status[0]= $Str_Offline;  } else { $Status[0] = $Str_Online; };
        if(!$CharServer){ $Status[1] = $Str_Offline;  } else { $Status[1] = $Str_Online; };
        if(!$MapServer){ $Status[2] = $Str_Offline;  } else { $Status[2] = $Str_Online; };
        return $Status;
    }
}

simple enough queries ports on 127.0.0.1 and retruns 1;1;1 as plain text if all 3 servers are up...

 

On the Free webhosting site i wrote a CURL call 

<?php
function writeStatus()
{
	// Disable Error Reporting (for this function)
	error_reporting(0);
	$statusHtmlFile="status/status.html";
	$statusUpdateTime=5 * 60; // 5 minutes status update
	$apiToken = "test1234"; // token is plain text for now


	if((time()-filemtime($statusHtmlFile))>$statusUpdateTime)
	{
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL,"https://<serverIP or host>/api/serverstatus/".$apiToken);
		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
		curl_setopt($ch, CURLOPT_TIMEOUT, 3); // 3 seconds timeout, no answer = server considered offline
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
		$result=curl_exec ($ch);
		curl_close ($ch);

		$Str_Online='<img src="web_img/online.png" />';
		$Str_Offline='<img src="web_img/offline.png" />';
		$Status = explode(";", $result);
		$result="<b>Login</b> ".checkStatus($Status[0])."     <b>Char</b> ".checkStatus($Status[1])."     <b>Map</b> ".checkStatus($Status[2]);

		$file = fopen($statusHtmlFile,"w");
		fwrite($file,$result);
		fclose($file);
	}
}

function checkStatus($onoff)
{
	$Str_Online='<img src="web_img/online.png" />';
	$Str_Offline='<img src="web_img/offline.png" />';
	return $onoff == 1 ? $Str_Online : $Str_Offline;
}
?>

It checks last update time of status.html file,  if it is more than 5 minutes it does a curl call to my Ragnarok machines webserver

writes status to the status.html file

 

status.html is ajax loaded on the main page...

 

 

Share this post


Link to post
Share on other sites

Posted (edited)

day 360+X .... Alright, I decided to stop doing it this way.

I Will rethink my way of doing it

So far what I have

- .com domain name I bought for 0.99 $

- Hercules Emulator running on my Raspberry Pi 

- I'm using graphical content from downloads section to make loading screens and login screens, watermark etc.

- I'm using graphical content kindly provided by Daifuku, in the downloads section to create banners and web content

- I adjusted few plugins and scripts (Publicly available on hercules forum) to work with my server

  1. Poring count (Automatic event)
  2. Goblin invasion (Automatic event)
  3. Treasure box hunting (Automatic event)
  4. And many more which I downloaded but not integrated yet

And yes they all work as expected, and no I don't care if they are written by a monkey...

As users don't see the code, the only thing that matters is that they work as expected.

If they don't, I make them to.

 

- I have few licenses of responsive bootstrap themes, I bought them back in 2015.

http://webapplayers.com/homer_admin-v2.0/landing_page.html

I will use this one to create my website. (Soon screenshots will be available)

It is possible to use a free bootstrap theme, but since I already have that one I will use that one...

 

- To write BackEnd, I will use Laravel Framework.

- I will apply Let's Encrypt free SSL certificate so that my ro site would use https://

Wait for screenshots.

 

Edited by Habilis

Share this post


Link to post
Share on other sites

This guide will show you how to ruin ragnarok online at all.
More 1day servers, please.

Share this post


Link to post
Share on other sites

Posted (edited)

54 minutes ago, Kubix said:

This guide will show you how to ruin ragnarok online at all.
More 1day servers, please.

My dear friend, this is not a guide.

Hence the [Dev's Diary] tag.

So, please don't be so upset!

 

I'm telling what I'm doing but I'm not going to show how to :

- Develop a RO server website with Laravel

- Use Photoshop to tweak graphical content

- Develop Herc Plugins

- Develop Scripts

 

You got to know that there is a catch to minimal $ investment, meaning I will have to do EVERYTHING on my own....

Edited by Habilis

Share this post


Link to post
Share on other sites

Posted (edited)

12 hours ago, Habilis said:

day 360+X .... Alright, I decided to stop doing it this way.

I Will rethink my way of doing it

So far what I have

- .com domain name I bought for 0.99 $

- Hercules Emulator running on my Raspberry Pi 

- I'm using graphical content from downloads section to make loading screens and login screens, watermark etc.

- I'm using graphical content kindly provided by Daifuku, in the downloads section to create banners and web content

- I adjusted few plugins and scripts (Publicly available on hercules forum) to work with my server

  1. Poring count (Automatic event)
  2. Goblin invasion (Automatic event)
  3. Treasure box hunting (Automatic event)
  4. And many more which I downloaded but not integrated yet

And yes they all work as expected, and no I don't care if they are written by a monkey...

As users don't see the code, the only thing that matters is that they work as expected.

If they don't, I make them to.

 

- I have few licenses of responsive bootstrap themes, I bought them back in 2015.

http://webapplayers.com/homer_admin-v2.0/landing_page.html

I will use this one to create my website. (Soon screenshots will be available)

It is possible to use a free bootstrap theme, but since I already have that one I will use that one...

 

- To write BackEnd, I will use Laravel Framework.

- I will apply Let's Encrypt free SSL certificate so that my ro site would use https://

Wait for screenshots.

 

I alrealy love that kind Diary, i has been write one .

For backend, i suggesting you use small framework than laravel.

Laravel is strong with large project but with small it's not good.
And Laravel required minimum PHP 5.6 or newer, i dont think your hosting manager accept install this for you if your hosting is running PHP < 5.6.
Other point, laravel size too large... it's need ~200+ MB disk size.

I suggesting: yii2, or Codeiginiter 3 :D

Anyway, best lucky for you i see the enthusiasm on you.

Edited by Hirist

Share this post


Link to post
Share on other sites

yii2 or codeignighter are just as big as Laravel.

I use Laravel, because I know how to work with it, see my blog is written in Laravel.

It runs on My Raspberry Pi  with PHP 7.1, If I am to pay a hoster, I would buy a VPS or even better Dedicated Server, That way I don't have to deal with finicky hosters using  PHP 5.3 (Because we are in 2009 (c)).

Share this post


Link to post
Share on other sites

Posted (edited)

Day ... Hell if I know:

 

Using the theme I had

http://webapplayers.com/homer_admin-v2.0/landing_page.html

 

I designed the home page (needs some more work like for timer and other) 

But this how I wanted my home page to look.

It's completely adaptive.

And I finally put to use my personally developed Ragnarok captcha,

at the register section.

DISCLAIMER : 

NOT AN ADVERTISMENT

Server name HabilisRO is fictional, made up for the purpose of this Dev's Diary. All matches with the existing servers are a coincidence. 

VcW9e91.jpg

 

Ow and should I mention the Special Thanks ?

Special thanks to Daifuku for providing free graphical content.

 

There will be a link to her profile...

 

 

Edited by Habilis

Share this post


Link to post
Share on other sites

Posted (edited)

Done some logo work

Using Daifuku's Freebie

BNB585F.jpg

 

Edited by Habilis

Share this post


Link to post
Share on other sites

Posted (edited)

UPDATE: Now That I have the Logo

I can start doing stuff with it

Like

Creating a login screen

and

Making a screenshot watermark (Thingy that appears in the bottom right corner on screenshots)

0INjiXw.jpg

 

Nextup, some loading screens.....

Edited by Habilis

Share this post


Link to post
Share on other sites

Posted (edited)

Day 3 from new beginning:

Some 12 loading screens.....

Some of them are really ugly, but they were made from free stuff.

And starting from loading screen 8 I begun loosing my imagination.

Anyways guys, I really don't know what else should I do for my server client of a Minimal $ investment server?

Q0OfgVx.jpg

 

Edited by Habilis

Share this post


Link to post
Share on other sites

I really love that "humon check" captcha 

 

Ps- you made it since most of the free web hosting do not support it ?

I remember makinig my first  website for ragnarok using .tk (was free) domain with free web hosting which had alot if restrictions like using captcha! , so I gave up on free web hosting :P

 

Share this post


Link to post
Share on other sites

Posted (edited)

6 minutes ago, Cyro said:

I really love that "humon check" captcha 

 

Ps- you made it since most of the free web hosting do not support it ?

I remember makinig my first  website for ragnarok using .tk (was free) domain with free web hosting which had alot if restrictions like using captcha! , so I gave up on free web hosting :P

 

I've decided not to go with a free hosting as they are all pile of crap.

What I'm going to do with free hosting is host my patches and patcher news.

As most free hosting forbid to use their services only for file hosting. I don't care, patcher news page looks like a website to me...

Edited by Habilis

Share this post


Link to post
Share on other sites
8 minutes ago, Habilis said:

I've decided not to go with a free hosting as they are all pile of crap.

What I'm going to do with free hosting is host my patches and patcher news.

As most free hosting forbid to use their services only for file hosting. I don't care, patcher news page looks like a website to me...

Well, id suggest you to buy this one euro hosting which comes with one gb ram and 20gb hd

You can also host Hercules there since it got one gb.

So web hosting + server hosting for 2 euro/month,

You can also buy other  web hosting which I came across 10 usd/year with 4gb space which also provides cpanel 

Both are simply good for a starting simple website with a good amount of bandwidth

Share this post


Link to post
Share on other sites

Posted (edited)

Still Day 3:

 

Alright, I've done one more little thing.

The banner made from free banner found at RA...

ALhcLfJ.png

I din't bother with animations, as most places where this banner would go require $

But good thing to do if I really have nothing else to do, would be:

- Scale properly logo (remake it with lower font-weight)

- Scale features text and animate it

01PXVbs.jpg

 

Next-up: SQL Security work....

Idea to create a tiny SQL script that would create a DataBaseWebUser in my Ragnarok Database.

- Create few SQL views returning player names, scores, levels (obviously not password nor login) Information to make TOPs

- Crate 2-3 SQL stored procedures (new user register, password reset, email reset)

- make password reset, email reset stored procedures tricky so that they cannot be executed to reset password just like that...

 

and give my DataBaseWebUser  access just to those Stored procedures and SQL views in my ragnarok server databse

 

This way if a hacker, somehow breaches into my website and obtains usaername and password of  DataBaseWebUser, all he will be able to do to my RO server database is

- register an account

- select information that already appears in the tops

B38cFIv.jpg

Edited by Habilis

Share this post


Link to post
Share on other sites

Posted (edited)

Day 4 1/2: minor adjustments to the graphics

Improved that banner, even-though, I don't expect to pay $ to the tops to be able to put it....

ZdtNAPm.gif

 

Added a little credit to the graphical content made mostly from Daifuku's graphical content (Will work some more later to make it blend better...)

Spoiler

FCG7blK.jpg

 

Spoiler

hVKdKl8.jpg

 

Improved a little Watermark see on screenshot

Spoiler

zFpjMw1.jpg

 

Edited by Habilis

Share this post


Link to post
Share on other sites

Why is the priestess in your loading screen not wearing panties? :o

Share this post


Link to post
Share on other sites

Posted (edited)

7 minutes ago, Smoke said:

Why is the priestess in your loading screen not wearing panties? :o

B38cFIv.jpg 

Light erotica. While not completely NSFW, Allows room for imagination, to imagine the rest..... and the rest of the story......

(Basically another mind game that I love so much playing with people)

Edited by Habilis

Share this post


Link to post
Share on other sites

Posted (edited)

Day 4 2/2: SQL security work takes form

Spoiler

wEzz0PA.jpg

I moved forward with the SQL security work

So basically here is the main idea of how It works

cSlXG6u.jpg

 

and here are some pieces of my SQL code

DECLARE _ragDBWebUserViewer VARCHAR(32);
DECLARE _ragDBWebUserViewerPass VARCHAR(32);

SET _ragDBWebUserViewer = 'ragdbwebviewer';
SET _ragDBWebUserViewerPass = 'huji'

ALTER TABLE login ADD COLUMN emailverrif VARCHAR(32) NOT NULL DEFAULT '' AFTER pincode_change;


DELIMITER //
CREATE PROCEDURE WebRegisterNewRagPlayerOne
(
	IN login VARCHAR(23)
	, IN email VARCHAR(39)
	, IN password VARCHAR(32)
	, IN sex ENUM('M','F')
	, IN emailverrifhash VARCHAR(32)
	, OUT returnparam INT(1)
)
proc_webreg:BEGIN
	
	-- -1 Unhandled error
	DECLARE EXIT HANDLER FOR SQLEXCEPTION SET returnparam = -1;

	SELECT userid 
	INTO @loginalreadyexists 
	FROM login 
	WHERE userid = login;
	
	SELECT email 
	INTO @emailalreadyexists 
	FROM login 
	WHERE email = email;
	
	IF @loginalreadyexists NOT NULL THEN
		-- -2 Login already exists
		SET returnparam = -2;
		LEAVE proc_webreg;
	END IF;
	
	IF @emailalreadyexists NOT NULL THEN
		-- -3 Email already exists
		SET returnparam = -3;
		LEAVE proc_webreg;
	END IF;
	
	-- 4085943947  (2099-06-24)
	INSERT INTO login 
		(userid, email, user_pass, sex, emailverrif, unban_time) 
	VALUES 
		(login, email, password, sex, emailverrif, 4085943947);
END //
DELIMITER ;

GRANT EXECUTE ON PROCEDURE ragdb.WebRegisterNewRagPlayerOne TO _ragDBWebUserViewer@'localhost';


DELIMITER //
CREATE PROCEDURE WebRegisterNewRagPlayerTwo
(
	IN emailverrifhash VARCHAR(32)
	, OUT returnparam INT(1)
)
BEGIN
	-- Hey it's not a tutorial ;)
END //
DELIMITER ;

GRANT EXECUTE ON PROCEDURE ragdb.WebRegisterNewRagPlayerTwo TO _ragDBWebUserViewer@'localhost';



DELIMITER //
CREATE PROCEDURE RsetPasswordRagPlayerOne
(
	IN login VARCHAR(23)
	, IN emailverrifhash VARCHAR(32)
	, OUT email VARCHAR(39)
)
BEGIN
	-- Hey it's not a tutorial ;)
END //
DELIMITER ;

GRANT EXECUTE ON PROCEDURE ragdb.RsetPasswordRagPlayerOne TO _ragDBWebUserViewer@'localhost';





DELIMITER //
CREATE PROCEDURE RsetPasswordRagPlayerTwo
(
	IN password VARCHAR(32)
	, IN emailverrifhash VARCHAR(32)
	, OUT returnparam INT(1)
)
BEGIN
	-- Hey it's not a tutorial ;)
END //
DELIMITER ;

GRANT EXECUTE ON PROCEDURE ragdb.RsetPasswordRagPlayerTwo TO _ragDBWebUserViewer@'localhost';

So basically as you can see there is ragdbwebviewer that has access only to the stored procedures and I will add some views

it will have access to

like 

Create View AS SELECT nicnake, level, 

left join job....

whatever (note I'm not doing select * nor selecting login, email, passwords)

 

The password reset part is a security weakness, but if my website is hacked and 

ragdbwebviewer credentials obtained, hacker will have to know account login to reset the password... in theory

in real life there will be some more layers of security...

Edited by Habilis

Share this post


Link to post
Share on other sites

Posted (edited)

Day 4 2/2 : One more little thing in client graphics

 

Using this free character selection screen

 

available here in Herc Downloads, made myself a new character selection screen

wutMkiL.jpg

Decided not to change the default theme of the interface as

Over the years it became almost a RO's business card....

 

 

 

Edited by Habilis

Share this post


Link to post
Share on other sites

Posted (edited)

Day 6 : Paaaiiiin & Booooredom

 

For past week every day when I'm back from school, right before doing homework, I dedicate 1 hour of my time to 

run BeyondCompare sessions on files between Latest Hercules and eAthena revision of 2007 before Satan in Morroc (roughly Episode 11.1 : Rachel )

I compare and see the difference

For instance, this is the screenshot of me working on mob_skill_db.txt

On the left side Osiris Has some new skills in the Latest Hercules. (See the date under file path 2017-07-04)

On the Right side Osiris doesn't have some recent skills as It is old eAthena revision (See the date under file path 2007-02-06)

MUqwmEK.jpg

I also write notes as  I go with this process. Otherwise, it is really easy to loose my mind in that process of Pain & Boredom....

HwRVRyy.jpg

 

Wish me luck and not to loose my mind to boredom.

Doing homework seems so much fun after that!!!!!!

Edited by Habilis

Share this post


Link to post
Share on other sites

Posted (edited)

Day 7 : Was sooooo boored running BeyondCompares

 

Today been running beyond compares during one hour.

Got fed up and decided to address a client issue that been bugging me for a long time 2013 client that I'm using has a rather special quest window

with multiple tabs.... like WHY?! why would i need this many tabs!!!?

Anyways worse of all is the last tab.... it says episode 14.1 Bifrost.... Hell no!!!

q69goTw.jpg

At first, I wanted to remove all unwanted tabs. But knowledgeable people have told me that it could only be done by hexing the client and applying hexes at soooo many places.

So, I decided to let go that idea of removing useless tabs...

 

 

However, I did this: (Well white text will have to do for now.... I was running short on time and my parents started to yell at me "Go do your homework!!" well, you got the picture....)

 cY7r9GF.jpg

 

There you go, I fixed it!

That doesn't bug me anymore!

 

Quote

That's right, current episode is matching the year 2007. Episode 11.1 Rachel.
Did you ever wonder hos fast time fly by? What were you doing in 2007?
Can you believe it was 10 years ago? 
We bet you can still feel it like if it was just yesturday.
Well, this is an attempt to dive into the nostalgia with enhanced experience.

And other minor improvements providing authentic gameplay. And some more romantic gibberish here. And some more romantic gibberish here. And some more romantic gibberish here. And some more romantic gibberish here. And some more romantic gibberish here. And some more romantic gibberish here. And some more romantic gibberish here. And some more romantic gibberish here. And some more romantic gibberish here. And some more romantic gibberish here. And some more romantic gibberish here.

 

Edited by Habilis

Share this post


Link to post
Share on other sites

Posted (edited)

Day 8 :  Patcher (Still bored from comparing bunch of configs)

I decided to do a patching system

First I took the graphical content provided at downloads section

HCtMYGX.jpg

 

And created 5 accounts on FreeWeb hosting

This free web hosting has these features:

- No ads

- 1Gb storage space (To store updates)

- 100Gb traffic per month

 

So I have this .com domain name rigged to a free private DNS service (Just like DynDNS pro but free...)

In the DNS I created a CNAME record like so (upd.myserver.com -> tttaaass123.freehosting.com)

So that pretty domain points to domain given by free web hosting

What I found cool is that DNS records updated within an hour!!

(This means upd.myserver.com was pointing to tttaaass123.freehosting.com, yes changing DNS records can take some time. But 1 hour is amazing!)

In the patcher config, I put upd.myserver.com/patch as a directory to get patches from.

 

Now I will explain why 5 free accounts :

Free Webhosting are really picky, Finnicky and useless people that like to ban and limit things...

So If I get banned, I can switch to the next free account within an hour.

Or, if I see the traffic reaches limit, I switch to the next free account.

 

How this mobility is achieved:

The index.php which is called by the patcher to display news does quite some more work than just display news.

It writes the JSON object if not exists or outdated

JSON object that is written into webroot directory looks like this

{
    lastupdate : datetime,
    news : [{picture, publishdatem, body}]
}

Index.php checks lastupdate

- if 1 hour didn't pass, it renders JSON object with news to HTML and sends it.

- if past 1 hour, it does a CURL or WGET call to myserver.com/api/news to get a fresh JSON object. and writes NOW() to the lastupdate.

 

index.php also sends another CURL or WGET call to 4 other free webhosting accounts with a specific parameter  ?sync=1 

(Obviously, there is some validation going on so that some smarty couldn't botch my patching....)

4 other free accounts copy the JSON with news and compare patchlist.ini (file that lists updates) to their own file

and the get the updates they don't have and update their patchlist.ini .

 

So, the news are written on the main site, and patches are uploaded to only 1 place and spread through my network by themselves.

That way, I can maintain high mobility.

In the case of a ban or approaching traffic limit, I can switch to the next free webhosting account within 1 hour. The main server internet channel is not busy with patches download traffic.

Players don't need extra lags on the server, right?

 

 

Edited by Habilis

Share this post


Link to post
Share on other sites

Posted (edited)

Day 9 : Didn't want to come back to BeyondCompare....

So, I don't want to come back to BeyondCompare and configuring 1000 of files to the episode 11.1, I was desperateley browsing downloads section for at least something more exciting to do!!

Anything... As I've done pretty much everything....

And one more thing cought my eye. DailyRewards!!! 

Well my server already have that, but very basic one. Why not make it golden?

so I took this and a few of similar releases

and did this

day1

Spoiler

xjhwI3h.jpg

day 2

Spoiler

v9Pm0SN.jpg

well you get the idea...

Spoiler

QrEYCtE.jpg

 

And, Yes you rad it correctly "A little something to make a player's day with us even better"

And no, it is not an invitation to create 500 characters and farm daily rewards B38cFIv.jpg

As these items are not actually real items

But an Event version (same features but....)

- Not Kafra/Guild storable

- Not Tradable / Vendable / NPC sellable

- Not droppable

 

Basically an item given to one character to make his/her day even more fun...

Applying Only Best Practices since 2017...  (C)

Edited by Habilis

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now