Sujet: [VX] Champ de vision Sam 21 Mar 2009 - 12:52
Auteur : cmpsr2000
Description de script Fini les manipulations de variables interminables pour créer une scène d'infltration ! Avec ce script vous n'avez qu'à effectuer un appel de script et le tour est joué ! Et le must du must, les tilesets sont capable de boucher le champdevision des gardes !
Ce script vous permet de créer des Scènes d'infiltrations très facilement. Voici comment ça fonctionne :
Il existe trois mode de detection :
- Celle qui téléporte le héros directement en prison si il est repéré - Celle qui affiche un GameOver lorsque le héros est vu - Celle qui active un evenement commun lorsqu'il se fait reperer - Le dernier mode s'appelle le mode MGS. Lorsque le garde voit un truc suspect, il va voir ce qu'il se passe. Si il vous repère, c'est Game Over.
La vitesse du garde peut également être modifié, ainsi que l'action a effectuer lorsque le héros se fait reperer dans le mode MGS (GameOver par défaut)
Maintenant que vous connaissez les modes, voici les options :
- Tunnelvision : Pratique si vos gardes sont dans un couloir. Ca vous evite quelques bugs devision.
- TrueSight : Gardes bioniques :p Ces gardes peuvent voir à travers les murs. Désactivé par défaut.
Pour faire simple, voici un exemple dechampdevisionde 5 cases en mode normal :
Maintenant placons un tile pour boucher son champdevision :
Vous voyez ? C'est pas très compliqué !
Maintenant, on active le mode couloir (tunnelvision)
Et enfin, on active le mode truesight qui permet de voirs a travers les tiles !
Très bien, maintenant que vous voyez à peu près le fonctionnement du script, voici ce qu'il se passe quand le héros est repéré (personnellement j'ai choisi d'activer un evenement commun, ça ouvre plus de possibilités)
Screen
Script
Il faut coller deux scripts au dessus de Main :
DarkShield
Vagabond Lv.5
Inscrit le : 14/05/2008 Messages : 86
Sujet: Re: [VX] Champ de vision Sam 21 Mar 2009 - 12:53
1er Script
Spoiler:
Code:
#------------------------------------------------------------------------------- # # Stealth Detection System v 1.0 # code by cmpsr2000 @ rpgrevolution.com/forums # Released June 11, 2008 # #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # # SDS is an advanced stealth detection system for use in RPG Maker VX games. # To use the system, you need to build an event that begins with a script call: # # $game_stealth.detector(eventID, detectRange, detectAction, # tunnelVision, trueSight) # # eventID: l'ID de l'event. mettez @event_id pour eviter de configurer a chaque fois. # detectRange: Distance à laquelle le garde peut voir
# detectAction: le mode de detection des gardes # PAR DEFAUT : Mode 1 (GameOver) # 0: Téléportation # 1: Game Over # 2: Executer evenement commun # 3: MGS Mode # tunnelVision: Le champdevision se fait en ligne droite # PAR DEFAUT = false # trueSight: Le garde voit a travers les murs # PAR DEFAUT = false # # # EXPLICATION DU MGS MODE: # # Lorsque vous utilisez le mode 3 (MGS Mode) , le garde sera "alerté" # par n'importe quel mouvement suspect. Le garde courra donc vers votre derniere position. # Le garde regardera autour de lui, et, si il vous trouve, l'action défini dans "Capture_Action" s'execute. # #------------------------------------------------------------------------------- class Game_Stealth
#--------------------------------------------------------------------------- # Si vous utilisez le tunnel vision, vous pouvez définir ici la largeur # du couloir. ATTENTION, le nombre doit etre un nombre IMPAIR ! # #--------------------------------------------------------------------------- @tunnelWidth = 3
#--------------------------------------------------------------------------- # Si vous utilisez le mode 2 (Evenement commun) Entrez l'ID de l'event ici. #--------------------------------------------------------------------------- @common_event_id = 1
#--------------------------------------------------------------------------- # Vitesse et fréquence des gardes dans le # MGS mode. # Vitesse: 1: Tres lent, # 2: Lent # 3: Modéré # 4: Normal # 5: Rapide # 6: Très rapide # # frequency: 1: La plus basse # 2: Basse # 3: Normale # 4: Grande # 5: Maximum #--------------------------------------------------------------------------- @guardInterceptSpeed = 4 @guardInterceptFrequency = 5
#--------------------------------------------------------------------------- # Definissez ici l'action a effectuer lorsque le garde # Repere le héros. # captureAction: 0: Téléportation # 1: Game Over # 2: Evenement commun #--------------------------------------------------------------------------- @captureAction = 1
#--------------------------------------------------------------------------- # Intervalle de temps entre chaque mouvement lorsque # le garde cherche le heros dans le MGS mode. #--------------------------------------------------------------------------- @waitTime = 60
#--------------------------------------------------------------------------- # Mettez le en "false" et la vision derriere le garde sera désactivé # Cela signifie que vous pouvez marcher derriere le garde sans qu'il # s'en apercoive. #--------------------------------------------------------------------------- @allowDetectRadius= true
@tunnelWidth += 1 if (@tunnelWidth % 2) == 1 end
#----------------------------------------------------------------------------- # LA CONFIGURATION S'ARRETE ICI #----------------------------------------------------------------------------- def update if $game_player.detected and not $game_player.moving? doDetectAction end for guard in @alertedGuards case guard.detectState when nil, 0 #alerted guard.lock guard.returnX = guard.x guard.returnY = guard.y guard.returnRoute = guard.move_route guard.returnRouteIndex = guard.move_route_index guard.returnSpeed = guard.move_speed guard.returnFrequency = guard.move_frequency guard.move_speed = @guardInterceptSpeed guard.move_frequency = @guardInterceptFrequency guard.isAware = false guard.detectState = guard.goto($game_player.x, $game_player.y) ? 1 : 3 guard.unlock when 1 #intercepting if (guard.move_route_index == guard.move_route.list.length - 1 and guard.stopping?) or guard.move_failed guard.lock guard.isAware = true guard.spinInPlace(@waitTime) guard.detectState = 2 guard.unlock end when 2 #checking if guard.move_route_index == guard.move_route.list.length - 1 and guard.stopping? guard.lock guard.isAware = false go = guard.goto(guard.returnX, guard.returnY) guard.detectState = 3 guard.unlock end when 3 #returning if guard.move_route_index == guard.move_route.list.length - 1 and not guard.moving? guard.lock guard.isAware = true guard.move_route = guard.returnRoute guard.move_route_index = guard.returnRouteIndex guard.move_speed = guard.returnSpeed guard.move_frequency = guard.returnFrequency guard.detectState = 0 @captured = false @alertedGuards.delete(guard) guard.unlock end end end observe end #----------------------------------------------------------------------------- # Runs through the aware events(guards) on the map and tells them to check # for the player. #----------------------------------------------------------------------------- def observe for event in $game_map.events.values #events is a hash! if event.isAware if event.moved? or event.turned? or $game_player.moved? if checkForDetection(event) $game_player.detected = true @detectingEvent = event return end end end @checkedTiles = [] @fovPassability = {} end end #----------------------------------------------------------------------------- # Runs through each tile in the event(guard)'s field of view and checks # it for the player. RETURNS: Boolean # event: The guard that is currently checking for the player. #----------------------------------------------------------------------------- def checkForDetection(event) return true if playerInDetectionRadius(event) return false if playerOutOfRange(event) fieldOfView = event.tunnelVision ? @tunnelWidth : 1 for distance in 1..event.detectRange for width in 1..fieldOfView return true if checkTile(event, width, distance) end fieldOfView += 2 unless event.tunnelVision end return false end
DarkShield
Vagabond Lv.5
Inscrit le : 14/05/2008 Messages : 86
Sujet: Re: [VX] Champ de vision Sam 21 Mar 2009 - 12:53
Suite du 1er Script :
Spoiler:
Code:
#----------------------------------------------------------------------------- # Checks a tile for the player. RETURNS: Boolean # event: The guard that is currently checking for the player. # width: The width-index of the tile being checked # distance: The depth-index of the tile being checked #----------------------------------------------------------------------------- def checkTile(event, width, distance) if event.tunnelVision if @tunnelWidth > 1 width = width - ((@tunnelWidth - 1)/2) else width = 0 end else width -= distance end x = event.x y = event.y direction = event.direction case direction when 2 y += distance x += width when 4 y += width x -= distance when 6 y += width x += distance when 8 y -= distance x += width end return false if @checkedTiles.index([x,y]) != nil return false if tileHidden?(event, x, y) return true if $game_player.x == x and $game_player.y == y return false end #----------------------------------------------------------------------------- # Determines the visibility of a tile to a guard. RETURNS: Boolean # event: The guard that is currently checking for the player. # x: The x coordinate of the tile to be checked # y: The y coordinate of the tile to be checked #----------------------------------------------------------------------------- def tileHidden?(event, x, y) return false if event.trueSight #check the current tile first @checkedTiles.push([x,y]) originalX = x originalY = y if not $game_map.passable?(x, y) @fovPassability[[x,y]] = false return true end
#now check all adjacent tiles one step closer to the detector direction = event.direction case direction when 2 #down y -= 1 for i in (x-1)..(x+1) #if we've checked the tile, then it exists in the FoV if @checkedTiles.index([i,y]) != nil if not @fovPassability[[i,y]] @fovPassability[[originalX,originalY]] = false return true end end end when 4 #left x += 1 for i in (y-1)..(y+1) #if we've checked the tile, then it exists in the FoV if @checkedTiles.index([x,i]) != nil if not @fovPassability[[x,i]] @fovPassability[[originalX,originalY]] = false return true end end end when 6 #right x -= 1 for i in (y-1)..(y+1) #if we've checked the tile, then it exists in the FoV if @checkedTiles.index([x,i]) != nil if not @fovPassability[[x,i]] @fovPassability[[originalX,originalY]] = false return true end end end when 8 #up y += 1 for i in (x-1)..(x+1) #if we've checked the tile, then it exists in the FoV if @checkedTiles.index([i,y]) != nil if not @fovPassability[[i,y]] @fovPassability[[originalX,originalY]] = false return true end end end end
#this tile and the blocking tiles must be passable @fovPassability[[originalX,originalY]] = true return false end #----------------------------------------------------------------------------- # Guards and other "detector" events have an awareness of their immediate # surroundings. If the player is adjacent to the event, they will be # discovered if @allowDetectRadius is true. RETURNS: Boolean # event: The guard that is currently checking for the player. #----------------------------------------------------------------------------- def playerInDetectionRadius(event) return false unless @allowDetectRadius adjacentTiles = [ [event.x, event.y - 1], [event.x + 1, event.y - 1], [event.x + 1, event.y], [event.x + 1, event.y + 1], [event.x, event.y + 1], [event.x - 1, event.y + 1], [event.x - 1, event.y], [event.x - 1, event.y - 1] ] for tile in adjacentTiles if $game_player.x == tile[0] and $game_player.y == tile[1] return true end end return false end
def playerOutOfRange(event) direction = event.direction case direction when 2 #down yDifference = event.y - $game_player.y xDifference = event.x - $game_player.x coneWidth = event.tunnelVision ? (@tunnelWidth / 2).floor : event.detectRange - 1 if yDifference > event.detectRange or $game_player.y < event.y - 1 or (xDifference.abs > coneWidth) return true end when 4 #left yDifference = event.y - $game_player.y xDifference = event.x - $game_player.x coneWidth = event.tunnelVision ? (@tunnelWidth / 2).floor : event.detectRange - 1 if xDifference > event.detectRange or $game_player.x > event.x + 1 or (yDifference.abs > coneWidth) return true end when 6 #right yDifference = $game_player.y - event.y xDifference = $game_player.x - event.x coneWidth = event.tunnelVision ? (@tunnelWidth / 2).floor : event.detectRange - 1 if xDifference > event.detectRange or $game_player.x < event.x - 1 or (yDifference.abs > coneWidth) return true end when 8 #up yDifference = event.y - $game_player.y xDifference = event.x - $game_player.x coneWidth = event.tunnelVision ? (@tunnelWidth / 2).floor : event.detectRange - 1 if yDifference > event.detectRange or $game_player.y > event.y + 1 or (xDifference.abs > coneWidth) return true end end return false end #----------------------------------------------------------------------------- # Called in an event to enable detection for the event (guard). # eventID: The id of the event. use @event_id in your event call! # detectRange: How far away the guard can see # detectAction: What happens when caught. defaults to game_over # tunnelVision: Whether the guard has field of view or tunnel vision # trueSight: Whether the guard can see through objects #----------------------------------------------------------------------------- def detector(eventID, detectRange, detectAction = 1, tunnelVision = false, trueSight = false) event = $game_map.events[eventID] event.isAware = true event.detectAction = detectAction event.detectRange = detectRange event.tunnelVision = tunnelVision event.trueSight = trueSight event.setPosition end #----------------------------------------------------------------------------- # Called in an event to set the location tile of the "jail" # eventID: The ID of the event that is at the jail location. # Again, use @event_id #----------------------------------------------------------------------------- def jail(eventID) event = $game_map.events[eventID] @jailX = event.x @jailY = event.y end #----------------------------------------------------------------------------- # Executes the desired action upon detecting the player #----------------------------------------------------------------------------- def doDetectAction case @detectingEvent.detectAction when 0 # goto jail sendToJail when 1 # game over $scene = Scene_Gameover.new when 2 # execute common event doCommonEvent when 3 # MGS - enemy moves towards player position if @detectingEvent.detectState == 2 if not @captured case @captureAction when 0 sendToJail when 1, 3 gameOver when 2 doCommonEvent end @captured = true end else Sound.play_found @detectingEvent.balloon_id = 1 unless @alertedGuards.include?(@detectingEvent) @alertedGuards.push(@detectingEvent) end end end $game_player.detected = false @detectingEvent = nil end #----------------------------------------------------------------------------- # MODE 0: Send player to the "jail" tile #----------------------------------------------------------------------------- def sendToJail $game_player.reserve_transfer($game_map.map_id, @jailX, @jailY, @detectingEvent.direction) end #----------------------------------------------------------------------------- # MODE 1: Game Over #----------------------------------------------------------------------------- def gameOver $scene = Scene_Gameover.new end #----------------------------------------------------------------------------- # MODE 2: Execute Common Event #----------------------------------------------------------------------------- def doCommonEvent $game_temp.common_event_id = @common_event_id end end
DarkShield
Vagabond Lv.5
Inscrit le : 14/05/2008 Messages : 86
Sujet: Re: [VX] Champ de vision Sam 21 Mar 2009 - 12:54
2e script :
Spoiler:
Code:
#------------------------------------------------------------------------------- # Son joué lorsque le héros est repéré #------------------------------------------------------------------------------- module Sound def self.play_found Audio.se_play("Audio/SE/found.wav", 100, 150) end end #------------------------------------------------------------------------------- # This contains command for object movement and can be reused and included in # any game_character or it's descendants. #------------------------------------------------------------------------------- module Movement #----------------------------------------------------------------------------- # Checks to see whether this object has moved since the last check. # RETURNS: Boolean #----------------------------------------------------------------------------- def moved? if self.x != @oldX or self.y != @oldY setPosition return true else return false end end #----------------------------------------------------------------------------- # Checks to see whether this object has turned. # RETURNS: Boolean #----------------------------------------------------------------------------- def turned? if self.direction != @oldDirection setDirection return true else return false end end #----------------------------------------------------------------------------- # Saves the current direction so that it can be checked against after a turn #----------------------------------------------------------------------------- def setDirection @oldDirection = self.direction end #----------------------------------------------------------------------------- # Saves the current position so that it can be checked against after a move #----------------------------------------------------------------------------- def setPosition @oldX = self.x @oldY = self.y end #----------------------------------------------------------------------------- # Changes the object's route to perform an in-place spin while waiting after # each turn. It is recommended to call object.lock before using this, and # call object.unlock when it has complete. #----------------------------------------------------------------------------- def spinInPlace(waitTime) spinRoute = RPG::MoveRoute.new spinRoute.repeat = false spinRoute.wait = true for x in 0..3 spinRoute.list.push(RPG::MoveCommand.new(15, [waitTime])) spinRoute.list.push(RPG::MoveCommand.new(16 + x)) end spinRoute.list.push(RPG::MoveCommand.new(15, [waitTime])) spinRoute.list.push(RPG::MoveCommand.new(0)) spinRoute.list.delete_at(0) #weird RGSS Anomoly, must delete empty position
self.move_route = spinRoute self.move_route_index = 0 end #----------------------------------------------------------------------------- # This is an advanced pathfinding algorithm that returns a boolean indicating # whether or not it was able to find a path from the start point (the object's # current location) to the endpoint, then changes the object's move values # to initiate movement. RETURNS: Boolean # finalX: x coordinate of the destination # finalY: y coordinate of the destination #----------------------------------------------------------------------------- def goto(finalX, finalY) return true if self.x == finalX and self.y == finalY startX = self.x startY = self.y
#main logic while @closedList.index(finalNode) == nil nodeToCheck = @activeList[0] #lowest F is always in position 0! if nodeToCheck == nil noPath = true break end moveToClosed(nodeToCheck) for node in adjacentNodes(nodeToCheck) #a "node" is an array: [x, y] !!! if ($game_map.passable?(node[0], node[1]) and @closedList.index(node) == nil) or node == finalNode index = @activeList.index(node) if index == nil scores = calcScores(node, nodeToCheck, finalNode) insertionPoint = findInsertionPoint(scores[0]) @activeList.insert(insertionPoint, node) @activeParents.insert(insertionPoint, nodeToCheck) @activeScores.insert(insertionPoint, scores) else g = calcG(nodeToCheck) if g < @activeScores[index][1] @activeParents[index] = nodeToCheck h = @activeScores[index][2] f = g + h @activeScores[index] = [f, g, h] insertionPoint = findInsertionPoint(@activeScores[index][0])
#we don't need to reinsert if we already exist in the right place if insertionPoint != index tempNode = @activeList[index] tempParent = @activeParents[index] tempScores = @activeScores[index]
#reinsert @activeList.insert(insertionPoint, tempNode) @activeParents.insert(insertionPoint, tempParent) @activeScores.insert(insertionPoint, tempScores) end end end end end end
#return if there is no path, otherwise build the path return false if noPath path = [finalNode] parent = @closedParents[@closedList.index(finalNode)] while parent != [startX, startY] path.push(parent) parent = @closedParents[@closedList.index(parent)] end path.reverse! #put the path in order of execution
#make a new route object that doesn't repeat (one time use only!) gotoRoute = RPG::MoveRoute.new gotoRoute.repeat = false
#itterate through the path and add the appropriate commands to the route #we can't move diagonal, so only one x or one y should change between steps lastNode = [startX, startY] for node in path if node[0] > lastNode[0] commandCode = 3 # move right elsif node[0] < lastNode[0] commandCode = 2 # move left else if node[1] > lastNode[1] commandCode = 1 # move down elsif node[1] < lastNode[1] commandCode = 4 # move up end end lastNode = node gotoRoute.list.push(RPG::MoveCommand.new(commandCode)) end gotoRoute.list.push(RPG::MoveCommand.new(0)) gotoRoute.list.delete_at(0) #weird RGSS Anomoly, must delete empty position
#set the object's route and return! self.move_route = gotoRoute self.move_route_index = 0 return true end #----------------------------------------------------------------------------- # moves the active node to the closed list so it's not checked twice! #----------------------------------------------------------------------------- def moveToClosed(activeNode) index = @activeList.index(activeNode)
#add to closed @closedList.push(@activeList[index]) @closedParents.push(@activeParents[index]) @closedScores.push(@activeScores[index])
#delete from active @activeList.delete_at(index) @activeParents.delete_at(index) @activeScores.delete_at(index) end #----------------------------------------------------------------------------- # finds the array insertion point based on the f score #----------------------------------------------------------------------------- def findInsertionPoint(f) insertionPoint = 0 if @activeList.length != 0 while insertionPoint < @activeList.length if f <= @activeScores[insertionPoint][0] break else insertionPoint += 1 end end end
return insertionPoint end #----------------------------------------------------------------------------- # calculates all the scores for a node #----------------------------------------------------------------------------- def calcScores(node, parentNode, finalNode) h = calcH(node, finalNode) g = calcG(parentNode) f = g + h
return [f, g, h] end #----------------------------------------------------------------------------- # calculates the G value (route distance) #----------------------------------------------------------------------------- def calcG(parentNode) #can't move diagonly: just add 1 to parent score index = @closedList.index(parentNode) score = @closedScores[index][1] + 1 return score end #----------------------------------------------------------------------------- # claculates the H value (distance from start to finish) #----------------------------------------------------------------------------- def calcH(node, finalNode) #Manhattan method is admissible in this context score = (node[0] - finalNode[0]).abs + (node[1] - finalNode[1]).abs
return score end #----------------------------------------------------------------------------- # Finds the adjacent nodes of the active node #----------------------------------------------------------------------------- def adjacentNodes(sourceNode) node1 = [sourceNode[0] + 1, sourceNode[1]] node2 = [sourceNode[0], sourceNode[1] + 1] node3 = [sourceNode[0] - 1, sourceNode[1]] node4 = [sourceNode[0], sourceNode[1] - 1] return [node1, node2, node3, node4] end end #------------------------------------------------------------------------------- # the instance of $game_stealth needs to be created #------------------------------------------------------------------------------- class Scene_Title < Scene_Base alias oldCreateGameObjectsStealth create_game_objects def create_game_objects oldCreateGameObjectsStealth $game_stealth = Game_Stealth.new end end #------------------------------------------------------------------------------- # The stealth system needs to be updated every frame along with the map scene #------------------------------------------------------------------------------- class Scene_Map < Scene_Base alias oldUpdateStealth update def update oldUpdateStealth unless $game_message.visible # Unless displaying a message $game_stealth.update end end end
class Game_Player < Game_Character include Movement attr_accessor :detected end #------------------------------------------------------------------------------- # Events have tons of new attributes with the stealth system. Plus, we need to # include the movement module and initialize awareness to false. #------------------------------------------------------------------------------- class Game_Event < Game_Character include Movement
Laissez @event_id tel quel, remplacer "nbdecases" par la distance du champdevision, remplacer "mode_detection" par 0, 1, 2 ou 3 ens achant que :
0 = téléportation 1 = Game Over 2 = Evenement commun 3 = Mode MGS
Remplacez tunnelvision et trueSight par "true" si vous voulez les activer, sinon effacez les, par défaut ils sont "false".
Enjoy !
Matsuo Kaito
Age : 33 Inscrit le : 27/06/2008 Messages : 10881
Sujet: Re: [VX] Champ de vision Sam 21 Mar 2009 - 12:57
Ca a l'air sympa, et surtout super pratique !
Merci du partage ^^
DarkShield
Vagabond Lv.5
Inscrit le : 14/05/2008 Messages : 86
Sujet: Re: [VX] Champ de vision Sam 21 Mar 2009 - 12:57
ATTENTION ! A ceux qui utilisent le Skip Title Script !!
Le script ne marchera pas si vous ne rajoutez pas ceci entre la ligne 63 et la ligne 183 :
Code:
$game_stealth = Game_Stealth.new
Et il y a aussi un bug si vous utilisez le script "Game Over" de moon .
A part ça le script fonctionne nickel !
lecode234
Citadin Lv.7
Age : 28 Inscrit le : 09/01/2010 Messages : 219
Sujet: Re: [VX] Champ de vision Mer 13 Jan 2010 - 15:49
J'ai découvert un bug.Impossible de sélection le code dans les balises X_x
jebbou
Doyen
Age : 46 Inscrit le : 20/08/2008 Messages : 2485
Sujet: Re: [VX] Champ de vision Mer 13 Jan 2010 - 16:36
il y'a plusieurs bugs dans ce script. J'ai du en corriger quelques-uns peu pour que ca fonctionne pour mon jeu. Je crois avoir mis la version corrigé sur le site où ce script est originallement publié (RPG Revolution je crois).
EDIT:
Ma version corrigé peut être trouvé ici: http://www.rpgrevolution.com/forums/index.php?showtopic=15208&view=findpost&p=335482
Suivre le reste de la discussion dans ce thread, car j'ai rajouté d'autre trucs pour simplifier la vie des gens: http://www.rpgrevolution.com/forums/index.php?showtopic=15208&view=findpost&p=336013
nemesisvsjill
Poulet trizo Lv.3
Avertissements : 3Inscrit le : 04/10/2008 Messages : 42
Sujet: Re: [VX] Champ de vision Dim 7 Fév 2010 - 13:21
Tout simplement énorme, c'est juste ce dont j'avais besoin, un grand merci.
Edit: Au fait, je sais pas si c'est considéré comme un nécropost, mais sachez que je me sentais obligé de remercier celui qui a posté un script aussi utile.
DedZ
Voyageur Lv.10
Age : 27 Inscrit le : 12/03/2010 Messages : 465
Sujet: Re: [VX] Champ de vision Ven 16 Avr 2010 - 7:18
Excuse nécro ^^
J'ai un problème avec ce script.J'ai tout copié/collé, en 2 scripts différends au dessus de main, j'ai fait un appel de script sur un PNJ (déclenchement:touche action.C'est sa ?).Mais quand je teste ben...Le mec passe à 1 case de moi tranquil ^^
Help me !
DedZ
Voyageur Lv.10
Age : 27 Inscrit le : 12/03/2010 Messages : 465
Sujet: Re: [VX] Champ de vision Dim 25 Avr 2010 - 7:18
Up, désolé du double nécro post, mais c'est vraiment super important pour mon jeu !
BARVACHE
Vache Folle
Age : 29 Inscrit le : 22/05/2010 Messages : 3005
Sujet: Re: [VX] Champ de vision Dim 13 Juin 2010 - 13:36
Je pense pas que c'est un necro post mais moi aussi j'ai ça. Le plus bizzare c'est que je l'ai utilisé vers onze heures, il marchat nickel, et maintenant je le reprends parceque j'ai eu un bug et ça me fait comme toi.
BARVACHE
Vache Folle
Age : 29 Inscrit le : 22/05/2010 Messages : 3005
Sujet: Re: [VX] Champ de vision Lun 14 Juin 2010 - 9:33
Ca marche!!! Fallais le mettre en event parallèle!
Blockade
Ex-Admin Cruelle
Age : 32 Inscrit le : 03/07/2008 Messages : 2441
Sujet: Re: [VX] Champ de vision Lun 14 Juin 2010 - 10:40
Super !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Non sérieusement c'est un double post, donc un averto.
Samu
Voyageur Lv.10
Age : 44 Inscrit le : 14/04/2010 Messages : 455
Sujet: Re: [VX] Champ de vision Jeu 12 Aoû 2010 - 12:35
Moi sa me fait sa: [img][/img] Doc je sais pas se que cest le probleme... Merci Ps: je c'est pas si je fais du necro post si ou désolé.
Zangther
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
Sujet: Re: [VX] Champ de vision Jeu 12 Aoû 2010 - 12:42
Si je me souviens bien le nécro est toléré si c'est pour reporter un problème.
Enfin, le mieux reste encore d'aller créer un sujet dans la partie problèmes et solutions en donnant tous les éléments nécessaire a ce que ton problème soit résolu rapidement.
Samu
Voyageur Lv.10
Age : 44 Inscrit le : 14/04/2010 Messages : 455
Sujet: Re: [VX] Champ de vision Ven 13 Aoû 2010 - 15:53
Je vais le fair...
iaka
Poulet trizo Lv.3
Age : 25 Inscrit le : 22/09/2010 Messages : 32
Sujet: Re: [VX] Champ de vision Dim 16 Jan 2011 - 11:26
j'ai un probléme sa me mais"script'Game-character' line 213: NoMethodError occurred.
Hard Lugia
Poulet trizo Lv.3
Age : 30 Inscrit le : 10/06/2011 Messages : 37
Sujet: Re: [VX] Champ de vision Mar 7 Aoû 2012 - 15:40
J'ai un léger problème avec le script :
Je l'ai testé sur un nouveau projet, il marche bien Je l'ai mis sur mon projet, et peu importe le nombre de cases que j'affecte à l'event, cela ne marche point. Cependant, il repère en général le héros si celui-ci se trouve à une case de lui.
Quelqu'un peut-il m'aider ?
[Edit] Maintenant le problème est le même sur un nouveau projet...
Je crois avoir compris le problème mais je ne vois pas comment le régler...
J'ai donc régler le couloir à 1 case et la vision à 7 cases. Etre repéré lance un event commun (cela marche, le problème est la vision en ligne droite).
Aussi, est-il possible de changer d'event commun en cours de jeu ?