|
Ryu | administrateur | | | 264 messages postés |
| Posté le 04-09-2005 à 08:55:00
| je cherche le moyen de faire un garde qui se déplace avec un champ de vision. j'avais trouver quelque chose mais soit j'ai pas comprit un truc, soit il y as une faute. si vous savez comment faire, aidez moooiii !!! |
|
dante | administrateur | | | 254 messages postés |
| Posté le 04-09-2005 à 10:51:36
| d'accord je vais voir avec un pot qui s y cone beaucop plu que nous en rpg maker il a surement la solution |
|
dante | administrateur | | | 254 messages postés |
| Posté le 04-09-2005 à 17:35:16
| voila un script pour cree un garde avec un champs de vision j'espere qu'il va marcher car je l'est pas tester il est un peu complique mais c'est le seul que j'ai trouver. apres l'avoir tester dit nous si il marche ou pas. Niveau : Très expérimenté (débutants s'abstenir !) Dans ce tuto, on va faire un garde qui peut vous voir, mais seulement si vous n'êtes pas caché derrière un objet. Je ne sais pas si ce tuto marche avec rm03, car je l'ai fais avec rmxp ( mais pas de script ) et j'emploie des commandes vis à vis des numéros de terrains. Bon, je vais essayer d'être simple... On va créer un garde qui a un champs de vision de deux carreaux sur le côté et de 5 en longueur ( pour faire une sorte de vue angulaire ( ça existe ce mot ? ). Maintenant, pour lui faire comprendre que vous êtes derrière un objet, on va mettre sur le terrain correspondant ( pas l'objet, mais l'endroit ou on ne peut pas vous voir ) un nouveau numéro de terrain. De base, les terrains valent 0. Il faut donc aller dans les chipsets, sur son chipset correspondant, et prendre 7 carreaux vides. Et vous mettez le numéro de terrain 1 à l'un d'eux, 2 à un autre jusqu'à sept. Ainsi, pour changer le numéro de terrain d'un endroit, vous mettez un carreau vide avec le numéro correspondant sur la troisième couche. Maintenant, nous allons corser les choses. Si le numéro d'un terrain est égal à 0, vous pouvez être vu du haut, du bas, de droite et gauche. Pour 1, vous ne pouvez pas être vu du haut. Pour 2, vous ne pouvez pas être vu du bas Pour 3, de la droite Pour 4, de la gauche Pour 5, du haut et du bas Pour 6, du haut et du bas et de la droite Pour 7, du haut et du bas et de la gauche. Le problème, c'est qu'il y a d'autres possibilités... Mais vous devez vous arrangez pour n'utiliser que cela, car il n'y a que 7 types de terrain. Donc vous mettez vos carreaux transparants comme ceci, sur la troisième couche ( en rouge c'est le numéro ). voir l'image Maintenant vous devez faire dans les Evénements communs un événement en Processus parallèle qui donne les variables x et y du héros plus son numéro de terrain ( dans les opérations sur variable ). Ensuite vous mettez l'événement de votre garde ( vous pouvez définir une route ), et vous mettez ceci : voir l'image voir l'image voir l'image voir l'image Aide : Terrain est la variable qui contient le numéro du terrain du héros, héros x sa posx, hérosy sa position y, g1x la position du garde x, g1y, la position du garde y, ec1x, l'écart de la position x du héros et celle du garde, ec1y, l'écart de la position du héros et du garde y. Teleport:Héros vous téléporte à l'endroit où vous devez recommencer ( si votre infiltration échoue par exemple ). Déplacer cet événement:évenement : vous devez faire la commande déplacer, choisir cet événement et ne rien mettre d'autre. Maintenant, vous devez avoir un garde actif qui ne peut vous voir derrière des objets, très pratique pour des jeux d'infiltration ! voila |
|
Ryu | administrateur | | | 264 messages postés |
| Posté le 07-09-2005 à 14:23:43
| merci, mais il y as une faute quelque part, car le garde ne remarque pas que je change de case... |
|
dante | administrateur | | | 254 messages postés |
| Posté le 07-09-2005 à 15:01:17
| ok je vais voir ca avec les pro lol |
|
dante | administrateur | | | 254 messages postés |
| Posté le 08-09-2005 à 13:35:35
| essaye celui la un ami l'a tester et il m'a dit k'il marche I: Installation: Aller dans l' éditeur de scripts (F11) et crée un nouveau scrîpt que vous nommerez, par exemple, "View_Range", puis collez ceci dedans: Code: #============================================================================== # Veiw Range scrîpt #------------------------------------------------------------------------------ # By: Near Fantastica # Date: 25/11/04 #============================================================================== class View_Range #-------------------------------------------------------------------------- # ● Ce système de "rang" marche en scannant une zone semie circulaire située en face de l' événement. # La vue est crée dans chaque événement est égale au radian du cercle # L' équation est: (Px-EX)^2 + (Py-Ey)^2 = radius^2 # Si le radian est supérieur ou égal à la Vue, le joueur se trouve dans le cercle. #-------------------------------------------------------------------------- attr_accessor :event_num attr_accessor :view_range #-------------------------------------------------------------------------- # ● Initialization #-------------------------------------------------------------------------- def initialize(event_num,veiw_range,els) @event_num = event_num @event_locial_switch = els @view_range = veiw_range @playerx = $game_player.x @playery = $game_player.y @eventx = $game_map.events[@event_num].x @eventy = $game_map.events[@event_num].y @event_direction = $game_map.events[@event_num].direction end #-------------------------------------------------------------------------- # ● Initialization #-------------------------------------------------------------------------- def event_view @playerx-=@eventx @playerx*=@playerx @playery-=@eventy @playery*=@playery @playerx+=@playery @view_range*=@view_range if @playerx <= @view_range $game_self_switches = {[$game_map.map_id, @event_num, @event_locial_switch] => true} $game_map.need_refresh = true end end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def enemies_view if @event_direction == 2 if @playery >= @eventy @playerx-=@eventx @playerx*=@playerx @playery-=@eventy @playery*=@playery @playerx+=@playery @view_range*=@view_range if @playerx <= @view_range $game_self_switches = {[$game_map.map_id, @event_num, @event_locial_switch] => true} $game_system.timer = 420 $game_system.timer_working = true $game_map.need_refresh = true end end end if @event_direction == 4 if @playerx <= @eventx @playerx-=@eventx @playerx*=@playerx @playery-=@eventy @playery*=@playery @playerx+=@playery @view_range*=@view_range if @playerx <= @view_range $game_self_switches = {[$game_map.map_id, @event_num, @event_locial_switch] => true} $game_system.timer = 420 $game_system.timer_working = true $game_map.need_refresh = true end end end if @event_direction == 6 if @playerx >= @eventx @playerx-=@eventx @playerx*=@playerx @playery-=@eventy @playery*=@playery @playerx+=@playery @view_range*=@view_range if @playerx <= @view_range $game_self_switches = {[$game_map.map_id, @event_num, @event_locial_switch] => true} $game_system.timer = 420 $game_system.timer_working = true $game_map.need_refresh = true end end end if @event_direction == 8 if @playery <= @eventy @playerx-=@eventx @playerx*=@playerx @playery-=@eventy @playery*=@playery @playerx+=@playery @view_range*=@view_range if @playerx <= @view_range $game_self_switches = {[$game_map.map_id, @event_num, @event_locial_switch] => true} $game_system.timer = 420 $game_system.timer_working = true $game_map.need_refresh = true end end end end end II: "Maintenant que j' ai fais ça, comment qu' on fait pour la suite????" Rien de plus simple! Commencez par crée un événement sur la carte, attribuez lui une image etc et mettez le en: Processus Parallèle (pour qu' il se lance automatiquement) Puis; pour créer une zone de scan CIRCULAIRE (par exemple un bruit de crépitement qui va crescendo autour d' un feu) appelez la fonction Call scrîpt dans l' événement et collez y ceci: Code: check = View_Range.new(Event ID, View Range, Local Switch) check.event_view EXPLICATIONS: Vous voyez les parenthèses? C' est là que tout ce joue, vous allez voir, c' est simple: Event ID: le numéro d' identification de l' événement, ne mettez le chiffre ou le nombre complet, sans les zéro, exemple: pour EV003 vous mettrez: 3 tout court View Range: le nombre de cases que l' événements scannera devant lui, sa distance de vue; exemple: pour que le méchant garde voit à trois case devant lui et sur les côtés mettez......3 !!! ^^ Simple non? Local Switch: Ah, voici toute la mécanique du système, ici mettez un interrupteur local, et local UNIQUEMMENT! A savoir il y en a quatre: A, B, C et D; il vous faudra mettre cet interrupteur entre "" guillemets: exemple "A" Cet interrupteur s' activera si le joueur passe dans le champ de vision de l' événement (champ de vision dont nous avons fixer les caractéristiques supra) et activera la SECONDE page de l' événement que nous allons créer maintenant: Créons donc une seconde page, donnez à l' événements le "physique" voulu puis, cochez la case [/]L' interrupteur local A (par exemple) est activé C' est en fait la condition pour que cette page se lance, à la place de A mettez l' interrupteur local que vous avez octroyé en première page lors du Call scrîpt. (exemple: "A") Coché égalemment la case: Démarrage automatique de la page. Une fois cela fait, il ne vous reste plus qu' a mettre les fonctions désirée dans la plage des événements (exemple ppur notre garde aux aguets: message: Hum?! There is somebodys therrrre !! (ce qui ont joué à mgs2 sauront de quoi je parle ! ^^) Game over (Snake? SNNNNNAAAAAAAAAAKE!!!!!) Bref, quoi qu' il en soit remplissez votre page comme vous l' entendez, c' est votre jeu après tout ! ^^ Quoi qu' il en soit n' oubliez pas de désactiver l' interrupteur A (par exemple) à la fin de votre page si vous ne voulez pas que votre garde repère sempiternellement le pauvre Snake !^^ Bien, nous avons donc vu dans cette partie le scrîpt à appeler pour des scans circulaires tout autour de l' event, maintenant pour des scans semi circulaire (vue humaine) nous allons passer à... III l' Autre Call scrîpt: Pour faire des scans semis circulaires, à la place du premier call scrîpt, appelez celui ci : Code: check = View_Range.new(Event ID, View Range, Local Switch) check.enemies_view Ici c' est la même chose que pour l' autre.
Message édité le 08-09-2005 à 13:36:24 par dante |
|
Ryu | administrateur | | | 264 messages postés |
| Posté le 08-09-2005 à 17:14:21
| merci !!! je vais voir ça de suite |
|
Ryu | administrateur | | | 264 messages postés |
| Posté le 08-09-2005 à 18:07:13
| y'as un truc qui ne joue pas, quand je passe devent le garde, il y à un contarbour qui commence et qunad il arrive à 0, rien ne se passe..... et qunad je reste devand le garde, le crono reste sur 10:00 j'ai l'impression que l'interupteur "A" ne s'active pas... |
|
dante | administrateur | | | 254 messages postés |
| Posté le 08-09-2005 à 19:12:47
| je vais voir ce que je peu faire |
|
myk22 | espion | | | 136 messages postés |
| Posté le 11-09-2005 à 22:31:26
| lol quel embrouille :s je m'embarque pas tout de suite la dedans |
|
dante | administrateur | | | 254 messages postés |
| Posté le 11-09-2005 à 22:32:35
| ok mais apres je peu t'aider si tu veux |
|
myk22 | espion | | | 136 messages postés |
| Posté le 11-09-2005 à 22:35:14
| ben en reflichissant l'utlisatioon de ce truc me sera utlise en fin de jeu mes heros vont s'introduire dans la base centrale de la garde nationale et les detruire (par rage de meurtre de ses parent, ou plustot de sa mere ) |
|
dante | administrateur | | | 254 messages postés |
| Posté le 11-09-2005 à 22:35:58
| ok je vais t'aider a le faire |
|
myk22 | espion | | | 136 messages postés |
| Posté le 11-09-2005 à 22:42:25
| oui oui mais plus tard car la je suis au debut du projet j'ai plusieur projet en cour (oui j'ai ete trop gourmant) -The power of element : demo : http://dl7.rapidshare.de/files/4988435/93776876/the_power_of_element_demo.rar C'est le truc que je t'ai raconte l'histoire en exemple j'ai aussi : -It is the life not the paradise , ce que je vient de te raconter plus haut et enfin: -Donjon of dreams un gars qui fait un reve , un reve qui va ameliorer ses comptenec pour devenir hero et sauver definitivement la terre du mal (jeux en plusieur episode et je suis qu'au 1)
Message édité le 11-09-2005 à 22:43:50 par myk22 |
|
dante | administrateur | | | 254 messages postés |
| Posté le 11-09-2005 à 22:44:23
| bon je vais cree un topic pour notre team moi toi et ryu et zelda si il veux bien |
|
myk22 | espion | | | 136 messages postés |
| Posté le 11-09-2005 à 22:58:53
| ok chui pret a partciper si la shool m'en empeche pas |
|
dante | administrateur | | | 254 messages postés |
| Posté le 11-09-2005 à 22:59:55
| ok j'espere que tu pourra participer |
|
myk22 | espion | | | 136 messages postés |
| Posté le 11-09-2005 à 23:07:01
| moi aussi |
|
Ryu | administrateur | | | 264 messages postés |
| Posté le 11-09-2005 à 23:20:29
| de même. |
|
zelda mythologie | espion | | | 142 messages postés |
| Posté le 12-09-2005 à 18:43:23
| désolé pour l'absence moi je suis partant |
|
Drizzt Do Urden | paysan | | 18 messages postés |
| Posté le 02-03-2006 à 02:02:02
| Wow merci pour le script très pratique mais bon vu qu'il ne fonctionne pas je vais attendre avant de l'utiliser. |
|
Ryu | administrateur | | | 264 messages postés |
| Posté le 04-03-2006 à 17:37:25
| j'ai presque réussi à le corrigé, tout ce qui cloche maintenent, c'est qu'ils voyent à travers les murs...
Message édité le 07-04-2006 à 22:08:55 par Ryu
-------------------- |
|
dante | administrateur | | | 254 messages postés |
| Posté le 07-04-2006 à 12:26:53
| je vais postez un autre que je vient de tester et qui marche tres bien |
|
Ryu | administrateur | | | 264 messages postés |
| Posté le 07-04-2006 à 22:11:10
| je l'attant avec impatiance ^^
-------------------- |
|
|