Une petite question sur les POLYMORPH_TYPE_* Constants

Répondre
Partager Rechercher
Bon voila, c'est peut être tout simple, mais je sais pas comment faire :

Je voudrais pouvoir polymorpher mes joueurs en autre choses que les créatures associés a l'une de ces constantes... En gobelin par exemple...

Comment faire ? (je n'en ai aucune idée..... donc soyez techniques...)
Il te suffit de faire un hakpak avec un nouveau polymorph.2da, dans lequel tu va rajouter une entrée pour chaque appareance de ton apparence.2da


Apres, tu fais EffectPolymorph(ID_du_Fichier) (meme pas besoin de declarer la constante dans une bibliotheque : tu fais directement reference au n° de ligne du Polymorph.2da ^^)
bon je suis un nb du hackpak... et j'aurais donc juste quelques questions concernant ce cas précis :

- Le hackpack avec le .d2a les joueurs en ont ils besoin ? (c'est pas un décor ou un model... et sur ce mod persistant on essai d'éviter les fichiers a dl)

-Si je désire déclarer la constante pour avoir des scripts plus propres, je le fait où?

bon sinon pour mes autres questions non spécifiques a ce cas présent je vais aller fouiller les persistants... Merci a vous !
Citation :
- Le hackpack avec le .d2a les joueurs en ont ils besoin ? (c'est pas un décor ou un model... et sur ce mod persistant on essai d'éviter les fichiers a dl)
Honnetement, aucune idée... je pense que oui, vu que ca va declarer quelle apparence donner au nouvel objet in-game, mais rien n'est moins sur... et comme de toute facon j'ai un hakpak bien chargé, j'y ai inclu le 2da pour etre tranquille.
(mais de toute facon, allouer un hakpak a un module oblige tes joueur a posseder un fichier .hak dans le dossier eponyme quoi qu'il arrive... apres, si c'est une feuille notepad blanhe, ca bloque pas, mais il te faut au moins avoir un hak du meme nom que le hak sur le module.)

Citation :
-Si je désire déclarer la constante pour avoir des scripts plus propres, je le fait où?
Je te conseille de creer une bibliotheque generique pour ton module, dans laquelle tu rajoute tes constantes, sans modifier le nwscript (endroit ou sont stockées les variables de bioware)

Par exemple, tu fais un script bibliotheque (donc, sans void main ^^) ou tu met
Code PHP:

int POLYMORPH_TYPE_PLUTONIEN 135
(en t'arrangeant pour que la ligne 135 de ton polymorph.2da designe le plutonien ^^

Citation :
bon sinon pour mes autres questions non spécifiques a ce cas présent je vais aller fouiller les persistants... Merci a vous !
A ton service
Juste quelques précisions , un fichier 2da c'est quelques ko (de 1 à environ 400 pour les plus gros) donc une fois mis dans un hakpack, et compressé c'est à peu près négligeable.
Pour l'"include" de constante je suis d'accord avec eM, mais tant qu'à faire, utilises le compilateur de Torlack en mode -co, qui t'optimisera tout ça ( il reconnaît les "variables" constantes et les remplaces par leurs valeurs). Si tu veux être certain que l'optimisation aie lieu déclare les variables comme cela:
Code PHP:

const int 
const string 
et utilise le mode -ceo (extension). Il te suffira de faire un chercher remplacer pour obtenir un fichier que le compilateur de Bio pourra remplacer. Cette optimisation est vraiment importante, notamment si tu as des DelayCommand, AssignCommand ou ActionDoCommand dans tes scripts, et qui n'en a pas... De plus de façon généralle NWScript n'est pas super optimisé pour les variables globales (en fait les variables globales n'existent pas vraiment).
De plus c'est très pratique pour le débuggage, cela te permettra de laisser ton code de debug sans perte de performance car il sera supprimé à la compilation:
mode débug:
Code PHP:

const int DEBUG =1;
...
if(
DEBUGDebugAlert(...) ; 
mode jeu:
Code PHP:

const int DEBUG 0;
...
if(
DEBUGDebugAlert(...) ; 
le compilateur de Torlack verra que la condition du "if" ne peut jamais être remplie, puisque DEBUG est constamment faux, et supprimera donc tout le code concerné à la compilation... résultat, le même fichier compilé que si tu avais tout commenté à la main.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés