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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Des cadavres

Par Blam le 25/9/2002 à 13:28:32 (#2228848)

J'ai mis ca dans le OnSpawn de tous mes cadavres

void main()
{
ActionDoCommand(SetIsDestroyable(FALSE));
ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDeath(),OBJECT_SELF));
}

pour simplifier y a til un moyen de:
a)-le faire automatiquement ?
b)-le faire pour tous les pnj d'une zone ?

car pour faire un champ de bataille rempli de corps je n'ai trouvé que cette solution et je la trouve un peu "lourde".

Re: Des cadavres

Par Darkmore le 25/9/2002 à 14:05:52 (#2229156)

Le seule solution que je voie pour faire ça "automatiquement" c'est de faire un script OnEnter qui vérifie le tag de tout les pnj et "tue" ceux dont le tag commence par dead_ ou autre chose.
Est ce que c'est plus léger ?? pas sure ! :confus:

Par Azrael07 le 26/9/2002 à 7:12:54 (#2233859)

Ben je voit pas vraiment ce ki te derange la dedant, il faut juste que tu fasse un blueprints de tes morts avec le script en OnSpawn, et c pas lourd du tout.

Sinon tu peut en effet utiliser la solution de Darkmore, mais je n'en voit pas vraiment l'interet si c pour passser des heures sur la création d'un script qui au final est remplacable par qlqc de bcp + simple.

Enfin si t'y tient vraiment dit le je te le ferais....

une petite note :


void main()
{
ActionDoCommand(SetIsDestroyable(FALSE));
ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDeath(),OBJECT_SELF));
}


le "ActionDoCommand" ne sert absolument a rien, tu peut parfaitement faire


void main()
{
SetIsDestroyable(FALSE);
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDeath(),OBJECT_SELF);
}

à ce propos...

Par Le Hamster le 26/9/2002 à 14:11:16 (#2236060)

J'ai déjà appliqué ce truc de l'effect death qu'avait donné Azrael. Comme je cherche à comprendre toutes les choses, j'ai essayé en remplaçant Death par Sleep, c'est rigolo.

Ma question est : existe-t-il un EffectRéveilDeboutLàDedans quelque part, j'ai pas trouvé ?




_________________________________________


Au fait Azrael pour les coffres : :) merci :ange: bisous :amour: :amour: :amour: :amour:

j'ai pas encore essayé mais je le fais tout de suite.

Par Azrael07 le 26/9/2002 à 18:05:06 (#2237773)

Pour reveiller le mec ki dors il suffit de supprimer son effect :

tu met ca au debut du script :



effect GetEffect(object oCreature, int nEffectType)
{
effect eEffect = GetFirstEffect(oCreature);
while(GetIsEffectValid(eEffect))
{
eEffect = GetNextEffect(oCreature);
if( GetEffectType(eEffect) == nEffectType)
return eEffect;
}
return eEffect;//attention la ca fait un gros bug si jamais le gars ne dormais pas avant, je chercherais comment le corriger, il faudrais renvoyer un genre de "EFFECT_INVALID" mais ca existe pas :(
}


et ca la ou tu veut reveiller le mec(pense a initialiser oCreature) :


effect eSleep = GetEffect(oCreature, EFFECT_TYPE_SLEEP);
RemoveEffect(oCreature, eSleep);



EDIT : bon ben j'espère ke ca marchera mieux comme ca, sinon esite pas a reposter

Par Tyn' le 26/9/2002 à 19:10:12 (#2238297)

Ligne 5 du 1er script, ne pas oublier les parenthèses à l'appel de la fonction GetNextEffect() :p

Par Azrael07 le 26/9/2002 à 21:27:24 (#2239289)

oui c vrai dsl

blam ca marche comme ca

Par Lys le 27/9/2002 à 13:03:00 (#2242603)

Pas besoin de changer quoi que ce soit ca ralenti un petit peu mais vu le nombre de cadavres c'est surement normal.
Par contre les 20bandits qui pillent les cadavres sont trop, des qu'ils nous voient ils se ruent sur nous pour nous occire, c'est pénible, on devrait pouvoir les éviter, non ?

A bientot dans la clairière

Azarael, j'ai rien compris

Par Le Hamster le 27/9/2002 à 20:16:17 (#2245551)

Le premier morceau, je dois le mettre avant le void ?

Même avec les parenthèses corrigées (après GetNextEffect(); ) le script ne compile pas (variable parsing error)


en fait, j'ai appliqué le dodo du pnj sur son script OnSpawn, je fais démarrer un dialogue avec un trigger qaund le PJ approche du "cadavre" (Bon, pendant le dialogue, le pnj se relève un peu mais c'est pas grave il est bourré ), et je voudrais le réveiller définitivement sur une phrase de ce dialogue.

Petit détail rigolo, j'ai vu quelque part qu'on pouvait faire monter des ZZZzzz au dessus de la tête de quelqu'un qui dort, c'est possible de l'intégrer ici ?

Deux petites choses encore pour Azrael, un, n'oublie pas mon problème de coffres si tu as le temps, et deuze le lien que tu as en signature apparemment ne fonctionne pas.


Bises

Par Azrael07 le 27/9/2002 à 21:26:58 (#2245929)

dsl le script étais en effet bien buggé, g édité et corrigé le script ci-dessus, maintenant il marche.

Quand a l'utilisation, tu met la fonction au debut du script, et pis les lignes de codes dans la fonction main ki doit reveiller le perso

pour le reveiller a la fin d'une conversation, tu peut mettre le script dans la conversation(dans le conversation editor), les fonctions doivent êtres placées en premier, puis vient la fonction main dans laquelle tu met les quelques lignes qui appellent la fonction

pour les ZZZZZzzzzzz ben j'ai fait la fonction, la voici :


void DoActionSnore(object oCreature, float fDelay = 10.0f)
{
string sSnore = "ZZZZzzzz";
AssignCommand(oCreature, ActionSpeak(sSnore));
AssignCommand(oCreature, DelayCommand(fDelay, DoActionSnore(oCreature)));
}



il suffit de mettre un chti ClearAllAction() pour ki s'arrete de ronfler

mais apparament y'a qlqc ki merde(peut etre k'un perso endormis ne peut pas faire d'actions)


Par contre, un petit truc, je te conseille de lire mon tut sur les fonction pasque je vais pas tjrs te mettre les scripts en entier, je presenterais sous forme de fonctions(t'en fait pas c pas dur a utiliser)

Grand merci pour l'url, j'avais jamais vu(kel con, deja je suis pas foutu d'écrire un script non buggé, mais en plus je sais pas tapper une URL -_-)

JOL Archives 1.0.1
@ JOL / JeuxOnLine