JeuWeb - Crée ton jeu par navigateur
Besoin de... beaucoup d'aide. - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Besoin de... beaucoup d'aide. (/showthread.php?tid=185)

Pages : 1 2


Besoin de... beaucoup d'aide. - zneman - 06-09-2006

Bon premierement: je cherche un tres bon serveur, sans pub avec une bonne BP etc.. biensur ... gratuit :p donc si vous avez des propositions... j'ai ete voir dans le topic hebergement mais je ne vois pas quel est le mieux :heuuu:

Deuxiemement, je voudrai savoir comment mettre un systeme de ressource comme je le voudrai ci-dessous:

- le joueur peut créer des habitations, une habitation rapporte X* paysants.
- les paysants donnes chacun X* d'or (les impots)
- au fur et a mesure que le joueur joue, son personnage (un sorcier) gagne de plus en plus de mana par tour.
- a partir d'une certaine limite (X) d'habitations, le joueur ne pourra plus avoir plus de ressources par tour.

*Je n'ai pas encore determiné quelles serront les nombres.

En gros, comment faire ca:

Habitations => paysants => or => limite d'habitations a partir d'un certain gain d'or/tour.
Temps de jeu => plus de mana par tour => pas de limite de mana

Je crois qu'il faut utiliser crontab mais le probleme c'ets qu'il faut un serveur ou l'on puisse l'utiliser. Ont peut aussi utiliser webcron mais comment faire ce que j'ai expliqué plus haut avec webcron ?


Voila toutes les questions que je me pose pour l'instant Smile


RE: Besoin de... beaucoup d'aide. - Ssin - 06-09-2006

Moi j'ai creer un script qui prend le timestamp de la page, le compare à celui de la BDD et fait la soustraction, qui correspond au nombre de secondes écoulées depuis la dernière page visitée.

Je fait ensuite le calcul ( nbr de ressources produit en 1 seconde*nbr de secondes écoulées) puis j'UPDATE dans la BDD.

J'inclu ce script dans chaque page.

Voila voilou Big Grin


RE: Besoin de... beaucoup d'aide. - zneman - 06-09-2006

ok ok... si possible.. peux tu me montrer a quoi ressemble ce script ? Smile


RE: Besoin de... beaucoup d'aide. - Ssin - 06-09-2006

Bon, j'ai le temps alors je vais t'en faire un rien que pour toi, bien commenté Wink

J'edit quand c'est pret Tongue


RE: Besoin de... beaucoup d'aide. - zneman - 06-09-2006

ouarf c'est sympa ca Tongue merci Tongue

PS: mon but etant surtout d'apprendre, n'hesites pas a me le bourrer de commentaires Tongue


RE: Besoin de... beaucoup d'aide. - Ssin - 06-09-2006

Euh, tu peut juste me ré expliquer plus clairement ce que tu veut faire, car je risque de faire un truc HS sinon Confused

Quand gagne t'on de l'or ?

Qu'est ce que un "tour" pour toi ?




RE: Besoin de... beaucoup d'aide. - zneman - 06-09-2006

ok..

Je veux mettre en place un systeme de tours.
Toutes les 30 minutes, le joueur gagne X ressources, ces ressources sont fournis par les paysants (pour l'or) et par le personnage que l'on control (pour le mana).

En ce qui concerne le mana, au debut, le joueur en gagne 100 (premier tour) puis a chaque heures, il en gagne 100 + un ajout de 10 par heures (tour).

en gros, le premier tour il gagne 100 de mana, le deuxieme tour, 110 (qui s'ajoutent aux 100 qu'il a eu le premier tour), au troisieme, 120 (qui s'ajoutent aux 210 qu'il a eu au premier et deuxieme tour) etc etc...

Voila ?! Tongue


RE: Besoin de... beaucoup d'aide. - Ssin - 06-09-2006

Oki, je te fait ca.

Bien entendu, ce ne sera qu'un exemple pour te mettre sur la voie hein !


RE: Besoin de... beaucoup d'aide. - zneman - 06-09-2006

pas de probleme Tongue merci Tongue


RE: Besoin de... beaucoup d'aide. - Ssin - 06-09-2006

Code PHP :
<?
$newtimestamp
= date("U"); // Va voir la fonction timestamp() sur google pour savoir à quoi elle sert,
//en gros, la fonction timestamp augmente de 1 à chaque seconde qui passe, utile pour calculer le nombre de seconde écoulées depuis le dernier
//rafraichissement
//Le timestamp de la BDD nous dira QUAND le prochain tour va se produire !!!

//Maintenant, on va selectionné les champs du membre dans ta BDD, pour identifier le membre, on va prendre son ID.
//J'ai choisi ca, mais tu peut prendre "royaume", ou tout ce que tu veut, il faut juste que cela soit une chose UNIQUE qui te permette d'identifier
//un membre PRECIS. Moi j'utilise un numero qui est définie par mySQL quand le membre s'inscrit ( le premier c'est 1, le second qui s'inscrit c'est 2, etc ... )
//Pour les champs, tu renomme ca comme tu veut
//La variable $id est définie dans chaque script, grace à une session que tu creer quand le membre se connecte en tappant son mot de passe

// membres est la table ou tu stock les infos sur tes membres

$array=mysql_fetch_array(mysql_query("SELECT `timestampOR`,`timestampMANA`,`habitations`,`mana`,`or`,`tour` FROM membres WHERE `id`='$id'");
$timestampBDDor = $array['timestampOR'];
$timestampBDDmana = $array['timestampMANA'];
$habitationsBDD = $array['habitations'];
$manaBDD = $array['mana'];
$orBDD = $array['or'];
$tour = $array['tour']; //Nbr de tours  écoulées, pour le calcul du mana

//Ok, maintenant, on va definirs les prix, et le voir si le membres peut gagner des ressources, il a pas le max d'habitations
$maxhabitations = '5000';
//Definir combien de paysans donne une habitation
$paysanshabit = '20';
//Nombre de mana gagnée en un tour
$managagne = '500';
//Nombre d'or payer par un paysan pur les impots
$impots = '50';
//Or produit par un paysan en un tour
$orproduit = '50';

//Nombre de secondes en 30 minutes : 60*30 = 1800 secondes
//Nombre de secondes en 1 heure : 60*60 = 3600 secondes

//Ok, maintenant on va faire les verifs, voir si c'est le moment de faire un tour
//En premier lieu, pour les ressources :
if($newtimestamp<=$timestampBDDor&&$habitationsBDD<=$maxhabitations) { //On verifie que c'est le moment de faire un tour, et que le max d'habit n'est pas atteint.
//On fait le rajout :
$or = (($habitationsBDD*$paysanshabit)*$orproduit) //Le calcul d'or produit durant ce tour
$or = ($or+$orBDD); //Le total d'or qu'a le membre
$or = $or-$impots; //On enleve les impots que doivent payer les paysans
//On va calculer quand va se dérouler le prochain tour (temps du dernier + 1800 secondes (30 mins)
$futurtour = $timestampBDD+1800;

//On a donc calculer l'or que possède désormais le membre, on va donc UPDATER l'or qu'il possède et le temps du prochain tour ($futurtour)
mysql_query("UPDATE membres SET `or`='$or',`timestampOR`='$futurtour' WHERE `id`='$id'");

                                                                       };

//On fait la même chose pour la mana
if($newtimestamp<=$timestampBDDmana) {
//On fait le calcul du mana qu'il à gagner
$managagner = $tour*10; //En effet, il en gagne 10 en plus chaque tour, donc au 2eme tour ca fait 20, soit 2*10
$mana = $manaBDD+$managagner;

//On calcul quand sera le prochain tour ( temps du dernier tour + 3600 secondes ( 1h)
$futurtour = $timestampBDD+3600;

//On UPDATE gaillement
mysql_query("UPDATE membres SET `mana`='$mana',`timestampMANA`='$futurtour' WHERE `id`='$id'");
                                     };

?>


Si tu as une question, vas y Wink

Ce script est tres basique et pas optimisé, j'y suis aller au ralenti pour que tu comprennes Wink