Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

[Script-Reflexion] Système d'XP, et niveaux.

Par AdrienCoeurFeu le 20/1/2003 à 8:55:29 (#3058156)

Puisqu'on parle du système d'XP, j'ai bien étudié (2 jours durant) le système T4C, et j'en ai sorti le meilleur.

Ca se présente en plusieurs colonnes d'un tableau, qui comporte:

-level du monstre:

De 1 à 65535, selon les gouts.

-Vie/force du monstre:

J'ai établi que l'équation qui permettait de gérer au mieux ceci est la suivante: (niveau du monstre * 15) + 10

Ex: Niveau 1: 25, Niveau 2:40, Niveau 3, 55
Ca dépend en fait à combien on fait commencer nous joueurs, au niveau des statistiques.

-Degats mini/maxi:

Sous T4C, j'ai pu voir que les dégats mini étaient égaux au level, et les dégats maxi égaux à 2* le level (cette regle générale fait exeption pour certains monstres de type "boss").

Pour ultima online, il est conseillé de diviser ces deux valeurs par deux (en fait cela dépend des statistiques pouvant être atteintes par votre personnage).

-Xp donné

Malgré mes efforts pour obtenir une fonction non-proportionelle, j'ai vu que le meilleur moyen était de faire cela d'une manière précise:

On prend un nombre d'experience fixe (100 par exemple)

Si la créature possède le meme niveau que le joueur, il gagne 100 d'experience.

Si la créature possède un certain nombre de niveaux de moins, on fait: 100 / (("niveau du joueur" - "niveau de la créature")*1,5)
Exemple: pour un joueur de niveau 34 et un monstre de niveau 32, on obtient:

100 / ((34 - 32)*1,5) = 100 / 3 = 66

Si la créature possède un certain nombre de niveaux de plus, on fait: 100 * ("niveau de la créature" - "niveau du joueur")
Exemple: pour un joueur de niveau 34 et un monstre de niveau 35, on obtient:

100 * ((35 - 34)*1,5) = 100 * 1,5 = 150

-Monstres a tuer du meme level pour obtenir le level (exemple: 56 monstres lv 2, pour monter lv 2).

Pour ma part, j'ai fait ainsi: ("niveau du joueur actuel"*5) +20

Donc pour un joueur de niveau 5, il faudra qu'il tue 5*5+10 créatures de niveau 5, donc 45 créatures de niveau 5.

-Xp à faire pour le level (valeur arbitraire, en multipliant les XP donnés par les monstres à tuer pour le level).
On prend la valeur arbitraire donnée a un monstre de points d'xp (100) on multiplie par le nombre de créatures à tuer pour le niveau, et ca donne le nombre d'xp à faire pour le niveau.

Exemple: pour le niveau 5: 45 créatures à tuer, donc 4500 XP à faire.


Grâce à ce système, plus on s'attaque à des monstres puissants, plus notre XP monte vite, et inversement, plus on s'attaque à des monstres faibles, plus il monte lentement.

Voici un tableau résumant les informations de ci dessus. (level tuer = monstres a tuer pour le level, et level XP = nombre d'xp à faire pour le level)

LevelVie/strDegats min-maxLevel tuerLevel XP
12512151500
24024202000
35536252500
47048303000
585510353500
6100612404000
7115714454500
8130816505000
9145918555500
101601020606000
111751122656500
121901224707000
132051326757500
142201428808000
152351530858500
162501632909000

Par rituel le 20/1/2003 à 12:57:01 (#3059536)

Mon système ne fonctionne pas du tout comme ca, m'enfin j'en dis pas plus car ce script me tiens vraiment à coeur car tout mon shard repose dessus et c'est ce qui le rend unique.

Néamnoins si tu a des soucis quant au développement de ton script hésite pas à poser des questions je reste ouvert :ange:

Par AdrienCoeurFeu le 21/1/2003 à 18:49:23 (#3070018)

Voila le système, le seul truc chiant serait un bug lorsque le tag.xpniveau est à zero, mais je ne suis pas sur...

Chaque joueur devra être équipé de la memory, et chaque monstre donnant de l'xp devra posséder un TEVENTS=e_event_experience, ainsi qu'un tag.niveau= dans son on=@create.
Il me reste encore à faire un petit menu en gumps pour la répartition des skills et stats. Ca prendra pas plus de 2heures ;).

Le système est efficace car rapide, bien équilibré (tout dépend de comment vous équilibrerez vos monstres), configurable, mais là il fonctionne plutot pour un système comportant une bonne centaine de niveaux.

_____
[ITEMDEF i_mem_experience]
ID=i_memory
TYPE=t_eq_script
NAME=Memoire experience

ON=@Create
tag.xpniveau=1500
tag.niveau=1
tag.skills=0
tag.stats=0

[EVENTS e_event_experience]
ON=@Death
IF (<eval >) > (<eval >)

IF (<eval (<eval > + (- <eval >))*150>) > (<eval >)
src.act.findid.i_mem_experience.tag.niveau=<eval > + 1
SRC.sysmessage Vous etes desormais niveau <eval >.

SRC.act.findid.i_mem.experience.tag.xpniveau=<eval <eval <eval >*5>+10> + (- ((<eval (<eval > + (- <eval >))*150>) + (- <eval >) ) )

IF !(<eval >)
src.act.findid.i_mem_experience.tag.skills=15
ELSE
src.act.findid.i_mem_experience.tag.skills=<eval > + 15
ENDIF

IF !(<eval >)
src.act.findid.i_mem_experience.tag.stats=5
ELSE
src.act.findid.i_mem_experience.tag.stats=<eval > + 15
ENDIF

ELSE
src.act.findid.i_mem_experience.tag.xpniveau=<eval > + (- <eval (<eval > + (- <eval >))*150>)
src.sysmessage Vous recevez <eval (<eval > + (- <eval >))*150> points d'experience.
ENDIF
RETURN 0
ENDIF



IF (<eval >) = (<eval >)

IF 100 > (<eval >)
src.act.findid.i_mem_experience.tag.niveau=<eval > + 1
SRC.sysmessage Vous etes desormais niveau <eval >.

SRC.act.findid.i_mem.experience.tag.xpniveau=<eval <eval <eval >*5>+10> + (- (100 + (- <eval >) ) )

IF !(<eval >)
src.act.findid.i_mem_experience.tag.skills=15
ELSE
src.act.findid.i_mem_experience.tag.skills=<eval > + 15
ENDIF

IF !(<eval >)
src.act.findid.i_mem_experience.tag.stats=5
ELSE
src.act.findid.i_mem_experience.tag.stats=<eval > + 15
ENDIF

ELSE
src.act.findid.i_mem_experience.tag.xpniveau=<eval > + (- 100)
src.sysmessage Vous recevez 100 points d'experience.
ENDIF
RETURN 0
ENDIF


IF (<eval >) < (<eval >)

IF (<eval 1000/<eval (<eval > + (- <eval >))*15>>) > (<eval >)
src.act.findid.i_mem_experience.tag.niveau=<eval > + 1
SRC.sysmessage Vous etes desormais niveau <eval >.

SRC.act.findid.i_mem.experience.tag.xpniveau=<eval <eval <eval >*5>+10> + (- (<eval 1000/<eval (<eval > + (- <eval >))*15>> + (- <eval >) ) )

IF !(<eval >)
src.act.findid.i_mem_experience.tag.skills=15
ELSE
src.act.findid.i_mem_experience.tag.skills=<eval > + 15
ENDIF

IF !(<eval >)
src.act.findid.i_mem_experience.tag.stats=5
ELSE
src.act.findid.i_mem_experience.tag.stats=<eval > + 15
ENDIF

ELSE
src.act.findid.i_mem_experience.tag.xpniveau=<eval > + (- <eval 1000/<eval (<eval > + (- <eval >))*15>>)
src.sysmessage Vous recevez <eval 1000/<eval (<eval > + (- <eval >))*15>> points d'experience.
ENDIF
RETURN 0
ENDIF

Par rituel le 21/1/2003 à 19:43:56 (#3070500)

Ca à l'air de se tenir, mais ce n'est pas du tout le système d'Xp de T4C, si tu cherches un système à la T4C like je peux te donner des infos dessus (J'y joue depuis la béta)

Par AdrienCoeurFeu le 21/1/2003 à 20:06:06 (#3070663)

Je connais le système d'xp de T4C, vu mon level 144 2ème renaissance. :rolleyes: .
Ca ne ressemble pas à un système T4Clike, et pourtant ca en est un. Je me suis servi de toutes les informations quej 'avais, j'ai fait des divisions, des statistiques, pour obtenir un truc théorique. Si l'équilibrage des monstres est fait en respectant mon tableau, alors ce sera un pur T4C like. Mon etude était surtout sur le nombre de monstres du meme niveau que le joueur à tuer pour faire le niveau, la force/vie/dégats des monstres, ainsi qu'un système de gain fiable, pas compliqué et pouvant servir dans l'abstrait. C'est chose faite.

Edit: Attention il est buggé, je suis en cours de débuggage ^^

JOL Archives 1.0.1
@ JOL / JeuxOnLine