JeuWeb - Crée ton jeu par navigateur
Meilleur solution ? (attribuer ressources) - 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 : Meilleur solution ? (attribuer ressources) (/showthread.php?tid=1168)

Pages : 1 2 3 4


RE: Meilleur solution ? (attribuer ressources) - Mysterarts - 10-05-2007

Perso j'utilise pas cette technique, on peut imaginer effectivement qu'on économise en requête, mais en réalité, à l'insertion de l'entrée, même si c'est automatique, il y a bien une requête de fait pour remplir les valeurs par defaut... Et puis j'aime mieux tout gérer dans mon script d'inscription (surtout que ce genre de données (ressources de bases, nivo de bases...etc...) sont toutes stocké dans un fichier à part, pour centralisé toutes les infos modifiables pendant le développement ou la mise à nivo des codes...


RE: Meilleur solution ? (attribuer ressources) - Harparine - 10-05-2007

J'aurais moi aussi tendance à faire comme Mysterarts : centraliser la création d'un perso et l'initialization de son profil en un seul et même script. Mais ta technique est surement un poil plus rapide, Kassak : c'est juste une question de goût et d'organisation Wink


RE: Meilleur solution ? (attribuer ressources) - HotKill - 11-05-2007

Ben perso c'est ce que j'ai fais, via le formulaire
ça reste très simple et sur (selon moi)

Quand qqun s'inscrit,

pseudo, pass, pass confirmé, email, et en invisible
il reçoit bouffe, bois, or, pierre, energie
une ferme, une maison...

le reste c'est à 0

Camp de bucheron, mine d'or, mine de pierre, troll, magicien, ogre, golem, orc.

ensuite juste après s'être inscrit, il est redirigé sur la page d'accueil ou la il pourra voir la page avec c'est ressources
ou la page batiments ou unités...

La manière de donner les ressources etc en fait je pense que elle importe peut, une fois que vous arriver à faire en sorte de mettre ce genre d'informations dans la base de donnée (exemple : Users)
ben vous avez déjà bien avancé votre jeu Big Grin

La par exemple je pense intêgrer des items (épées, armurs, casques, gants)

et je pense faire en sorte que le joueur doit être rank2 pour pouvoir construire une forge, placer un colon pour commencer les recherches...

une fois la premiere recherche à 100% le joueur aurait un casque et petit à petit les autres items...

ou autre technique, imaginons que le joueur part en découverte, qu'il tombe sur un monstre "npc" et que ce monstre lui drop "x" item :wowowow:

la ça dépend du jeu que vous voulez

soit le joueur doit construire petit à petit des batiments et devenir + fort pour accêder à des objets préçis, soit vous faite en sorte que il puisse en trouver aléatoirement :good:

perso le problême que j'avais c'était de me dire, est ce que je fait en sorte que le joueur une fois inscrit voit :

Nourriture : 5000
Bois : 5000
or : 2500
pierre : 2500
energie : 100/100
ferme : 1
camp(s) de bucheron : 0
mine(s) d'or : 0
mine(s) de pierre : 0
etc etc

ou alors sans mettre les infos batiments (seulement quand le joueur aurait accès à ses unités ou batiments)

Nourriture : 5000
Bois : 5000
or : 2500
pierre : 2500
energie : 100/100
ferme : 1
camp(s) de bucheron :
mine(s) d'or :
mine(s) de pierre :
etc etc

J'ai longuement hésiter et je préfère voir les 0 (et je pense que le joueur aussi) Big Grin


RE: Meilleur solution ? (attribuer ressources) - zneman - 11-05-2007

Je n'ai pas lu toutes les réponses mais moi ce que je fais, lors de l'inscription, quand j'enregistre el membre, je lui créé en plus un champ à son pseudo dans mes autres tables et je lui rajoute ce que je veux Tongue

Ainsi, lors de l'inscription, le membre recoit donc X d'or et de mana Smile
J'espère avoir repondu a ta question (bien que je pense le contraire :heuuuSmile


RE: Meilleur solution ? (attribuer ressources) - Maegia - 11-05-2007

Citation :pseudo, pass, pass confirmé, email, et en invisible
il reçoit bouffe, bois, or, pierre, energie
une ferme, une maison...

Hum... Tu me donneras le lien vers ton jeu, puisqu'avec une telle technique, tu permets à tes joueurs, via un petit formulaire détourné, de débuter le jeu avec autant de ressources qu'il le veut ! Wink


RE: Meilleur solution ? (attribuer ressources) - Aro - 11-05-2007

C'est juste, les mec qui voit le code de la page fait son propre formulaire, avec les même noms de champs et la même action et il se met autant de ressources qu'il veut...

Si ça change selon la classe, je te conseille des conditions en PHP ou un switch, l'avantage étant que le PHP ne se voit pas dans la page (c'est tout bête mais ça évite de se faire *** comme la di Maegia) ou si tous les joueurs reçoivent la même chose, mets une variable dans le script PHP de l'inscription qui ne change pas.


RE: Meilleur solution ? (attribuer ressources) - HotKill - 12-05-2007

J'ai ultra vérif et protégé Big Grin

par contre oui mon formulaire est visible et les champs hidden aussi donc ça dépend comment ils doivent faire pour se mettre autant de ressources qu'il veulent (mes pages sont protégées)

euh j'opte pour la variable Big Grin


RE: Meilleur solution ? (attribuer ressources) - Harparine - 12-05-2007

Je ne comprends pas trop ton dernier message mais les autres membres ont tout à fait raison de te mettre en garde : ton système n'est absolument pas fiable et, à moins d'attribuer directement les ressources avec PHP, tu risques d'avoir d'énormes problèmes (même en pensant l'avoir sécurisé et si tu le sécurise avec PHP, pourquoi ne fais-tu pas tes attributions de ressources sur ton script serveur ?).

En clair, ton traitement ressemble à quelque chose comme ça :
Code PHP :
<?php
//On récupère les infos depuis la page d'inscription
// visibles
$pseudo = $_POST['pseudo'];
if (
$_POST['pass'] == $_POST['passConfirme']) {
$pass = md5($_POST['pass']);
}
else {
// Arrêt du script et message d'erreur...
}
$email = $_POST['email'];
// invisibles mais sujettes à des modif venant de l'utilisateur ;)
$bouffe = $_POST['bouffe'];
$bois = $_POST['bois'];
//etc.

/* Puis insertion dans la base de données
... */

Alors qu'un truc comme ça serait beaucoup plus fiable (c'est le minimum car il faudrait vérifier l'email etc.) :

Code PHP :
<?php
//On récupère les infos depuis la page d'inscription
// visibles
$pseudo = $_POST['pseudo'];
if (
$_POST['pass'] == $_POST['passConfirme']) {
$pass = md5($_POST['pass']);
}
else {
// Arrêt du script et message d'erreur...
}
$email = $_POST['email'];
//---------------------
// on fait directement l'attribution des ressources, sans que l'utilisateur puisse les modifier
//---------------------
$bouffe = 500;
$bois = 300;
//etc.

/* Puis insertion dans la base de données
... */

Vaaaaalà ! Enfin, je réitère mon conseil : je pense que tes difficultés viennent d'une méconnaissance des bases du PHP et je ne peux que t'encourager à étudier un peu plus ce langage d'avant d'attaquer plus gros. Pour débuter, je peux te conseiller le Site du Zéro ou bien deux bouquins que j'ai lu récemment, dans deux styles différents : "PHP 5 avancé" (qui, malgré son titre, reprend les bases) et "PHP/MySQL avec Flash 8" (passionnant car il donne la même importance à PHP et Flash), tous deux édités chez Eyrolles. (non, je ne fais pas de pub, mais c'est bien expliqué Wink )


RE: Meilleur solution ? (attribuer ressources) - HotKill - 13-05-2007

Ben je code style nuked klan (j'ai appris bcp le php à trainer dans les fichiers nuked)

et j'avoue je bloque un peut tout simplement pour insêrer directement des ressources le plus sécurisé possible oui :heuuu:

Info importante, j'apprend petit à petit grace à des sites comme le site du zero, ou à trainer dans des fichiers et modifier rien que pour mes yeux des modules, etc etc etc... tous ce que je peux faire en direct pour mieux comprendre... :wowowow:

Voila l'inscription (enfin la partie qui la gêre)

Citation :function reg_screen()
{
global $nuked, $user, $language, $charte_agree;

if ($user)
{
redirect("index.php?file=User&op=edit_account", 0);
}

if ($nuked['inscription'] != "off")
{
if ($nuked['inscription_charte'] != "" && !isset($charte_agree))
{
$disclaimer = $nuked['inscription_charte'];
$disclaimer = BBcode($disclaimer);

echo "<br /><table style=\"margin-left: auto;margin-right: auto;text-align: left;\" width=\"90%\" cellspacing=\"1\" cellpadding=\"1\" border=\"0\">\n"
. "<tr><td align=\"center\"><big><b>" . _NEWUSERREGISTRATION . "</b></big></td></tr>\n"
. "<tr><td>&nbsp;</td></tr><tr><td>" . $disclaimer . "</td></tr></table>\n"
. "<form method=\"post\" action=\"index.php?file=User&amp;op=reg_screen\">\n"
. "<div style=\"text-align: center;\"><input type=\"hidden\" name=\"charte_agree\" value=\"1\" />\n"
. "<input type=\"submit\" value=\"" . _IAGREE . "\" />&nbsp;<input type=\"button\" value=\"" . _IDESAGREE . "\" onclick=\"javascript:history.back()\" /></div></form>\n";
}
else
{
echo "<script type=\"text/javascript\">\n"
."<!--\n"
. "\n"
."function trim(string)\n"
."{"
."return string.replace(/(^\s*)|(\s*$)/g,'');"
."}\n"
."\n"
. "function verifchamps()\n"
. "{\n"
. "pseudo = trim(document.getElementById('reg_pseudo').value);\n"
."\n"
. "if (pseudo.length < 3)\n"
. "{\n"
. "alert('" . _3TYPEMIN . "');\n"
. "return false;\n"
. "}\n";

if ($nuked['inscription'] != "mail")
{
echo "\n"
. "pass = trim(document.getElementById('reg_pass').value);\n"
. "if (pass.length < 4)\n"
. "{\n"
. "alert('" . _4TYPEMIN . "');\n"
. "return false;\n"
. "}\n"
. "\n"
. "if (document.getElementById('reg_pass').value != document.getElementById('conf_pass').value)\n"
. "{\n"
. "alert('" . _PASSFAILED . "');\n"
. "return false;\n"
. "}\n";
}

echo "if (document.getElementById('reg_mail').value.indexOf('@') == -1)\n"
. "{\n"
. "alert('" . _MAILFAILED . "');\n"
. "return false;\n"
. "}\n"
. "\n"
. "return true;\n"
. "}\n"
."\n"
. "// -->\n"
. "</script>\n";

echo "<br /><div style=\"text-align: center;\"><big><b>" . _NEWUSERREGISTRATION . "</b></big></div><br /><br />\n"
. "<form method=\"post\" action=\"index.php?file=User&amp;op=reg\" onsubmit=\"return verifchamps();\">\n"
. "<table style=\"margin-left: auto;margin-right: auto;text-align: left;\" border=\"0\" cellspacing=\"1\" cellpadding=\"3\">\n"
. "<tr><td><b>" . _NICK . " : </b></td><td><input id=\"reg_pseudo\" type=\"text\" name=\"pseudo\" size=\"30\" maxlength=\"30\" /> *</td></tr>\n";

if ($nuked['inscription'] != "mail")
{
echo "<tr><td><b>" . _PASSWORD . " : </b></td><td><input id=\"reg_pass\" type=\"password\" name=\"pass_reg\" size=\"10\" maxlength=\"15\" /> *</td></tr>\n"
. "<tr><td><b>" . _PASSWORD . " (" . _PASSCONFIRM . ") :&nbsp;</b></td><td><input id=\"conf_pass\" type=\"password\" name=\"pass_conf\" size=\"10\" maxlength=\"15\" /> *</td></tr>\n";
}

echo "<tr><td><b>" . _MAIL . " : </b></td><td><input id=\"reg_mail\" type=\"text\" name=\"mail\" size=\"30\" maxlength=\"80\" /> *</td></tr>\n"
. "<tr><td><b>" . _MAIL . " (" . _PUBLIC . ") : </b></td><td><input type=\"text\" name=\"email\" size=\"30\" maxlength=\"80\" /></td></tr>\n"
. "<tr><td colspan=\"2\">&nbsp;</td></tr>\n"
. "<tr><td colspan=\"2\" align=\"center\"><input type=\"submit\" value=\"" . _USERREGISTER . "\" /></td></tr>\n"
. "</table></form><br />\n";



RE: Meilleur solution ? (attribuer ressources) - Harparine - 14-05-2007

Ton script est absolument imbuvable...

Pour commencer, je crois que la meilleure façon d'apprendre le php est de suivre de A à Z des tutos comme ceux que l'on peut trouver sur le Site du Zéro, PHPDébutant, Développez.com, etc. ou bien, mieux, de lire un ouvrage sur le sujet... Et de ne pas passer à la partie suivante tant que l'on ne l'a pas compris tous les points du chapitre.

Ce n’est pas une bonne idée de reprendre ce code dont les sorties vers le navigateur sont saturées de Javascript pour faire quelque chose d’aussi simple qu’un formulaire d’inscription (et avant d'essayer de coder "style Nuked Klan", essaie de coder "style HotKill", avec toutes les erreurs mais aussi tous les enseignements que ça suppose). D'ailleurs (et c'est un avis personnel), tu n'apprendras rien en "trainant" dans les codes sources et encore moins en les survolant. L'apprentissage empirique de la programmation trouve très rapidement ses limites lorsque l'on est incapable d'apprendre les bases de façon correcte (j'ai étudié et je continue d'étudier les codes de vrais pros mais j'en tire du bénéfice parce que je les COMPRENDS et je crois que la compréhension du code est complètement essentielle lorsque l’on débute… Après aussi, d’ailleurs).

Le problème que tu rencontres possède une solution très simple que tu trouveras dans n'importe quel bon tuto (celui de m@teo21 sur le site du Zéro, par exemple) et si tu l'avais lu un minimum comme tu le prétends, tu ne poserais pas ce genre de questions. Beaucoup de personnes ici pourraient te répondre mais j'espère qu'elles ne le feront pas plus que moi car ce ne serait pas te rendre service que de te donner un code prémâché : je suis amateur et je n'ai pas les compétences pour me faire donneur de leçons mais je puis t'assurer que le développement d'un jeu en ligne demande du temps, du travail, de la rigueur et surtout, un esprit d'initiative.

L'esprit d'initiative, c'est ce qui te pousseras à aller chercher TOI MEME une solution lorsque tu rencontreras un problème (en tu en rencontreras) mais c’est aussi ce qui te permettras de continuer lorsque tu l'auras résolu : tu pourras continuer car tu auras COMPRIS la logique de ton application. A contrario, si tu persistes dans ta volonté de constituer un patchwork infâme de scripts récupérés ça et là, tu n'arriveras à rien et chaque nouveau "rajout" te créera de nouveaux problèmes (comme ici : tu ne comprends visiblement pas le quart de ton code et ça ne peut que t'induire en erreur).

Donc voilà ma réponse : "la solution existe et tu as les capacités de la trouver toi-même."

N'y vois là aucune méchanceté de ma part... Je pense sincèrement, et les "pros" du développement ne me contrediront sans doute pas sur ce point, qu'en agissant ainsi, je te donne le meilleur moyen de réaliser ce jeu que tu veux développer.

Bonne chance dans ton apprentissage de HTML, CSS et PHP (on peut vite arriver à du résultat si on croche dedans Wink ) !