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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Cadran Solaire façon Bioware modifié

Par Kolaer le 2/11/2002 à 20:05:16 (#2464313)

Bonjour à tous.
Je ne sais pas si ce sera utile à quelqu'un, enfin je le mets la quand même.
J'ai adapté le cadran solaire fait par Bioware (Chapter 3, Beorunna's Well, derrière la maison de Aaren) afin qu'il n'indique l'heure que le jour (logique me direz vous), l'original indiquant aussi l'heure la nuit (pas logique me direz vous), et indique, la nuit, que la cadran solaire ne marche pas.

Il est construit de manière assez simple:

Sur le OnUsed du cadran solaire, il y a ça;

void main()
{
ActionStartConversation(OBJECT_SELF);
}

qui renvoie à une conversation en 24 points différents (une phrase différente pour chaque heure) indiquant l'heure au PJ, conditionée par les scripts suivants;
int StartingConditional()
{
if(GetTimeHour()==X)
{
return TRUE;
}
return FALSE;
}

où X varie de 0 à 23 (donc 24 heures au total).

La méthode la plus simple que j'ai trouvé, n'étant pas un scripteur confirmé (loin de là :rolleyes: ), c'est de simplement remplacer les phrases nocturnes par celle ci: Un cadran solaire ne marche pas la nuit ... vous devriez le savoir !

Voilà, en éspérant que ça serve. :)

[Edit] Pfff, une phote d'aurttografe dans le titre ... si un modérateur pouvait la corriger, j'en serais fort aise. ;)

Par Jedaï le 2/11/2002 à 20:58:46 (#2464710)

Super, mais qui chez Bioware a bien pu faire un truc aussi con...:enerve:
24 phrases et 24 scripts différents là où :
*un certain nombre de phrase sont inutiles puisqu'il fait nuit
*de toute façon il suffit de deux phrases, l'une indiquant l'heure et l'autre pour la nuit... :rasta:

En effet :

1 . Ooooh, un cadran solaire, voulez vous lire l'heure ?
==2 . Oui ! (script sur le Action Taken : )


void main()
{
SetCustomToken (666, IntToString(GetTimeHour()));
}

====3 . Crétin ! Comment voulez-vous utiliser un cadran solaire la nuit ! (script sur le Appear when : )

int StartingConditional()
{
return GetIsNight();
}

====4 . Il est heure !
==5 . Non [End Dialog]

Et voilà : 2 script et 5 phrases au lieu de 24 scripts et 24 phrases... :hardos:

Par Kolaer le 2/11/2002 à 21:25:22 (#2464902)

Héhé oui, il y a toujours moyen de faire plus simple.
Avec les 24 conversations (ou moins, une seule pour la nuit peut suffire, reste à savoir combien de temps dure la nuit et de quelle heure à quelle heure), on peut faire dire ce que l'on veut, de manière plus ou moins enjolivée: Il est midi, ou Il fait presque nuit ou Il fait à peine jour, etc en indiquant une heure vague.
On peut même mettre d'autres conditions (aveugle sous l'effet d'un sort ou dans une zone assombrie) qui renvoie à d'autres phrases clés. :)

Par Lydwin Belcombes le 2/11/2002 à 22:46:54 (#2465552)

Je trouve l'idée très bonne :)
Ce genre de personnalisation permet en effet de rendre plus vivant nos modules :merci:

Par Jedaï le 3/11/2002 à 0:03:27 (#2466004)

Conversation (sic) de cadran solaire par jedaï, revue et corrigée par les conseils de Kolaer :



Ooooh, un cadran solaire, voulez vous lire l'heure ?

==Oui ! (script sur le Action Taken : )


void main()
{
SetCustomToken (666, IntToString(GetTimeHour()));
}


====Désolé, dans une zone de Ténèbre, il est difficile d'utiliser un cadran solaire. (Appear When : )


int StartingConditional()
{
object oPC = GetPCSpeaker();
effect eDarkness = GetFirstEffect(oPC);

while (GetIsEffectValid(eDarkness) && GetEffectType(eDarkness) != EFFECT_TYPE_DARKNESS)
eDarkness = GetNextEffect(oPC);

//pour toutes les aires d'effet que je cree, je specifie des scripts OnEnter et OnExit
//qui respectivement mettent une variable sur le PC a TRUE et la supprime, de la sorte
//je controle si la personne se trouve dans l'aire d'effet, ici le nom de la variable
//est bIsInDarkness.
return (GetIsEffectValid(eDarkness) || GetLocalInt(oPC, "bIsInDarkness"));
}


====Désolé vous êtes aveugle, vous ne parvenez pas à déchiffrer l'heure ! (Appear when : )


int StartingConditional()
{
object oPC = GetPCSpeaker();
effect eBlindness = GetFirstEffect(oPC);

while (GetIsEffectValid(eBlindness) && GetEffectType(eBlindness) != EFFECT_TYPE_BLINDNESS)
eBlindness = GetNextEffect(oPC);

return GetIsEffectValid(eBlindness);
}


====Crétin ! Comment voulez-vous utiliser un cadran solaire la nuit ! (script sur le Appear when : )


int StartingConditional()
{
return GetIsNight();
}


====Le Jour vient à peine de se lever... (Appear when : )


int StartingConditional()
{
return GetIsDawn();
}


====Le soleil est en train de se coucher ! (Appear when : )


int StartingConditional()
{
return GetIsDusk();
}


====Il est heure !

==Non [End Dialog]


Bon alors, je ne suis pas sûr de l'ordre de Dawn et Dusk , mon anglais est très mauvais, mais ça dois marcher, les anglophones n'ont qu'à rectifier. :ange:

Par coolstar le 4/11/2002 à 1:32:25 (#2474584)

Kool pour savoir où on en est de façon cohérente ! ;)

JOL Archives 1.0.1
@ JOL / JeuxOnLine