<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[SphereCommunity - Documentation/Tutorials]]></title>
		<link>https://forum.spherecommunity.net/</link>
		<description><![CDATA[SphereCommunity - https://forum.spherecommunity.net]]></description>
		<pubDate>Fri, 08 May 2026 09:33:40 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[SphereServer running on the Kubernetes platform]]></title>
			<link>https://forum.spherecommunity.net/Thread-SphereServer-running-on-the-Kubernetes-platform</link>
			<pubDate>Sun, 17 Jan 2021 00:25:02 +0100</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-SphereServer-running-on-the-Kubernetes-platform</guid>
			<description><![CDATA[Hello, <br />
<br />
I published instructions for running linux version of SphereServer in docker, deployment and run Kubernetes.<br />
<br />
Configuration files can be found in the repository <a href="https://github.com/MANARA-Technologies/SphereServer-running-The-Kubernetes" target="_blank">https://github.com/MANARA-Technologies/S...Kubernetes</a><br />
<br />
Kubernetes is modern hosting app platform.]]></description>
			<content:encoded><![CDATA[Hello, <br />
<br />
I published instructions for running linux version of SphereServer in docker, deployment and run Kubernetes.<br />
<br />
Configuration files can be found in the repository <a href="https://github.com/MANARA-Technologies/SphereServer-running-The-Kubernetes" target="_blank">https://github.com/MANARA-Technologies/S...Kubernetes</a><br />
<br />
Kubernetes is modern hosting app platform.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Ultima Online - Various editions]]></title>
			<link>https://forum.spherecommunity.net/Thread-Ultima-Online-Various-editions</link>
			<pubDate>Fri, 27 Nov 2020 18:56:12 +0100</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-Ultima-Online-Various-editions</guid>
			<description><![CDATA[The link contains various editions of Ultima Online. I also added Ultima Online Gold, which will be welcomed by map makers for the use of UO Landscaper (they can't do without this version).<br />
<br />
Link to MEGA: <a href="https://mega.nz/folder/6uYxnIpY#tahGzzz_yOkLgNM1c_DxdQ" target="_blank">https://mega.nz/folder/6uYxnIpY#tahGzzz_yOkLgNM1c_DxdQ</a>]]></description>
			<content:encoded><![CDATA[The link contains various editions of Ultima Online. I also added Ultima Online Gold, which will be welcomed by map makers for the use of UO Landscaper (they can't do without this version).<br />
<br />
Link to MEGA: <a href="https://mega.nz/folder/6uYxnIpY#tahGzzz_yOkLgNM1c_DxdQ" target="_blank">https://mega.nz/folder/6uYxnIpY#tahGzzz_yOkLgNM1c_DxdQ</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[TUTO FRENCH] Items KR vers CC]]></title>
			<link>https://forum.spherecommunity.net/Thread-TUTO-FRENCH-Items-KR-vers-CC</link>
			<pubDate>Sun, 15 Nov 2020 10:14:40 +0100</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-TUTO-FRENCH-Items-KR-vers-CC</guid>
			<description><![CDATA[Rajouter des items de KR dans CC.<br />
<br />
Bonjour à tous,<br />
<br />
Il faut :<br />
-	Mythic package editor : <a href="https://github.com/pincoide/Mythic-Package-Editor-EC-" target="_blank">https://github.com/pincoide/Mythic-Package-Editor-EC-</a><br />
-	UO Enhanced editor : <a href="https://github.com/cbnolok/UOETE" target="_blank">https://github.com/cbnolok/UOETE</a><br />
-	Photoshop<br />
-	Driver pour lire les DDS.<br />
J’aurais voulu que ce soit automatisé mais malheureusement il n’y a pratiquement plus aucun programmeur sur UO.<br />
Pinco et Firelite travail encore sur les UOP avec Mythic, peut être arriverons nous à rajouter les items et les animations correctement sur EC.<br />
Pour le moment CC est le plus aboutit d’autant que Sphere est plutôt mort et ne passera probablement jamais sur EC.<br />
Lancer Mythic =&gt; loader les Textures.uop du client enhanced d’OSI et unpack.<br />
 <br />
<img src="http://prapilk.free.fr/Tutoforum3d/ItemsKR%20en%20CC_fichiers/image001.png" border="0" alt="[Image: image001.png]" /><br />
<br />
Lancer UOETE et photoshop (loader les DDS SANS les alphas) faite ça :<br />
Zone de travail en partant du haut à gauche.<br />
<img src="http://prapilk.free.fr/Tutoforum3d/ItemsKR%20en%20CC_fichiers/image002.png" border="0" alt="[Image: image002.png]" /><br />
 <br />
Trimming du pixel en haut à gauche<br />
<img src="http://prapilk.free.fr/Tutoforum3d/ItemsKR%20en%20CC_fichiers/image004.png" border="0" alt="[Image: image004.png]" /><br />
 <br />
Redimensionnement à 70% (car KR est plus grand et bien plus beau….)<br />
<img src="http://prapilk.free.fr/Tutoforum3d/ItemsKR%20en%20CC_fichiers/image006.png" border="0" alt="[Image: image006.png]" /> <br />
Zone de travail pour avoir le fichier CC<br />
<img src="http://prapilk.free.fr/Tutoforum3d/ItemsKR%20en%20CC_fichiers/image008.png" border="0" alt="[Image: image008.png]" /><br />
 <br />
Voilà, vous n’avez plus qu’a sauvegarder en bmp ou tiff et de le remplacer dans Uofiddler.<br />
Si vous voulez faire du EC, il faudra faire l’étape suivante qui sera en 128 ou 256 et sauvegarder en DDS(pour le savoir il faut extraire les DDS de legacy)<br />
<img src="http://prapilk.free.fr/Tutoforum3d/ItemsKR%20en%20CC_fichiers/image010.png" border="0" alt="[Image: image010.png]" />]]></description>
			<content:encoded><![CDATA[Rajouter des items de KR dans CC.<br />
<br />
Bonjour à tous,<br />
<br />
Il faut :<br />
-	Mythic package editor : <a href="https://github.com/pincoide/Mythic-Package-Editor-EC-" target="_blank">https://github.com/pincoide/Mythic-Package-Editor-EC-</a><br />
-	UO Enhanced editor : <a href="https://github.com/cbnolok/UOETE" target="_blank">https://github.com/cbnolok/UOETE</a><br />
-	Photoshop<br />
-	Driver pour lire les DDS.<br />
J’aurais voulu que ce soit automatisé mais malheureusement il n’y a pratiquement plus aucun programmeur sur UO.<br />
Pinco et Firelite travail encore sur les UOP avec Mythic, peut être arriverons nous à rajouter les items et les animations correctement sur EC.<br />
Pour le moment CC est le plus aboutit d’autant que Sphere est plutôt mort et ne passera probablement jamais sur EC.<br />
Lancer Mythic =&gt; loader les Textures.uop du client enhanced d’OSI et unpack.<br />
 <br />
<img src="http://prapilk.free.fr/Tutoforum3d/ItemsKR%20en%20CC_fichiers/image001.png" border="0" alt="[Image: image001.png]" /><br />
<br />
Lancer UOETE et photoshop (loader les DDS SANS les alphas) faite ça :<br />
Zone de travail en partant du haut à gauche.<br />
<img src="http://prapilk.free.fr/Tutoforum3d/ItemsKR%20en%20CC_fichiers/image002.png" border="0" alt="[Image: image002.png]" /><br />
 <br />
Trimming du pixel en haut à gauche<br />
<img src="http://prapilk.free.fr/Tutoforum3d/ItemsKR%20en%20CC_fichiers/image004.png" border="0" alt="[Image: image004.png]" /><br />
 <br />
Redimensionnement à 70% (car KR est plus grand et bien plus beau….)<br />
<img src="http://prapilk.free.fr/Tutoforum3d/ItemsKR%20en%20CC_fichiers/image006.png" border="0" alt="[Image: image006.png]" /> <br />
Zone de travail pour avoir le fichier CC<br />
<img src="http://prapilk.free.fr/Tutoforum3d/ItemsKR%20en%20CC_fichiers/image008.png" border="0" alt="[Image: image008.png]" /><br />
 <br />
Voilà, vous n’avez plus qu’a sauvegarder en bmp ou tiff et de le remplacer dans Uofiddler.<br />
Si vous voulez faire du EC, il faudra faire l’étape suivante qui sera en 128 ou 256 et sauvegarder en DDS(pour le savoir il faut extraire les DDS de legacy)<br />
<img src="http://prapilk.free.fr/Tutoforum3d/ItemsKR%20en%20CC_fichiers/image010.png" border="0" alt="[Image: image010.png]" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[Tutoriel][French] Créer sa créature]]></title>
			<link>https://forum.spherecommunity.net/Thread-Tutoriel-French-Cr%C3%A9er-sa-cr%C3%A9ature--6701</link>
			<pubDate>Mon, 03 Aug 2020 11:29:53 +0200</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-Tutoriel-French-Cr%C3%A9er-sa-cr%C3%A9ature--6701</guid>
			<description><![CDATA[<span style="font-weight: bold;">Créer une toute nouvelle animation pour Ultima Online sur le client classique.</span><br />
<br />
Bonjour à tous !<br />
Plusieurs manières de faire.<br />
Vous pouvez récupérer gratuitement un objet en 3d. Exemple ici : <a href="https://www.artstation.com/simon_chukov" target="_blank">https://www.artstation.com/simon_chukov</a><br />
<br />
Le rajouter dans votre programme préférer pour ma part 3dsmax. <br />
<img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image002.jpg" border="0" alt="[Image: image002.jpg]" /><br />
Mais si vous avez pas envie de faire de la 3d vous avez raison ! Il y a tellement de jeu et tellement à récupérer par exemple sur enhanced ou KR pourquoi créer du neuf !<br />
Nous ce qu’on veut c’est que ça fonctionne ingame comme ça =&gt; <br />
<a href="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image004.jpg" target="_blank">http://prapilk.free.fr/SphereServerTuto/...age004.jpg</a><br />
Je propose ici de patcher sur Ultima Online l’avatar d’Ultima 8 !! Oui j’adore Pagan !<br />
J’ai donc utilisé   Ultima 8 Viewer pour extraire les 1550 images.  <a href="http://prapilk.free.fr/SphereServerTuto/u8viewer.zip" target="_blank">http://prapilk.free.fr/SphereServerTuto/u8viewer.zip</a><br />
<a href="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image008.jpg" target="_blank">http://prapilk.free.fr/SphereServerTuto/...age008.jpg</a><br />
<br />
Maintenant, il faut les trier.<br />
Pour les High (gros méchant) il y a 22 actions et pour les Low (petit méchant et animaux) 13 actions et pour les P (man/woman et équipement) 35 actions.<br />
Ici on va faire les 35 actions (on retrouve ces informations dans UO inside, Uofiddler etc…):<br />
00_Walk armed\01_WalkUnarmed\02_Run Unarmed\03_Run armedµ\04_Stand\05_Fidget01\06_Fidget 02\07_Stand one attack\08_Stand twohand attack\09_Attack one hand\10_Attack unarmed\11_Attack unarmed 02\12_Attack two hand down\13_attack Two hand wide\14_Attack two hand jab\15_Walk attack pos\16_Cast directed\17_Cast area summo,\18_Attack bow\19_Attack crossbow\20_Take hit\21_DIe\22_Die 02\23_Horseback ride slow\24_Horseback ride fast\25_horseback stand\26_Horseback attack\27_Horseback attq bow\28_Horseback atq crossbow\29_Horseback slap horse\30_Turn\31_Attack unarmed et walk\32_Bow\33_Salute\34_Fidget 03\<br />
<br />
En règle générale c’est 10 images pour le 00_Walk_armed. Je récupère les images pour le DOWN, DOWNLEFT, LEFT, UPLEFT et UP donc 50 images.<br />
Maintenant, j’ai le choix.<br />
1	Ajout une à une avec Uofiddler<br />
2	Faire un gif par action et rajouter le gif avec add gif canvas dans Uofiddler<br />
3	Faire un gif avec les anims dans l’ordre et le rajouter avec add gif krframe dans Uofiddler<br />
4	Soit faire un extract anim dans Mulpatcher et remplacer les images d’une autre animation avant de les remettre.<br />
<br />
Je choisis ici de vous montrer là 3 !<br />
Le tri du walk est fait :<br />
 <img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image010.jpg" border="0" alt="[Image: image010.jpg]" /><br />
<br />
Maintenant je rajoute le tout dans Photoshop dans le même ordre et je rajoute la fenêtre MONTAGE.<br />
Parfois il faut enlever la couleur indexé et mettre couleurs RVB (idem pour le cadenas sur le calque):  <img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image012.jpg" border="0" alt="[Image: image012.jpg]" /><br />
Il faut aussi mettre dans l’onglet Image =&gt; zone de travail =&gt; une taille suffisante pour accueillir toute les images. C’est important !!<br />
Ensuite,  <br />
<img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image014.jpg" border="0" alt="[Image: image014.jpg]" /><br />
et sur  <img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image016.jpg" border="0" alt="[Image: image016.jpg]" /> j’obtiens  <img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image018.jpg" border="0" alt="[Image: image018.jpg]" /><br />
<br />
Ensuite je vais sur Fichier =&gt; exportation =&gt; enregistre pour le web. (je peux enlever des couleurs ici. Je montre comment faire mais il faut savoir que add gif krframeviewer supprime automatiquement les verts)<br />
 <br />
 <br />
J’enregistre.<br />
Ensuite, j’ouvre Uofiddler et je vais dans une ID que j’ai choisie en P et je rajoute mon gif.<br />
 <img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image020.jpg" border="0" alt="[Image: image020.jpg]" /><br />
<img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image022.jpg" border="0" alt="[Image: image022.jpg]" /><br />
<img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image024.jpg" border="0" alt="[Image: image024.jpg]" /><br />
Alors vous verrez comme par magie toutes les animations se placer correctement dans toute les directions.<br />
Pour ça il faut que chaque direction ai le même nombre d’image.<br />
Si vous avez des problèmes de couleurs, il faut enlever les couleurs en trop avant l’enregistrement du gif dans photoshop.<br />
Si vous avez trop de pixels transparents et c’est trop difficile à changer, parfois en rajoutant direction par direction avec Add With Canvas résout le problème. (car vous aviez du vert…)<br />
Il vous reste à corriger le centrage. (la version d’Uofiddler d’Aout 2020 corrigera bientôt le problème)<br />
 <img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image026.jpg" border="0" alt="[Image: image026.jpg]" /><br />
<a href="http://prapilk.free.fr/SphereServerTuto/Avatar.mp4" target="_blank">http://prapilk.free.fr/SphereServerTuto/Avatar.mp4</a><br />
<br />
 <br />
Avec ça vous pouvez créer ce que vous voulez et aller chercher facilement les animations de tout les jeux comme KR et les gif en CV5 c’est pour Diablo 1 et 2 avec le prog CV5!!<br />
 <br />
Prapilk<br />
<br />
 <a href="http://prapilk.free.fr/SphereServerTuto/Ogre.mp4" target="_blank">http://prapilk.free.fr/SphereServerTuto/Ogre.mp4</a>]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;">Créer une toute nouvelle animation pour Ultima Online sur le client classique.</span><br />
<br />
Bonjour à tous !<br />
Plusieurs manières de faire.<br />
Vous pouvez récupérer gratuitement un objet en 3d. Exemple ici : <a href="https://www.artstation.com/simon_chukov" target="_blank">https://www.artstation.com/simon_chukov</a><br />
<br />
Le rajouter dans votre programme préférer pour ma part 3dsmax. <br />
<img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image002.jpg" border="0" alt="[Image: image002.jpg]" /><br />
Mais si vous avez pas envie de faire de la 3d vous avez raison ! Il y a tellement de jeu et tellement à récupérer par exemple sur enhanced ou KR pourquoi créer du neuf !<br />
Nous ce qu’on veut c’est que ça fonctionne ingame comme ça =&gt; <br />
<a href="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image004.jpg" target="_blank">http://prapilk.free.fr/SphereServerTuto/...age004.jpg</a><br />
Je propose ici de patcher sur Ultima Online l’avatar d’Ultima 8 !! Oui j’adore Pagan !<br />
J’ai donc utilisé   Ultima 8 Viewer pour extraire les 1550 images.  <a href="http://prapilk.free.fr/SphereServerTuto/u8viewer.zip" target="_blank">http://prapilk.free.fr/SphereServerTuto/u8viewer.zip</a><br />
<a href="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image008.jpg" target="_blank">http://prapilk.free.fr/SphereServerTuto/...age008.jpg</a><br />
<br />
Maintenant, il faut les trier.<br />
Pour les High (gros méchant) il y a 22 actions et pour les Low (petit méchant et animaux) 13 actions et pour les P (man/woman et équipement) 35 actions.<br />
Ici on va faire les 35 actions (on retrouve ces informations dans UO inside, Uofiddler etc…):<br />
00_Walk armed\01_WalkUnarmed\02_Run Unarmed\03_Run armedµ\04_Stand\05_Fidget01\06_Fidget 02\07_Stand one attack\08_Stand twohand attack\09_Attack one hand\10_Attack unarmed\11_Attack unarmed 02\12_Attack two hand down\13_attack Two hand wide\14_Attack two hand jab\15_Walk attack pos\16_Cast directed\17_Cast area summo,\18_Attack bow\19_Attack crossbow\20_Take hit\21_DIe\22_Die 02\23_Horseback ride slow\24_Horseback ride fast\25_horseback stand\26_Horseback attack\27_Horseback attq bow\28_Horseback atq crossbow\29_Horseback slap horse\30_Turn\31_Attack unarmed et walk\32_Bow\33_Salute\34_Fidget 03\<br />
<br />
En règle générale c’est 10 images pour le 00_Walk_armed. Je récupère les images pour le DOWN, DOWNLEFT, LEFT, UPLEFT et UP donc 50 images.<br />
Maintenant, j’ai le choix.<br />
1	Ajout une à une avec Uofiddler<br />
2	Faire un gif par action et rajouter le gif avec add gif canvas dans Uofiddler<br />
3	Faire un gif avec les anims dans l’ordre et le rajouter avec add gif krframe dans Uofiddler<br />
4	Soit faire un extract anim dans Mulpatcher et remplacer les images d’une autre animation avant de les remettre.<br />
<br />
Je choisis ici de vous montrer là 3 !<br />
Le tri du walk est fait :<br />
 <img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image010.jpg" border="0" alt="[Image: image010.jpg]" /><br />
<br />
Maintenant je rajoute le tout dans Photoshop dans le même ordre et je rajoute la fenêtre MONTAGE.<br />
Parfois il faut enlever la couleur indexé et mettre couleurs RVB (idem pour le cadenas sur le calque):  <img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image012.jpg" border="0" alt="[Image: image012.jpg]" /><br />
Il faut aussi mettre dans l’onglet Image =&gt; zone de travail =&gt; une taille suffisante pour accueillir toute les images. C’est important !!<br />
Ensuite,  <br />
<img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image014.jpg" border="0" alt="[Image: image014.jpg]" /><br />
et sur  <img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image016.jpg" border="0" alt="[Image: image016.jpg]" /> j’obtiens  <img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image018.jpg" border="0" alt="[Image: image018.jpg]" /><br />
<br />
Ensuite je vais sur Fichier =&gt; exportation =&gt; enregistre pour le web. (je peux enlever des couleurs ici. Je montre comment faire mais il faut savoir que add gif krframeviewer supprime automatiquement les verts)<br />
 <br />
 <br />
J’enregistre.<br />
Ensuite, j’ouvre Uofiddler et je vais dans une ID que j’ai choisie en P et je rajoute mon gif.<br />
 <img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image020.jpg" border="0" alt="[Image: image020.jpg]" /><br />
<img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image022.jpg" border="0" alt="[Image: image022.jpg]" /><br />
<img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image024.jpg" border="0" alt="[Image: image024.jpg]" /><br />
Alors vous verrez comme par magie toutes les animations se placer correctement dans toute les directions.<br />
Pour ça il faut que chaque direction ai le même nombre d’image.<br />
Si vous avez des problèmes de couleurs, il faut enlever les couleurs en trop avant l’enregistrement du gif dans photoshop.<br />
Si vous avez trop de pixels transparents et c’est trop difficile à changer, parfois en rajoutant direction par direction avec Add With Canvas résout le problème. (car vous aviez du vert…)<br />
Il vous reste à corriger le centrage. (la version d’Uofiddler d’Aout 2020 corrigera bientôt le problème)<br />
 <img src="http://prapilk.free.fr/SphereServerTuto/Rajout%20animation_fichiers/image026.jpg" border="0" alt="[Image: image026.jpg]" /><br />
<a href="http://prapilk.free.fr/SphereServerTuto/Avatar.mp4" target="_blank">http://prapilk.free.fr/SphereServerTuto/Avatar.mp4</a><br />
<br />
 <br />
Avec ça vous pouvez créer ce que vous voulez et aller chercher facilement les animations de tout les jeux comme KR et les gif en CV5 c’est pour Diablo 1 et 2 avec le prog CV5!!<br />
 <br />
Prapilk<br />
<br />
 <a href="http://prapilk.free.fr/SphereServerTuto/Ogre.mp4" target="_blank">http://prapilk.free.fr/SphereServerTuto/Ogre.mp4</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Source - RadstaR]]></title>
			<link>https://forum.spherecommunity.net/Thread-Source-RadstaR</link>
			<pubDate>Mon, 06 Jul 2020 18:40:15 +0200</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-Source-RadstaR</guid>
			<description><![CDATA[<img src="http://eranova.cz/ultima_manawydan/topmain.gif" border="0" alt="[Image: topmain.gif]" /><br />
<br />
Dear friends and fellow developers. RadstaR is a person who developed many programs for Ultima Online and helped many beginning GMs on various grounds (not only in our country in the Czech Republic) to develop them and to develop our Czech servers. But not only that, his programs are still used all over the world. RadstaR no longer operates, develops or develops Ultima Online and will not be involved in this project. But, he gave me permission to access his entire old website. And for me, developers will certainly appreciate what exists on this site. That is why I pay great tribute to RadstaR. He is a man who has achieved great success in the field of Free Shards. Thanks to his work, many Czech and world servers work. I placed his old website on my site as an alias 3.domain. If time allows, I will try to incorporate it into my web system. But I don't promise. In any case, there is a lot of information and programs, often no longer available, that we will all appreciate. I wish you a good job and well-being. And for players who grind here, it's a good idea to try different experiments.<br />
<br />
Link: <a href="http://eranova.cz/ultima_manawydan/" target="_blank">http://eranova.cz/ultima_manawydan/</a><br />
<br />
PS: I like RadstaRa, it's been a very long time since we've worked together and communicated. Thanks to his advice, I was able to create a lot of good things. That is why RadstaR deserves a great award.]]></description>
			<content:encoded><![CDATA[<img src="http://eranova.cz/ultima_manawydan/topmain.gif" border="0" alt="[Image: topmain.gif]" /><br />
<br />
Dear friends and fellow developers. RadstaR is a person who developed many programs for Ultima Online and helped many beginning GMs on various grounds (not only in our country in the Czech Republic) to develop them and to develop our Czech servers. But not only that, his programs are still used all over the world. RadstaR no longer operates, develops or develops Ultima Online and will not be involved in this project. But, he gave me permission to access his entire old website. And for me, developers will certainly appreciate what exists on this site. That is why I pay great tribute to RadstaR. He is a man who has achieved great success in the field of Free Shards. Thanks to his work, many Czech and world servers work. I placed his old website on my site as an alias 3.domain. If time allows, I will try to incorporate it into my web system. But I don't promise. In any case, there is a lot of information and programs, often no longer available, that we will all appreciate. I wish you a good job and well-being. And for players who grind here, it's a good idea to try different experiments.<br />
<br />
Link: <a href="http://eranova.cz/ultima_manawydan/" target="_blank">http://eranova.cz/ultima_manawydan/</a><br />
<br />
PS: I like RadstaRa, it's been a very long time since we've worked together and communicated. Thanks to his advice, I was able to create a lot of good things. That is why RadstaR deserves a great award.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[TUTORIEL]FRENCH Rendre n'importe qu'elle créature montable.]]></title>
			<link>https://forum.spherecommunity.net/Thread-TUTORIEL-FRENCH-Rendre-n-importe-qu-elle-cr%C3%A9ature-montable</link>
			<pubDate>Thu, 18 Jun 2020 22:02:45 +0200</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-TUTORIEL-FRENCH-Rendre-n-importe-qu-elle-cr%C3%A9ature-montable</guid>
			<description><![CDATA[Bonjour à tous,<br />
<br />
<span style="font-weight: bold;">FAST TUTO<br />
Je suis sur client 7.0 et normalement vous pouvez monter n'importe quels animations.<br />
J'ai testé sur les animations en Low details et en P (equipement) sans devoir faire les animations d'horseback.<br />
<br />
Il faut dans sphere_defs.scp rajouter:<br />
<br />
mount_ID (en Hexa de l'animation anim.mul lié dans le bodyconv)   DEFNAME (normalement un itemdef du type i_mt_)<br />
<br />
Pour l'hippocampe ce sera<br />
<br />
mount_0x640 i_mt_hippocampe<br />
<br />
car je l'ai lié dans le bodyconv à l'ID 1600 et donc en hexa 0x640.<br />
<br />
mobtypes.txt =&gt; 1600 animal 0<br />
<br />
J'ai créé une tile avec comme tiledata Layer 25, anim 1600 et WEARABLE.<br />
Il faudra donc remplacer dans vos mul le art, aridx et tiledata.<br />
<br />
ça vous fera un script du style:<br />
<br />
[ITEMDEF 0A2E6]<br />
DEFNAME=i_mt_hippocampe<br />
TYPE=T_EQ_HORSE <br />
LAYER=25 <br />
TDATA3=c_hippocampe<br />
<br />
[CHARDEF 0640]<br />
<br />
etc...</span><br />
<br />
<br />
<br />
<span style="font-weight: bold;">LONG OLD TUTO</span><br />
Comme prérequis il faut:<br />
Uofiddler<br />
Mulbuilder<br />
Michelangelo<br />
Un verdata.mul<br />
<br />
Dans l'exemple, on va créer l'hippocampe montable.<br />
<br />
<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/hippocampe.png" border="0" alt="[Image: hippocampe.png]" /><br />
<br />
Alors pour ça, il faut déjà récupérer le .vd accessible en cherchant monster sea "ultima online" etc......  sur google.<br />
<br />
Ensuite, avec Uofiddler vous configurez votre path settings en mettant aussi votre verdata.mul.<br />
<br />
Je l'ai rajouté dans un Low détails libre de l'anim4.mul.<br />
<br />
<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/Uofiddler.png" border="0" alt="[Image: Uofiddler.png]" /><br />
<br />
Vous faites save et vous remplacez vos fichiers générés dans vos mul.<br />
<br />
Vous allez ensuite dans votre bodyconv et vous le liez à une ID libre de l'anim.mul avant 2049.<br />
<br />
Exemple:<br />
<br />
<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/Bodyconv.png" border="0" alt="[Image: Bodyconv.png]" /><br />
<br />
ensuite pour être précis en mobtypes:<br />
<br />
<span style="font-weight: bold;">1600</span>	SEA_MONSTER	0	# Hippocampe<br />
<br />
Maintenant, il faut comprendre ce qu'il manque pour pas avoir toujours les mêmes questions.<br />
Pourquoi les animations sont invisibles quand je suis dessus....<br />
<br />
Il faut pour cela créer sur une ID équipement (donc les P à 34 animations x 5 directions dans Uofiddler) les animations 23 à 29 du Horseback (je vous renvois sur de vieux tutos que j'ai fais à l'époque pour plus d'informations =&gt; <a href="http://prapilk.free.fr/LES_SPAWNEURS/ANIMATION.htm" target="_blank">Mon vieux site web</a> )<br />
<br />
et il faudra le dire dans sphere_defs.scp du server, du style:<br />
<br />
mount_0x640	i_mt_hippocampe<br />
<br />
Alors ça dit quoi,<br />
<br />
mount_ c'est pour dire que c'est une ID liée à une autres ID quand on met le layer 25 dans le tiledata qui est celui pour dire que c'est "équipable" en tant que monture.<br />
<br />
0x640 c'est l'hexadecimal de l'animation <span style="font-weight: bold;">1600</span> vers laquelle bodyconv est liée.<br />
<br />
Ensuite i_mt_hippocampe c'est le DEFNAME de l'item qui est lié à l'animation en P de l'hippocampe montable !!!!<br />
<br />
[ITEMDEF XXXXX] &lt;= l'ID qui vous plaira dans l'onglet item d'Uofiddler.<br />
DEFNAME=i_mt_hippocampe<br />
TYPE=T_EQ_HORSE <br />
LAYER=25 <br />
TDATA3=C_hippomontable<br />
<br />
Il faudra ensuite aller dans tiledata et rajouter le layer 25 et l'ID d'ou vous allez rajouter les animations en P liée dans bodyconv !!!<br />
<br />
<span style="text-decoration: underline;"><span style="font-weight: bold;">Création des animations d'horseback</span></span><br />
<br />
Ici nous allons rajouter en anim4.mul sur l'ID 576 les animations pour pouvoir le monter.<br />
<br />
COMMENT Y ARRIVER ! IL FAUT MICHELANGELO et MULBUILDER c'est le plus simple !!<br />
 <br />
On va utiliser une ID "martyr" qui nous permettra de récupérer le .vd avec Uofiddler.<br />
<br />
On va aller dans michelangelo et faire ça:<br />
<br />
<span style="text-decoration: underline;"><span style="font-weight: bold;">Créer des .uop avec Michelangelo:</span></span><br />
<br />
Lancer Michelangelo, faite Import et sélectionné comme filetypes ANIM.<br />
<br />
-Sélectionné ensuite votre anim.mul et votre anim.idx. &lt;== ici on prend l'anim4.mul vu que je l'ai mis en 250 anim4.mul..... (vous vous souvenez ? avec le bodyconv etc...)<br />
<br />
Comme BlockNumber introduissez le premier blocknumber de votre créature que vous aurez préalablement choisis avec InsideUO. Pour le connaître, allé sur la créature choisie et faite click droit détails et le Handle = block ID.<br />
<br />
Ou alors vous faites ça:<br />
<br />
High Detail Critter<br />
        Output.Lines.Add('Creature is a High Detail Critter');<br />
        IndexOffset := CreatureID*110;<br />
Low Detail<br />
        Output.Lines.Add('Creature is a Low Detail Critter');<br />
        IndexOffset := (CreatureID-200)*65+22000;<br />
Humans and accesoires<br />
        Output.Lines.Add('Creature is a Human or an Accessoire');<br />
        IndexOffset := (CreatureID-400)*175+35000;<br />
<br />
Donc ici ID de l'anim4.mul =&gt; (<span style="font-weight: bold;">250</span>-200)*65 + 22000= <span style="font-weight: bold;">25250</span><br />
<br />
Si c'est:<br />
<br />
-Un high détails c'est Block ID =&gt; Block ID + 109.(config. création anim. nain)<br />
<br />
-Un low détails c'est Block ID =&gt; Block ID + 64. =&gt; donc <span style="font-weight: bold;">25250 + 64.</span><br />
<br />
<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/Michelangelo.png" border="0" alt="[Image: Michelangelo.png]" /><br />
<br />
Ensuite, clické sur Import et vous pourrez voir tout les .uop de chaque séquences d'animations. Il ne vous reste plus qu'a faire Save pour récupérer un .uop!!!<br />
<hr />]]></description>
			<content:encoded><![CDATA[Bonjour à tous,<br />
<br />
<span style="font-weight: bold;">FAST TUTO<br />
Je suis sur client 7.0 et normalement vous pouvez monter n'importe quels animations.<br />
J'ai testé sur les animations en Low details et en P (equipement) sans devoir faire les animations d'horseback.<br />
<br />
Il faut dans sphere_defs.scp rajouter:<br />
<br />
mount_ID (en Hexa de l'animation anim.mul lié dans le bodyconv)   DEFNAME (normalement un itemdef du type i_mt_)<br />
<br />
Pour l'hippocampe ce sera<br />
<br />
mount_0x640 i_mt_hippocampe<br />
<br />
car je l'ai lié dans le bodyconv à l'ID 1600 et donc en hexa 0x640.<br />
<br />
mobtypes.txt =&gt; 1600 animal 0<br />
<br />
J'ai créé une tile avec comme tiledata Layer 25, anim 1600 et WEARABLE.<br />
Il faudra donc remplacer dans vos mul le art, aridx et tiledata.<br />
<br />
ça vous fera un script du style:<br />
<br />
[ITEMDEF 0A2E6]<br />
DEFNAME=i_mt_hippocampe<br />
TYPE=T_EQ_HORSE <br />
LAYER=25 <br />
TDATA3=c_hippocampe<br />
<br />
[CHARDEF 0640]<br />
<br />
etc...</span><br />
<br />
<br />
<br />
<span style="font-weight: bold;">LONG OLD TUTO</span><br />
Comme prérequis il faut:<br />
Uofiddler<br />
Mulbuilder<br />
Michelangelo<br />
Un verdata.mul<br />
<br />
Dans l'exemple, on va créer l'hippocampe montable.<br />
<br />
<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/hippocampe.png" border="0" alt="[Image: hippocampe.png]" /><br />
<br />
Alors pour ça, il faut déjà récupérer le .vd accessible en cherchant monster sea "ultima online" etc......  sur google.<br />
<br />
Ensuite, avec Uofiddler vous configurez votre path settings en mettant aussi votre verdata.mul.<br />
<br />
Je l'ai rajouté dans un Low détails libre de l'anim4.mul.<br />
<br />
<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/Uofiddler.png" border="0" alt="[Image: Uofiddler.png]" /><br />
<br />
Vous faites save et vous remplacez vos fichiers générés dans vos mul.<br />
<br />
Vous allez ensuite dans votre bodyconv et vous le liez à une ID libre de l'anim.mul avant 2049.<br />
<br />
Exemple:<br />
<br />
<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/Bodyconv.png" border="0" alt="[Image: Bodyconv.png]" /><br />
<br />
ensuite pour être précis en mobtypes:<br />
<br />
<span style="font-weight: bold;">1600</span>	SEA_MONSTER	0	# Hippocampe<br />
<br />
Maintenant, il faut comprendre ce qu'il manque pour pas avoir toujours les mêmes questions.<br />
Pourquoi les animations sont invisibles quand je suis dessus....<br />
<br />
Il faut pour cela créer sur une ID équipement (donc les P à 34 animations x 5 directions dans Uofiddler) les animations 23 à 29 du Horseback (je vous renvois sur de vieux tutos que j'ai fais à l'époque pour plus d'informations =&gt; <a href="http://prapilk.free.fr/LES_SPAWNEURS/ANIMATION.htm" target="_blank">Mon vieux site web</a> )<br />
<br />
et il faudra le dire dans sphere_defs.scp du server, du style:<br />
<br />
mount_0x640	i_mt_hippocampe<br />
<br />
Alors ça dit quoi,<br />
<br />
mount_ c'est pour dire que c'est une ID liée à une autres ID quand on met le layer 25 dans le tiledata qui est celui pour dire que c'est "équipable" en tant que monture.<br />
<br />
0x640 c'est l'hexadecimal de l'animation <span style="font-weight: bold;">1600</span> vers laquelle bodyconv est liée.<br />
<br />
Ensuite i_mt_hippocampe c'est le DEFNAME de l'item qui est lié à l'animation en P de l'hippocampe montable !!!!<br />
<br />
[ITEMDEF XXXXX] &lt;= l'ID qui vous plaira dans l'onglet item d'Uofiddler.<br />
DEFNAME=i_mt_hippocampe<br />
TYPE=T_EQ_HORSE <br />
LAYER=25 <br />
TDATA3=C_hippomontable<br />
<br />
Il faudra ensuite aller dans tiledata et rajouter le layer 25 et l'ID d'ou vous allez rajouter les animations en P liée dans bodyconv !!!<br />
<br />
<span style="text-decoration: underline;"><span style="font-weight: bold;">Création des animations d'horseback</span></span><br />
<br />
Ici nous allons rajouter en anim4.mul sur l'ID 576 les animations pour pouvoir le monter.<br />
<br />
COMMENT Y ARRIVER ! IL FAUT MICHELANGELO et MULBUILDER c'est le plus simple !!<br />
 <br />
On va utiliser une ID "martyr" qui nous permettra de récupérer le .vd avec Uofiddler.<br />
<br />
On va aller dans michelangelo et faire ça:<br />
<br />
<span style="text-decoration: underline;"><span style="font-weight: bold;">Créer des .uop avec Michelangelo:</span></span><br />
<br />
Lancer Michelangelo, faite Import et sélectionné comme filetypes ANIM.<br />
<br />
-Sélectionné ensuite votre anim.mul et votre anim.idx. &lt;== ici on prend l'anim4.mul vu que je l'ai mis en 250 anim4.mul..... (vous vous souvenez ? avec le bodyconv etc...)<br />
<br />
Comme BlockNumber introduissez le premier blocknumber de votre créature que vous aurez préalablement choisis avec InsideUO. Pour le connaître, allé sur la créature choisie et faite click droit détails et le Handle = block ID.<br />
<br />
Ou alors vous faites ça:<br />
<br />
High Detail Critter<br />
        Output.Lines.Add('Creature is a High Detail Critter');<br />
        IndexOffset := CreatureID*110;<br />
Low Detail<br />
        Output.Lines.Add('Creature is a Low Detail Critter');<br />
        IndexOffset := (CreatureID-200)*65+22000;<br />
Humans and accesoires<br />
        Output.Lines.Add('Creature is a Human or an Accessoire');<br />
        IndexOffset := (CreatureID-400)*175+35000;<br />
<br />
Donc ici ID de l'anim4.mul =&gt; (<span style="font-weight: bold;">250</span>-200)*65 + 22000= <span style="font-weight: bold;">25250</span><br />
<br />
Si c'est:<br />
<br />
-Un high détails c'est Block ID =&gt; Block ID + 109.(config. création anim. nain)<br />
<br />
-Un low détails c'est Block ID =&gt; Block ID + 64. =&gt; donc <span style="font-weight: bold;">25250 + 64.</span><br />
<br />
<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/Michelangelo.png" border="0" alt="[Image: Michelangelo.png]" /><br />
<br />
Ensuite, clické sur Import et vous pourrez voir tout les .uop de chaque séquences d'animations. Il ne vous reste plus qu'a faire Save pour récupérer un .uop!!!<br />
<hr />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[Tutoriel] FRENCH Ajout de gumps lié à une anim]]></title>
			<link>https://forum.spherecommunity.net/Thread-Tutoriel-FRENCH-Ajout-de-gumps-li%C3%A9-%C3%A0-une-anim</link>
			<pubDate>Tue, 26 May 2020 21:41:28 +0200</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-Tutoriel-FRENCH-Ajout-de-gumps-li%C3%A9-%C3%A0-une-anim</guid>
			<description><![CDATA[Bonjour à tous,<br />
<br />
Il y a 15ans je passais sur sphereserver pour faire des animations, de la 3D etc... et tu trouvais rien en français et bien ce sera réglé.<br />
Le confinement m'a fait revenir sur UO.<br />
<br />
Client classique.<br />
7.0.100<br />
Sphereserver<br />
UOFIDDLER au minimum 4.9.1 (pour avoir l'uoppacker déjà intégré)<br />
<span style="font-weight: bold;"><br />
RAJOUT D'UN GUMP et liaison avec une animation existante.</span><br />
<br />
Dans <span style="font-weight: bold;">UOfiddler</span> tu crées un profil dans le <span style="font-weight: bold;">settings =&gt; Path Settings =&gt; set Path manual</span> et tu mets le lien vers tes fichiers muls.<br />
Dans <span style="font-weight: bold;">Settings =&gt; options =&gt; output path</span> le lien vers le répertoire ou seront sauvegardé tes fichiers modifiés.<br />
<br />
Tout devrait se charger comme il faut.<br />
<br />
Ici je veux rajouter un scaphandre:<br />
<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/Scaphandre.bmp" border="0" alt="[Image: Scaphandre.bmp]" /><br />
<br />
Un scaphandre en gump c'est bien mais si j'ai pas d'animation ni d'items "art" que je peux poser au sol ça fera bizarre.<br />
<br />
Donc il faut un item au sol<br />
<br />
<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/ArtScaph01.bmp" border="0" alt="[Image: ArtScaph01.bmp]" /><br />
<br />
Voilà avec ça, on aura un item au sol, on double clickera dessus et on aura une animation d'un casque qui "ressemble" à un scaphandre, le gump du scaphandre et la couleur de l'anim qui sera proche du gump.<br />
<br />
Pour ce faire aller dans <span style="font-weight: bold;">Uofiddler =&gt; onglet Items</span> et aller tout en bas de la liste et sélectionner le dernier item et faite <span style="font-weight: bold;">click-droit show free slot.</span><br />
<br />
Aller sur un <span style="font-weight: bold;">slot vide </span>(parfois bugé par le même items repris des 100ène de fois) et faite =&gt; <span style="font-weight: bold;">click droit =&gt; replace</span> =&gt; sélectionner votre item qui se posera au sol.<br />
<br />
Faite <span style="font-weight: bold;">click droit =&gt; save</span> (le fichier sera sauver dans votre output path, du settings)<br />
<br />
Faite <span style="font-weight: bold;">click-droit sur l'item et select in tiledata tab</span><br />
<br />
Aller dans l'<span style="font-weight: bold;">onglet tiledata</span><br />
<br />
Vous verrez votre item <img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/Tiledata.png" border="0" alt="[Image: Tiledata.png]" /><br />
<br />
Comment je sais quoi mettre dans le tiledata ?<br />
et bien vu que ça fera office de casque, j'ai recopié le tiledata d'un casque (helm), le plus important est weapon et wearable et l'anim.<br />
<br />
Je prends également note de l<span style="font-weight: bold;">'ID en hexadecimal </span>(sur l'image 0a2E4).<br />
<br />
Pour l<span style="font-weight: bold;">'ID (en decimal) de l'animation</span>, je vous conseil de prendre entre 2000 et 2048. <br />
Pourquoi? c'est loin dans les animations et vous êtes sur de ne pas avoir de conflit (il y en a même en 1700 !) et vous créerez comme ça des lots d'animations bien spécifique.<br />
<br />
Ici le lot 2000 à 2048 =&gt; gumps sans nouvelles animations.<br />
<br />
Quand vous avez modifiez une ID dans le tiledata il est primordial de <span style="font-weight: bold;">cliquer sur =&gt; save changes</span>. (sinon quand vous allez sur une autre ID, il efface ce qui a été encodé.<br />
<br />
Ensuite <span style="font-weight: bold;">save Tiledata</span>.<br />
<br />
Aller dans l'onglet <span style="font-weight: bold;">Gumps =&gt; misc =&gt; Show free slots.</span><br />
<br />
Retourner dans l'onglet<span style="font-weight: bold;"> Item =&gt; click-droit =&gt; select in gump tab et retourner dans l'onglet gumps </span>(oui je sais c un aller retour, mais c'est important).<br />
<br />
Vous êtes dans l'ID de l'anim + 50000 pour les hommes et plus 60000 pour les gumps femmes.<br />
<br />
<span style="font-weight: bold;">Click-droit replace</span> et rajouter votre gumps.<br />
<br />
<span style="font-weight: bold;">Click droit =&gt; save</span><br />
<br />
Aller dans l'<span style="font-weight: bold;">onglet </span>le plus à droite d'Uofiddler sur <span style="font-weight: bold;">UOP packer</span><br />
<br />
Sélectionner <span style="font-weight: bold;">MUL to UOP</span> et le répertoire "output path" avec tout les mul modifié et sauvé par Uofiddler.<br />
<br />
<span style="font-weight: bold;">START</span><br />
<br />
Copier l'ensemble des mul et UOP en <span style="font-weight: bold;">écrasant vos anciens mul </span>de votre serveur.<br />
<br />
Voilà, le plus simple est finis.<br />
<br />
Maintenant, il faut dire à UO que l'ID 2003 est utilisé pour de l'équipement.<br />
<br />
Dans votre répertoire avec les muls d'UO vous avez plusieurs fichiers.<br />
<br />
Nous allons utiliser le <span style="font-weight: bold;">mobtypes.txt et equipconv.def.</span><br />
<br />
<span style="font-weight: bold;">Dans mobtypes</span><br />
<br />
2003	EQUIPMENT	0	#scaphandre<br />
<br />
Comme ça on est sur qu'il cherche pas un monstre....<br />
<br />
<span style="font-weight: bold;">Dans équipconv.def</span><br />
<br />
400	=&gt; c'est l'D du c_man en anim.mul <br />
2003 =&gt; c'est notre ID (vide) du scaphandre<br />
561	=&gt; c'est l'ID que j'ai choisie (ici la cagoule en chainmail)<br />
52003 =&gt; c'est le gump qu'il doit afficher même si il prends l'ID du chainmail<br />
1746 =&gt; c'est la couleur en décimal qu'il va utiliser UNIQUEMENT SUR L'ANIMATION et pas faire un aplat dégueulasse sur le gump!!!		<br />
#scaphandre  =&gt; après un # vous mettez des infos utiles pour celui qui vous remplacera<br />
401	2003	561	62003	1746 =&gt; idem c_woman et si pas de 62003 c pas grave, vous pouvez mettre 52003 mais si vous mettez -1, il va automatiquement pointer vers le +50000 pour les male et plus 60000 pour female.<br />
605	2003	561	52003	1746 =&gt; elf male<br />
606	2003	561	52003	1746 =&gt; elf femelle<br />
666	2003	561	52003	1746 =&gt; gargouille male dégueulasse que je vous invite à remplacer par votre race. (genre modifs des animations en +30% et vous avez avatar sur UO lol )<br />
667	2003	561	52003	1746 =&gt; gargouille femelle<br />
<br />
Maintenant, on va mettre le script de base.<br />
<br />
Dans un .scp qui se trouve dans le dossier script de votre serveur sphere.<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/Sphere.png" border="0" alt="[Image: Sphere.png]" /><br />
<br />
Rajouter [ITEMDEF avec l'ID en hexadecimal récupéré de l'item au sol dans UOfiddler]<br />
<br />
ça donne qqc comme ça:<br />
<br />
[ITEMDEF 0A2E4]<br />
DEFNAME=i_scaphandre<br />
NAME=Scaphandre<br />
TYPE=t_clothing<br />
<br />
[ITEMDEF 0A2E5]<br />
DEFNAME=i_scaphandre<br />
NAME=Scaphandre<br />
TYPE=t_clothing<br />
<br />
C'est surtout pour vous tester, après vos équipes de scripteurs feront le reste.<br />
<br />
Sur votre serveur vous devrez obtenir ceci:<br />
<br />
<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/Scaphandre.png" border="0" alt="[Image: Scaphandre.png]" /><br />
<br />
Vous voyez que le gump est resté avec sa couleur d'origine (faite pas gaffe aux poils, mon equipconv est pas à jour et c mon serveur de test <img src="images/smilies/blush.gif" style="vertical-align: middle;" border="0" alt="Blush" title="Blush" /> ) et l'animation à pris une teinte plus proche du gump.<br />
<br />
Si vous testez avec les mêmes ID que moi, peut être que vous aurez votre visage animé comme ça:<br />
<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/Pixelnoir.png" border="0" alt="[Image: Pixelnoir.png]" /><br />
<br />
Les pixels noirs viennent des positions Down des frames qui sont mal détourées, je vous invite à extraire les images avec Uofiddler, en DOWN au minimum du stand c'est la numéro 4 et sinon au moins de 0 à 4. et de les modifier à la main.<br />
<br />
Sur ce bon jeu.]]></description>
			<content:encoded><![CDATA[Bonjour à tous,<br />
<br />
Il y a 15ans je passais sur sphereserver pour faire des animations, de la 3D etc... et tu trouvais rien en français et bien ce sera réglé.<br />
Le confinement m'a fait revenir sur UO.<br />
<br />
Client classique.<br />
7.0.100<br />
Sphereserver<br />
UOFIDDLER au minimum 4.9.1 (pour avoir l'uoppacker déjà intégré)<br />
<span style="font-weight: bold;"><br />
RAJOUT D'UN GUMP et liaison avec une animation existante.</span><br />
<br />
Dans <span style="font-weight: bold;">UOfiddler</span> tu crées un profil dans le <span style="font-weight: bold;">settings =&gt; Path Settings =&gt; set Path manual</span> et tu mets le lien vers tes fichiers muls.<br />
Dans <span style="font-weight: bold;">Settings =&gt; options =&gt; output path</span> le lien vers le répertoire ou seront sauvegardé tes fichiers modifiés.<br />
<br />
Tout devrait se charger comme il faut.<br />
<br />
Ici je veux rajouter un scaphandre:<br />
<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/Scaphandre.bmp" border="0" alt="[Image: Scaphandre.bmp]" /><br />
<br />
Un scaphandre en gump c'est bien mais si j'ai pas d'animation ni d'items "art" que je peux poser au sol ça fera bizarre.<br />
<br />
Donc il faut un item au sol<br />
<br />
<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/ArtScaph01.bmp" border="0" alt="[Image: ArtScaph01.bmp]" /><br />
<br />
Voilà avec ça, on aura un item au sol, on double clickera dessus et on aura une animation d'un casque qui "ressemble" à un scaphandre, le gump du scaphandre et la couleur de l'anim qui sera proche du gump.<br />
<br />
Pour ce faire aller dans <span style="font-weight: bold;">Uofiddler =&gt; onglet Items</span> et aller tout en bas de la liste et sélectionner le dernier item et faite <span style="font-weight: bold;">click-droit show free slot.</span><br />
<br />
Aller sur un <span style="font-weight: bold;">slot vide </span>(parfois bugé par le même items repris des 100ène de fois) et faite =&gt; <span style="font-weight: bold;">click droit =&gt; replace</span> =&gt; sélectionner votre item qui se posera au sol.<br />
<br />
Faite <span style="font-weight: bold;">click droit =&gt; save</span> (le fichier sera sauver dans votre output path, du settings)<br />
<br />
Faite <span style="font-weight: bold;">click-droit sur l'item et select in tiledata tab</span><br />
<br />
Aller dans l'<span style="font-weight: bold;">onglet tiledata</span><br />
<br />
Vous verrez votre item <img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/Tiledata.png" border="0" alt="[Image: Tiledata.png]" /><br />
<br />
Comment je sais quoi mettre dans le tiledata ?<br />
et bien vu que ça fera office de casque, j'ai recopié le tiledata d'un casque (helm), le plus important est weapon et wearable et l'anim.<br />
<br />
Je prends également note de l<span style="font-weight: bold;">'ID en hexadecimal </span>(sur l'image 0a2E4).<br />
<br />
Pour l<span style="font-weight: bold;">'ID (en decimal) de l'animation</span>, je vous conseil de prendre entre 2000 et 2048. <br />
Pourquoi? c'est loin dans les animations et vous êtes sur de ne pas avoir de conflit (il y en a même en 1700 !) et vous créerez comme ça des lots d'animations bien spécifique.<br />
<br />
Ici le lot 2000 à 2048 =&gt; gumps sans nouvelles animations.<br />
<br />
Quand vous avez modifiez une ID dans le tiledata il est primordial de <span style="font-weight: bold;">cliquer sur =&gt; save changes</span>. (sinon quand vous allez sur une autre ID, il efface ce qui a été encodé.<br />
<br />
Ensuite <span style="font-weight: bold;">save Tiledata</span>.<br />
<br />
Aller dans l'onglet <span style="font-weight: bold;">Gumps =&gt; misc =&gt; Show free slots.</span><br />
<br />
Retourner dans l'onglet<span style="font-weight: bold;"> Item =&gt; click-droit =&gt; select in gump tab et retourner dans l'onglet gumps </span>(oui je sais c un aller retour, mais c'est important).<br />
<br />
Vous êtes dans l'ID de l'anim + 50000 pour les hommes et plus 60000 pour les gumps femmes.<br />
<br />
<span style="font-weight: bold;">Click-droit replace</span> et rajouter votre gumps.<br />
<br />
<span style="font-weight: bold;">Click droit =&gt; save</span><br />
<br />
Aller dans l'<span style="font-weight: bold;">onglet </span>le plus à droite d'Uofiddler sur <span style="font-weight: bold;">UOP packer</span><br />
<br />
Sélectionner <span style="font-weight: bold;">MUL to UOP</span> et le répertoire "output path" avec tout les mul modifié et sauvé par Uofiddler.<br />
<br />
<span style="font-weight: bold;">START</span><br />
<br />
Copier l'ensemble des mul et UOP en <span style="font-weight: bold;">écrasant vos anciens mul </span>de votre serveur.<br />
<br />
Voilà, le plus simple est finis.<br />
<br />
Maintenant, il faut dire à UO que l'ID 2003 est utilisé pour de l'équipement.<br />
<br />
Dans votre répertoire avec les muls d'UO vous avez plusieurs fichiers.<br />
<br />
Nous allons utiliser le <span style="font-weight: bold;">mobtypes.txt et equipconv.def.</span><br />
<br />
<span style="font-weight: bold;">Dans mobtypes</span><br />
<br />
2003	EQUIPMENT	0	#scaphandre<br />
<br />
Comme ça on est sur qu'il cherche pas un monstre....<br />
<br />
<span style="font-weight: bold;">Dans équipconv.def</span><br />
<br />
400	=&gt; c'est l'D du c_man en anim.mul <br />
2003 =&gt; c'est notre ID (vide) du scaphandre<br />
561	=&gt; c'est l'ID que j'ai choisie (ici la cagoule en chainmail)<br />
52003 =&gt; c'est le gump qu'il doit afficher même si il prends l'ID du chainmail<br />
1746 =&gt; c'est la couleur en décimal qu'il va utiliser UNIQUEMENT SUR L'ANIMATION et pas faire un aplat dégueulasse sur le gump!!!		<br />
#scaphandre  =&gt; après un # vous mettez des infos utiles pour celui qui vous remplacera<br />
401	2003	561	62003	1746 =&gt; idem c_woman et si pas de 62003 c pas grave, vous pouvez mettre 52003 mais si vous mettez -1, il va automatiquement pointer vers le +50000 pour les male et plus 60000 pour female.<br />
605	2003	561	52003	1746 =&gt; elf male<br />
606	2003	561	52003	1746 =&gt; elf femelle<br />
666	2003	561	52003	1746 =&gt; gargouille male dégueulasse que je vous invite à remplacer par votre race. (genre modifs des animations en +30% et vous avez avatar sur UO lol )<br />
667	2003	561	52003	1746 =&gt; gargouille femelle<br />
<br />
Maintenant, on va mettre le script de base.<br />
<br />
Dans un .scp qui se trouve dans le dossier script de votre serveur sphere.<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/Sphere.png" border="0" alt="[Image: Sphere.png]" /><br />
<br />
Rajouter [ITEMDEF avec l'ID en hexadecimal récupéré de l'item au sol dans UOfiddler]<br />
<br />
ça donne qqc comme ça:<br />
<br />
[ITEMDEF 0A2E4]<br />
DEFNAME=i_scaphandre<br />
NAME=Scaphandre<br />
TYPE=t_clothing<br />
<br />
[ITEMDEF 0A2E5]<br />
DEFNAME=i_scaphandre<br />
NAME=Scaphandre<br />
TYPE=t_clothing<br />
<br />
C'est surtout pour vous tester, après vos équipes de scripteurs feront le reste.<br />
<br />
Sur votre serveur vous devrez obtenir ceci:<br />
<br />
<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/Scaphandre.png" border="0" alt="[Image: Scaphandre.png]" /><br />
<br />
Vous voyez que le gump est resté avec sa couleur d'origine (faite pas gaffe aux poils, mon equipconv est pas à jour et c mon serveur de test <img src="images/smilies/blush.gif" style="vertical-align: middle;" border="0" alt="Blush" title="Blush" /> ) et l'animation à pris une teinte plus proche du gump.<br />
<br />
Si vous testez avec les mêmes ID que moi, peut être que vous aurez votre visage animé comme ça:<br />
<img src="http://prapilk.free.fr/Root/2bgal/img/Tutos/Pixelnoir.png" border="0" alt="[Image: Pixelnoir.png]" /><br />
<br />
Les pixels noirs viennent des positions Down des frames qui sont mal détourées, je vous invite à extraire les images avec Uofiddler, en DOWN au minimum du stand c'est la numéro 4 et sinon au moins de 0 à 4. et de les modifier à la main.<br />
<br />
Sur ce bon jeu.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[docker & sphereserver - install tutorial]]></title>
			<link>https://forum.spherecommunity.net/Thread-docker-sphereserver-install-tutorial</link>
			<pubDate>Thu, 13 Feb 2020 08:11:46 +0100</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-docker-sphereserver-install-tutorial</guid>
			<description><![CDATA[<span style="font-weight: bold;">Necessary things:</span><br />
- hub.docker<br />
- vps with docker or kubernetes<br />
- git repository or local docker <br />
<br />
<span style="font-weight: bold;">My configuration:</span><br />
BitBucket (git repository) -&gt; pipeline -&gt; hub.docker -&gt; artificial ssh cmd -&gt; deploy sh<br />
<br />
File: Dockerfile<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>FROM amd64/ubuntu:19.04<br />
MAINTAINER Martin Nakladal "ok2uec@gmail.com"<br />
<br />
LABEL vendor1="Sphereserver"<br />
LABEL vendor2="Ultima Online" <br />
<br />
ENV DEBIAN_FRONTEND noninteractive<br />
<br />
#RUN dpkg --add-architecture i386<br />
RUN apt update &amp;&amp; apt install -y libmysql++ libmysqlclient-dev unzip git gcc g++ make &amp;&amp; rm -rf /var/lib/apt/lists/*<br />
RUN mkdir /source<br />
WORKDIR "/source"<br />
RUN git clone https://github.com/SphereServer/Source.git<br />
WORKDIR "/source/Source"<br />
RUN make NIGHTLY=1<br />
RUN rm -rf /source/Source/src<br />
RUN rm -rf /source/Source/makefile <br />
RUN chmod +x /source/Source/spheresvr<br />
<br />
EXPOSE 2593<br />
ENTRYPOINT ["/source/Source/spheresvr"]</code></div></div>
<br />
<span style="font-weight: bold;">DockerHub:</span><br />
- create repository <br />
- create pass for application in setting account <br />
<br />
<span style="font-weight: bold;">Pipeline bitbucket</span><br />
file:bitbucket-pipelines.yml<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>image: atlassian/default-image:2<br />
<br />
pipelines:<br />
&nbsp;&nbsp;default:<br />
&nbsp;&nbsp;&nbsp;&nbsp;- step:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;services:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- docker<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;script:&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- export IMAGE_NAME=naklma/sphereserver:v&#36;BITBUCKET_COMMIT <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- docker build -t &#36;IMAGE_NAME . <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- docker login --username &#36;DOCKER_HUB_USERNAME --password &#36;DOCKER_HUB_PASSWORD <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- docker push &#36;IMAGE_NAME</code></div></div>
repository variable &#36;DOCKER_HUB_USERNAME<br />
repository variable &#36;DOCKER_HUB_PASSWORD <br />
<br />
<span style="font-weight: bold;">VPS server:</span><br />
in terminal:<br />
- docker login <br />
(auth you login)<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>mkdir&nbsp;&nbsp;/sphereserver<br />
mkdir /sphereserver/data<br />
<br />
over FTP copy folder &amp; file:<br />
- accounts&nbsp;&nbsp;logs&nbsp;&nbsp;mul&nbsp;&nbsp;save&nbsp;&nbsp;scripts&nbsp;&nbsp;sphereCrypt.ini&nbsp;&nbsp;sphere.ini<br />
<br />
test: <br />
ls -al /sphereserver/data</code></div></div>
<br />
<span style="font-weight: bold;">Modify sphere.ini</span><br />
ServIP=127.0.0.1<br />
ServPort=2593<br />
RestAPIPublicIP=checkip.amazonaws.com<br />
<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>docker network create --driver=bridge --subnet=192.168.100.0/16 --gateway 192.168.100.1 sphereserver<br />
<br />
docker run -d &#92;<br />
&nbsp;&nbsp;-it &#92;<br />
&nbsp;&nbsp;-p 2593:2593/tcp &#92;<br />
&nbsp;&nbsp;-p 2593:2593/udp &#92;<br />
&nbsp;&nbsp;--ip 192.168.100.2 &#92;<br />
&nbsp;&nbsp;--hostname sphereserver &#92;<br />
&nbsp;&nbsp;--net sphereserver &#92;<br />
&nbsp;&nbsp;--restart unless-stopped &#92;<br />
&nbsp;&nbsp;--name sphereserver &#92;<br />
&nbsp;&nbsp;--mount type=bind,source=/sphereserver/data/accounts,target=/source/Source/accounts &#92;<br />
&nbsp;&nbsp;--mount type=bind,source=/sphereserver/data/logs,target=/source/Source/logs &#92;<br />
&nbsp;&nbsp;--mount type=bind,source=/sphereserver/data/mul,target=/source/Source/mul &#92;<br />
&nbsp;&nbsp;--mount type=bind,source=/sphereserver/data/save,target=/source/Source/save &#92;<br />
&nbsp;&nbsp;--mount type=bind,source=/sphereserver/data/scripts,target=/source/Source/scripts &#92;<br />
&nbsp;&nbsp;--mount type=bind,source=/sphereserver/data/sphere.ini,target=/source/Source/sphere.ini &#92;<br />
&nbsp;&nbsp;--mount type=bind,source=/sphereserver/data/sphereCrypt.ini,target=/source/Source/sphereCrypt.ini &#92;<br />
&nbsp;&nbsp;naklma/sphereserver:vcf0bb2976eded224f51e03a1fb0107939b426733</code></div></div>
<br />
try to log in .. it should go ..<br />
<br />
Firewall enable port 2593 !!!  in/out<br />
<br />
<br />
<span style="font-weight: bold;">Auxiliary commands:</span><br />
docker exec -it &lt;containerIDorNAME&gt; bash<br />
------<br />
docker logs &lt;containerIDorNAME&gt;<br />
------<br />
docker container stop sphereserver<br />
docker container rm sphereserver]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;">Necessary things:</span><br />
- hub.docker<br />
- vps with docker or kubernetes<br />
- git repository or local docker <br />
<br />
<span style="font-weight: bold;">My configuration:</span><br />
BitBucket (git repository) -&gt; pipeline -&gt; hub.docker -&gt; artificial ssh cmd -&gt; deploy sh<br />
<br />
File: Dockerfile<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>FROM amd64/ubuntu:19.04<br />
MAINTAINER Martin Nakladal "ok2uec@gmail.com"<br />
<br />
LABEL vendor1="Sphereserver"<br />
LABEL vendor2="Ultima Online" <br />
<br />
ENV DEBIAN_FRONTEND noninteractive<br />
<br />
#RUN dpkg --add-architecture i386<br />
RUN apt update &amp;&amp; apt install -y libmysql++ libmysqlclient-dev unzip git gcc g++ make &amp;&amp; rm -rf /var/lib/apt/lists/*<br />
RUN mkdir /source<br />
WORKDIR "/source"<br />
RUN git clone https://github.com/SphereServer/Source.git<br />
WORKDIR "/source/Source"<br />
RUN make NIGHTLY=1<br />
RUN rm -rf /source/Source/src<br />
RUN rm -rf /source/Source/makefile <br />
RUN chmod +x /source/Source/spheresvr<br />
<br />
EXPOSE 2593<br />
ENTRYPOINT ["/source/Source/spheresvr"]</code></div></div>
<br />
<span style="font-weight: bold;">DockerHub:</span><br />
- create repository <br />
- create pass for application in setting account <br />
<br />
<span style="font-weight: bold;">Pipeline bitbucket</span><br />
file:bitbucket-pipelines.yml<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>image: atlassian/default-image:2<br />
<br />
pipelines:<br />
&nbsp;&nbsp;default:<br />
&nbsp;&nbsp;&nbsp;&nbsp;- step:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;services:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- docker<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;script:&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- export IMAGE_NAME=naklma/sphereserver:v&#36;BITBUCKET_COMMIT <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- docker build -t &#36;IMAGE_NAME . <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- docker login --username &#36;DOCKER_HUB_USERNAME --password &#36;DOCKER_HUB_PASSWORD <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- docker push &#36;IMAGE_NAME</code></div></div>
repository variable &#36;DOCKER_HUB_USERNAME<br />
repository variable &#36;DOCKER_HUB_PASSWORD <br />
<br />
<span style="font-weight: bold;">VPS server:</span><br />
in terminal:<br />
- docker login <br />
(auth you login)<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>mkdir&nbsp;&nbsp;/sphereserver<br />
mkdir /sphereserver/data<br />
<br />
over FTP copy folder &amp; file:<br />
- accounts&nbsp;&nbsp;logs&nbsp;&nbsp;mul&nbsp;&nbsp;save&nbsp;&nbsp;scripts&nbsp;&nbsp;sphereCrypt.ini&nbsp;&nbsp;sphere.ini<br />
<br />
test: <br />
ls -al /sphereserver/data</code></div></div>
<br />
<span style="font-weight: bold;">Modify sphere.ini</span><br />
ServIP=127.0.0.1<br />
ServPort=2593<br />
RestAPIPublicIP=checkip.amazonaws.com<br />
<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>docker network create --driver=bridge --subnet=192.168.100.0/16 --gateway 192.168.100.1 sphereserver<br />
<br />
docker run -d &#92;<br />
&nbsp;&nbsp;-it &#92;<br />
&nbsp;&nbsp;-p 2593:2593/tcp &#92;<br />
&nbsp;&nbsp;-p 2593:2593/udp &#92;<br />
&nbsp;&nbsp;--ip 192.168.100.2 &#92;<br />
&nbsp;&nbsp;--hostname sphereserver &#92;<br />
&nbsp;&nbsp;--net sphereserver &#92;<br />
&nbsp;&nbsp;--restart unless-stopped &#92;<br />
&nbsp;&nbsp;--name sphereserver &#92;<br />
&nbsp;&nbsp;--mount type=bind,source=/sphereserver/data/accounts,target=/source/Source/accounts &#92;<br />
&nbsp;&nbsp;--mount type=bind,source=/sphereserver/data/logs,target=/source/Source/logs &#92;<br />
&nbsp;&nbsp;--mount type=bind,source=/sphereserver/data/mul,target=/source/Source/mul &#92;<br />
&nbsp;&nbsp;--mount type=bind,source=/sphereserver/data/save,target=/source/Source/save &#92;<br />
&nbsp;&nbsp;--mount type=bind,source=/sphereserver/data/scripts,target=/source/Source/scripts &#92;<br />
&nbsp;&nbsp;--mount type=bind,source=/sphereserver/data/sphere.ini,target=/source/Source/sphere.ini &#92;<br />
&nbsp;&nbsp;--mount type=bind,source=/sphereserver/data/sphereCrypt.ini,target=/source/Source/sphereCrypt.ini &#92;<br />
&nbsp;&nbsp;naklma/sphereserver:vcf0bb2976eded224f51e03a1fb0107939b426733</code></div></div>
<br />
try to log in .. it should go ..<br />
<br />
Firewall enable port 2593 !!!  in/out<br />
<br />
<br />
<span style="font-weight: bold;">Auxiliary commands:</span><br />
docker exec -it &lt;containerIDorNAME&gt; bash<br />
------<br />
docker logs &lt;containerIDorNAME&gt;<br />
------<br />
docker container stop sphereserver<br />
docker container rm sphereserver]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Ayuda servidor]]></title>
			<link>https://forum.spherecommunity.net/Thread-Ayuda-servidor</link>
			<pubDate>Mon, 23 Jul 2018 02:40:17 +0200</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-Ayuda-servidor</guid>
			<description><![CDATA[Buenas, pues me han dado un servidor vacio, solo tiene un mapa, y me gustaria enseñarme a meterle cosas y demas, me han dicho que se meten script para los npc y demas, yo no tengo ni idea de lo que es un script ni como crearlo ni donde tengo que meterlo para que me funcione en el juego, alguien que pueda hablar conmigo por whatsapp o por discord  o ts?]]></description>
			<content:encoded><![CDATA[Buenas, pues me han dado un servidor vacio, solo tiene un mapa, y me gustaria enseñarme a meterle cosas y demas, me han dicho que se meten script para los npc y demas, yo no tengo ni idea de lo que es un script ni como crearlo ni donde tengo que meterlo para que me funcione en el juego, alguien que pueda hablar conmigo por whatsapp o por discord  o ts?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Beginners want help]]></title>
			<link>https://forum.spherecommunity.net/Thread-Beginners-want-help</link>
			<pubDate>Sun, 15 Jul 2018 20:05:00 +0200</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-Beginners-want-help</guid>
			<description><![CDATA[Hello, where can I find the basic tutorial on sphereScript? For example, what are the functions of each sphere file and what are the USES of corresponding other scripts? Where can I find these basic tutorials]]></description>
			<content:encoded><![CDATA[Hello, where can I find the basic tutorial on sphereScript? For example, what are the functions of each sphere file and what are the USES of corresponding other scripts? Where can I find these basic tutorials]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[What is adddialog.db]]></title>
			<link>https://forum.spherecommunity.net/Thread-What-is-adddialog-db</link>
			<pubDate>Thu, 04 Jan 2018 15:35:27 +0100</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-What-is-adddialog-db</guid>
			<description><![CDATA[I searched wherever but cannot find any reference.<br />
<br />
Anyone?]]></description>
			<content:encoded><![CDATA[I searched wherever but cannot find any reference.<br />
<br />
Anyone?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Requisitos para servidor sphere]]></title>
			<link>https://forum.spherecommunity.net/Thread-Requisitos-para-servidor-sphere</link>
			<pubDate>Sun, 17 Sep 2017 12:51:06 +0200</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-Requisitos-para-servidor-sphere</guid>
			<description><![CDATA[hola, muy buenas a todos. estoy pensando montar mi propio servidor de sphere.<br />
Pero necesito saber que requisitos necesita la maquina donde se  aloje el servidor y no solo eso necesito saber si es necesario que sea de alto rendimiento o no dicha maquina.<br />
<br />
También estoy buscando un tutorial para saber scriptear en sphere todo lo necesario para preparar un buen servidor de ultima online sphere.<br />
<br />
¿¿¿¿¿¿¿ALGUNA AYUDA O APORTACIÓN??????]]></description>
			<content:encoded><![CDATA[hola, muy buenas a todos. estoy pensando montar mi propio servidor de sphere.<br />
Pero necesito saber que requisitos necesita la maquina donde se  aloje el servidor y no solo eso necesito saber si es necesario que sea de alto rendimiento o no dicha maquina.<br />
<br />
También estoy buscando un tutorial para saber scriptear en sphere todo lo necesario para preparar un buen servidor de ultima online sphere.<br />
<br />
¿¿¿¿¿¿¿ALGUNA AYUDA O APORTACIÓN??????]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Taran's Scripting for Dummies]]></title>
			<link>https://forum.spherecommunity.net/Thread-Taran-s-Scripting-for-Dummies</link>
			<pubDate>Mon, 30 Jan 2017 18:34:45 +0100</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-Taran-s-Scripting-for-Dummies</guid>
			<description><![CDATA[Anyone got a download of the original website or a copy of the .chm?]]></description>
			<content:encoded><![CDATA[Anyone got a download of the original website or a copy of the .chm?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[TUTORIAL] Sphere web status]]></title>
			<link>https://forum.spherecommunity.net/Thread-TUTORIAL-Sphere-web-status</link>
			<pubDate>Fri, 09 Dec 2016 13:09:43 +0100</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-TUTORIAL-Sphere-web-status</guid>
			<description><![CDATA[This is a <del>quick and simple</del> tutorial how to make your own sphere web status using <span style="font-weight: bold;">Apache</span>, <span style="font-weight: bold;">MySQl</span> and <span style="font-weight: bold;">PHP</span>.<br />
<br />
First of we need is to download software.<br />
1) <a href="http://www.apachelounge.com/download/" target="_blank">Apache http server</a><br />
2) <a href="http://windows.php.net/download" target="_blank">PHP (Thread Safe)</a><br />
3) <a href="http://dev.mysql.com/downloads/mysql/" target="_blank">MySQL server</a><br />
<br />
<span style="font-weight: bold;">Apache:</span><br />
1) Unpack zip archive to your C:\ drive.<br />
2) Go to C:\Apache24\conf and open httpd.conf<br />
3) Now we need to configure some options here:<br />
Paste<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>LoadModule php5_module "C:/php/php7apache2_4.dll"<br />
PHPIniDir "C:/php"</code></div></div>
after "LoadModule" section.<br />
<br />
Find and uncomment line<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>#ServerName www.example.com:80</code></div></div>
Change<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>www.example.com:80</code></div></div>
to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>localhost:80</code></div></div>
Find<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>DocumentRoot "c:/Apache2/htdocs"</code></div></div>
and change it to "c:/web". Than create empty folder web on a C:\ drive<br />
<br />
Find block<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>&lt;Directory /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;AllowOverride none<br />
&nbsp;&nbsp;&nbsp;&nbsp;Require all denied<br />
&lt;/Directory&gt;</code></div></div>
and change it to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>&lt;Directory /&gt;<br />
&nbsp;&nbsp; Options Includes Indexes FollowSymLinks<br />
&nbsp;&nbsp; AllowOverride All<br />
&nbsp;&nbsp; Allow from all<br />
&lt;/Directory&gt;</code></div></div>
Find and comment or remove block starts with &lt;Directory "c:/Apache24/htdocs"&gt;<br />
<br />
Find block<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>&lt;IfModule dir_module&gt;<br />
&nbsp;&nbsp; DirectoryIndex index.html<br />
&lt;/IfModule&gt;</code></div></div>
and change it to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>&lt;IfModule dir_module&gt;<br />
&nbsp;&nbsp; DirectoryIndex index.html index.htm index.shtml index.php<br />
&lt;/IfModule&gt;</code></div></div>
<br />
Now find<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>ErrorLog "logs/error.log"</code></div></div>
and change it to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>ErrorLog "C:/web/error.log"</code></div></div>
Also find<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>CustomLog "logs/access.log" common</code></div></div>
and change it to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>CustomLog "C:/web/access.log" common</code></div></div>
<br />
Find block &lt;IfModule mime_module&gt; and add this to the end<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>AddType application/x-httpd-php .php<br />
AddType application/x-httpd-php-source .phps</code></div></div>
<br />
Finally find and uncomment this lines<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>Include conf/extra/httpd-mpm.conf<br />
Include conf/extra/httpd-autoindex.conf<br />
Include conf/extra/httpd-vhosts.conf<br />
Include conf/extra/httpd-manual.conf<br />
Include conf/extra/httpd-default.conf</code></div></div>
<br />
Now open C:\Apache24\conf\extra\httpd-vhosts.conf, delete all content from it and type there<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>NameVirtualHost *:80<br />
<br />
&lt;VirtualHost *:80&gt;<br />
&nbsp;&nbsp; DocumentRoot "C:/web/localhost/www"<br />
&nbsp;&nbsp; ServerName localhost<br />
&nbsp;&nbsp; ErrorLog "C:/web/localhost/error.log"<br />
&nbsp;&nbsp; CustomLog "C:/web/localhost/access.log" common<br />
&lt;/VirtualHost&gt;</code></div></div>
<br />
Create directories "C:\web\localhost" and "C:\web\localhost\www"<br />
<br />
Open command line as administrator type there "C:\Apache24\bin\httpd.exe -k install" and press enter. This will install Apache as service.<br />
<br />
<span style="font-weight: bold;">PHP:</span><br />
1) Unpack zip archive to your C:\ drive. It should be C:\php<br />
2) Go to C:\php, find file php.ini-development and rename it to php.ini<br />
<br />
Uncomment<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>;include_path = ".;c:&#92;php&#92;includes"</code></div></div>
Change<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>extension_dir = "./"</code></div></div>
to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>extension_dir = "C:/php/ext"</code></div></div>
Find and uncomment next lines<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>extension=php_mbstring.dll<br />
extension=php_mysqli.dll</code></div></div>
Find, uncomment and change<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>;date.timezone =</code></div></div>
to your timezone <a href="http://php.net/manual/en/timezones.php" target="_blank">http://php.net/manual/en/timezones.php</a><br />
<br />
<span style="font-weight: bold;">MySQL:</span><br />
Download and install MySQL server.<br />
<br />
Go to installation path and open my.ini file.<br />
<br />
In [mysql] section find<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>default-character-set</code></div></div>
and change it to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>default-character-set=utf8</code></div></div>
<br />
In [mysqld] section find<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>character-set-server</code></div></div>
and change it to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>character-set-server=utf8</code></div></div>
<br />
then find<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>default-storage-engine=INNODB</code></div></div>
and change it to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>default-storage-engine=MyISAM</code></div></div>
<br />
also comment this line<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"</code></div></div>
<br />
<span style="font-weight: bold;">PHPMyAdmin</span><br />
Download "phpMyAdmin-4.6.5.2-all-languages.7z" from <a href="https://www.phpmyadmin.net/downloads/" target="_blank">https://www.phpmyadmin.net/downloads/</a><br />
Unpack zip archive to "C:\web\localhost\www" and rename "phpMyAdmin-4.6.5.2-all-languages" to "phpmyadmin".<br />
<br />
Then go to "C:\web\localhost\www\phpmyadmin" and create empty file "config.inc.php" with this content<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>&lt;?php<br />
&nbsp;&nbsp;&#36;i = 0;<br />
&nbsp;&nbsp;&#36;i++;<br />
&nbsp;&nbsp;&#36;cfg['Servers'][&#36;i]['host'] = 'localhost';<br />
&nbsp;&nbsp;&#36;cfg['Servers'][&#36;i]['extension'] = 'mysqli';<br />
&nbsp;&nbsp;&#36;cfg['Servers'][&#36;i]['connect_type'] = 'tcp';<br />
&nbsp;&nbsp;&#36;cfg['Servers'][&#36;i]['compress'] = false;<br />
&nbsp;&nbsp;&#36;cfg['Servers'][&#36;i]['auth_type'] = 'config';<br />
&nbsp;&nbsp;&#36;cfg['Servers'][&#36;i]['user'] = 'root'; // MySQL user<br />
&nbsp;&nbsp;&#36;cfg['Servers'][&#36;i]['password'] = 'pass'; // MySQL user password<br />
?&gt;</code></div></div>
<br />
<span style="font-weight: bold;">Sphere:</span><br />
Open Sphere.ini uncomment and change this lines<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>// MySql configuration.<br />
MYSQL=1<br />
MySqlHost=127.0.0.1<br />
MySqlUser=root<br />
MySqlPassword=yourpassword<br />
MySqlDatabase=sphere</code></div></div>
Find TimerCall=0 and change it to a non zero value<br />
<br />
Launch Apache and MySQL service, then go to http://localhost/phpmyadmin, log in with your user/pass and create database "sphere"<br />
<br />
Then go to SQL commands and paste this code<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>CREATE TABLE IF NOT EXISTS `players_online` (<br />
`uid` int(11) NOT NULL,<br />
`name` varchar(50) NOT NULL,<br />
`karma` int(5) NOT NULL,<br />
`fame` int(5) NOT NULL,<br />
`skilltotal` varchar(7) NOT NULL<br />
) ENGINE=MyISAM DEFAULT CHARSET=utf8;</code></div></div>
<br />
Now open sphere_serv_triggers.scp, find [FUNCTION f_onserver_timer] (add if not exists) and paste this lines<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>if (&lt;db.connected&gt;==0)<br />
&nbsp;&nbsp;db.connect<br />
&nbsp;&nbsp;db.query "SET NAMES utf8"<br />
&nbsp;&nbsp;db.query "SET CHARACTER SET utf8"<br />
&nbsp;&nbsp;db.query "SET character_set_client='utf8'"<br />
&nbsp;&nbsp;db.query "SET character_set_connection='utf8'"<br />
&nbsp;&nbsp;db.query "SET character_set_results='utf8'"<br />
&nbsp;&nbsp;return 0<br />
endif<br />
<br />
db.execute "TRUNCATE TABLE players_online"<br />
<br />
serv.allclients f_update_player_status</code></div></div>
<br />
Create in sme.scp function<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>[FUNCTION f_update_player_status]<br />
if (&lt;db.connected&gt;==0)<br />
&nbsp;&nbsp;db.connect<br />
&nbsp;&nbsp;db.query "SET NAMES utf8"<br />
&nbsp;&nbsp;db.query "SET CHARACTER SET utf8"<br />
&nbsp;&nbsp;db.query "SET character_set_client='utf8'"<br />
&nbsp;&nbsp;db.query "SET character_set_connection='utf8'"<br />
&nbsp;&nbsp;db.query "SET character_set_results='utf8'"<br />
&nbsp;&nbsp;return 0<br />
endif<br />
<br />
db.execute "INSERT INTO players_online VALUES(&lt;duid&gt;, '&lt;name&gt;', &lt;karma&gt;, &lt;fame&gt;, '&lt;skilltotal&gt;')"</code></div></div>
<br />
Now go to "C:\web\localhost\www" and create file status.php with this content<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>&lt;?php<br />
&#36;link = mysqli_connect("127.0.0.1", "root", "my_password", "sphere"); //change my_password to your password<br />
<br />
if (!&#36;link) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "Error: Unable to connect to MySQL." . PHP_EOL;<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit;<br />
}<br />
<br />
echo &lt;&lt;&lt;HEADER<br />
&lt;!DOCTYPE html&gt;<br />
&lt;head&gt;<br />
&lt;meta charset="UTF-8"&gt;<br />
&lt;title&gt;SPHERE :: STATUS&lt;/title&gt;<br />
&lt;style&gt;<br />
#status{<br />
&nbsp;&nbsp;margin; 0 auto;<br />
&nbsp;&nbsp;width 50%;<br />
&nbsp;&nbsp;height: auto;<br />
&nbsp;&nbsp;border-collapse: collapse;<br />
}<br />
<br />
#status th{<br />
&nbsp;&nbsp;border: 1px solid black;<br />
&nbsp;&nbsp;font-weight: bold;<br />
}<br />
<br />
#status td{<br />
&nbsp;&nbsp;border: 1px solid black;<br />
}<br />
&lt;/style&gt;<br />
&lt;/head&gt;<br />
<br />
&lt;body&gt;<br />
&lt;table id="status"&gt;<br />
&lt;tr&gt;&lt;th&gt;Name&lt;/th&gt;&lt;th&gt;Karma&lt;/th&gt;&lt;th&gt;Fame&lt;/th&gt;&lt;th&gt;Skill Total&lt;/th&gt;&lt;/tr&gt;<br />
HEADER;<br />
<br />
&#36;result = mysqli_query(&#36;link, "SELECT * FROM players_online");<br />
while (&#36;row = mysqli_fetch_assoc(&#36;result)) {<br />
&nbsp;&nbsp;echo '&lt;tr&gt;&lt;td&gt;'.&#36;row["name"].'&lt;/td&gt;&lt;td&gt;'.&#36;row["karma"].'&lt;/td&gt;&lt;td&gt;'.&#36;row["fame"].'&lt;/td&gt;&lt;td&gt;'.&#36;row["skilltotal"].'&lt;/td&gt;&lt;/tr&gt;';<br />
}<br />
<br />
echo &lt;&lt;&lt;FOOTER<br />
&lt;/table&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
FOOTER;<br />
<br />
mysqli_free_result(&#36;result);<br />
mysqli_close(&#36;link);<br />
?&gt;</code></div></div>
<br />
<div><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;"><img src="https://s-media-cache-ak0.pinimg.com/564x/10/89/a9/1089a95661a27b980addc03ae0cd0115.jpg" border="0" alt="[Image: 1089a95661a27b980addc03ae0cd0115.jpg]" /></div></div>]]></description>
			<content:encoded><![CDATA[This is a <del>quick and simple</del> tutorial how to make your own sphere web status using <span style="font-weight: bold;">Apache</span>, <span style="font-weight: bold;">MySQl</span> and <span style="font-weight: bold;">PHP</span>.<br />
<br />
First of we need is to download software.<br />
1) <a href="http://www.apachelounge.com/download/" target="_blank">Apache http server</a><br />
2) <a href="http://windows.php.net/download" target="_blank">PHP (Thread Safe)</a><br />
3) <a href="http://dev.mysql.com/downloads/mysql/" target="_blank">MySQL server</a><br />
<br />
<span style="font-weight: bold;">Apache:</span><br />
1) Unpack zip archive to your C:\ drive.<br />
2) Go to C:\Apache24\conf and open httpd.conf<br />
3) Now we need to configure some options here:<br />
Paste<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>LoadModule php5_module "C:/php/php7apache2_4.dll"<br />
PHPIniDir "C:/php"</code></div></div>
after "LoadModule" section.<br />
<br />
Find and uncomment line<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>#ServerName www.example.com:80</code></div></div>
Change<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>www.example.com:80</code></div></div>
to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>localhost:80</code></div></div>
Find<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>DocumentRoot "c:/Apache2/htdocs"</code></div></div>
and change it to "c:/web". Than create empty folder web on a C:\ drive<br />
<br />
Find block<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>&lt;Directory /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;AllowOverride none<br />
&nbsp;&nbsp;&nbsp;&nbsp;Require all denied<br />
&lt;/Directory&gt;</code></div></div>
and change it to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>&lt;Directory /&gt;<br />
&nbsp;&nbsp; Options Includes Indexes FollowSymLinks<br />
&nbsp;&nbsp; AllowOverride All<br />
&nbsp;&nbsp; Allow from all<br />
&lt;/Directory&gt;</code></div></div>
Find and comment or remove block starts with &lt;Directory "c:/Apache24/htdocs"&gt;<br />
<br />
Find block<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>&lt;IfModule dir_module&gt;<br />
&nbsp;&nbsp; DirectoryIndex index.html<br />
&lt;/IfModule&gt;</code></div></div>
and change it to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>&lt;IfModule dir_module&gt;<br />
&nbsp;&nbsp; DirectoryIndex index.html index.htm index.shtml index.php<br />
&lt;/IfModule&gt;</code></div></div>
<br />
Now find<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>ErrorLog "logs/error.log"</code></div></div>
and change it to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>ErrorLog "C:/web/error.log"</code></div></div>
Also find<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>CustomLog "logs/access.log" common</code></div></div>
and change it to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>CustomLog "C:/web/access.log" common</code></div></div>
<br />
Find block &lt;IfModule mime_module&gt; and add this to the end<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>AddType application/x-httpd-php .php<br />
AddType application/x-httpd-php-source .phps</code></div></div>
<br />
Finally find and uncomment this lines<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>Include conf/extra/httpd-mpm.conf<br />
Include conf/extra/httpd-autoindex.conf<br />
Include conf/extra/httpd-vhosts.conf<br />
Include conf/extra/httpd-manual.conf<br />
Include conf/extra/httpd-default.conf</code></div></div>
<br />
Now open C:\Apache24\conf\extra\httpd-vhosts.conf, delete all content from it and type there<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>NameVirtualHost *:80<br />
<br />
&lt;VirtualHost *:80&gt;<br />
&nbsp;&nbsp; DocumentRoot "C:/web/localhost/www"<br />
&nbsp;&nbsp; ServerName localhost<br />
&nbsp;&nbsp; ErrorLog "C:/web/localhost/error.log"<br />
&nbsp;&nbsp; CustomLog "C:/web/localhost/access.log" common<br />
&lt;/VirtualHost&gt;</code></div></div>
<br />
Create directories "C:\web\localhost" and "C:\web\localhost\www"<br />
<br />
Open command line as administrator type there "C:\Apache24\bin\httpd.exe -k install" and press enter. This will install Apache as service.<br />
<br />
<span style="font-weight: bold;">PHP:</span><br />
1) Unpack zip archive to your C:\ drive. It should be C:\php<br />
2) Go to C:\php, find file php.ini-development and rename it to php.ini<br />
<br />
Uncomment<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>;include_path = ".;c:&#92;php&#92;includes"</code></div></div>
Change<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>extension_dir = "./"</code></div></div>
to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>extension_dir = "C:/php/ext"</code></div></div>
Find and uncomment next lines<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>extension=php_mbstring.dll<br />
extension=php_mysqli.dll</code></div></div>
Find, uncomment and change<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>;date.timezone =</code></div></div>
to your timezone <a href="http://php.net/manual/en/timezones.php" target="_blank">http://php.net/manual/en/timezones.php</a><br />
<br />
<span style="font-weight: bold;">MySQL:</span><br />
Download and install MySQL server.<br />
<br />
Go to installation path and open my.ini file.<br />
<br />
In [mysql] section find<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>default-character-set</code></div></div>
and change it to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>default-character-set=utf8</code></div></div>
<br />
In [mysqld] section find<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>character-set-server</code></div></div>
and change it to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>character-set-server=utf8</code></div></div>
<br />
then find<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>default-storage-engine=INNODB</code></div></div>
and change it to<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>default-storage-engine=MyISAM</code></div></div>
<br />
also comment this line<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"</code></div></div>
<br />
<span style="font-weight: bold;">PHPMyAdmin</span><br />
Download "phpMyAdmin-4.6.5.2-all-languages.7z" from <a href="https://www.phpmyadmin.net/downloads/" target="_blank">https://www.phpmyadmin.net/downloads/</a><br />
Unpack zip archive to "C:\web\localhost\www" and rename "phpMyAdmin-4.6.5.2-all-languages" to "phpmyadmin".<br />
<br />
Then go to "C:\web\localhost\www\phpmyadmin" and create empty file "config.inc.php" with this content<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>&lt;?php<br />
&nbsp;&nbsp;&#36;i = 0;<br />
&nbsp;&nbsp;&#36;i++;<br />
&nbsp;&nbsp;&#36;cfg['Servers'][&#36;i]['host'] = 'localhost';<br />
&nbsp;&nbsp;&#36;cfg['Servers'][&#36;i]['extension'] = 'mysqli';<br />
&nbsp;&nbsp;&#36;cfg['Servers'][&#36;i]['connect_type'] = 'tcp';<br />
&nbsp;&nbsp;&#36;cfg['Servers'][&#36;i]['compress'] = false;<br />
&nbsp;&nbsp;&#36;cfg['Servers'][&#36;i]['auth_type'] = 'config';<br />
&nbsp;&nbsp;&#36;cfg['Servers'][&#36;i]['user'] = 'root'; // MySQL user<br />
&nbsp;&nbsp;&#36;cfg['Servers'][&#36;i]['password'] = 'pass'; // MySQL user password<br />
?&gt;</code></div></div>
<br />
<span style="font-weight: bold;">Sphere:</span><br />
Open Sphere.ini uncomment and change this lines<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>// MySql configuration.<br />
MYSQL=1<br />
MySqlHost=127.0.0.1<br />
MySqlUser=root<br />
MySqlPassword=yourpassword<br />
MySqlDatabase=sphere</code></div></div>
Find TimerCall=0 and change it to a non zero value<br />
<br />
Launch Apache and MySQL service, then go to http://localhost/phpmyadmin, log in with your user/pass and create database "sphere"<br />
<br />
Then go to SQL commands and paste this code<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>CREATE TABLE IF NOT EXISTS `players_online` (<br />
`uid` int(11) NOT NULL,<br />
`name` varchar(50) NOT NULL,<br />
`karma` int(5) NOT NULL,<br />
`fame` int(5) NOT NULL,<br />
`skilltotal` varchar(7) NOT NULL<br />
) ENGINE=MyISAM DEFAULT CHARSET=utf8;</code></div></div>
<br />
Now open sphere_serv_triggers.scp, find [FUNCTION f_onserver_timer] (add if not exists) and paste this lines<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>if (&lt;db.connected&gt;==0)<br />
&nbsp;&nbsp;db.connect<br />
&nbsp;&nbsp;db.query "SET NAMES utf8"<br />
&nbsp;&nbsp;db.query "SET CHARACTER SET utf8"<br />
&nbsp;&nbsp;db.query "SET character_set_client='utf8'"<br />
&nbsp;&nbsp;db.query "SET character_set_connection='utf8'"<br />
&nbsp;&nbsp;db.query "SET character_set_results='utf8'"<br />
&nbsp;&nbsp;return 0<br />
endif<br />
<br />
db.execute "TRUNCATE TABLE players_online"<br />
<br />
serv.allclients f_update_player_status</code></div></div>
<br />
Create in sme.scp function<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>[FUNCTION f_update_player_status]<br />
if (&lt;db.connected&gt;==0)<br />
&nbsp;&nbsp;db.connect<br />
&nbsp;&nbsp;db.query "SET NAMES utf8"<br />
&nbsp;&nbsp;db.query "SET CHARACTER SET utf8"<br />
&nbsp;&nbsp;db.query "SET character_set_client='utf8'"<br />
&nbsp;&nbsp;db.query "SET character_set_connection='utf8'"<br />
&nbsp;&nbsp;db.query "SET character_set_results='utf8'"<br />
&nbsp;&nbsp;return 0<br />
endif<br />
<br />
db.execute "INSERT INTO players_online VALUES(&lt;duid&gt;, '&lt;name&gt;', &lt;karma&gt;, &lt;fame&gt;, '&lt;skilltotal&gt;')"</code></div></div>
<br />
Now go to "C:\web\localhost\www" and create file status.php with this content<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>&lt;?php<br />
&#36;link = mysqli_connect("127.0.0.1", "root", "my_password", "sphere"); //change my_password to your password<br />
<br />
if (!&#36;link) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "Error: Unable to connect to MySQL." . PHP_EOL;<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit;<br />
}<br />
<br />
echo &lt;&lt;&lt;HEADER<br />
&lt;!DOCTYPE html&gt;<br />
&lt;head&gt;<br />
&lt;meta charset="UTF-8"&gt;<br />
&lt;title&gt;SPHERE :: STATUS&lt;/title&gt;<br />
&lt;style&gt;<br />
#status{<br />
&nbsp;&nbsp;margin; 0 auto;<br />
&nbsp;&nbsp;width 50%;<br />
&nbsp;&nbsp;height: auto;<br />
&nbsp;&nbsp;border-collapse: collapse;<br />
}<br />
<br />
#status th{<br />
&nbsp;&nbsp;border: 1px solid black;<br />
&nbsp;&nbsp;font-weight: bold;<br />
}<br />
<br />
#status td{<br />
&nbsp;&nbsp;border: 1px solid black;<br />
}<br />
&lt;/style&gt;<br />
&lt;/head&gt;<br />
<br />
&lt;body&gt;<br />
&lt;table id="status"&gt;<br />
&lt;tr&gt;&lt;th&gt;Name&lt;/th&gt;&lt;th&gt;Karma&lt;/th&gt;&lt;th&gt;Fame&lt;/th&gt;&lt;th&gt;Skill Total&lt;/th&gt;&lt;/tr&gt;<br />
HEADER;<br />
<br />
&#36;result = mysqli_query(&#36;link, "SELECT * FROM players_online");<br />
while (&#36;row = mysqli_fetch_assoc(&#36;result)) {<br />
&nbsp;&nbsp;echo '&lt;tr&gt;&lt;td&gt;'.&#36;row["name"].'&lt;/td&gt;&lt;td&gt;'.&#36;row["karma"].'&lt;/td&gt;&lt;td&gt;'.&#36;row["fame"].'&lt;/td&gt;&lt;td&gt;'.&#36;row["skilltotal"].'&lt;/td&gt;&lt;/tr&gt;';<br />
}<br />
<br />
echo &lt;&lt;&lt;FOOTER<br />
&lt;/table&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
FOOTER;<br />
<br />
mysqli_free_result(&#36;result);<br />
mysqli_close(&#36;link);<br />
?&gt;</code></div></div>
<br />
<div><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;"><img src="https://s-media-cache-ak0.pinimg.com/564x/10/89/a9/1089a95661a27b980addc03ae0cd0115.jpg" border="0" alt="[Image: 1089a95661a27b980addc03ae0cd0115.jpg]" /></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[HOW TO INSTALL TO LINUX (INSTRUCTIONS) (Sphere .56c)]]></title>
			<link>https://forum.spherecommunity.net/Thread-HOW-TO-INSTALL-TO-LINUX-INSTRUCTIONS-Sphere-56c</link>
			<pubDate>Fri, 30 Sep 2016 06:11:46 +0200</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-HOW-TO-INSTALL-TO-LINUX-INSTRUCTIONS-Sphere-56c</guid>
			<description><![CDATA[My System:  Slackware 14.2 (32bit) Linux &amp; Sphere .56c Pre-release<br />
<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>****NOTE: Sphere is 32bit so you must install on a 32bit or a multi-lib system.<br />
<br />
1) As root, create a sphere user:<br />
&nbsp;&nbsp;&nbsp;&nbsp;useradd sphere<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Answer the questions)<br />
&nbsp;&nbsp;&nbsp;&nbsp;chmod 700 /home/sphere<br />
<br />
<br />
2) Log in as user sphere create these directories:<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/accounts<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/logs<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/muls<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/save<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/scripts<br />
<br />
<br />
3) Download and uncompress the sphere server files and move them into the correct directories:<br />
&nbsp;&nbsp;&nbsp;&nbsp;wget http://prerelease.sphere.torfo.org/build56/SphereServer-0.56c-201604102807-Linux.tgz<br />
&nbsp;&nbsp;&nbsp;&nbsp;tar -xvf SphereServer-0.56c-201604102807-Linux.tgz -C spheresvr/<br />
&nbsp;&nbsp;&nbsp;&nbsp;rm SphereServer-0.56c-201604102807-Linux.tgz (OPTIONAL)<br />
&nbsp;&nbsp;&nbsp;&nbsp;mv spheresvr/src/Sphere.ini spheresvr/sphere.ini<br />
&nbsp;&nbsp;&nbsp;&nbsp;mv spheresvr/src/sphereCrypt.ini spheresvr/sphereCrypt.ini<br />
&nbsp;&nbsp;&nbsp;&nbsp;mv spheresvr/src/sphere.dic spheresvr/sphere.dic<br />
<br />
<br />
<br />
4) Download and uncompress the scripts into the spheresrv/scripts directory:<br />
&nbsp;&nbsp;&nbsp;&nbsp;wget http://prerelease.sphere.torfo.org/build56/SphereServer-0.56c-201604102807-Scripts.zip<br />
&nbsp;&nbsp;&nbsp;&nbsp;unzip SphereServer-0.56c-201604102807-Scripts.zip<br />
&nbsp;&nbsp;&nbsp;&nbsp;mv Scripts-master/* spheresvr/scripts/<br />
&nbsp;&nbsp;&nbsp;&nbsp;rm -rf Scripts-master<br />
&nbsp;&nbsp;&nbsp;&nbsp;rm SphereServer-0.56c-201604102807-Scripts.zip (OPTIONAL)<br />
<br />
5) Fix file permissions:<br />
&nbsp;&nbsp;&nbsp;&nbsp;find ./spheresvr -type d | xargs chmod 0700<br />
&nbsp;&nbsp;&nbsp;&nbsp;find ./spheresvr -type f | xargs chmod 0600<br />
&nbsp;&nbsp;&nbsp;&nbsp;chmod 700 ./spheresvr/spheresvr<br />
&nbsp;&nbsp;&nbsp;&nbsp;chmod 4700 ./spheresvr<br />
<br />
<br />
6) Change into the spheresvr directory and continue:<br />
&nbsp;&nbsp;&nbsp;&nbsp;cd spheresvr<br />
<br />
<br />
7) Check for library dependencies:<br />
&nbsp;&nbsp;&nbsp;&nbsp;ldd spheresvr<br />
&nbsp;&nbsp;&nbsp;&nbsp;See below- "ERROR: Missing libs"<br />
<br />
<br />
8) Fix the broken windows naming convention:<br />
&nbsp;&nbsp;&nbsp;&nbsp;ln -s sphere.ini sphere.INI<br />
<br />
<br />
9) Edit sphere.ini:<br />
&nbsp;&nbsp;&nbsp;&nbsp;vi sphere.ini<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; In the [SPHERE] section add:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AGREE=1<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;CHANGE THE FOLLOWING TO WHATEVER IS CORRECT for you:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServName=MyAwesomeShard<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OPTIONAL:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AdminEmail=me@MyAwesomeSphereServer.com<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL=www.MyAwesomeSphereServer.com<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TimeZone=-4<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;CHANGE THE FOLLOWING TO:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM: //MulFiles=mul/&nbsp;&nbsp;&nbsp;&nbsp;TO: MulFiles=muls/&nbsp;&nbsp;&nbsp;&nbsp;(You're on linux, it won't auto-detect correctly)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM: AccApp=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TO: AccApp=2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(This allows you to create your first account by just logging in)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM: UseNoCrypt=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TO: UseNoCrypt=1`&nbsp;&nbsp;&nbsp;&nbsp;(This stops the OSI encryption headaches)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(at the very end of the ini:)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM: [SERVERS]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TO: [SERVERS]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyShard&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyAwesomeShard<br />
<br />
<br />
10) Copy the UO data files from your client. Copy the files from your windows client and put them in the spheresvr/muls folder.<br />
&nbsp;&nbsp;&nbsp;&nbsp; For Old installations (client less than 7.0.20) this need: map0.mul, statics0.mul, staidx0.mul, multi.mul, multi.idx, hues.mul, tiledata.mul.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Optional files: verdata.mul, mapX.mul, staticsX.mul, staidxX.mul for higher maps support (Malas, etc).<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; For newer installs (client 7.0.20 and higher) this need the same files in .uop format<br />
<br />
<br />
11) Create blank save and accounts files.<br />
&nbsp;&nbsp;&nbsp;&nbsp; NOTE: The save files HAVE TO HAVE "[EOF]" in them.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/sphereworld.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spheredata.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spherechars.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spheremultis.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spherestatics.scp<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;touch accounts/sphereaccu.scp<br />
<br />
<br />
12) Start the server<br />
&nbsp;&nbsp;&nbsp;&nbsp; ./spheresrv<br />
<br />
NOTE: To stop the server:<br />
&nbsp;&nbsp;&nbsp;&nbsp; shutdown 1&nbsp;&nbsp; (This will shutdown the server after 1 minute, when you hit enter, no message will appear in your console but will appear in the game clients connected).<br />
<br />
<br />
You should now have a BLANK world, fire off your client with RAZOR and walk around.&nbsp;&nbsp;You will need to add all spawns and mobiles.<br />
<br />
<br />
<br />
==================================================================<br />
ERROR:<br />
&nbsp;&nbsp;Missing libs<br />
<br />
FIX:<br />
&nbsp;&nbsp;As root run "locate LIB_NAME"&nbsp;&nbsp;(e.g. locate libstdc++.so.6 )<br />
&nbsp;&nbsp;Install missing libs.<br />
<br />
HINTS:<br />
&nbsp;&nbsp;libmysqlclient is part of MySQL, grab your distro's package and install. You don't need to setup MySQL, you just need to have the package installed for the lib.<br />
&nbsp;&nbsp;libboost is part of Boost C++ (http://www.boost.org/). Your distro probably has a package for it.<br />
&nbsp;&nbsp;libstdc++.so.6 - My machine had libstdc++.so.6.0.18 installed but sphere could not detect it so, I made a symbolic link to it and it worked fine.<br />
&nbsp;&nbsp;&nbsp;&nbsp;ln -s /usr/lib/libstdc++.so.6.0.18 /usr/lib/libstdc++.so.6<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;FATAL:The sphere.INI file is corrupt or missing<br />
&nbsp;&nbsp;FATAL:MUL File 'multi.idx' not found...<br />
&nbsp;&nbsp;FATAL:Server terminated by error -3!<br />
<br />
FIX 1:<br />
&nbsp;&nbsp;ln -s sphere.ini sphere.INI<br />
<br />
FIX 2:<br />
1) vi sphere.ini<br />
<br />
&nbsp;&nbsp;Change line:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&#92;&#92;MulFiles=mul/<br />
<br />
&nbsp;&nbsp;To:<br />
&nbsp;&nbsp;&nbsp;&nbsp;MulFiles=muls/<br />
<br />
2) copy map0.mul, statics0.mul, staidx0.mul, multi.mul, multi.idx, hues.mul, tiledata.mul from your client into muls/<br />
&nbsp;&nbsp;&nbsp;&nbsp;Optional files: verdata.mul, mapX.mul/staticsX.mul/staidxX.mul for higher maps support (Malas, etc).<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;ERROR:Can't Load save/sphereworld<br />
&nbsp;&nbsp;FATAL:No previous backup available ?<br />
&nbsp;&nbsp;FATAL:Server terminated by error -8!<br />
<br />
FIX:<br />
&nbsp;&nbsp;You will need to create a folder called save.<br />
&nbsp;&nbsp;Inside this folder you will need to create and save 5 files<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/sphereworld.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spheredata.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spherechars.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spheremultis.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spherestatics.scp<br />
<br />
&nbsp;&nbsp;Each of these files should be empty except for the text [eof]<br />
&nbsp;&nbsp;These files MUST be saved as a .scp file in order to work, if saved as .txt you will receive errors from sphere saying that they were not found.<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;16:30:1:ERR Login NO Account 'joebob'<br />
&nbsp;&nbsp;16:30:WARNING:1:Bad Login 0 (Account does not exist)<br />
&nbsp;&nbsp;16:30:1:Client disconnected [Total:0] ('192.168.1.11')<br />
<br />
FIX 1:<br />
&nbsp;&nbsp;Next you will need to create a folder called accounts and inside this folder you will need to create and save a file called sphereaccu.scp.<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir accounts<br />
&nbsp;&nbsp;&nbsp;&nbsp;touch accounts/sphereaccu.scp<br />
<br />
&nbsp;&nbsp;The same rules apply as to the files you previously created, though this one does not require the [eof] text.<br />
<br />
FIX 2:<br />
&nbsp;&nbsp;Edit sphere.ini and change:<br />
&nbsp;&nbsp;&nbsp;&nbsp;//Code for servers account application process<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;0=Closed,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Closed. Not accepting more.<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;2=Free,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Anyone can just log in and create a full account.<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;3=GuestAuto,&nbsp;&nbsp;&nbsp;&nbsp;// You get to be a guest and are automatically sent email with u're new password.<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;4=GuestTrial,&nbsp;&nbsp; // You get to be a guest til u're accepted for full by an Admin.<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;6=Unspecified,&nbsp;&nbsp;// Not specified.<br />
&nbsp;&nbsp;&nbsp;&nbsp;// To enable auto account you must set this to 2<br />
&nbsp;&nbsp;&nbsp;&nbsp;AccApp=2<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;WARNING:1:Bad Login 13 (Unencrypted client not permitted. See the USENOCRYPT setting in sphere.ini)<br />
<br />
FIX:<br />
&nbsp;&nbsp;Edit sphere.ini and set:<br />
&nbsp;&nbsp;&nbsp;&nbsp;// Set this to 1 to allow login to unencrypted clients<br />
&nbsp;&nbsp;&nbsp;&nbsp;UseNoCrypt=1<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;16:31:FATAL:Secure Mode prevents CTRL+C<br />
<br />
FIX 1:<br />
&nbsp;&nbsp;From the blank CLI, run "shutdown 1". This will cause the server to shutdown in 1 minute.<br />
<br />
FIX 2:<br />
&nbsp;&nbsp;Edit sphere.ini and change the following line to:<br />
&nbsp;&nbsp;&nbsp;&nbsp;// Secure mode attempts to ignore errors, protect from accidently shutdowns<br />
&nbsp;&nbsp;&nbsp;&nbsp;Secure=0</code></div></div>
]]></description>
			<content:encoded><![CDATA[My System:  Slackware 14.2 (32bit) Linux &amp; Sphere .56c Pre-release<br />
<br />
<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>****NOTE: Sphere is 32bit so you must install on a 32bit or a multi-lib system.<br />
<br />
1) As root, create a sphere user:<br />
&nbsp;&nbsp;&nbsp;&nbsp;useradd sphere<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Answer the questions)<br />
&nbsp;&nbsp;&nbsp;&nbsp;chmod 700 /home/sphere<br />
<br />
<br />
2) Log in as user sphere create these directories:<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/accounts<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/logs<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/muls<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/save<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/scripts<br />
<br />
<br />
3) Download and uncompress the sphere server files and move them into the correct directories:<br />
&nbsp;&nbsp;&nbsp;&nbsp;wget http://prerelease.sphere.torfo.org/build56/SphereServer-0.56c-201604102807-Linux.tgz<br />
&nbsp;&nbsp;&nbsp;&nbsp;tar -xvf SphereServer-0.56c-201604102807-Linux.tgz -C spheresvr/<br />
&nbsp;&nbsp;&nbsp;&nbsp;rm SphereServer-0.56c-201604102807-Linux.tgz (OPTIONAL)<br />
&nbsp;&nbsp;&nbsp;&nbsp;mv spheresvr/src/Sphere.ini spheresvr/sphere.ini<br />
&nbsp;&nbsp;&nbsp;&nbsp;mv spheresvr/src/sphereCrypt.ini spheresvr/sphereCrypt.ini<br />
&nbsp;&nbsp;&nbsp;&nbsp;mv spheresvr/src/sphere.dic spheresvr/sphere.dic<br />
<br />
<br />
<br />
4) Download and uncompress the scripts into the spheresrv/scripts directory:<br />
&nbsp;&nbsp;&nbsp;&nbsp;wget http://prerelease.sphere.torfo.org/build56/SphereServer-0.56c-201604102807-Scripts.zip<br />
&nbsp;&nbsp;&nbsp;&nbsp;unzip SphereServer-0.56c-201604102807-Scripts.zip<br />
&nbsp;&nbsp;&nbsp;&nbsp;mv Scripts-master/* spheresvr/scripts/<br />
&nbsp;&nbsp;&nbsp;&nbsp;rm -rf Scripts-master<br />
&nbsp;&nbsp;&nbsp;&nbsp;rm SphereServer-0.56c-201604102807-Scripts.zip (OPTIONAL)<br />
<br />
5) Fix file permissions:<br />
&nbsp;&nbsp;&nbsp;&nbsp;find ./spheresvr -type d | xargs chmod 0700<br />
&nbsp;&nbsp;&nbsp;&nbsp;find ./spheresvr -type f | xargs chmod 0600<br />
&nbsp;&nbsp;&nbsp;&nbsp;chmod 700 ./spheresvr/spheresvr<br />
&nbsp;&nbsp;&nbsp;&nbsp;chmod 4700 ./spheresvr<br />
<br />
<br />
6) Change into the spheresvr directory and continue:<br />
&nbsp;&nbsp;&nbsp;&nbsp;cd spheresvr<br />
<br />
<br />
7) Check for library dependencies:<br />
&nbsp;&nbsp;&nbsp;&nbsp;ldd spheresvr<br />
&nbsp;&nbsp;&nbsp;&nbsp;See below- "ERROR: Missing libs"<br />
<br />
<br />
8) Fix the broken windows naming convention:<br />
&nbsp;&nbsp;&nbsp;&nbsp;ln -s sphere.ini sphere.INI<br />
<br />
<br />
9) Edit sphere.ini:<br />
&nbsp;&nbsp;&nbsp;&nbsp;vi sphere.ini<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; In the [SPHERE] section add:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AGREE=1<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;CHANGE THE FOLLOWING TO WHATEVER IS CORRECT for you:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServName=MyAwesomeShard<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OPTIONAL:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AdminEmail=me@MyAwesomeSphereServer.com<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URL=www.MyAwesomeSphereServer.com<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TimeZone=-4<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;CHANGE THE FOLLOWING TO:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM: //MulFiles=mul/&nbsp;&nbsp;&nbsp;&nbsp;TO: MulFiles=muls/&nbsp;&nbsp;&nbsp;&nbsp;(You're on linux, it won't auto-detect correctly)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM: AccApp=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TO: AccApp=2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(This allows you to create your first account by just logging in)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM: UseNoCrypt=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TO: UseNoCrypt=1`&nbsp;&nbsp;&nbsp;&nbsp;(This stops the OSI encryption headaches)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(at the very end of the ini:)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM: [SERVERS]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TO: [SERVERS]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyShard&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyAwesomeShard<br />
<br />
<br />
10) Copy the UO data files from your client. Copy the files from your windows client and put them in the spheresvr/muls folder.<br />
&nbsp;&nbsp;&nbsp;&nbsp; For Old installations (client less than 7.0.20) this need: map0.mul, statics0.mul, staidx0.mul, multi.mul, multi.idx, hues.mul, tiledata.mul.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Optional files: verdata.mul, mapX.mul, staticsX.mul, staidxX.mul for higher maps support (Malas, etc).<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; For newer installs (client 7.0.20 and higher) this need the same files in .uop format<br />
<br />
<br />
11) Create blank save and accounts files.<br />
&nbsp;&nbsp;&nbsp;&nbsp; NOTE: The save files HAVE TO HAVE "[EOF]" in them.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/sphereworld.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spheredata.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spherechars.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spheremultis.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spherestatics.scp<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;touch accounts/sphereaccu.scp<br />
<br />
<br />
12) Start the server<br />
&nbsp;&nbsp;&nbsp;&nbsp; ./spheresrv<br />
<br />
NOTE: To stop the server:<br />
&nbsp;&nbsp;&nbsp;&nbsp; shutdown 1&nbsp;&nbsp; (This will shutdown the server after 1 minute, when you hit enter, no message will appear in your console but will appear in the game clients connected).<br />
<br />
<br />
You should now have a BLANK world, fire off your client with RAZOR and walk around.&nbsp;&nbsp;You will need to add all spawns and mobiles.<br />
<br />
<br />
<br />
==================================================================<br />
ERROR:<br />
&nbsp;&nbsp;Missing libs<br />
<br />
FIX:<br />
&nbsp;&nbsp;As root run "locate LIB_NAME"&nbsp;&nbsp;(e.g. locate libstdc++.so.6 )<br />
&nbsp;&nbsp;Install missing libs.<br />
<br />
HINTS:<br />
&nbsp;&nbsp;libmysqlclient is part of MySQL, grab your distro's package and install. You don't need to setup MySQL, you just need to have the package installed for the lib.<br />
&nbsp;&nbsp;libboost is part of Boost C++ (http://www.boost.org/). Your distro probably has a package for it.<br />
&nbsp;&nbsp;libstdc++.so.6 - My machine had libstdc++.so.6.0.18 installed but sphere could not detect it so, I made a symbolic link to it and it worked fine.<br />
&nbsp;&nbsp;&nbsp;&nbsp;ln -s /usr/lib/libstdc++.so.6.0.18 /usr/lib/libstdc++.so.6<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;FATAL:The sphere.INI file is corrupt or missing<br />
&nbsp;&nbsp;FATAL:MUL File 'multi.idx' not found...<br />
&nbsp;&nbsp;FATAL:Server terminated by error -3!<br />
<br />
FIX 1:<br />
&nbsp;&nbsp;ln -s sphere.ini sphere.INI<br />
<br />
FIX 2:<br />
1) vi sphere.ini<br />
<br />
&nbsp;&nbsp;Change line:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&#92;&#92;MulFiles=mul/<br />
<br />
&nbsp;&nbsp;To:<br />
&nbsp;&nbsp;&nbsp;&nbsp;MulFiles=muls/<br />
<br />
2) copy map0.mul, statics0.mul, staidx0.mul, multi.mul, multi.idx, hues.mul, tiledata.mul from your client into muls/<br />
&nbsp;&nbsp;&nbsp;&nbsp;Optional files: verdata.mul, mapX.mul/staticsX.mul/staidxX.mul for higher maps support (Malas, etc).<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;ERROR:Can't Load save/sphereworld<br />
&nbsp;&nbsp;FATAL:No previous backup available ?<br />
&nbsp;&nbsp;FATAL:Server terminated by error -8!<br />
<br />
FIX:<br />
&nbsp;&nbsp;You will need to create a folder called save.<br />
&nbsp;&nbsp;Inside this folder you will need to create and save 5 files<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/sphereworld.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spheredata.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spherechars.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spheremultis.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spherestatics.scp<br />
<br />
&nbsp;&nbsp;Each of these files should be empty except for the text [eof]<br />
&nbsp;&nbsp;These files MUST be saved as a .scp file in order to work, if saved as .txt you will receive errors from sphere saying that they were not found.<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;16:30:1:ERR Login NO Account 'joebob'<br />
&nbsp;&nbsp;16:30:WARNING:1:Bad Login 0 (Account does not exist)<br />
&nbsp;&nbsp;16:30:1:Client disconnected [Total:0] ('192.168.1.11')<br />
<br />
FIX 1:<br />
&nbsp;&nbsp;Next you will need to create a folder called accounts and inside this folder you will need to create and save a file called sphereaccu.scp.<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir accounts<br />
&nbsp;&nbsp;&nbsp;&nbsp;touch accounts/sphereaccu.scp<br />
<br />
&nbsp;&nbsp;The same rules apply as to the files you previously created, though this one does not require the [eof] text.<br />
<br />
FIX 2:<br />
&nbsp;&nbsp;Edit sphere.ini and change:<br />
&nbsp;&nbsp;&nbsp;&nbsp;//Code for servers account application process<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;0=Closed,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Closed. Not accepting more.<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;2=Free,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Anyone can just log in and create a full account.<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;3=GuestAuto,&nbsp;&nbsp;&nbsp;&nbsp;// You get to be a guest and are automatically sent email with u're new password.<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;4=GuestTrial,&nbsp;&nbsp; // You get to be a guest til u're accepted for full by an Admin.<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;6=Unspecified,&nbsp;&nbsp;// Not specified.<br />
&nbsp;&nbsp;&nbsp;&nbsp;// To enable auto account you must set this to 2<br />
&nbsp;&nbsp;&nbsp;&nbsp;AccApp=2<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;WARNING:1:Bad Login 13 (Unencrypted client not permitted. See the USENOCRYPT setting in sphere.ini)<br />
<br />
FIX:<br />
&nbsp;&nbsp;Edit sphere.ini and set:<br />
&nbsp;&nbsp;&nbsp;&nbsp;// Set this to 1 to allow login to unencrypted clients<br />
&nbsp;&nbsp;&nbsp;&nbsp;UseNoCrypt=1<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;16:31:FATAL:Secure Mode prevents CTRL+C<br />
<br />
FIX 1:<br />
&nbsp;&nbsp;From the blank CLI, run "shutdown 1". This will cause the server to shutdown in 1 minute.<br />
<br />
FIX 2:<br />
&nbsp;&nbsp;Edit sphere.ini and change the following line to:<br />
&nbsp;&nbsp;&nbsp;&nbsp;// Secure mode attempts to ignore errors, protect from accidently shutdowns<br />
&nbsp;&nbsp;&nbsp;&nbsp;Secure=0</code></div></div>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[RenderMode in Effect]]></title>
			<link>https://forum.spherecommunity.net/Thread-RenderMode-in-Effect</link>
			<pubDate>Sun, 27 Mar 2016 22:16:21 +0200</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-RenderMode-in-Effect</guid>
			<description><![CDATA[So, without testing (Too tired) I did some online digging... Xun and I have been discussing it on and off and weren't sure of all the options. Well, like shopping, the best things catch my eye <img src="images/smilies/wink.gif" style="vertical-align: middle;" border="0" alt="Wink" title="Wink" /><br />
<br />
Here is all 8 modes ripped from an old RunUO post from like 2004 or so. <img src="images/smilies/love.gif" style="vertical-align: middle;" border="0" alt="Love" title="Love" /><br />
<br />
0 = regular hue chosen without any change.<br />
1 = creates a 'black' effect that when it hits the target, becomes a black outlined, transparent dark red/transparent ball of fire, not matter what the original hue chosen is. (the ball of fire is due to my own choice of explosion end effect)<br />
2 = creates a slightly transparent end effect in whichever hue you have chosen. There are no shadows in the effect (aka no black at all).<br />
3 = appears to be the same as 2.<br />
4 = like 2 and 3, but with a little shadow in it (aka a little black to add to the demension of the effect).<br />
5 = more transparent, and more black shadow.<br />
6 = transparent and black regardless of the hue that is chosen.<br />
7 = more true to the hue chosen, but dark and transparent. I would say that it has more contrast between the hue and the black shadow-like quality.]]></description>
			<content:encoded><![CDATA[So, without testing (Too tired) I did some online digging... Xun and I have been discussing it on and off and weren't sure of all the options. Well, like shopping, the best things catch my eye <img src="images/smilies/wink.gif" style="vertical-align: middle;" border="0" alt="Wink" title="Wink" /><br />
<br />
Here is all 8 modes ripped from an old RunUO post from like 2004 or so. <img src="images/smilies/love.gif" style="vertical-align: middle;" border="0" alt="Love" title="Love" /><br />
<br />
0 = regular hue chosen without any change.<br />
1 = creates a 'black' effect that when it hits the target, becomes a black outlined, transparent dark red/transparent ball of fire, not matter what the original hue chosen is. (the ball of fire is due to my own choice of explosion end effect)<br />
2 = creates a slightly transparent end effect in whichever hue you have chosen. There are no shadows in the effect (aka no black at all).<br />
3 = appears to be the same as 2.<br />
4 = like 2 and 3, but with a little shadow in it (aka a little black to add to the demension of the effect).<br />
5 = more transparent, and more black shadow.<br />
6 = transparent and black regardless of the hue that is chosen.<br />
7 = more true to the hue chosen, but dark and transparent. I would say that it has more contrast between the hue and the black shadow-like quality.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[Tutorial] Change Music]]></title>
			<link>https://forum.spherecommunity.net/Thread-Tutorial-Change-Music</link>
			<pubDate>Fri, 28 Aug 2015 13:30:11 +0200</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-Tutorial-Change-Music</guid>
			<description><![CDATA[(Tested with Mondain's Legacy Client 4.0.11c)<br />
So I've tried a little something yesterday,<br />
for those who didnt know, you can change the music of the opening client to replace the horrible turfin "song", of course you ve got to use the mp3 format,<br />
Then add your song in the Music Folder inside your Ultima Online Folder,  then in the config file,  replace "turfin" after the 0 from the first line with the name of your song. <br />
0 turfin, loop<br />
----&gt;<br />
0 new_opening, loop<br />
<br />
There, the music of your login screen should be changed,  hope it helps <img src="images/smilies/happy.gif" style="vertical-align: middle;" border="0" alt="Smile" title="Smile" /><br />
I believe it should work with other songs in the game but havent tried it yet, plus sine they aren't built with the game im not sure if it would work correctly with the game.  But well,  worth trying <img src="images/smilies/tongue.gif" style="vertical-align: middle;" border="0" alt="Tongue" title="Tongue" />]]></description>
			<content:encoded><![CDATA[(Tested with Mondain's Legacy Client 4.0.11c)<br />
So I've tried a little something yesterday,<br />
for those who didnt know, you can change the music of the opening client to replace the horrible turfin "song", of course you ve got to use the mp3 format,<br />
Then add your song in the Music Folder inside your Ultima Online Folder,  then in the config file,  replace "turfin" after the 0 from the first line with the name of your song. <br />
0 turfin, loop<br />
----&gt;<br />
0 new_opening, loop<br />
<br />
There, the music of your login screen should be changed,  hope it helps <img src="images/smilies/happy.gif" style="vertical-align: middle;" border="0" alt="Smile" title="Smile" /><br />
I believe it should work with other songs in the game but havent tried it yet, plus sine they aren't built with the game im not sure if it would work correctly with the game.  But well,  worth trying <img src="images/smilies/tongue.gif" style="vertical-align: middle;" border="0" alt="Tongue" title="Tongue" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Asynchronous SQL Usage (Especially for those who suffers handling huge data):]]></title>
			<link>https://forum.spherecommunity.net/Thread-Asynchronous-SQL-Usage-Especially-for-those-who-suffers-handling-huge-data</link>
			<pubDate>Fri, 14 Aug 2015 16:14:23 +0200</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-Asynchronous-SQL-Usage-Especially-for-those-who-suffers-handling-huge-data</guid>
			<description><![CDATA[There are many people who complain about excessive usage of processes caused by overloading data to SQL while server running. So the main reason is that when you are using direct sql execution, whats happening is like server stops working until the data are completely transferred to database or server can shutdown because of overloading. For instance, somehow 1000 players manage registering to database and from sphere server running tries to register all of them at the same time. So guess ? What's going to happen ?.  There is a solution for kind of problem I just explained. You can use Asynchronous processes that some of you might know it as aquery/aexecute. <br />
<br />
For the detailed information please refer to <a href="https://technet.microsoft.com/en-us/library/cc978253.aspx" target="_blank">https://technet.microsoft.com/en-us/libr...78253.aspx</a> ( You can look what sync and async means)<br />
<br />
<br />
The wiki is I think is not enough in terms of knowledge about this issue. Just the definition is there. As a matter of the fact, Sphere Server has ability to manage data handling as async. So let me explain with an example of how to register users from database to server.<br />
<br />
First of all, let me list what functions I will use to register : <br />
<br />
* My Function which I'm going to create myself.<br />
* AQUERY - <a href="http://wiki.sphere.torfo.org/index.php/AQUERY" target="_blank">http://wiki.sphere.torfo.org/index.php/AQUERY</a><br />
<br />
In order to register players to server I should first write database check function to call register : <br />
<br />
<div class="codeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #007700">[function&nbsp;</span><span style="color: #0000BB">f_acc_check</span><span style="color: #007700">]&nbsp;</span><span style="color: #FF8000">//&nbsp;Main&nbsp;register&nbsp;function&nbsp;to&nbsp;check<br /></span><span style="color: #0000BB">db</span><span style="color: #007700">.</span><span style="color: #0000BB">connect<br /></span><span style="color: #FF8000">//&nbsp;From&nbsp;this&nbsp;part,&nbsp;what&nbsp;I'm&nbsp;doing&nbsp;is&nbsp;calling&nbsp;a&nbsp;simple&nbsp;query&nbsp;which&nbsp;will&nbsp;be&nbsp;processed&nbsp;as&nbsp;background.<br /></span><span style="color: #007700">IF&nbsp;(&lt;</span><span style="color: #0000BB">DB</span><span style="color: #007700">.</span><span style="color: #0000BB">AQUERY&nbsp;f_aquery_create_acc</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">SELECT&nbsp;</span><span style="color: #007700">*&nbsp;</span><span style="color: #0000BB">FROM&nbsp;players&nbsp;WHERE&nbsp;status&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'0'&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">is_activated&nbsp;</span><span style="color: #007700">=</span><span style="color: #DD0000">'1'</span><span style="color: #007700">&gt;&nbsp;==&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">SERV</span><span style="color: #007700">.</span><span style="color: #0000BB">LOG&nbsp;There&nbsp;is&nbsp;a&nbsp;problem</span><span style="color: #007700">.<br />ELSE<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">SERV</span><span style="color: #007700">.</span><span style="color: #0000BB">LOG&nbsp;Operation&nbsp;successful</span><span style="color: #007700">.<br />ENDIF&nbsp;<br /></span></code></div></div></div>
<br />
The next thing we should do is creating "the create account function" which we just typed above. So write your function like the following and even you can simply pass another function while the process is in background. Like;<br />
<div class="codeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">f_account_check&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">aquery&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">f_acc_create&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">aquery<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">f_acc_pass<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">f_acc_pin&nbsp;</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">Pin&nbsp;another&nbsp;password&nbsp;type&nbsp;</span><span style="color: #007700">if&nbsp;</span><span style="color: #0000BB">you&nbsp;like&nbsp;you&nbsp;can&nbsp;simply&nbsp;set&nbsp;it</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;</span><span style="color: #0000BB">f_acc_mail&nbsp;so&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">so&nbsp;forth</span><span style="color: #007700">.&nbsp;<br /></span></code></div></div></div>
I will follow the steps like I just showed you with arrows. Let me first create  account creation function like the following: ( Note: You will see that very similar query type like in normal query about numrows. It is very simple and almost same with normal query type but the process management is different)<br />
<br />
<br />
<div class="codeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #007700">[FUNCTION&nbsp;</span><span style="color: #0000BB">f_aquery_create_acc</span><span style="color: #007700">]&nbsp;</span><span style="color: #FF8000">//&nbsp;Register<br /></span><span style="color: #007700">IF&nbsp;(&lt;</span><span style="color: #0000BB">ARGN2</span><span style="color: #007700">&gt;&nbsp;==&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">SERV</span><span style="color: #007700">.</span><span style="color: #0000BB">LOG&nbsp;The&nbsp;command&nbsp;failed&nbsp;to&nbsp;execute</span><span style="color: #007700">.&nbsp;(&lt;</span><span style="color: #0000BB">ARGS</span><span style="color: #007700">&gt;)<br />ELSE<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">SERV</span><span style="color: #007700">.</span><span style="color: #0000BB">LOG&nbsp;Task&nbsp;is&nbsp;done</span><span style="color: #007700">.,&nbsp;&lt;</span><span style="color: #0000BB">dLOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">NUMROWS</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #0000BB">account&nbsp;has&nbsp;been&nbsp;created</span><span style="color: #007700">.&nbsp;(&lt;</span><span style="color: #0000BB">ARGS</span><span style="color: #007700">&gt;)<br />&nbsp;&nbsp;&nbsp;&nbsp;FOR&nbsp;</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">&lt;EVAL&nbsp;&lt;</span><span style="color: #0000BB">LOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">NUMROWS</span><span style="color: #007700">&gt;&nbsp;-&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">dLOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">NUMROWS</span><span style="color: #007700">&gt;&nbsp;&gt;&nbsp;</span><span style="color: #0000BB">0&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local</span><span style="color: #007700">.</span><span style="color: #0000BB">account_name&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">LOCAL</span><span style="color: #007700">.&lt;</span><span style="color: #0000BB">dLOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">_FOR</span><span style="color: #007700">&gt;.</span><span style="color: #0000BB">player_name</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #FF8000">//&nbsp;table&nbsp;contents&nbsp;=&gt;&nbsp;player_name&nbsp;column<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">local</span><span style="color: #007700">.</span><span style="color: #0000BB">memberid&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">LOCAL</span><span style="color: #007700">.&lt;</span><span style="color: #0000BB">dLOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">_FOR</span><span style="color: #007700">&gt;.</span><span style="color: #0000BB">id</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #FF8000">//&nbsp;id&nbsp;=&gt;&nbsp;you&nbsp;can&nbsp;set&nbsp;by&nbsp;automatic&nbsp;increments&nbsp;to&nbsp;it&nbsp;and&nbsp;so&nbsp;you&nbsp;can&nbsp;simply&nbsp;link&nbsp;players&nbsp;easly.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">serv</span><span style="color: #007700">.</span><span style="color: #0000BB">account&nbsp;add&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">local</span><span style="color: #007700">.</span><span style="color: #0000BB">acc_name</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #FF8000">//&nbsp;Create&nbsp;account&nbsp;//&nbsp;table&nbsp;contents&nbsp;=&gt;&nbsp;account_name&nbsp;column<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">serv</span><span style="color: #007700">.</span><span style="color: #0000BB">account&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">local</span><span style="color: #007700">.</span><span style="color: #0000BB">accname</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #0000BB">tag</span><span style="color: #007700">.</span><span style="color: #0000BB">email&nbsp;</span><span style="color: #DD0000">"&lt;LOCAL.&lt;dLOCAL._FOR&gt;.email_address&gt;"&nbsp;</span><span style="color: #FF8000">//&nbsp;set&nbsp;email&nbsp;as&nbsp;account.tag.email<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">serv</span><span style="color: #007700">.</span><span style="color: #0000BB">account&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">local</span><span style="color: #007700">.</span><span style="color: #0000BB">accname</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #0000BB">tag</span><span style="color: #007700">.</span><span style="color: #0000BB">memberid&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">LOCAL</span><span style="color: #007700">.&lt;</span><span style="color: #0000BB">dLOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">_FOR</span><span style="color: #007700">&gt;.</span><span style="color: #0000BB">id_member</span><span style="color: #007700">&gt;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;set&nbsp;id&nbsp;as&nbsp;account.tag.id<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">var.</span><span style="color: #0000BB">acc_name&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">LOCAL</span><span style="color: #007700">.&lt;</span><span style="color: #0000BB">dLOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">_FOR</span><span style="color: #007700">&gt;.</span><span style="color: #0000BB">member_name</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #FF8000">//&nbsp;set&nbsp;global&nbsp;variable&nbsp;as&nbsp;var.acc_name&nbsp;because&nbsp;when&nbsp;you&nbsp;pass&nbsp;another&nbsp;function&nbsp;to&nbsp;get&nbsp;information&nbsp;about&nbsp;account's&nbsp;pin,&nbsp;status&nbsp;and&nbsp;etc,&nbsp;any&nbsp;information&nbsp;you&nbsp;set&nbsp;,&nbsp;let&nbsp;say,&nbsp;you&nbsp;will&nbsp;need&nbsp;"var.acc_name".<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">local</span><span style="color: #007700">.</span><span style="color: #0000BB">password&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">DB</span><span style="color: #007700">.</span><span style="color: #0000BB">AQUERY&nbsp;f_aquery_create_acc_pass</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">SELECT&nbsp;</span><span style="color: #007700">*&nbsp;</span><span style="color: #0000BB">FROM&nbsp;players&nbsp;WHERE&nbsp;id&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'&lt;eval&nbsp;&lt;local.memberid&gt;&gt;'&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;pass&nbsp;another&nbsp;query&nbsp;with&nbsp;the&nbsp;information&nbsp;taken&nbsp;from&nbsp;previous&nbsp;function.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">local</span><span style="color: #007700">.</span><span style="color: #0000BB">pin&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">DB</span><span style="color: #007700">.</span><span style="color: #0000BB">AQUERY&nbsp;f_aquery_create_acc_pin</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">SELECT&nbsp;</span><span style="color: #007700">*&nbsp;</span><span style="color: #0000BB">FROM&nbsp;players&nbsp;WHERE&nbsp;id</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'&lt;eval&nbsp;&lt;local.memberid&gt;&gt;'&nbsp;</span><span style="color: #FF8000">//&nbsp;pass&nbsp;another&nbsp;query&nbsp;with&nbsp;the&nbsp;information&nbsp;taken&nbsp;from&nbsp;previous&nbsp;function.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">local</span><span style="color: #007700">.</span><span style="color: #0000BB">status&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">DB</span><span style="color: #007700">.</span><span style="color: #0000BB">AEXECUTE&nbsp;f_execute_callback</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">UPDATE&nbsp;players&nbsp;SET&nbsp;status&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'1'&nbsp;</span><span style="color: #0000BB">where&nbsp;id</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'&lt;eval&nbsp;&lt;local.memberid&gt;&gt;'&nbsp;</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #FF8000">//&nbsp;Set&nbsp;the&nbsp;status&nbsp;as&nbsp;"1"&nbsp;since&nbsp;this&nbsp;account&nbsp;is&nbsp;not&nbsp;a&nbsp;new&nbsp;player&nbsp;anymore&nbsp;so&nbsp;that&nbsp;next&nbsp;time&nbsp;sphere&nbsp;server&nbsp;can&nbsp;understand&nbsp;what&nbsp;is&nbsp;going&nbsp;to&nbsp;be&nbsp;a&nbsp;new&nbsp;account.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">endif&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ENDFOR<br />ENDIF<br />RETURN&nbsp;<br /></span></code></div></div></div>
<br />
Now, it is time to write functions we have already passed from previous function which was " FUNCTION f_aquery_create_acc". Its going to be same as previous functions.<br />
<br />
<br />
Let me show account password function but before, I should say important issue. As we passed our global variable we can now use it when we update already registered account's password information like [undefined=undefined]serv.account "name" "password"[/undefined]<br />
<br />
<div class="codeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #007700">[FUNCTION&nbsp;</span><span style="color: #0000BB">f_aquery_create_acc_pass</span><span style="color: #007700">]&nbsp;</span><span style="color: #FF8000">//&nbsp;Acc&nbsp;Password<br /></span><span style="color: #007700">IF&nbsp;(&lt;</span><span style="color: #0000BB">ARGN2</span><span style="color: #007700">&gt;&nbsp;==&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">SERV</span><span style="color: #007700">.</span><span style="color: #0000BB">LOG&nbsp;The&nbsp;command&nbsp;failed&nbsp;to&nbsp;execute</span><span style="color: #007700">.&nbsp;(&lt;</span><span style="color: #0000BB">ARGS</span><span style="color: #007700">&gt;)<br />ELSE<br />&nbsp;&nbsp;&nbsp;&nbsp;FOR&nbsp;</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">&lt;EVAL&nbsp;&lt;</span><span style="color: #0000BB">LOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">NUMROWS</span><span style="color: #007700">&gt;&nbsp;-&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">serv</span><span style="color: #007700">.</span><span style="color: #0000BB">account&nbsp;</span><span style="color: #007700">&lt;var.</span><span style="color: #0000BB">acc_name</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #0000BB">password&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">LOCAL</span><span style="color: #007700">.&lt;</span><span style="color: #0000BB">dLOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">_FOR</span><span style="color: #007700">&gt;.</span><span style="color: #0000BB">acc_password</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #FF8000">//&nbsp;you&nbsp;can&nbsp;update&nbsp;password&nbsp;right&nbsp;now&nbsp;since&nbsp;we&nbsp;just&nbsp;registered&nbsp;account&nbsp;and&nbsp;set&nbsp;its&nbsp;password&nbsp;yet.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">serv</span><span style="color: #007700">.</span><span style="color: #0000BB">account&nbsp;</span><span style="color: #007700">&lt;var.</span><span style="color: #0000BB">acc_name</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #0000BB">tag</span><span style="color: #007700">.</span><span style="color: #0000BB">password</span><span style="color: #DD0000">"&lt;LOCAL.&lt;dLOCAL._FOR&gt;.acc_password&gt;"&nbsp;</span><span style="color: #FF8000">//&nbsp;Also&nbsp;you&nbsp;can&nbsp;set&nbsp;password&nbsp;as&nbsp;tag&nbsp;since&nbsp;you&nbsp;might&nbsp;use&nbsp;MD5&nbsp;password&nbsp;type&nbsp;and&nbsp;it&nbsp;could&nbsp;be&nbsp;problematic&nbsp;to&nbsp;check&nbsp;whether&nbsp;password&nbsp;is&nbsp;somehow&nbsp;changed&nbsp;from&nbsp;your&nbsp;WEB&nbsp;SITE&nbsp;user&nbsp;panel.&nbsp;Its&nbsp;wise&nbsp;to&nbsp;store&nbsp;it&nbsp;to&nbsp;check&nbsp;next&nbsp;time&nbsp;whether&nbsp;it&nbsp;stays&nbsp;as&nbsp;it&nbsp;is&nbsp;or&nbsp;not.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">ENDFOR&nbsp;&nbsp;&nbsp;&nbsp;<br />ENDIF<br />RETURN&nbsp;<br /></span></code></div></div></div>
<br />
So you can pass any function you like as long as you do right things. I tried to show you with an example of how to do query as background task. You can adapt it on anything you like, especially on the process which is really handling huge data.<br />
<br />
You can ask me a question, i'll be glad to anwer.]]></description>
			<content:encoded><![CDATA[There are many people who complain about excessive usage of processes caused by overloading data to SQL while server running. So the main reason is that when you are using direct sql execution, whats happening is like server stops working until the data are completely transferred to database or server can shutdown because of overloading. For instance, somehow 1000 players manage registering to database and from sphere server running tries to register all of them at the same time. So guess ? What's going to happen ?.  There is a solution for kind of problem I just explained. You can use Asynchronous processes that some of you might know it as aquery/aexecute. <br />
<br />
For the detailed information please refer to <a href="https://technet.microsoft.com/en-us/library/cc978253.aspx" target="_blank">https://technet.microsoft.com/en-us/libr...78253.aspx</a> ( You can look what sync and async means)<br />
<br />
<br />
The wiki is I think is not enough in terms of knowledge about this issue. Just the definition is there. As a matter of the fact, Sphere Server has ability to manage data handling as async. So let me explain with an example of how to register users from database to server.<br />
<br />
First of all, let me list what functions I will use to register : <br />
<br />
* My Function which I'm going to create myself.<br />
* AQUERY - <a href="http://wiki.sphere.torfo.org/index.php/AQUERY" target="_blank">http://wiki.sphere.torfo.org/index.php/AQUERY</a><br />
<br />
In order to register players to server I should first write database check function to call register : <br />
<br />
<div class="codeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #007700">[function&nbsp;</span><span style="color: #0000BB">f_acc_check</span><span style="color: #007700">]&nbsp;</span><span style="color: #FF8000">//&nbsp;Main&nbsp;register&nbsp;function&nbsp;to&nbsp;check<br /></span><span style="color: #0000BB">db</span><span style="color: #007700">.</span><span style="color: #0000BB">connect<br /></span><span style="color: #FF8000">//&nbsp;From&nbsp;this&nbsp;part,&nbsp;what&nbsp;I'm&nbsp;doing&nbsp;is&nbsp;calling&nbsp;a&nbsp;simple&nbsp;query&nbsp;which&nbsp;will&nbsp;be&nbsp;processed&nbsp;as&nbsp;background.<br /></span><span style="color: #007700">IF&nbsp;(&lt;</span><span style="color: #0000BB">DB</span><span style="color: #007700">.</span><span style="color: #0000BB">AQUERY&nbsp;f_aquery_create_acc</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">SELECT&nbsp;</span><span style="color: #007700">*&nbsp;</span><span style="color: #0000BB">FROM&nbsp;players&nbsp;WHERE&nbsp;status&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'0'&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">is_activated&nbsp;</span><span style="color: #007700">=</span><span style="color: #DD0000">'1'</span><span style="color: #007700">&gt;&nbsp;==&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">SERV</span><span style="color: #007700">.</span><span style="color: #0000BB">LOG&nbsp;There&nbsp;is&nbsp;a&nbsp;problem</span><span style="color: #007700">.<br />ELSE<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">SERV</span><span style="color: #007700">.</span><span style="color: #0000BB">LOG&nbsp;Operation&nbsp;successful</span><span style="color: #007700">.<br />ENDIF&nbsp;<br /></span></code></div></div></div>
<br />
The next thing we should do is creating "the create account function" which we just typed above. So write your function like the following and even you can simply pass another function while the process is in background. Like;<br />
<div class="codeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">f_account_check&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">aquery&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">f_acc_create&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">aquery<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">f_acc_pass<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">f_acc_pin&nbsp;</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">Pin&nbsp;another&nbsp;password&nbsp;type&nbsp;</span><span style="color: #007700">if&nbsp;</span><span style="color: #0000BB">you&nbsp;like&nbsp;you&nbsp;can&nbsp;simply&nbsp;set&nbsp;it</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;</span><span style="color: #0000BB">f_acc_mail&nbsp;so&nbsp;</span><span style="color: #007700">and&nbsp;</span><span style="color: #0000BB">so&nbsp;forth</span><span style="color: #007700">.&nbsp;<br /></span></code></div></div></div>
I will follow the steps like I just showed you with arrows. Let me first create  account creation function like the following: ( Note: You will see that very similar query type like in normal query about numrows. It is very simple and almost same with normal query type but the process management is different)<br />
<br />
<br />
<div class="codeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #007700">[FUNCTION&nbsp;</span><span style="color: #0000BB">f_aquery_create_acc</span><span style="color: #007700">]&nbsp;</span><span style="color: #FF8000">//&nbsp;Register<br /></span><span style="color: #007700">IF&nbsp;(&lt;</span><span style="color: #0000BB">ARGN2</span><span style="color: #007700">&gt;&nbsp;==&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">SERV</span><span style="color: #007700">.</span><span style="color: #0000BB">LOG&nbsp;The&nbsp;command&nbsp;failed&nbsp;to&nbsp;execute</span><span style="color: #007700">.&nbsp;(&lt;</span><span style="color: #0000BB">ARGS</span><span style="color: #007700">&gt;)<br />ELSE<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">SERV</span><span style="color: #007700">.</span><span style="color: #0000BB">LOG&nbsp;Task&nbsp;is&nbsp;done</span><span style="color: #007700">.,&nbsp;&lt;</span><span style="color: #0000BB">dLOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">NUMROWS</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #0000BB">account&nbsp;has&nbsp;been&nbsp;created</span><span style="color: #007700">.&nbsp;(&lt;</span><span style="color: #0000BB">ARGS</span><span style="color: #007700">&gt;)<br />&nbsp;&nbsp;&nbsp;&nbsp;FOR&nbsp;</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">&lt;EVAL&nbsp;&lt;</span><span style="color: #0000BB">LOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">NUMROWS</span><span style="color: #007700">&gt;&nbsp;-&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;&lt;</span><span style="color: #0000BB">dLOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">NUMROWS</span><span style="color: #007700">&gt;&nbsp;&gt;&nbsp;</span><span style="color: #0000BB">0&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local</span><span style="color: #007700">.</span><span style="color: #0000BB">account_name&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">LOCAL</span><span style="color: #007700">.&lt;</span><span style="color: #0000BB">dLOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">_FOR</span><span style="color: #007700">&gt;.</span><span style="color: #0000BB">player_name</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #FF8000">//&nbsp;table&nbsp;contents&nbsp;=&gt;&nbsp;player_name&nbsp;column<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">local</span><span style="color: #007700">.</span><span style="color: #0000BB">memberid&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">LOCAL</span><span style="color: #007700">.&lt;</span><span style="color: #0000BB">dLOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">_FOR</span><span style="color: #007700">&gt;.</span><span style="color: #0000BB">id</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #FF8000">//&nbsp;id&nbsp;=&gt;&nbsp;you&nbsp;can&nbsp;set&nbsp;by&nbsp;automatic&nbsp;increments&nbsp;to&nbsp;it&nbsp;and&nbsp;so&nbsp;you&nbsp;can&nbsp;simply&nbsp;link&nbsp;players&nbsp;easly.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">serv</span><span style="color: #007700">.</span><span style="color: #0000BB">account&nbsp;add&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">local</span><span style="color: #007700">.</span><span style="color: #0000BB">acc_name</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #FF8000">//&nbsp;Create&nbsp;account&nbsp;//&nbsp;table&nbsp;contents&nbsp;=&gt;&nbsp;account_name&nbsp;column<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">serv</span><span style="color: #007700">.</span><span style="color: #0000BB">account&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">local</span><span style="color: #007700">.</span><span style="color: #0000BB">accname</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #0000BB">tag</span><span style="color: #007700">.</span><span style="color: #0000BB">email&nbsp;</span><span style="color: #DD0000">"&lt;LOCAL.&lt;dLOCAL._FOR&gt;.email_address&gt;"&nbsp;</span><span style="color: #FF8000">//&nbsp;set&nbsp;email&nbsp;as&nbsp;account.tag.email<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">serv</span><span style="color: #007700">.</span><span style="color: #0000BB">account&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">local</span><span style="color: #007700">.</span><span style="color: #0000BB">accname</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #0000BB">tag</span><span style="color: #007700">.</span><span style="color: #0000BB">memberid&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">LOCAL</span><span style="color: #007700">.&lt;</span><span style="color: #0000BB">dLOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">_FOR</span><span style="color: #007700">&gt;.</span><span style="color: #0000BB">id_member</span><span style="color: #007700">&gt;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;set&nbsp;id&nbsp;as&nbsp;account.tag.id<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">var.</span><span style="color: #0000BB">acc_name&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">LOCAL</span><span style="color: #007700">.&lt;</span><span style="color: #0000BB">dLOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">_FOR</span><span style="color: #007700">&gt;.</span><span style="color: #0000BB">member_name</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #FF8000">//&nbsp;set&nbsp;global&nbsp;variable&nbsp;as&nbsp;var.acc_name&nbsp;because&nbsp;when&nbsp;you&nbsp;pass&nbsp;another&nbsp;function&nbsp;to&nbsp;get&nbsp;information&nbsp;about&nbsp;account's&nbsp;pin,&nbsp;status&nbsp;and&nbsp;etc,&nbsp;any&nbsp;information&nbsp;you&nbsp;set&nbsp;,&nbsp;let&nbsp;say,&nbsp;you&nbsp;will&nbsp;need&nbsp;"var.acc_name".<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">local</span><span style="color: #007700">.</span><span style="color: #0000BB">password&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">DB</span><span style="color: #007700">.</span><span style="color: #0000BB">AQUERY&nbsp;f_aquery_create_acc_pass</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">SELECT&nbsp;</span><span style="color: #007700">*&nbsp;</span><span style="color: #0000BB">FROM&nbsp;players&nbsp;WHERE&nbsp;id&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'&lt;eval&nbsp;&lt;local.memberid&gt;&gt;'&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;pass&nbsp;another&nbsp;query&nbsp;with&nbsp;the&nbsp;information&nbsp;taken&nbsp;from&nbsp;previous&nbsp;function.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">local</span><span style="color: #007700">.</span><span style="color: #0000BB">pin&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">DB</span><span style="color: #007700">.</span><span style="color: #0000BB">AQUERY&nbsp;f_aquery_create_acc_pin</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">SELECT&nbsp;</span><span style="color: #007700">*&nbsp;</span><span style="color: #0000BB">FROM&nbsp;players&nbsp;WHERE&nbsp;id</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'&lt;eval&nbsp;&lt;local.memberid&gt;&gt;'&nbsp;</span><span style="color: #FF8000">//&nbsp;pass&nbsp;another&nbsp;query&nbsp;with&nbsp;the&nbsp;information&nbsp;taken&nbsp;from&nbsp;previous&nbsp;function.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">local</span><span style="color: #007700">.</span><span style="color: #0000BB">status&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">DB</span><span style="color: #007700">.</span><span style="color: #0000BB">AEXECUTE&nbsp;f_execute_callback</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">UPDATE&nbsp;players&nbsp;SET&nbsp;status&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'1'&nbsp;</span><span style="color: #0000BB">where&nbsp;id</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'&lt;eval&nbsp;&lt;local.memberid&gt;&gt;'&nbsp;</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #FF8000">//&nbsp;Set&nbsp;the&nbsp;status&nbsp;as&nbsp;"1"&nbsp;since&nbsp;this&nbsp;account&nbsp;is&nbsp;not&nbsp;a&nbsp;new&nbsp;player&nbsp;anymore&nbsp;so&nbsp;that&nbsp;next&nbsp;time&nbsp;sphere&nbsp;server&nbsp;can&nbsp;understand&nbsp;what&nbsp;is&nbsp;going&nbsp;to&nbsp;be&nbsp;a&nbsp;new&nbsp;account.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">endif&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ENDFOR<br />ENDIF<br />RETURN&nbsp;<br /></span></code></div></div></div>
<br />
Now, it is time to write functions we have already passed from previous function which was " FUNCTION f_aquery_create_acc". Its going to be same as previous functions.<br />
<br />
<br />
Let me show account password function but before, I should say important issue. As we passed our global variable we can now use it when we update already registered account's password information like [undefined=undefined]serv.account "name" "password"[/undefined]<br />
<br />
<div class="codeblock"><div class="title">PHP Code:<br />
</div><div class="body"><div dir="ltr"><code><span style="color: #007700">[FUNCTION&nbsp;</span><span style="color: #0000BB">f_aquery_create_acc_pass</span><span style="color: #007700">]&nbsp;</span><span style="color: #FF8000">//&nbsp;Acc&nbsp;Password<br /></span><span style="color: #007700">IF&nbsp;(&lt;</span><span style="color: #0000BB">ARGN2</span><span style="color: #007700">&gt;&nbsp;==&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">SERV</span><span style="color: #007700">.</span><span style="color: #0000BB">LOG&nbsp;The&nbsp;command&nbsp;failed&nbsp;to&nbsp;execute</span><span style="color: #007700">.&nbsp;(&lt;</span><span style="color: #0000BB">ARGS</span><span style="color: #007700">&gt;)<br />ELSE<br />&nbsp;&nbsp;&nbsp;&nbsp;FOR&nbsp;</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">&lt;EVAL&nbsp;&lt;</span><span style="color: #0000BB">LOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">NUMROWS</span><span style="color: #007700">&gt;&nbsp;-&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">serv</span><span style="color: #007700">.</span><span style="color: #0000BB">account&nbsp;</span><span style="color: #007700">&lt;var.</span><span style="color: #0000BB">acc_name</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #0000BB">password&nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">LOCAL</span><span style="color: #007700">.&lt;</span><span style="color: #0000BB">dLOCAL</span><span style="color: #007700">.</span><span style="color: #0000BB">_FOR</span><span style="color: #007700">&gt;.</span><span style="color: #0000BB">acc_password</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #FF8000">//&nbsp;you&nbsp;can&nbsp;update&nbsp;password&nbsp;right&nbsp;now&nbsp;since&nbsp;we&nbsp;just&nbsp;registered&nbsp;account&nbsp;and&nbsp;set&nbsp;its&nbsp;password&nbsp;yet.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">serv</span><span style="color: #007700">.</span><span style="color: #0000BB">account&nbsp;</span><span style="color: #007700">&lt;var.</span><span style="color: #0000BB">acc_name</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #0000BB">tag</span><span style="color: #007700">.</span><span style="color: #0000BB">password</span><span style="color: #DD0000">"&lt;LOCAL.&lt;dLOCAL._FOR&gt;.acc_password&gt;"&nbsp;</span><span style="color: #FF8000">//&nbsp;Also&nbsp;you&nbsp;can&nbsp;set&nbsp;password&nbsp;as&nbsp;tag&nbsp;since&nbsp;you&nbsp;might&nbsp;use&nbsp;MD5&nbsp;password&nbsp;type&nbsp;and&nbsp;it&nbsp;could&nbsp;be&nbsp;problematic&nbsp;to&nbsp;check&nbsp;whether&nbsp;password&nbsp;is&nbsp;somehow&nbsp;changed&nbsp;from&nbsp;your&nbsp;WEB&nbsp;SITE&nbsp;user&nbsp;panel.&nbsp;Its&nbsp;wise&nbsp;to&nbsp;store&nbsp;it&nbsp;to&nbsp;check&nbsp;next&nbsp;time&nbsp;whether&nbsp;it&nbsp;stays&nbsp;as&nbsp;it&nbsp;is&nbsp;or&nbsp;not.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">ENDFOR&nbsp;&nbsp;&nbsp;&nbsp;<br />ENDIF<br />RETURN&nbsp;<br /></span></code></div></div></div>
<br />
So you can pass any function you like as long as you do right things. I tried to show you with an example of how to do query as background task. You can adapt it on anything you like, especially on the process which is really handling huge data.<br />
<br />
You can ask me a question, i'll be glad to anwer.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[HOW TO INSTALL TO LINUX (INSTRUCTIONS) (Sphere .56b)]]></title>
			<link>https://forum.spherecommunity.net/Thread-HOW-TO-INSTALL-TO-LINUX-INSTRUCTIONS-Sphere-56b</link>
			<pubDate>Wed, 08 Apr 2015 20:25:23 +0200</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-HOW-TO-INSTALL-TO-LINUX-INSTRUCTIONS-Sphere-56b</guid>
			<description><![CDATA[I successfully installed Sphere (.56b) to Slackware 14.1 and here's my guide:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>My System:&nbsp;&nbsp;Slackware 14.1 (32bit) Linux<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sphere .56b Pre-release<br />
<br />
<br />
****NOTE: Sphere is 32bit so you must install on a 32bit or a multi-lib system.<br />
<br />
1) As root, create a sphere user:<br />
&nbsp;&nbsp;useradd sphere<br />
&nbsp;&nbsp;&nbsp;&nbsp;(Answer the questions)<br />
&nbsp;&nbsp;chmod 700 /home/sphere<br />
<br />
2) Log in as sphere and create these directories:<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/accounts<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/logs<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/muls<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/save<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/scripts<br />
<br />
3) Download and uncompress the sphere server into the spheresrv directory:<br />
&nbsp;&nbsp;wget http://prerelease.sphere.torfo.org/build56/SphereServer-0.56b-201306161304-Linux.tgz<br />
&nbsp;&nbsp;tar -xvf SphereServer-0.56b-201306161304-Linux.tgz -C spheresvr/<br />
<br />
4) Fix file permissions:<br />
&nbsp;&nbsp;find ./spheresvr -type d | xargs chmod 0700<br />
&nbsp;&nbsp;find ./spheresvr -type f | xargs chmod 0600<br />
&nbsp;&nbsp;chmod 4700 spheresvr<br />
<br />
5) Change into the spheresvr directory and continue:<br />
&nbsp;&nbsp;cd spheresvr<br />
<br />
6) Check for library dependencies:<br />
&nbsp;&nbsp;ldd spheresvr<br />
&nbsp;&nbsp; See below- "ERROR: Missing libs"<br />
<br />
7) Edit sphere.ini:<br />
&nbsp;&nbsp; vi sphere.ini<br />
<br />
&nbsp;&nbsp;CHANGE THE FOLLOWING TO WHATEVER IS CORRECT for you:<br />
&nbsp;&nbsp;&nbsp;&nbsp;ServName=MyAwesomeSphereServer<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp;OPTIONAL:<br />
&nbsp;&nbsp;&nbsp;&nbsp;AdminEmail=me@MyAwesomeSphereServer.com<br />
&nbsp;&nbsp;&nbsp;&nbsp;URL=www.MyAwesomeSphereServer.com<br />
&nbsp;&nbsp;&nbsp;&nbsp;TimeZone=-4<br />
<br />
<br />
&nbsp;&nbsp;CHANGE THE FOLLOWING TO:<br />
&nbsp;&nbsp;&nbsp;&nbsp;FROM: //MulFiles=mul/&nbsp;&nbsp;&nbsp;&nbsp;TO: MulFiles=muls/&nbsp;&nbsp;&nbsp;&nbsp;(You're on linux, it won't auto-detect correctly)<br />
&nbsp;&nbsp;&nbsp;&nbsp;FROM: AccApp=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TO: AccApp=2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(This allows you to create your first account by just logging in)<br />
&nbsp;&nbsp;&nbsp;&nbsp;FROM: UseNoCrypt=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TO: UseNoCrypt=1`&nbsp;&nbsp;&nbsp;&nbsp;(This stops the OSI encryption headaches)<br />
<br />
8) Fix the broken windows naming convention:<br />
&nbsp;&nbsp;ln -s sphere.ini sphere.INI<br />
<br />
<br />
9) Copy the client files into your server directory. you need to copy the following into your spheresvr/muls directory-<br />
&nbsp;&nbsp;&nbsp;&nbsp;multi.idx<br />
&nbsp;&nbsp;&nbsp;&nbsp;hues.mul<br />
&nbsp;&nbsp;&nbsp;&nbsp;map0.mul<br />
&nbsp;&nbsp;&nbsp;&nbsp;multi.mul<br />
&nbsp;&nbsp;&nbsp;&nbsp;statics0.mul<br />
&nbsp;&nbsp;&nbsp;&nbsp;staidx0.mul<br />
&nbsp;&nbsp;&nbsp;&nbsp;tiledata.mul<br />
<br />
&nbsp;&nbsp;Optional files:<br />
&nbsp;&nbsp;&nbsp;&nbsp;verdata.mul<br />
&nbsp;&nbsp;&nbsp;&nbsp;mapX.mul/staticsX.mul/staidxX.mul (for higher maps support (Malas, etc))<br />
<br />
NOTE: The lastest UO clients use .UOP files instead of .MUL<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUPPOSEDLY, the current versions of Sphere support them but, I didn't have any luck with them.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;You can either revert to older clients (pre-7.0.24.0) or you can use a program (found online to convert the UOP to MUL).<br />
<br />
10) Create blank save and accounts files.<br />
&nbsp;&nbsp;NOTE: The save files HAVE TO HAVE "[EOF]" in them.<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/sphereworld.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spheredata.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spherechars.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spheremultis.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spherestatics.scp<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;touch accounts/sphereaccu.scp<br />
<br />
8) Start the server<br />
&nbsp;&nbsp;./spheresrv<br />
<br />
NOTE: To stop the server:<br />
&nbsp;&nbsp;shutdown 1&nbsp;&nbsp; (This will shutdown the server after 1 minute, when you hit enter, no message will appear in your console but will appear in the game clients connected).<br />
<br />
<br />
You should now have a BLANK world, fire off your client with RAZOR and walk around.&nbsp;&nbsp;You will need to add all spawns and mobiles.<br />
<br />
<br />
<br />
==================================================================<br />
ERROR:<br />
&nbsp;&nbsp;Missing libs<br />
<br />
FIX:<br />
&nbsp;&nbsp;As root run "locate LIB_NAME"&nbsp;&nbsp;(e.g. locate libstdc++.so.6 )<br />
&nbsp;&nbsp;Install missing libs.<br />
<br />
HINTS:<br />
&nbsp;&nbsp;libmysqlclient is part of MySQL, grab your distro's package and install. You don't need to setup MySQL, you just need to have the package installed for the lib.<br />
&nbsp;&nbsp;libboost is part of Boost C++ (http://www.boost.org/). Your distro probably has a package for it.<br />
&nbsp;&nbsp;libstdc++.so.6 - My machine had libstdc++.so.6.0.18 installed but sphere could not detect it so, I made a symbolic link to it and it worked fine.<br />
&nbsp;&nbsp;&nbsp;&nbsp;ln -s /usr/lib/libstdc++.so.6.0.18 /usr/lib/libstdc++.so.6<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;FATAL:The sphere.INI file is corrupt or missing<br />
&nbsp;&nbsp;FATAL:MUL File 'multi.idx' not found...<br />
&nbsp;&nbsp;FATAL:Server terminated by error -3!<br />
<br />
FIX 1:<br />
&nbsp;&nbsp;ln -s sphere.ini sphere.INI<br />
<br />
FIX 2:<br />
1) vi sphere.ini<br />
<br />
&nbsp;&nbsp;Change line:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&#92;&#92;MulFiles=mul/<br />
<br />
&nbsp;&nbsp;To:<br />
&nbsp;&nbsp;&nbsp;&nbsp;MulFiles=muls/<br />
<br />
2) copy map0.mul, statics0.mul, staidx0.mul, multi.mul, multi.idx, hues.mul, tiledata.mul from your client into muls/<br />
&nbsp;&nbsp;&nbsp;&nbsp;Optional files: verdata.mul, mapX.mul/staticsX.mul/staidxX.mul for higher maps support (Malas, etc).<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;ERROR:Can't Load save/sphereworld<br />
&nbsp;&nbsp;FATAL:No previous backup available ?<br />
&nbsp;&nbsp;FATAL:Server terminated by error -8!<br />
<br />
FIX:<br />
&nbsp;&nbsp;You will need to create a folder called save.<br />
&nbsp;&nbsp;Inside this folder you will need to create and save 5 files<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/sphereworld.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spheredata.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spherechars.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spheremultis.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spherestatics.scp<br />
<br />
&nbsp;&nbsp;Each of these files should be empty except for the text [eof]<br />
&nbsp;&nbsp;These files MUST be saved as a .scp file in order to work, if saved as .txt you will receive errors from sphere saying that they were not found.<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;16:30:1:ERR Login NO Account 'joebob'<br />
&nbsp;&nbsp;16:30:WARNING:1:Bad Login 0 (Account does not exist)<br />
&nbsp;&nbsp;16:30:1:Client disconnected [Total:0] ('192.168.1.11')<br />
<br />
FIX 1:<br />
&nbsp;&nbsp;Next you will need to create a folder called accounts and inside this folder you will need to create and save a file called sphereaccu.scp.<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir accounts<br />
&nbsp;&nbsp;&nbsp;&nbsp;touch accounts/sphereaccu.scp<br />
<br />
&nbsp;&nbsp;The same rules apply as to the files you previously created, though this one does not require the [eof] text.<br />
<br />
FIX 2:<br />
&nbsp;&nbsp;Edit sphere.ini and change:<br />
&nbsp;&nbsp;&nbsp;&nbsp;//Code for servers account application process<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;0=Closed,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Closed. Not accepting more.<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;2=Free,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Anyone can just log in and create a full account.<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;3=GuestAuto,&nbsp;&nbsp;&nbsp;&nbsp;// You get to be a guest and are automatically sent email with u're new password.<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;4=GuestTrial,&nbsp;&nbsp; // You get to be a guest til u're accepted for full by an Admin.<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;6=Unspecified,&nbsp;&nbsp;// Not specified.<br />
&nbsp;&nbsp;&nbsp;&nbsp;// To enable auto account you must set this to 2<br />
&nbsp;&nbsp;&nbsp;&nbsp;AccApp=2<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;WARNING:1:Bad Login 13 (Unencrypted client not permitted. See the USENOCRYPT setting in sphere.ini)<br />
<br />
FIX:<br />
&nbsp;&nbsp;Edit sphere.ini and set:<br />
&nbsp;&nbsp;&nbsp;&nbsp;// Set this to 1 to allow login to unencrypted clients<br />
&nbsp;&nbsp;&nbsp;&nbsp;UseNoCrypt=1<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;16:31:FATAL:Secure Mode prevents CTRL+C<br />
<br />
FIX 1:<br />
&nbsp;&nbsp;From the blank CLI, run "shutdown 1". This will cause the server to shutdown in 1 minute.<br />
<br />
FIX 2:<br />
&nbsp;&nbsp;Edit sphere.ini and change the following line to:<br />
&nbsp;&nbsp;&nbsp;&nbsp;// Secure mode attempts to ignore errors, protect from accidently shutdowns<br />
&nbsp;&nbsp;&nbsp;&nbsp;Secure=0</code></div></div>
]]></description>
			<content:encoded><![CDATA[I successfully installed Sphere (.56b) to Slackware 14.1 and here's my guide:<br />
<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>My System:&nbsp;&nbsp;Slackware 14.1 (32bit) Linux<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sphere .56b Pre-release<br />
<br />
<br />
****NOTE: Sphere is 32bit so you must install on a 32bit or a multi-lib system.<br />
<br />
1) As root, create a sphere user:<br />
&nbsp;&nbsp;useradd sphere<br />
&nbsp;&nbsp;&nbsp;&nbsp;(Answer the questions)<br />
&nbsp;&nbsp;chmod 700 /home/sphere<br />
<br />
2) Log in as sphere and create these directories:<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/accounts<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/logs<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/muls<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/save<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir -p spheresvr/scripts<br />
<br />
3) Download and uncompress the sphere server into the spheresrv directory:<br />
&nbsp;&nbsp;wget http://prerelease.sphere.torfo.org/build56/SphereServer-0.56b-201306161304-Linux.tgz<br />
&nbsp;&nbsp;tar -xvf SphereServer-0.56b-201306161304-Linux.tgz -C spheresvr/<br />
<br />
4) Fix file permissions:<br />
&nbsp;&nbsp;find ./spheresvr -type d | xargs chmod 0700<br />
&nbsp;&nbsp;find ./spheresvr -type f | xargs chmod 0600<br />
&nbsp;&nbsp;chmod 4700 spheresvr<br />
<br />
5) Change into the spheresvr directory and continue:<br />
&nbsp;&nbsp;cd spheresvr<br />
<br />
6) Check for library dependencies:<br />
&nbsp;&nbsp;ldd spheresvr<br />
&nbsp;&nbsp; See below- "ERROR: Missing libs"<br />
<br />
7) Edit sphere.ini:<br />
&nbsp;&nbsp; vi sphere.ini<br />
<br />
&nbsp;&nbsp;CHANGE THE FOLLOWING TO WHATEVER IS CORRECT for you:<br />
&nbsp;&nbsp;&nbsp;&nbsp;ServName=MyAwesomeSphereServer<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp;OPTIONAL:<br />
&nbsp;&nbsp;&nbsp;&nbsp;AdminEmail=me@MyAwesomeSphereServer.com<br />
&nbsp;&nbsp;&nbsp;&nbsp;URL=www.MyAwesomeSphereServer.com<br />
&nbsp;&nbsp;&nbsp;&nbsp;TimeZone=-4<br />
<br />
<br />
&nbsp;&nbsp;CHANGE THE FOLLOWING TO:<br />
&nbsp;&nbsp;&nbsp;&nbsp;FROM: //MulFiles=mul/&nbsp;&nbsp;&nbsp;&nbsp;TO: MulFiles=muls/&nbsp;&nbsp;&nbsp;&nbsp;(You're on linux, it won't auto-detect correctly)<br />
&nbsp;&nbsp;&nbsp;&nbsp;FROM: AccApp=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TO: AccApp=2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(This allows you to create your first account by just logging in)<br />
&nbsp;&nbsp;&nbsp;&nbsp;FROM: UseNoCrypt=0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TO: UseNoCrypt=1`&nbsp;&nbsp;&nbsp;&nbsp;(This stops the OSI encryption headaches)<br />
<br />
8) Fix the broken windows naming convention:<br />
&nbsp;&nbsp;ln -s sphere.ini sphere.INI<br />
<br />
<br />
9) Copy the client files into your server directory. you need to copy the following into your spheresvr/muls directory-<br />
&nbsp;&nbsp;&nbsp;&nbsp;multi.idx<br />
&nbsp;&nbsp;&nbsp;&nbsp;hues.mul<br />
&nbsp;&nbsp;&nbsp;&nbsp;map0.mul<br />
&nbsp;&nbsp;&nbsp;&nbsp;multi.mul<br />
&nbsp;&nbsp;&nbsp;&nbsp;statics0.mul<br />
&nbsp;&nbsp;&nbsp;&nbsp;staidx0.mul<br />
&nbsp;&nbsp;&nbsp;&nbsp;tiledata.mul<br />
<br />
&nbsp;&nbsp;Optional files:<br />
&nbsp;&nbsp;&nbsp;&nbsp;verdata.mul<br />
&nbsp;&nbsp;&nbsp;&nbsp;mapX.mul/staticsX.mul/staidxX.mul (for higher maps support (Malas, etc))<br />
<br />
NOTE: The lastest UO clients use .UOP files instead of .MUL<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUPPOSEDLY, the current versions of Sphere support them but, I didn't have any luck with them.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;You can either revert to older clients (pre-7.0.24.0) or you can use a program (found online to convert the UOP to MUL).<br />
<br />
10) Create blank save and accounts files.<br />
&nbsp;&nbsp;NOTE: The save files HAVE TO HAVE "[EOF]" in them.<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/sphereworld.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spheredata.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spherechars.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spheremultis.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spherestatics.scp<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;touch accounts/sphereaccu.scp<br />
<br />
8) Start the server<br />
&nbsp;&nbsp;./spheresrv<br />
<br />
NOTE: To stop the server:<br />
&nbsp;&nbsp;shutdown 1&nbsp;&nbsp; (This will shutdown the server after 1 minute, when you hit enter, no message will appear in your console but will appear in the game clients connected).<br />
<br />
<br />
You should now have a BLANK world, fire off your client with RAZOR and walk around.&nbsp;&nbsp;You will need to add all spawns and mobiles.<br />
<br />
<br />
<br />
==================================================================<br />
ERROR:<br />
&nbsp;&nbsp;Missing libs<br />
<br />
FIX:<br />
&nbsp;&nbsp;As root run "locate LIB_NAME"&nbsp;&nbsp;(e.g. locate libstdc++.so.6 )<br />
&nbsp;&nbsp;Install missing libs.<br />
<br />
HINTS:<br />
&nbsp;&nbsp;libmysqlclient is part of MySQL, grab your distro's package and install. You don't need to setup MySQL, you just need to have the package installed for the lib.<br />
&nbsp;&nbsp;libboost is part of Boost C++ (http://www.boost.org/). Your distro probably has a package for it.<br />
&nbsp;&nbsp;libstdc++.so.6 - My machine had libstdc++.so.6.0.18 installed but sphere could not detect it so, I made a symbolic link to it and it worked fine.<br />
&nbsp;&nbsp;&nbsp;&nbsp;ln -s /usr/lib/libstdc++.so.6.0.18 /usr/lib/libstdc++.so.6<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;FATAL:The sphere.INI file is corrupt or missing<br />
&nbsp;&nbsp;FATAL:MUL File 'multi.idx' not found...<br />
&nbsp;&nbsp;FATAL:Server terminated by error -3!<br />
<br />
FIX 1:<br />
&nbsp;&nbsp;ln -s sphere.ini sphere.INI<br />
<br />
FIX 2:<br />
1) vi sphere.ini<br />
<br />
&nbsp;&nbsp;Change line:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&#92;&#92;MulFiles=mul/<br />
<br />
&nbsp;&nbsp;To:<br />
&nbsp;&nbsp;&nbsp;&nbsp;MulFiles=muls/<br />
<br />
2) copy map0.mul, statics0.mul, staidx0.mul, multi.mul, multi.idx, hues.mul, tiledata.mul from your client into muls/<br />
&nbsp;&nbsp;&nbsp;&nbsp;Optional files: verdata.mul, mapX.mul/staticsX.mul/staidxX.mul for higher maps support (Malas, etc).<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;ERROR:Can't Load save/sphereworld<br />
&nbsp;&nbsp;FATAL:No previous backup available ?<br />
&nbsp;&nbsp;FATAL:Server terminated by error -8!<br />
<br />
FIX:<br />
&nbsp;&nbsp;You will need to create a folder called save.<br />
&nbsp;&nbsp;Inside this folder you will need to create and save 5 files<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/sphereworld.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spheredata.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spherechars.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spheremultis.scp<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[EOF]" &gt; save/spherestatics.scp<br />
<br />
&nbsp;&nbsp;Each of these files should be empty except for the text [eof]<br />
&nbsp;&nbsp;These files MUST be saved as a .scp file in order to work, if saved as .txt you will receive errors from sphere saying that they were not found.<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;16:30:1:ERR Login NO Account 'joebob'<br />
&nbsp;&nbsp;16:30:WARNING:1:Bad Login 0 (Account does not exist)<br />
&nbsp;&nbsp;16:30:1:Client disconnected [Total:0] ('192.168.1.11')<br />
<br />
FIX 1:<br />
&nbsp;&nbsp;Next you will need to create a folder called accounts and inside this folder you will need to create and save a file called sphereaccu.scp.<br />
&nbsp;&nbsp;&nbsp;&nbsp;mkdir accounts<br />
&nbsp;&nbsp;&nbsp;&nbsp;touch accounts/sphereaccu.scp<br />
<br />
&nbsp;&nbsp;The same rules apply as to the files you previously created, though this one does not require the [eof] text.<br />
<br />
FIX 2:<br />
&nbsp;&nbsp;Edit sphere.ini and change:<br />
&nbsp;&nbsp;&nbsp;&nbsp;//Code for servers account application process<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;0=Closed,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Closed. Not accepting more.<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;2=Free,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Anyone can just log in and create a full account.<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;3=GuestAuto,&nbsp;&nbsp;&nbsp;&nbsp;// You get to be a guest and are automatically sent email with u're new password.<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;4=GuestTrial,&nbsp;&nbsp; // You get to be a guest til u're accepted for full by an Admin.<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;6=Unspecified,&nbsp;&nbsp;// Not specified.<br />
&nbsp;&nbsp;&nbsp;&nbsp;// To enable auto account you must set this to 2<br />
&nbsp;&nbsp;&nbsp;&nbsp;AccApp=2<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;WARNING:1:Bad Login 13 (Unencrypted client not permitted. See the USENOCRYPT setting in sphere.ini)<br />
<br />
FIX:<br />
&nbsp;&nbsp;Edit sphere.ini and set:<br />
&nbsp;&nbsp;&nbsp;&nbsp;// Set this to 1 to allow login to unencrypted clients<br />
&nbsp;&nbsp;&nbsp;&nbsp;UseNoCrypt=1<br />
<br />
<br />
--------------------<br />
ERROR:<br />
&nbsp;&nbsp;16:31:FATAL:Secure Mode prevents CTRL+C<br />
<br />
FIX 1:<br />
&nbsp;&nbsp;From the blank CLI, run "shutdown 1". This will cause the server to shutdown in 1 minute.<br />
<br />
FIX 2:<br />
&nbsp;&nbsp;Edit sphere.ini and change the following line to:<br />
&nbsp;&nbsp;&nbsp;&nbsp;// Secure mode attempts to ignore errors, protect from accidently shutdowns<br />
&nbsp;&nbsp;&nbsp;&nbsp;Secure=0</code></div></div>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Client Versions, UO Expansions LIST]]></title>
			<link>https://forum.spherecommunity.net/Thread-Client-Versions-UO-Expansions-LIST</link>
			<pubDate>Thu, 15 Jan 2015 20:03:02 +0100</pubDate>
			<guid isPermaLink="false">https://forum.spherecommunity.net/Thread-Client-Versions-UO-Expansions-LIST</guid>
			<description><![CDATA[<span style="font-style: italic;">Ported from RunUO forums, credits to nerun.</span><br />
<br />
<span style="font-weight: bold;">24.09.1997 - [1.0.0 to 1.25.35] - Ultima Online (original game)</span><br />
<br />
<span style="font-weight: bold;">01.10.1998 - [1.25.35b to 1.26.4j] - The Second Age (+ Lost Lands)</span><br />
<br />
<span style="font-weight: bold;">03.04.2000 - [2.0.0 to 2.0.9a] - Renaissance (divison Felucca / Trammel)</span><br />
<br />
<span style="font-weight: bold;">07.03.2001 - [3.0.0 to 3.0.7a] - Third Dawn (3D client, +Ilshenar)</span><br />
<br />
<span style="font-weight: bold;">24.02.2002 - [3.0.7b to 3.0.8r] - Lord Blackthorn's Revenge (+30 mobiles by Todd McFarlane)</span><br />
<br />
<span style="font-weight: bold;">11.02.2003 - [3.0.8z to 4.0.4b2] - Age of Shadows (+Malas, new classes Paladins / Necromancers, custom houses, 5 resistances, item insurance, weapon abilities)</span><br />
<br />
<span style="font-weight: bold;">02.11.2004 - [4.0.5a to 4.0.11c] - Samurai Empire (Tokuno, new classes Samurai / Ninja)</span><br />
<br />
<span style="font-weight: bold;">30.08.2005 - [4.0.11d to 5.0.9.1] - Mondain's Legacy (new race Elves, spellweaving, new dungeons)</span><br />
<br />
<span style="font-weight: bold;">27.06.2007 - [6.0.0.0 to 6.0.14.3] - Kingdom's Reborn (new client, new graphics, essentially new game)</span><br />
<br />
<span style="font-weight: bold;">08.09.2009 - [6.0.14.4 to 7.0.8.2] - Stygian Abyss (new client, new race Gargoyles, new places, removed support for UO:KR)</span><br />
<br />
<span style="font-weight: bold;">12.10.2010 - [&gt;=7.0.9.0] - High Seas (sea stuff, new ships, sea markets, pirates etc)</span><br />
<br />
<span style="font-weight: bold;">Magincia Changes:</span><br />
Old Magincia [Client &lt;= 6.0.3.1]<br />
Magincia Ruins [6.0.4.0 &lt;= Client &lt;= 7.0.13.0]<br />
New Magincia [Client &gt;= 7.0.13.1]<br />
<br />
<span style="font-weight: bold;">Notes by me:</span><br />
Clients after 7.0.24.0 &gt; Use new file format .uop, not more .mul, beware of this if you want to add objects or new animations, it may be more difficult or incompatible.<br />
<br />
For a server pre .UOP i recommend the 7.0.20.0 client, best stable High Seas version.<br />
<br />
For a server Stygian Abyss i recommend the 7.0.8.2 client, best stable Stygian Abyss version.<br />
<br />
For a server old school, i recommend 4.0.11c or 2.0.3 client.<br />
<br />
Regards!]]></description>
			<content:encoded><![CDATA[<span style="font-style: italic;">Ported from RunUO forums, credits to nerun.</span><br />
<br />
<span style="font-weight: bold;">24.09.1997 - [1.0.0 to 1.25.35] - Ultima Online (original game)</span><br />
<br />
<span style="font-weight: bold;">01.10.1998 - [1.25.35b to 1.26.4j] - The Second Age (+ Lost Lands)</span><br />
<br />
<span style="font-weight: bold;">03.04.2000 - [2.0.0 to 2.0.9a] - Renaissance (divison Felucca / Trammel)</span><br />
<br />
<span style="font-weight: bold;">07.03.2001 - [3.0.0 to 3.0.7a] - Third Dawn (3D client, +Ilshenar)</span><br />
<br />
<span style="font-weight: bold;">24.02.2002 - [3.0.7b to 3.0.8r] - Lord Blackthorn's Revenge (+30 mobiles by Todd McFarlane)</span><br />
<br />
<span style="font-weight: bold;">11.02.2003 - [3.0.8z to 4.0.4b2] - Age of Shadows (+Malas, new classes Paladins / Necromancers, custom houses, 5 resistances, item insurance, weapon abilities)</span><br />
<br />
<span style="font-weight: bold;">02.11.2004 - [4.0.5a to 4.0.11c] - Samurai Empire (Tokuno, new classes Samurai / Ninja)</span><br />
<br />
<span style="font-weight: bold;">30.08.2005 - [4.0.11d to 5.0.9.1] - Mondain's Legacy (new race Elves, spellweaving, new dungeons)</span><br />
<br />
<span style="font-weight: bold;">27.06.2007 - [6.0.0.0 to 6.0.14.3] - Kingdom's Reborn (new client, new graphics, essentially new game)</span><br />
<br />
<span style="font-weight: bold;">08.09.2009 - [6.0.14.4 to 7.0.8.2] - Stygian Abyss (new client, new race Gargoyles, new places, removed support for UO:KR)</span><br />
<br />
<span style="font-weight: bold;">12.10.2010 - [&gt;=7.0.9.0] - High Seas (sea stuff, new ships, sea markets, pirates etc)</span><br />
<br />
<span style="font-weight: bold;">Magincia Changes:</span><br />
Old Magincia [Client &lt;= 6.0.3.1]<br />
Magincia Ruins [6.0.4.0 &lt;= Client &lt;= 7.0.13.0]<br />
New Magincia [Client &gt;= 7.0.13.1]<br />
<br />
<span style="font-weight: bold;">Notes by me:</span><br />
Clients after 7.0.24.0 &gt; Use new file format .uop, not more .mul, beware of this if you want to add objects or new animations, it may be more difficult or incompatible.<br />
<br />
For a server pre .UOP i recommend the 7.0.20.0 client, best stable High Seas version.<br />
<br />
For a server Stygian Abyss i recommend the 7.0.8.2 client, best stable Stygian Abyss version.<br />
<br />
For a server old school, i recommend 4.0.11c or 2.0.3 client.<br />
<br />
Regards!]]></content:encoded>
		</item>
	</channel>
</rss>