Levelup D'un Familier
#1
Posté 20 août 2005 - 10:01
merci à quiconque souhaiterai m'aider pour ce problème
#2
Posté 20 août 2005 - 14:24
La soluce employée généralement est de faire évoluer le familier avec le PJ (ou seul suivant le temps passé ou des actions) via des scripts et dialogues.
Maintenant, quelqu'un a peut-être trouvé mieux.
#3
Posté 20 août 2005 - 21:00
désolé je se sais pas te répondre.
J'ai néanmoins quelque chose à dire- mais-je me trompe peut-être- il me semble qu'il existe déjà un mos pour les familiers...
Quelqu'un de plus compétent pour infirmer ou confirmer ?
------------------------------------------------
Vous aussi, ne rejoignez pas les Fervents Partisans de l'Immuabilité Avatarienne!
----------------
Il n'est pas rare d'être meilleur que le premier et moins bon que le troisième.
#4
Posté 21 août 2005 - 10:37
j'ai une autre question concernant tjrs le levelup, lorsque l'on applique un niveau supplémentaire à la créature ( Setlevel CurrentLevel, avec Set CurrentLevel to (player->GetLevel) evidemment accompagné d'une reconnaissance à chaque évolution du PJ, If ( CurrentLevel < (player->GetLevel) ) ... ou du moins tous s'y rapprochant ), est-ce que les cara de la créature montent aussi ? ou faut-il les faire monter par un script ?
#5
Posté 21 août 2005 - 14:25
Bon courage !...
Je viens peut-être de dire une connerie ! En fait, si la case 'auto calculate state' (un truc dans ce genre) est cochée, peut être que les caracts progressent avec la progression de niveau !?
Donc je ne sais pas !
Donc je ferai peut-être mieux de supprimer ce message !
Mais bon, je le laisse, ça te feras de la lecture.
Modifié par a3jv, 21 août 2005 - 14:31.
#6
Posté 21 août 2005 - 15:39
pour finir je crois que je vais bidouiller avec une randomize un fois que ya un levelup, ainsi yora des valeurs supplémentaires aléatoires pour les cara. mais il reste un pb : si le PJ est au lvl33 (ce n'est qu'un exemple) et que la créature apparait directement au lvl33, ses cara restent inchangées. dans cette situation, la randomize ne sert à rien vu qu'il y à 33 niveaux à rattraper. j'ai pensé à qqchose, mais j'ignore s'il y à un équivalent du Do-Loop-While dans le language du Tescs, si oui, je saurai peut etre travailler sur la différence du lvl du PJ avec celui de la créature et ainsi obtenir une initialisation des cara plus correcte.
Modifié par Ptolémis, 21 août 2005 - 15:40.
#7
Posté 21 août 2005 - 16:52
Sinon, il n'y a pas de while, juste des scripts qui s'exécutent à chaque frame.
une idée comme ça:
quand on demande un level-up, mettre une variable montéeDeNiveau du familier à 1
et dans le script du familier
si montéeDeNiveau = 1, si niveau inférieur à celui du PJ, monter d'un niveau (avec montée de caracs) sinon mettre montéeDeNiveau à 0
EDIT:
Pardon, je dis une connerie, y'a un while,
While ( condition ) ; instructions à exécuter EndWhile
La différence, c'est que l'utiliser peut "geler" l'écran tant que la montée de niveau n'est pas finie. Mais dans ce cas, comme ça n'arrive que rarement et que ça ne devrait pas être trop long, ça devrait suffire.
Modifié par Nwart, 21 août 2005 - 17:14.
#8
Posté 21 août 2005 - 17:16
Modifié par Ptolémis, 21 août 2005 - 17:22.
#9
Posté 21 août 2005 - 17:25
#10
Posté 21 août 2005 - 18:55
Citation
set FAM_LevelOnce to ( player->GetLevel - GetLevel )
MessageBox "Votre familier vient de monter %g niveau(x).", FAM_LevelOnce
endif
if ( FAM_LevelOnce > 0 )
Set FAM_CurrentLevel to ( GetLevel + 1 )
SetLevel to FAM_CurrentLevel
Sinon, j'ai pris un mal de tête à vérifier si pas trop de 'if' 'elseif' dans la boucle if/endif mais ça a l'air bon.
Modifié par a3jv, 21 août 2005 - 18:55.
#11
Posté 22 août 2005 - 11:16
EDIT: la correction avec les parenthèses et le 'to' ne changent rien. j'ai cherché à alleger le script en supprimant le :
if ( GetLevel < ( player->GetLevel ) ) set FAM_LevelOnce to ( ( player->GetLevel ) - GetLevel ) MessageBox "Votre familier vient de monter %g niveau(x).", FAM_LevelOnce endifet en le remplaçant par un :
if ( GetLevel < player->GetLevel ) set PCLevel to ( player->GetLevel ) MessageBox "Votre familier vient d'atteindre le niveau %g." PCLevel; en variable locale endifet ça donne ce morceau, lorsque button == 1, càd lorsque l'on désire consulter les caracs :
if ( GetLevel < player->GetLevel ) set PCLevel to ( player->GetLevel ) MessageBox "Votre familier vient d'atteindre le niveau %g." PCLevel endif While ( GetLevel < player->GetLevel ) Set FAM_CurrentLevel to ( GetLevel + 1 ) SetLevel to FAM_CurrentLevel Set Rnd to Random 6 if ( Rnd == 0 ) modhealth 3 ....... endif endWhile set fam_health to GetHealth set fam_strength to GetStrength set fam_speed to GetSpeed set fam_endurance to GetEndurance set fam_intelligence to GetIntelligence set fam_agility to GetAgility MessageBox "......" set MsgState to 0dans le jeu, lorsque button == 1, le script saute tout de suite au messagebox, "...." qui affiche les caracs mais pas moyen de démarrer la boucle du levelup... je soupçonne donc la condition if ( GetLevel < player->GetLevel ) de ne pas être correcte
Modifié par Ptolémis, 22 août 2005 - 12:12.
#12
Posté 22 août 2005 - 16:53
- j'ai viré la globale FAM_CurrentLevel qui ne sert à rien en dehors du script alors je l'ai passée en locale, FAM_level (tout simplement)
- j'ai viré le While/endWhile (hé ouais, j'ai planté l'ordi avc ) et j'ai procédé avec une imbrication de if/else/endif et un renvoi en debut de script pour l'évolution des caracs.
Set FAM_level to ( GetLevel + 1 ) SetLevel (to) FAM_level; avec ou sans le 'to', il se passe riend'ailleur j'ai lu ça dans les contents : "Level (only works with Set and Get)" alors bon, je continu de ramer
Modifié par Ptolémis, 22 août 2005 - 16:55.
#13
Posté 22 août 2005 - 21:16
if ((player->getLevel) > 30) setLevel 30 elseif ((player->getLevel) > 20) setLevel 20 elseif ((player->getLevel) > 10) setLevel 10 endif
Mais ce serait assez pénible à faire si on veut plus détaillé que ça. (Là, je me contente des niveaux 11 à 31+, avec le familier qui gagne un gros boost tout les dix niveaux et rien entre-temps.)
D'un autre côté, je suis pas convaincu que le niveau serve à grand'chose vu que les caracs sont réglées à part. Enfin, j'ai pas beaucoup scripté de bestioles, peut-être n'ont-elles pas de fonction SetCombat, SetMagic et SetStealth pour leur compétences à elles.
En français, il n'y a jamais, jamais, JAMAIS, J-A-M-A-I-S, de cédille à un 'c' devant un 'e', un 'i' ou un 'y'. Jamais. Sans aucune exception. Pas la moindre. Zéro. Cédille devant e, i ou y = faute. Un point, c'est tout, c'est comme ça, ça a toujours été comme ça, et ça le sera toujours.
#14
Posté 23 août 2005 - 13:48
Set FAM_level to ( GetLevel + 1 ) SetLevel FAM_levelafin de la remplecer par :
Set FAM_level to FAM_level + 1qui est à présent plus utile. alors vu que j'ai commencé, j'ai été plus loin et mtn ça marche impec'
pour les interressés : (j'ai fini par virer la randomize)
Modifié par Ptolémis, 23 août 2005 - 13:56.
0 utilisateur(s) li(sen)t ce sujet
0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)