Forum Bar Mafieuso
http://forummafieuso.free.fr/forum/

Éditer des scripts
http://forummafieuso.free.fr/forum/viewtopic.php?f=8&t=3456
Page 15 sur 17

Auteur:  Arès [ 16 Jan 2011, 19:40 ]
Sujet du message:  Re: Éditer des scripts

Condor, voleur de priorité ! :x


Condor a écrit:
Code:
Dim_Frm 2
Dim_Act 1

FindFrame 0, "Interro1"
FindFrame 1, "Arm2"

FindActor 0, "Norman2,0945"
Human_SetProperty 0, 500, Energy


{ Up
Enemy_PlayAnim "GestikulaceNew02.I3D"
Label Boucle
Wait 86400000
GoTo Boucle
}

Event Use_AB, 10970007
Enemy_Talk 19950003
Enemy_Wait
Enemy_Move_To_Frame 1, 0, Walk
Enemy_Move_To_Frame 0, 0, Walk
Return


Condor, tu n'as pas mis de Event_Use_CB 1 dans l'évènement avant le retour, alors qu'il y a des accolades "Up", pourquoi ? Moi je trouve qu'elles ne servent à rien dans ce cas, les accolades (et donc sans Event_Use_CB 1).


catala a écrit:
Quel est la fonction qui permet a une action de se lancer quand il détecte que le joueur est à moins de X mètres ?


Ça dépend par rapport à quoi tu mesures la distance de Tom ; à un point sur la carte ou à un ennemi ? Il faut aussi savoir si l'action doit être réalisée par l'ennemi en question ou si cette action consiste, par exemple, en l'apparition d'une voiture (un peu comme en Circulation Ultra-Libre, lorsque tu acceptes une mission et que la voiture bonus apparaît). Mais dans les deux cas, il vaut mieux utiliser un script différent.

Pour détecter la distance, il y a deux options :

  1. Si tu places un détecteur fixe, autrement dit, une armature, soit un objet de type "Other" (et avec script) dans BSV, alors la meilleure commande est : Detector_InRange Id_Flt, Distance.

    Code:
    Dim_Flt 1

    Label DetTom
    Detector_InRange 0, 15
    // Si le joueur est détecté dans un rayon de 15 mètres (Flt[0] = 1), alors le script passe à la ligne suivante :
    If Flt[0] = 1, -1, DetTom

    // Lancement de l'action (envoi d'un évènement vers un ennemi ou apparition d'une voiture, pour garder mon exemple) :
    // [...]

    Attention avec cette méthode, car comme le dit Condor ici :
    Citation:
    Arès, pour que Detector_InRange fonctionne, il lui faut un booléen d'un octet précis dans l'acteur script. En hexadécimal, c'est 18 octets après la fin du nom de l'objet, il faut foutre cet octet à 01 (qui sera alors précédé d'un autre 01).

  2. Si tu mesures la distance par rapport à un ennemi, alors c'est comme Condor a dit : GetActorsDist Act1, Act2, Flt(, Bool) ; qui peut remplacer la commande précédente.

    Code:
    Dim_Act 2

    FindActor 0, "Ennemi"
    GetActivePlayer 1

    Dim_Flt 1

    Label DetTom
    GetActorsDist 0, 1, 0
    // Si le joueur est détecté dans un rayon de moins de 15 mètres, alors le script passe à la ligne suivante :
    If Flt[0] < 15, -1, DetTom

    // Lancement de l'action (envoi d'un évènement vers un ennemi ou apparition d'une voiture, pour garder mon exemple) :
    // [...]

Auteur:  Condor [ 16 Jan 2011, 20:45 ]
Sujet du message:  Re: Éditer des scripts

C'est une question que devrait aussi se poser Catala.

Tout ce qui est entre les accolades est en mesure d'être interrompu par un évènement, donc on évite d'y mettre des choses qui doivent être impérativement enchaînées.


Je ne mets pas Event_Use_CB 1 puisque c'est déjà comme si il l'était, par défaut, le retour intervient juste après l'accolade ouvrante (quand c'est Up).

Auteur:  Arès [ 16 Jan 2011, 21:41 ]
Sujet du message:  Re: Éditer des scripts

Condor a écrit:
Je ne mets pas Event_Use_CB 1 puisque c'est déjà comme si il l'était, par défaut, le retour intervient juste après l'accolade ouvrante (quand c'est Up).

Mouais, j'ai des scrupules de ne pas le mettre quand des accolades sont présentes. Par contre, quand il n'y en a pas, je ne le mets jamais.

Ah, je n'avais pas vu la ligne « Enemy_PlayAnim "GestikulaceNew02.I3D" » avant la boucle de 24 heures, au temps pour moi alors quand je disais que les accolades étaient inutiles dans ce cas.

Auteur:  Condor [ 16 Jan 2011, 22:32 ]
Sujet du message:  Re: Éditer des scripts

C'est surtout pour Catala ; ce principe des accolades n'est pas facile à saisir.

Je crois qu'en plus, il n'y a qu'ici (enfin toi et moi) qu'on l'utilise sciemment.

Auteur:  catala [ 17 Jan 2011, 19:21 ]
Sujet du message:  Re: Éditer des scripts

rhaaa ça marche toujours pas
Code:
Dim_Frm 2
Dim_Act 1

findactor 0, "FlicBas 1"

findframe 0, "Depart1"
findframe 1, "Arrivée1"

Human_SetProperty 0, 500, Energy


{ Up
Enemy_Wait
Enemy_Move_To_Frame 0, 1, Walk
wait 2000
enemy_playanim "Vyhlizeni201.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni202.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni201.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni202.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni202.i3d", 0
wait 2000
Enemy_Move_To_Frame 0, 1, Walk
Label Boucle
Wait 86400000
GoTo Boucle
Return
}


il tourne toujours en rond ...

Auteur:  Arès [ 17 Jan 2011, 21:25 ]
Sujet du message:  Re: Éditer des scripts

Mais là, tu as deux fois la commande "Enemy_Move_To_Frame" avec les mêmes identifiants !

Code:
Enemy_Move_To_Frame 0, 1, Walk

Et puis de nouveau

Enemy_Move_To_Frame 0, 1, Walk
Ça devrait être :
Code:
Enemy_Move_To_Frame 0, 0, Walk

Et puis

Enemy_Move_To_Frame 1, 0, Walk


La commande fonctionne comme ça :

Enemy_Move_To_Frame Id_Armature, Distance, Mode où :

  • Id_Armature est l'identifiant de l'armature vers laquelle l'ennemi doit se déplacer.
  • Distance est la distance à laquelle l'ennemi doit s'approcher de l'armature (en mètres).
  • Mode : marcher ou courir ("Run" ou "Walk").


De plus, tu peux enlever le "Return" que tu as placé dans les accolades, il ne sert à rien.

Auteur:  Condor [ 17 Jan 2011, 23:07 ]
Sujet du message:  Re: Éditer des scripts

Tout le script est plein d'incohérences.


Les accolades ne servent à rien puisqu'il n'y a aucun évènement plus bas.

Enemy_Wait ne fait rien puisqu'il n'y a pas de commande à attendre qui le précède, comme Enemy_Talk ou Enemy_Look, par exemple.

Le flottant à la fin de Enemy_PlayAnim ne sert à rien, il n'est ni alloué ni exploité par la suite. Il indique la durée en millisecondes de l'animation.

Code:
Dim_Flt 1

[...]

Enemy_PlayAnim "Vyhlizeni201.i3d", 0
Wait Flt[0]



Mais le problème qui le fait tourner en rond vient d'ailleurs, il faudrait nous montrer une capture du lieu, Catala.

Auteur:  Arès [ 18 Jan 2011, 09:43 ]
Sujet du message:  Re: Éditer des scripts

Condor a écrit:
Les accolades ne servent à rien puisqu'il n'y a aucun évènement plus bas.
Je me suis dit que catala avait gardé l'évènement d'utilisation du bouton d'action sur l'ennemi plus bas dans le script... Ça serait logique.

Auteur:  catala [ 18 Jan 2011, 18:12 ]
Sujet du message:  Re: Éditer des scripts

Deux p*tites questions :

- Connaissez vous un script d'un gars qui attend les bras croisé derrière le dos ? ou tout simplement le script d'un gars qui attend ?

- Comment faire disparaître un gars derrière une porte ou un bâtiment ( comme par exemple il passe à travers le mur ( sa suffira )) ? ....


edit :

et quel script modifier pour rendre tommy plus rapide ?

Re EDit:

Quel est le script du flic qui donne une prune et de tommy qui la reçoit ?

Rere Edit :

Que modifier pour avoir ce type de vue ( champ de vision élargi ) :

http://img413.imageshack.us/f/game2011011818131548.png/

De plus, j'aimerais ceci :

Code:
dim_flt 1
dim_act 1
dim_frm 1

getactiveplayer 0
getactorframe 0, 0

label 101
wait 500
ctrl_read 0, SNIPERMODE
if flt[0] = 1, -1, 101
human_setproperty 0, 1000, Energy
wait 2000
ctrl_read 0, SNIPERMODE
if flt[0] = 1, -1, 101
human_setproperty 0, 0, Energy
goto 101


Que quand jue reappuie sur la touche, la vie descende à zero et tue tommy ... mais que quand j'appuie A NOUVEAU sur la touche :P

C'est pour pas tenter les petits malin ....

et la voila un exemple de rapiéçage :

Code:
Dim_Frm 2
Dim_Flt 1
Dim_Act 2

findactor 0, "Cliente Chinatown 1"
GetActivePlayer 1

findframe 0, "Cliente Chinatown 1"
findframe 1, "Cliente Chinatown etape 1"

Human_SetProperty 0, 100, Energy


Label 1
wait 2000
enemy_playanim "Vyhlizeni201.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni202.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni201.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni202.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni202.i3d", 0
wait 2000
Label DetTom
GetActorsDist 0, 1, 0
If Flt[0] < 5, -1, DetTom
Enemy_Move_To_Frame 0, 1, Walk
wait 2000
enemy_playanim "Vyhlizeni201.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni202.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni201.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni202.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni202.i3d", 0
wait 2000
Enemy_Move_To_Frame 1, 0, Walk
Goto 1


ça marche pas et ça m’étonne pas ...

Auteur:  Condor [ 19 Jan 2011, 02:00 ]
Sujet du message:  Re: Éditer des scripts

Il y a bien l'animation de Frank dans le bar de Salieri de la mission 7b, « T'as intérêt à t'habituer ». Mais en bonne animation d'attente debout, il y a celle du garde en veste blanche du bar de Morello, mission 3, qui croise les bras.


Pour faire traverser un mur, sans avoir accès au paramètre de la collision, il faut carrément rescripter le mouvement de marche, ce qui n'est pas facile mais pas impossible non plus.


Pour la vitesse de marche et de course :

Citation:
Human_SetProperty Act, Val, Opt

Définit la valeur Val au paramètre Opt de l'acteur humain Act.

Liste des paramètres gérés :

    Strenght = Force
    Energy = Énergie
      EnergyHandL = Capacité du bras gauche
      EnergyHandR = Capacité du bras droit
      EnergyLegL = Capacité de la jambe gauche
      EnergyLegR = Capacité de la jambe droite
    Reactions = Réactivité
    Speed = Vitesse
    Aggresivity = Agressivité
    Intelligence = Intelligence
    Shooting = Précision de tir
    Sight = Vue
    Hearing = Ouïe
    Driving = Conduite
    Mass = Poids


L'animation de la prune, je l'ignore pour l'instant, mais ça dépend de ce que tu veux faire, il existe un moyen d'arrêter vraiment un personnage.


Pour le champ visuel :

Citation:
Camera_SetFOV Val[]

Définit la valeur Val de l'ouverture du champ visuel de 0 à 180 degrés. (FOV pour Feild Of Vision - Champ visuel en anglais)



Un va-et-vient :

Code:
Dim_Act 1
GetActivePlayer 0

Dim_Flt 1

Label Santé
CommandBlock 0
CommandBlock 1
Ctrl_ReadEx 0, SniperMode
If Flt[0] = 1, -1, Santé
Human_SetProperty 0, 1000, Energy

Label Mort
CommandBlock 0
CommandBlock 1
Ctrl_ReadEx 0, SniperMode
If Flt[0] = 1, -1, Mort
Human_SetProperty 0, 0, Energy
GoTo Santé




Pour ton second script, ça serait bien que tu répondes aussi aux questions, que ça ne fonctionne pas que dans un seul sens, Catala. :o

Auteur:  Swoo [ 19 Jan 2011, 12:09 ]
Sujet du message:  Re: Éditer des scripts

Condor a écrit:
Il y a bien l'animation de Frank dans le bar de Salieri de la mission 7b, « T'as intérêt à t'habituer ». Mais en bonne animation d'attente debout, il y a celle du garde en veste blanche du bar de Morello, mission 3, qui croise les bras.


Pour faire traverser un mur, sans avoir accès au paramètre de la collision, il faut carrément rescripter le mouvement de marche, ce qui n'est pas facile mais pas impossible non plus.


Pour la vitesse de marche et de course :

Citation:
Human_SetProperty Act, Val, Opt

Définit la valeur Val au paramètre Opt de l'acteur humain Act.

Liste des paramètres gérés :

    Strenght = Force
    Energy = Énergie
      EnergyHandL = Capacité du bras gauche
      EnergyHandR = Capacité du bras droit
      EnergyLegL = Capacité de la jambe gauche
      EnergyLegR = Capacité de la jambe droite
    Reactions = Réactivité
    Speed = Vitesse
    Aggresivity = Agressivité
    Intelligence = Intelligence
    Shooting = Précision de tir
    Sight = Vue
    Hearing = Ouïe
    Driving = Conduite
    Mass = Poids
Je m'excuse de m'incruster dans ce sujet mais est-ce que les informations ci-dessus signifient que l'on peut faire marcher la jambe droite d'un type plus vite que sa jambe gauche (et inversément) ? Est-ce le moyen utilisé par les développeurs pour faire boiter Paulie ?

Auteur:  Condor [ 19 Jan 2011, 14:28 ]
Sujet du message:  Re: Éditer des scripts

Pour faire boiter un personnage, c'est une simple animation.

La capacité des membres, c'est leur niveau de blessure par rapport au total de la santé (c'est pour ça qu'il est indenté dans ma liste).


Mais je ne vois pas dans quel niveau Paulie boite... :reflex:

Auteur:  catala [ 19 Jan 2011, 14:31 ]
Sujet du message:  Re: Éditer des scripts

eh bien en fait c’était dans la prison, du mod citybars .... mais j'ai laisser tomber et je m'amuse à essayer d'animer un peu la ville ... pour l'instant ça va!

je vous montrerais un peu ce que ça donne si vous voulez .


En tous cas: Merci pour l'aide ;)

Par contre pour ma cliente :

Code:
Dim_Frm 2
Dim_Flt 1
Dim_Act 2

findactor 0, "Cliente Chinatown 1"
GetActivePlayer 1

findframe 0, "Cliente Chinatown 1"
findframe 1, "Cliente Chinatown etape 1"

Human_SetProperty 0, 100, Energy


Label 1
wait 2000
enemy_playanim "Vyhlizeni201.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni202.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni201.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni202.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni202.i3d", 0
wait 2000
Label DetTom
GetActorsDist 0, 1, 0
If Flt[0] < 5, -1, DetTom
Enemy_Move_To_Frame 0, 1, Walk
wait 2000
enemy_playanim "Vyhlizeni201.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni202.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni201.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni202.i3d", 0
wait 2000
enemy_playanim "Vyhlizeni202.i3d", 0
wait 2000
Enemy_Move_To_Frame 1, 0, Walk
Goto 1


en fait je voulais faire un lien ou on la voit devant un marchand, qui lui donne un paquet ( on verra quoi ) et elle qui le prend ... l'anim de tommy et du flic me parait pas mal !

sinon le script de Tommy dans BSV, celui qui permet de modifier les caractéristiques ( comme la vitesse, les armes qu'il porte ...) c'est lequel ?

Edit :

Par contre la commande :

Camera_SetFOV Val []

je met combien pour un champ de vision comme sur la photo ? quand je met une valeur, j'ai un sacré zoom ...

et je viens de remarquer quelque chose :

en Freeride, quand une voiture tape un gangster, le gangster s'en prend pas au chauffeur mais à vous ...

Auteur:  Condor [ 19 Jan 2011, 15:56 ]
Sujet du message:  Re: Éditer des scripts

Tu peux connaître la valeur avec Camera_GetFov. C'est 70 par défaut en jeu mais c'est souvent 50, 60 dans les cinématiques, sauf quand ils font des plans grand angle, on tombe sur des 90.

Ce sont des degrés, donc plus le chiffre est grand, plus le champ visuel « absorbe les côtés » comme une fleur qui s'ouvre.



Pour ton script, il en faut deux, puisqu'il y a une animation.

Un script à part (other) qui détecte la position de Tommy par rapport au personnage.
Code:
Dim_Act 2
GetActivePlayer 0
FindActor 1, "Cliente Chinatown 1"


Dim_Flt 1

Label DetTom
GetActorsDist 0, 1, 0, 1
If Flt[0] < 0, Fin, -1
If Flt[0] < 3, -1, DetTom
SetEvent 1, 1, -1
GoTo DetTom

Label Fin
End
Tu remarques qu'à la mort du personnage, ce script s'autodétruit avec End pour libérer la mémoire.



Et le script du personnage :
Code:
Dim_Frm 2
FindFrame 0, "Cliente Chinatown 1"
FindFrame 1, "Cliente Chinatown etape 1"


Dim_Flt 1

{ Up
Label Anim
Rnd 0, 1 // Définit dans Flt[0] une valeur au hasard
GoTo Flt[0] // Va à l'étiquette correspondant à la valeur choisie par hasard
Label 0
Enemy_PlayAnim "Vyhlizeni201.i3d", 0
Let Flt[0] = Flt[0] - 240
Wait Flt[0]
Goto Anim
Label 1
Enemy_PlayAnim "Vyhlizeni202.i3d", 0
Let Flt[0] = Flt[0] - 240
Wait Flt[0]
Goto Anim
}

Event 1
Enemy_Move_To_Frame 0, 1.2, Walk
Enemy_Move_To_Frame 1, 1.2, Walk
Return

Auteur:  catala [ 19 Jan 2011, 18:19 ]
Sujet du message:  Re: Éditer des scripts

Ok merci !

si j'ai compris, les accolades avec le script definnisent ce qui se passe tant que la cliente n'a pas détecté Tommy ... quand elle le détecte, ça passe à l'action ... c'est ça ?

au fait, comment fait t on pour créer un nouveau points de chargement, dans le menu freeride ( comme un point de chargement classique ( little italy, hoboken .... ))

et je n'arrive pas à faire un script pour changer et la vitesse et la caméra ( FOV ). Pouvez-vous m'aider ?

Page 15 sur 17 Heures au format UTC + 2 heures
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/