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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Prise de conscience sur les BluePrint (moules)

Par Etienne le 5/11/2002 à 9:34:17 (#2483893)

bonjour

J'utilise abondament dans mon module l'événement onEnter (et onExit) de la zone afin de générer les personnages en nombre aléatoire. Ils ont un parcours afin de faire une petite balade et un dialogue avec quelques tirage aléatoire.

Dans les maisons par exemple j'utilise
domestiques : al_domestique
enfant : al_enfant
Epouse : al_epouse
Epoux : al_epous
Majordome : al_majordome (pour les manoires surtout)
...etc...

dans les hopitaux, ladrerie et Lazaret, j'ai des pretres, medecin, soignantes et malades.

MAis je me suis rendu compte que ce beau monde tente d'aller d'une zone à une autre s'il y a le tag

WP_al_[nom]_0n

Et je puis par conséquent avoir plusieurs WP_al_[nom]_01
dans des zones différentes.

Ce qui veux dire que je vais devoir faire plusieurs modèles (BluePrint) un pour chaque zone afin d'avoir un TAG différents. puisque la création se fait par le Blueprint.

C'est là qu'interviens une question :
à moins qu'il soit possible de changer le TAG d'un objet créer par son BluePrint en dynamique dans le script. :eureka:

Et sinon encore du boulot, rajouter autant de blueprint qu'il y a de zone l'utilisant.

A plus tous

Par Tynril le 5/11/2002 à 14:09:43 (#2485851)

Vire tous tes waypoints et met un RandomWalk sur le OnSpawn de tes PNJs... Parce qu'il n'est pas possible de changer le tag d'un PNJ par script.

Bonne idée

Par Etienne le 5/11/2002 à 14:15:32 (#2485897)

Et bien ce n'est pas une mauvaise idée ça. J'utiliserais les WayPoints pour des personnages plus ciblé.

Merci

Par eMRaistlin le 5/11/2002 à 14:22:46 (#2485960)

Ouaipp.. pas possible... la seule chose a faire, ce serait de transformer des strings pour les utiliser apres...

un peu comme un decode (pour ceux qui connaissent SQL) :

tu fais des tags preformatés, genre ceux que tu decris, puis tu fais des operations dessus


FindSubString

GetStringByStrRef

GetStringLeft

GetStringLength

GetStringLowerCase

GetStringRight

GetStringUpperCase

GetSubString


genre : tu prends les 3 derniers caracteres, tu les transforme en chiffres (StringToInt) puis tu fais des operations, puis tu fais l'inverse (IntToString) et tu concatene avec les tags tronqués.

genre :



object oObjectATester = Get_XXXX();
string ancienTag = GeTag(oObjectATester);
int nValeurAChanger = StringToInt(GetStringRight(ancienTag,3));

int newValeur = //operations diverses sur nValeurAChanger

string newTag = (GetStringLeft(ancienTag , GetStringLength-3)+IntToString(newValeur );


Mais bon... t'as interet a etre MEGA rigoureux... perso, je l'utilise tres peu... mais bon... si ca peut te servir...

Par Tynril le 5/11/2002 à 16:45:40 (#2487115)

C'est le genre de truc à tout faire péter en se gourant d'un dizième quelque part.

Perso je serais plus pour les déplacements vectoriels, si les mouvements doivent être précis, le tout décrit en OnSpawn.

Par eMRaistlin le 5/11/2002 à 17:09:40 (#2487396)

C'est le genre de truc à tout faire péter en se gourant d'un dizième quelque part.


Je confirme a nouveau : MEGA MEGA rigoureux... sinon, ca vaut pas le coup...

Par Jedaï le 5/11/2002 à 19:53:48 (#2489229)

Attendez, je vois pas où est le changement de tag, je vois que des manipulations de strings. :confus:

Sinon, vu que j'ai fait une bibliothèque entière avec presque que de la manipulation de string (pour des tokens vraiment personnalisés et des tokens dans les SpeakString() :) ), je suis tout prêt à faire ce genre de choses.


PS : Pour ceusses que ça intéresse, ma bibliothèque est sur NWN-Fr, elle permet de mettre des trucs du genre "Bonjour , votre ami est à côté de , je vous sert <=nain:<=f:quoi comme alcool/un verre d'eau>/une bière> ?" et également de créer des tokens dynamiques du style pour les dialogues très facilement. :)

Par Etienne le 5/11/2002 à 23:00:19 (#2491117)

Provient du message de Tynril
Vire tous tes waypoints et met un RandomWalk sur le OnSpawn de tes PNJs... Parce qu'il n'est pas possible de changer le tag d'un PNJ par script.


Au fait c'est quoi un RandomWalk.

Par eMRaistlin le 5/11/2002 à 23:33:17 (#2491368)

Au fait c'est quoi un RandomWalk.

une fonction coninclude.

C'est pas une fonction de base, mais c'est une fonction qui existe dans les script bIOWare, que tu peut utiliser en faisant le bon include (sorry, je connais pas les noms des script BIOWARE par coeur ^^)

Par LeProctophantasmiste le 5/11/2002 à 23:39:34 (#2491415)

ActionRandomWalk(): le PNJ va déambuler au hazard, à intervalle de temps régulier (bref) un point est choisi peu éloigné de l'endroit où le PNJ se trouve puis se dernier s'y rend . Un petit truc avec cette fonction, al dernière fois que j'ai regardé, la marche elle même était bien mise dans la queue mais pas la détermination de la destination:


// le PNJ est dans Area01 et le waypoint "WP_02" dans Area02
ActionMoveToObject(GetWaypointByTag("WP_02"));
ActionRandomWalk();


Le premier point, sensé être peu éloigné, ayant été déterminé avant que le PNJ ne change de zone, ce script crée un effet étrange: le PNJ va aller dans Area02 puis se téléporter dans Area01 et y rester pour y déambuler.

Par Jedaï le 6/11/2002 à 14:46:40 (#2495715)

Alors y a-t-il de véritable possibilités de modifier les tags ? :confus:

Par eMRaistlin le 6/11/2002 à 14:50:46 (#2495758)

Ouaipp.. pas possible...


Je reconfirme : CE N'EST PAS POSSIBLE... mais quel interet de les modifier si tu peut les exploiter et les interpreter ?

Par Jedaï le 6/11/2002 à 15:06:45 (#2495897)

Eh bien tu peux créer des objets à partir du même ResRef et les différencier selon quand, où et comment tu les as créés, comme Etienne aurait voulu le faire par exemple.
Dommage que ça soit pas possible à la création... :(

Par eMRaistlin le 6/11/2002 à 15:20:42 (#2496037)

Ben, tout ca, c'est faisable avec des fonction include a creer en custom qui feront de l'interpretation... mais bon... ca demande du boulot, mais c'est faisable...

exemple a 2 balles :



string GetTagByHour(object oObject)
{
string sFirstTag = GetTag(oObject);
int nNewValeur;

if (GetIsNight())
{
nNewValeur = 003; //ou bien tu envoi une autre requete de selection...
}

if (GetIsDay())
{
nNewValeur = 500; //ou bien tu envoi une autre requete de selection...
}
string sNewTag = (GetStringLeft(sFirstTag , GetStringLength(sFirstTag)-3)+IntToString(nNewValeur );
return sNewTag;
}


puis tu utilise


string GetTagByHour(object oObject)


dans ton script...

Par Jedaï le 6/11/2002 à 15:50:12 (#2496321)

Ouais, je vois... mais je pensais pas vraiment à ça, parce qu'avec cette méthode, le tag de l'objet reste le même, tu peux pas faire ce qu'Etienne voulait par exemple sauf à modifier WalkWaypoints(), par ailleurs, si par exemple tu fait une distinction par rapport à la zone, il va falloir stocker ce nouveau tag avant de pouvoir l'utiliser parce que sinon, il suffirait que l'objet change de zone pour que le tag obtenu par cette méthode change.
De plus tu ne peux récupérer l'objet par cet ersatz de tag que si tu l'enregistre comme flag quelque part (sur le module par exemple). :monstre:
Non, ce qu'il faudrait c'est que Bioware nous ponde une fonction pour changer le tag dynamiquement ou au moins qu'on puisse le spécifier à la création de l'objet. Enfin on peut toujours réver...:rolleyes:

JOL Archives 1.0.1
@ JOL / JeuxOnLine