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

Scripts pour simulation de conduite
http://forummafieuso.free.fr/forum/viewtopic.php?f=8&t=2907
Page 1 sur 11

Auteur:  Kévin [ 22 Sep 2007, 14:08 ]
Sujet du message:  Scripts pour simulation de conduite

Bonjour.

J'aimerais dévelloper un script personnel avec quelques *petits* détails qui améliorent la qualité de la conduite d'autocars et autre dans Mafia.

Bon, pour le moment il ne s'agira que d'autocars.

Déjà, avant de commencer un script il faudrait analyser si Tommy conduit bien le bon véhicule. C'est possible de ne déclancher le script QUE s'il conduit le car ? Je sais pas moi, par exemple en détectant un objet dans le modèle 3d...

J'aimerais qu'on puisse avoir des portes coulissantes dans le premier script, à la manière des Irisbus Récréo. Ca doit être faisable avec un .5ds déclenchable en script, par appui sur des touches, comme un script que Condor m'avait fait pour ouvrir les portes de manière traditionnelle.

Le deuxième script simulerait la limitation électronique à 100km/h. Une fois les 100km/h atteints, il faudrait que le véhicule ralentisse de lui même en émettant une alarme lorsqu'on les dépasse. Je suppose que c'est faisable. J'aimerais mettre un voyant rouge sur le compteur, pour l'illuminer je pourrais faire ça avec frm_seton.
Si possible, il faudrait pouvoir situer l'alarme sur le compteur de vitesses, mais là je doute de la possibilité de réalisation.

Le troisième script analyserais ce qui se passe derrière le car pour déclancher un radar de recul lorsque la marche arrière est enclanchée. Il faudrait avoir trois alertes différentes (bips plus ou moins espacés) selon la distance des collisions.

J'éspère que ces trois choses sont possibles, j'attends avec impatience la réponse du scripteur-en-Chef (oui oui, avec un C majuscule comme Condor :mrgreen:)

Je précise que les trois scripts sont par ordre de préférence. Une fois terminé, je mettrais sûrement ce "mini-mod" à disposition du bar.

Auteur:  Letegre1 [ 22 Sep 2007, 19:28 ]
Sujet du message: 

Ton second voeux est réalisé :wink: :

Code:
dim_act 5
dim_frm 5
dim_flt 10

label 101
getactiveplayer 0
findnearactor 0, 1, Car
getactorframe 0, 0
getactorframe 1, 1
car_getspeed 1,0
if flt[0]>100,-1,101
playsound "bip.wav", 0, 50, 1
carlight_main 1, 1
carlight_indic_r 1, 1
carlight_indic_l 1, 1
player_lockcontrols 1
car_setspeed 1, 98
wait 250
car_setspeed 1, 95
wait 250
car_setspeed 1, 92
wait 250
car_setspeed 1, 88
wait 250
car_setspeed 1, 83
wait 250
car_setspeed 1, 78
wait 250
car_setspeed 1, 73
wait 250
car_setspeed 1, 65
wait 250
car_setspeed 1, 60
carlight_main 1, 0
carlight_indic_r 1, 0
carlight_indic_l 1, 0
player_lockcontrols 0
goto 101


Mais ce n'est pas une lumière qui s'allume sur le compteur, mais ce sont tout les clignotants qui clignotent, comme lorsque l'on appuis sur le bouton "warning" d'une voiture.

Auteur:  Kévin [ 22 Sep 2007, 20:53 ]
Sujet du message: 

Wow, merci ! Mais si je comprends bien, ça ne va pas m'empêcher de dépasser les cent, mais plutôt me forcer quand j'atteinds cent de descendre cran par cran jusqu'à 60, sans que je puisse y faire quelque chose ? :lol2: Ce que j'aurais aimé c'est qu'il ralentisse simplement le car...
En tout cas merci beaucoup pour ton aide !
Je vais essayer de voir pour que ce soit activable avec un bouton, et que si j'active, un voyant ((M)) s'affiche sur le compteur. Ca, je sais faire :mrgreen:

Tu penses pouvoir m'aider pour le reste ?

EDIT : J'ai un doute, d'un coup. Comment cibler un objet du modèle 3d de la voiture que conduit tommy directement dans le script ? Je sais utiliser frm_setOn mais comment allouer à une frame un objet présent dans la voiture de Tommy ? Pour cela il faudrait pouvoir utiliser la voiture de tommy comme un élément présent dans la scène mais je doute que ce soit possible..

Auteur:  Letegre1 [ 22 Sep 2007, 21:42 ]
Sujet du message: 

Oui, agire directement sur le model en 3D, je ne sais pas faire, je ne pense pas que ce soit possible.

Pour les 5DS je n'y connais absolument rien :mrgreen: , et pour le radar arriere j'essairais mais je ne promer rien.

Auteur:  Kévin [ 22 Sep 2007, 22:22 ]
Sujet du message: 

Merci quand même pour toute ton aide :wink:

Kévin a écrit:
Mais si je comprends bien, ça ne va pas m'empêcher de dépasser les cent, mais plutôt me forcer quand j'atteinds cent de descendre cran par cran jusqu'à 60, sans que je puisse y faire quelque chose ? :lol2: Ce que j'aurais aimé c'est qu'il ralentisse simplement le car...

Auteur:  Kévin [ 24 Sep 2007, 18:51 ]
Sujet du message: 

J'ai fait ce script pour les feux d'avertissement (warning) :


Code:
Dim_Flt 2
Dim_Act 3
Dim_Frm 1

GetActivePlayer 1
SetNullActor 2

Label Contrôle
CommandBlock 0
CommandBlock 1
Ctrl_ReadEx 0, CROUCH1
If Flt[0] = 1, -1, Contrôle
CompareOwnerWithEx 1, 2, Contrôle, -1

Human_GetOwner 1, 0
GetActorFrame 0, 0
If Flt[1] = 0, -1, Desactif

carlight_main 1, 1
carlight_indic_r 1, 1
carlight_indic_l 1, 1
Let Flt[1] = 1
GoTo Contrôle

Label Desactif
carlight_main 1, 0
carlight_indic_r 1, 0
carlight_indic_l 1, 0
Let Flt[1] = 0
GoTo Contrôle


Pourtant en jeu, il ne marche pas. Quelqu'un pourrait me corriger ? Un script (cf ci-dessous) similaire, pour activer/désactiver le limiteur de Letegre1 fonctionne pourtant très bien...

Code:
Dim_Flt 2
Dim_Act 4
Dim_Frm 1

GetActivePlayer 1
SetNullActor 2
FindActor 3, "Tegre_Limiteur"

Act_SetState 3, inactive

Label Contrôle
CommandBlock 0
CommandBlock 1
Ctrl_ReadEx 0, Crouch
If Flt[0] = 1, -1, Contrôle
CompareOwnerWithEx 1, 2, Contrôle, -1

Human_GetOwner 1, 0
GetActorFrame 0, 0
If Flt[1] = 0, -1, Desactif

Act_SetState 3, active
playsound "bip1.wav", 0, 50, 1
Let Flt[1] = 1
GoTo Contrôle

Label Desactif
Act_SetState 3, inactive
playsound "bip2.wav", 0, 50, 1
Let Flt[1] = 0
GoTo Contrôle

Auteur:  Letegre1 [ 24 Sep 2007, 19:32 ]
Sujet du message: 

Voici la correction :

Code:
Dim_Flt 10
Dim_Act 5
Dim_Frm 5

Label Controle
GetActivePlayer 0
Getactorframe 0, 0
Findnearactor 0, 1, Car
Getactorframe 1, 1
Ctrl_Read 0, CROUCH1
If Flt[0] = 1, -1, Controle
CompareOwnerWithEx 0, 1, -1, Controle

label on
carlight_main 1, 1
carlight_indic_r 1, 1
carlight_indic_l 1, 1
Label OnWait
Ctrl_Read 1, CROUCH1
If Flt[1] = 1, -1, OnWait
CompareOwnerWithEx 0, 1, -1, off

Label off
carlight_main 1, 0
carlight_indic_r 1, 0
carlight_indic_l 1, 0
GoTo Controle

Auteur:  Kévin [ 24 Sep 2007, 20:05 ]
Sujet du message: 

J'ai pas tout compris ce que tu avais modifié, mais l'essentiel est que ça marche :mrgreen:

Auteur:  Letegre1 [ 24 Sep 2007, 20:13 ]
Sujet du message: 

J'ai essayé de corriger, ça ne marchait toujours pas alors j'ai effacé tout ce qui pouvait potentiellement être faux et j'ai refais.

Auteur:  Kévin [ 25 Sep 2007, 20:19 ]
Sujet du message: 

Plus compliqué, j'éspère que tu y arriveras : Pourrais-tu "mêler" au script des warnings un script pour faire fonctionner les clignotants ?
(Jump = Clignotants gauches, Jump1 = Clignotants droits)

Ce serait super sympa :mrgreen: 8)

Auteur:  Letegre1 [ 25 Sep 2007, 20:48 ]
Sujet du message: 

Voyons, je suis un Tègre :

Code:
Dim_Flt 10
Dim_Act 5
Dim_Frm 5

Label Controle
GetActivePlayer 0
Getactorframe 0, 0
Findnearactor 0, 1, Car
Getactorframe 1, 1
Ctrl_Read 0, CROUCH1
If Flt[0] = 1, 101, -1
Ctrl_Read 1, JUMP1
If Flt[1] = 1, ClinD, -1
Ctrl_Read 2, JUMP
If Flt[2] = 1, ClinG, Controle
Label 101
CompareOwnerWithEx 0, 1, -1, Controle

label on
carlight_main 1, 1
carlight_indic_r 1, 1
carlight_indic_l 1, 1
Label OnWait
Ctrl_Read 0, CROUCH1
If Flt[0] = 1, -1, OnWait
CompareOwnerWithEx 0, 1, -1, off

Label off
carlight_main 1, 0
carlight_indic_r 1, 0
carlight_indic_l 1, 0
GoTo Controle

Label ClinD
CompareOwnerWithEx 0, 1, -1, ClinDoff
carlight_main 1, 1
carlight_indic_r 1, 1
Label OnWaitClinD
Ctrl_Read 1, JUMP1
If Flt[1] = 1, ClinDoff, OnWaitClinD
GoTo OnWaitClinD

Label ClinDoff
carlight_main 1, 0
carlight_indic_r 1, 0
GoTo Controle

Label ClinG
CompareOwnerWithEx 0, 1, -1, ClinGoff
carlight_main 1, 1
carlight_indic_l 1, 1
Label OnWaitClinG
Ctrl_Read 2, JUMP
If Flt[2] = 1, ClinGoff, OnWaitClinG
GoTo OnWaitClinG

Label ClinGoff
carlight_main 1, 0
carlight_indic_l 1, 0
GoTo Controle


Par contre il faut appuyer ni trop longtemps ni pas assez longtemps.

Auteur:  Kévin [ 04 Nov 2007, 20:32 ]
Sujet du message: 

Ca marche bien, merci.

J'ai inséré des panneaux "Attention au tramway" avec un feu clignotant en dessous. Je me sers de ce script pour détecter la présence d'un tramway 50mètres autour du panneau, et déclencher le script adéquat :

Code:
[b]Dim_Act 2
Dim_Frm 1
Dim_Flt 1

Findactor 0, "FeuTramTunnel"
Findframe 0, "FeuTramTunnel.ORANGE"

Findnearactor 0, 1, Railway
Getactorsdist 0, 1, 1

Frm_seton 0, 0[/b]

Label Analyse
If flt[1] < 50, -1, Analyse

Label Clign
Frm_seton 0, 1
wait 500
Frm_seton 0, 0
wait 500
If flt[1] < 50, Clign, Analyse


Sauf erreur de ma part, ce script est correct..
La partie en gras du script est lue de sûr car l'objet "ORANGE" représentant le feu allumé est déjà invisible. En revanche, même avec un tram sur la route d'en face il ne clignote pas. Possible de m'éclaircir ? :mrgreen:

Auteur:  Condor [ 04 Nov 2007, 22:21 ]
Sujet du message: 

Ils sont sympa vos scripts, à part l'anglais inutile dans les scripts de Tègre, mais sinon c 'est bien aéré et organisé.


Par contre, Kévin, les balises ne peuvent pas marcher entre les balises [code].

Auteur:  Kévin [ 05 Nov 2007, 11:07 ]
Sujet du message: 

Effectivement, je corrige ça tout de suite, j'avais même pas remarqué.

Condor, une idée de "pourquoi-ça-marche-pas" ?

Auteur:  Condor [ 05 Nov 2007, 13:47 ]
Sujet du message: 

Déjà, ton détecteur de distance et declarateur de tram ne se trouvent pas dans la boucle, donc ton script n'interroge qu'une seule fois la distance entre le panneau et le tram.

Ensuite t'as oublié que la règle des allocateurs comprend le zéro. Si t'as Flt[1], tu dois avoir Dim_Flt 2 qui l'englobe, mais le mieux serait de rendre utile ton 0 actuellement superflu et de virer le 1 puis de normaliser en conséquence, donc Dim_Flt 1.


Celui-ci devrait marcher :

Code:
Dim_Frm 1
FindFrame 0, "FeuTramTunnel.ORANGE"
Frm_SetOn 0, 0

Dim_Act 2
FindActor 0, "FeuTramTunnel"


Dim_Flt 1

Label Analyse
FindNearActor 0, 1, Railway
GetActorsDist 0, 1, 0
If Flt[0] < 50, -1, Analyse

Frm_SetOn 0, 1
Wait 500
Frm_SetOn 0, 0
Wait 380
GoTo Analyse

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