|SCRIPT] Un script qui s'exécute différemment selon les créatures

Répondre
Avatar du membre
DrAzTiK
Araignée éclipsante
Messages : 1231
Enregistré le : ven. 19 sept. 2003, 03:20
Localisation : Bordeaux
Contact :
Statut : Hors ligne

|SCRIPT] Un script qui s'exécute différemment selon les créatures

.

Message par DrAzTiK »

Re :)

Je crée pas mal de combats un peu dans le style de la bataille contre l'armée de Yaga Shura : quand un ennemi meurt , un autre apparaît.
Le truc c'est qu'il est important de donner aux créatures ennemis qui spawnent un script qui leur ordonne de se déplaçer vers le joueur 1 dans le cas ou la créature ennemi ne verrait aucun membre de notre groupe. C'est important car la créature ennemi est généré à l'autre bout de l'écran et n'a donc en général aucun membre de notre groupe dans son champ de vision. (CreateCreatureOffScreen("D9ELAR0X",S) // Squelette archer)

J'utilise donc le script suivant que je met dans dans l'emplacement "override script" :

IF
Allegiance(Myself,ENEMY)
!Detect(NearestEnemyOf(Myself))
!Detect(Player1)
!Detect(Player2)
!Detect(Player3)
!Detect(Player4)
!Detect(Player5)
!Detect(Player6)
THEN
RESPONSE #100
MoveToObject(Player1)
END

Suivant les créatures à qui je met ce script, il y a 2 comportements différents :

-la créature ne vois pas d'ennemis, elle se dirige donc vers le joueur 1 mais si elle rencontre un membre de notre groupe sur sa route (ou un allié convoqué), elle s’arrêtera pour l'attaquer : c'est le comportement idéal que je recherche.

-la créature ne vois pas d'ennemis, elle se dirige donc vers le joueur 1 mais elle continuera sa course jusqu'au joueur 1 même si elle rencontre des membres de notre groupe sur son passage :comportement bidon qui fout un peu tout en l'air.


Comment expliquer ces 2 attitudes différentes ? J'avoue que je jette un peu une bouteille à la mer car c'est incompréhensible qu'un script s’exécute différemment et j'ai testé sur beaucoup de créatures.

Et sinon comment faire pour avoir à coup sur un script qui permettent d'avoir le comportement idéal ?
Faites comme moi, jouez FP :cool:

Mon Mod : BuTcHeRY

Ma châine Youtube
Avatar du membre
deratiseur
Rakshasa
Messages : 3771
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

Et pourquoi pas, tout simplement :

IF
Allegiance(Myself,ENEMY)
!Detect(NearestEnemyOf(Myself))
!Detect(Player1)
!Detect(Player2)
!Detect(Player3)
!Detect(Player4)
!Detect(Player5)
!Detect(Player6)
THEN
RESPONSE #100
SetGlobal("Move","LOCALS",1)
MoveToObject(Player1)
END

IF
Global("Move","LOCALS",1)
OR(7)
Detect(NearestEnemyOf(Myself))
Detect(Player1)
Detect(Player2)
Detect(Player3)
Detect(Player4)
Detect(Player5)
Detect(Player6)
THEN
RESPONSE #100
Attack(NearestEnemyOf(Myself))
SetGlobal("Move","LOCALS",0)
END

?
Combien de moddeurs se sont lancés dans des projets faramineux pour ne jamais les finir ? Je ne fait que des "petits" mods, mais au moins je les finis.

Mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Avatar du membre
DrAzTiK
Araignée éclipsante
Messages : 1231
Enregistré le : ven. 19 sept. 2003, 03:20
Localisation : Bordeaux
Contact :
Statut : Hors ligne
.

Message par DrAzTiK »

Alors j'ai testé ton script mais il se passe ce que je craignais.

En fait il faudrait aussi que la créature utilise son script suivant ( WTASIGH ou son script de mage ou de prête). Parce que là avec ton script, la créature se contente simplement d'attaquer basiquement.

Mais on touche au but je sens ! C'est peut être un truc tout bête à modifier.

Edit : j'ai trouvé, en fait avec ce script ça a l'air de marcher :

IF
Allegiance(Myself,ENEMY)
!Detect(NearestEnemyOf(Myself))
!Detect(Player1)
!Detect(Player2)
!Detect(Player3)
!Detect(Player4)
!Detect(Player5)
!Detect(Player6)
THEN
RESPONSE #100
SetGlobal("Move","LOCALS",1)
MoveToObject(Player1)
END


IF
Global("Move","LOCALS",1)
OR(7)
Detect(NearestEnemyOf(Myself))
Detect(Player1)
Detect(Player2)
Detect(Player3)
Detect(Player4)
Detect(Player5)
Detect(Player6)
THEN
RESPONSE #100
NoAction()
SetGlobal("Move","LOCALS",0)
END

Je te confirmerai quand même .

Merçi !
Faites comme moi, jouez FP :cool:

Mon Mod : BuTcHeRY

Ma châine Youtube
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

salut,
j'ai eu le même problème dans un autre contexte. Comment arrêter "MoveToObject()" au bon moment?

Effectivement il faut "casser" la recherche pour la réinitialiser ou faire autre chose. De mémoire, j'ai mit un code dans un autre fichier script pour déclencher un autre évènement. soit deux fichiers à mettre sur la créature:
Script de recherche
Script de combat si le groupe est détecté.

Si ton code ne marche pas, je regarderai en détail comment j'ai traité ce point.

Question au passage:

Différence entre DETECT et SEE?


Cocrane
Avatar du membre
DrAzTiK
Araignée éclipsante
Messages : 1231
Enregistré le : ven. 19 sept. 2003, 03:20
Localisation : Bordeaux
Contact :
Statut : Hors ligne
.

Message par DrAzTiK »

salut Cocrane

le script dont j'ai parlé plus haut fonctionne à merveille je dirai. Je sais pas trop la différence en tre DETECT et SEE par contre
.
Faites comme moi, jouez FP :cool:

Mon Mod : BuTcHeRY

Ma châine Youtube
Répondre

Retourner vers « Scripts »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité