Oui ok tu peux avoir une fonction qui multiplie toutes tes différentes sources d'XP, c'est sûr. ceci dit si tu veux que buter un mob rapporte 2x plus d'XP que découvrir une zone tu devra quand même l'éditer à la main. Avec une base de données et un cache APC par dessus tu pourrais te faire une admin pour ça mais je crois qu'il n'y a rien de plus chiant que de coder des panneaux d'admin.
Sinon oui, merci pour le partage.
Moi j'ai pris l'habitude de générer du code, c'est le plus simple je trouve. Et l'avantage c'est que je peux utiliser un bête script PHP pour générer du code erlang, tout est permis .
Je m'explique : pour savoir combien d'XP rapporte telle action il suffit de charger la classe concernée comme tu le fais. Mais cette classe, plutot que modifier tes "centaines de lignes" automatiquement grâce à une fonction, contiendra des constantes déjà modifiées, grâce au code suivant :
Bien sur ici je crée des constantes, mais tu peux très bien créer des fonctions de la même maniere. par exemple, on peut imaginer des fonctions qui prennent en entrée le lvl du joueur et renvoient l'XP gagnée déduite.
Du coup dans ton jeu tu peux utiliser
Ensuite tu peux préferer avoir des array pour les fonctionnalités qu'ils permettent, mais tu peux également générer ces array grâce à la fonction var_export.
Sinon oui, merci pour le partage.
Moi j'ai pris l'habitude de générer du code, c'est le plus simple je trouve. Et l'avantage c'est que je peux utiliser un bête script PHP pour générer du code erlang, tout est permis .
Je m'explique : pour savoir combien d'XP rapporte telle action il suffit de charger la classe concernée comme tu le fais. Mais cette classe, plutot que modifier tes "centaines de lignes" automatiquement grâce à une fonction, contiendra des constantes déjà modifiées, grâce au code suivant :
<?php
function wrap_class ($name,$code) {
return "class $name { $code }";
}
$base_consts = [
'xp_per_mob' => 42,
'xp_per_zone' => 10,
'xp_per_pkill' => 100
];
$xp_factor = function($x) { return $x*2 }; // ici par exemple on définit un ratio d'XP
$consts = array_map($xp_factor,$base_consts);
$code = [];
foreach($conts as $k => $v) {
$code[] = "const $k = $v;";
}
$class = wrap_class('XP_Sources',implode('',$code));
file_put_contents('XP_Sources.php',"<?php $class\n");
Bien sur ici je crée des constantes, mais tu peux très bien créer des fonctions de la même maniere. par exemple, on peut imaginer des fonctions qui prennent en entrée le lvl du joueur et renvoient l'XP gagnée déduite.
Du coup dans ton jeu tu peux utiliser
Xp_Sources::xp_per_mob
, c'est plus clean à lire que d'aller pécho des trucs dans un array.Ensuite tu peux préferer avoir des array pour les fonctionnalités qu'ils permettent, mais tu peux également générer ces array grâce à la fonction var_export.