| Casse-tête or not casse-tête ? [résolu] | |
|
Auteur | Message |
---|
Habitant Lv.6
Age : 44 Inscrit le : 19/07/2009 Messages : 142
| Sujet: Casse-tête or not casse-tête ? [résolu] Lun 3 Mai 2010 - 21:07 | |
| Bonjour, bonsoir !
Alors la grande néophyte en scripture que je suis se demandait ceci : est-il possible, à l'aide d'un script, de faire en sorte qu'un event-PNJ qui se balade soit contrôlé lorsqu'un interrupteur X est activé, de sorte que d'où qu'il soit, il se rende là où on voudrait ?
Explications : imaginons une ville, un village, un bidonville, ce que vous voulez, et des braves petits mioches qui y cavalent à longueur de journée. Lorsque vient la nuit (activation de l'interrupteur X), toute cette joyeuse marmaille se doit de regagner ses pénates. Comment faire cela de façon naturelle, je vous le demande ?
Moi, je ne vois pas. Même si je fixe un déplacement précis, j'ignore à quel moment du déplacement du PNJ la nuit va tomber. Donc impossible de faire un truc du style : si interrupteur X On Déplacer PNJ comme ça et ça, jusqu'à la porte de sa baraque pour qu'il rentre chez lui comme tout le monde.
Donc pour l'heure, dans mon projet, ça donne plutôt: si interrupteur X On Disparition brutale du PNJ qui est censé être juste un gamin et pas un magicien...
Pas top... Quelqu'un s'est-il déjà penché sur la question ?
Dernière édition par Maègedyn le Lun 19 Juil 2010 - 10:56, édité 1 fois |
|
| |
Va-nu-pieds Lv.4
Age : 37 Inscrit le : 08/04/2010 Messages : 52
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Lun 3 Mai 2010 - 21:56 | |
| Un jeu vidéo s'était penché sur la question. Je ne me souviens plus du dit jeu, mais je me souviens de la technique utilisée :
La caméra se tournait vers le ciel, le soleil se couchait (ou se levait) et la camera revenait sur l'action avec les modifications effectuées. Sur RPGM, l'idée peut être d'intégrer un event commun (de type image ou animation explicite) à chaque activation de ton interrupteur X.
by Le Morse. |
|
| |
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Lun 3 Mai 2010 - 22:33 | |
| Faisable en event avec des pages avec des interrupteurs. Long mais faisable. |
|
| |
Age : 33 Inscrit le : 02/02/2010 Messages : 4692
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Lun 3 Mai 2010 - 22:39 | |
| A l'aide d'un script on peu faire que le personnage se déplace vers le point X de la map mais je me souviens plus d'où vient la difficulté, un truc qui fait que ça contourne pas les décors et que ça bloque, non?
Zang' expliquera mieux... |
|
| |
Habitant Lv.6
Age : 44 Inscrit le : 19/07/2009 Messages : 142
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Mar 4 Mai 2010 - 8:33 | |
| Merci des réponses et, Zangther, je veux bien que tu m'explique comment tu ferais en event ? Sachant que j'utilise le script Self_switch de Miraino et sais utiliser sa méthode d'Activation d'un self_switch par un autre event, au cas où ça permettrait ici aussi de minimiser l'utilisation excessif d'interrupteurs... [Petit aparté]j'adore son sens de l'optimisation maximale [/Petit aparté] |
|
| |
Age : 30 Inscrit le : 22/11/2008 Messages : 3382
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Mar 4 Mai 2010 - 14:33 | |
| Je le dis d'avance, je vais dire une connerie:
Le mieux, ce serait que l'endroit où sont destinés à aller tes PNJ devienne un héros, et qu'il y ait une nouvelle page à chacun de tes évents qui se dirigent vers le héros une fois cette page active.
En fait, si je dis ça, c'est qu'il doit y avoir, à mon avis, une portion de script qui gère ce déplacement vers le héros, et qu'on pourrait (enfin on.. Si on gère le ruby quoi) la modifier pour faire en sorte qu'un évent se déplace vers un autre évent. Etant donné que ce déplacement "vers le héros" gère les "ignorer si impossible" et qui continue jusqu'à ce qu'il ait atteint son but, ce serait le must.. Mais je n'ai aucune idée quant à la difficulté de réalisation voire même la possibilité pour tout ça.. |
|
| |
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Mar 4 Mai 2010 - 16:06 | |
| Tout repose sur une variable. Selon la valeur de cette variable les PNJ font des actions différentes. Après pour le déplacement c'est sur il faut travailler. Mais ça reste possible. |
|
| |
Mage Lv.11
Age : 27 Inscrit le : 02/03/2009 Messages : 513
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Mer 5 Mai 2010 - 17:35 | |
| J'ai un script moi sinon ^^ - Spoiler:
[code]=begin On doit faire 2 évent : Tu fait un évent en processus parallèle. Puis "Déplacer un événement", "Appeler un script" et tu marque [code]rejoindre(Id_event,pos_x,pos_y)|/code] Ou id_event c'est l'ID de ton évent. Pos_x : Position X d'arrivée Pos_y : Position Y d'arrivée Tu coches répéter déplacement et ignorer si impossible. Dans le même évent, tu fait une deuxième page vide qui s'active si l'interrupteur x est activé (remplace x par n'importe quel interrupteur) Et pour finir un autre évent en processus parallèle avec dedans : Condition > 4 éme page > script > $game_player.x == pos_x Et dans cette condition : Condition > 4 éme page > script > $game_player.y == pos_y Et dans cette condition : Activer l'interrupteur x. (pos_x est la position d'arrivée X, et pos_y position d'arrivée Y) Et voila ca marche ! =end #=============================================================== # ● [VX] Rejoindre un point sur la map #-------------------------------------------------------------- # ● Par Blockade # ● https://rpg-maker-vx.bbactif.com/forum.htm# ● Crée le 15/09/2009 # ● Version 1.0 #-------------------------------------------------------------- #=============================================================== def rejoindre(event_id,x,y) chara = $game_map.events[event_id] chara.move_toward_place(x,y) end class Game_Character #-------------------------------------------------------------------------- # * Move toward Player #-------------------------------------------------------------------------- def move_toward_place(x,y) sx = distance_x_from_place(x) sy = distance_y_from_place(y) if sx != 0 or sy != 0 if sx.abs > sy.abs # Horizontal distance is longer sx > 0 ? move_left : move_right # Prioritize left-right if @move_failed and sy != 0 sy > 0 ? move_up : move_down end else # Vertical distance is longer sy > 0 ? move_up : move_down # Prioritize up-down if @move_failed and sx != 0 sx > 0 ? move_left : move_right end end end end #-------------------------------------------------------------------------- # * Calculate X Distance From Player #-------------------------------------------------------------------------- def distance_x_from_place(x) sx = @x - x if $game_map.loop_horizontal? # When looping horizontally if sx.abs > $game_map.width / 2 # Larger than half the map width? sx -= $game_map.width # Subtract map width end end return sx end #-------------------------------------------------------------------------- # * Calculate Y Distance From Player #-------------------------------------------------------------------------- def distance_y_from_place(y) sy = @y - y if $game_map.loop_vertical? # When looping vertically if sy.abs > $game_map.height / 2 # Larger than half the map height? sy -= $game_map.height # Subtract map height end end return sy end end[/code]
Voila c'est fait par blockade, tout est expliquer dans le début du script : On doit faire 2 évent : Tu fait un évent en processus parallèle. Puis "Déplacer un événement", "Appeler un script" et tu marque [code]rejoindre(Id_event,pos_x,pos_y)|/code] Ou id_event c'est l'ID de ton évent. Pos_x : Position X d'arrivée Pos_y : Position Y d'arrivée Tu coches répéter déplacement et ignorer si impossible. Dans le même évent, tu fait une deuxième page vide qui s'active si l'interrupteur x est activé (remplace x par n'importe quel interrupteur) Et pour finir un autre évent en processus parallèle avec dedans : Condition > 4 éme page > script > $game_player.x == pos_x Et dans cette condition : Condition > 4 éme page > script > $game_player.y == pos_y Et dans cette condition : Activer l'interrupteur x. (pos_x est la position d'arrivée X, et pos_y position d'arrivée Y) Et voila ca marche ! Voila ^^ ( Oublie pas de mettre Blockade dans tes crédits ) |
|
| |
Maire Lv.9
Age : 28 Avertissements : 1 Inscrit le : 18/04/2010 Messages : 332
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Mer 5 Mai 2010 - 17:45 | |
| Salut moi j'ai un script de Woratana au fait c'est un script pour deux mais bon on peut s'en servir pour commencer place ce script au dessus de main - Spoiler:
#========================================= # [VX] 2 Players Engine #------------------------------------------------ # By Woratana [woratana@hotmail.com] # Version: 1.0 # Date: 14/03/2008 *HAPPY PIE DAY! lol* # # CREDIT: Original XP Version by Hima
=begin
+[FEATURES]+ - Create Player 2 that you can control, interact with other events in map, as same as Main Player.
- Editable Input Buttons for Player 2
- Player 2 can walk & Run 8 directions
+[HOW TO USE]+ To Create Player 2, use call script: $game_player2 = Game_Player2.new $game_player2.create(x, y, actor id, follow?)
x and y = X and Y that you want new player to appear
actor id = Character from ID of Actor that you want to use for new player (ID from Database)
follow? = true (Screen follow new player), false (not follow new player) *NOT RECOMMEND TO USE FOLLOW*
To Delete Player 2, use call script: $game_player2.delete
=end #==========================================
class Game_Player2 < Game_Character #-------------------------------------------------------------------------- # START SETUP script PART # * Constants: Commande du 2em joueur #-------------------------------------------------------------------------- DOWN = Input::Y # S du clavier LEFT = Input::X # A du clavier RIGHT = Input::Z # D du clavier UP = Input::R # W du clavier ENTER = Input::L # Q du clavier RUN = Input::A # Shift du clavier #-------------------------------------------------------------------------- # END SETUP script PART #-------------------------------------------------------------------------- CENTER_X = (544 / 2 - 16) * 8 # Screen center X coordinate * 8 CENTER_Y = (416 / 2 - 16) * 8 # Screen center Y coordinate * 8 #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_reader :vehicle_type # type of vehicle currenting being ridden attr_accessor :character_name #-------------------------------------------------------------------------- # * Create and Set Player 2 Location #-------------------------------------------------------------------------- def create(x,y,id,need_center = false) @actor_id = id moveto(x,y) @need_center = need_center refresh end #-------------------------------------------------------------------------- # * Clear Player 2 #-------------------------------------------------------------------------- def delete @actor_id = nil refresh $game_player2 = nil end #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super @vehicle_type = -1 @vehicle_getting_on = false # Boarding vehicle flag @vehicle_getting_off = false # Getting off vehicle flag @transferring = false # Player transfer flag @new_map_id = 0 # Destination map ID @new_x = 0 # Destination X coordinate @new_y = 0 # Destination Y coordinate @new_direction = 0 # Post-movement direction @walking_bgm = nil # For walking BGM memory end #-------------------------------------------------------------------------- # * Determine if Stopping #-------------------------------------------------------------------------- def stopping? return false if @vehicle_getting_on return false if @vehicle_getting_off return super end #-------------------------------------------------------------------------- # * Player Transfer Reservation # map_id : Map ID # x : x-coordinate # y : y coordinate # direction : post-movement direction #-------------------------------------------------------------------------- def reserve_transfer(map_id, x, y, direction) @transferring = true @new_map_id = map_id @new_x = x @new_y = y @new_direction = direction end #-------------------------------------------------------------------------- # * Determine if Player Transfer is Reserved #-------------------------------------------------------------------------- def transfer? return @transferring end #-------------------------------------------------------------------------- # * Execute Player Transfer #-------------------------------------------------------------------------- def perform_transfer return unless @transferring @transferring = false set_direction(@new_direction) if $game_map.map_id != @new_map_id $game_map.setup(@new_map_id) # Move to other map end moveto(@new_x, @new_y) end #-------------------------------------------------------------------------- # * Determine if Map is Passable # x : x-coordinate # y : y-coordinate #-------------------------------------------------------------------------- def map_passable?(x, y) case @vehicle_type when 0 # Boat return $game_map.boat_passable?(x, y) when 1 # Ship return $game_map.ship_passable?(x, y) when 2 # Airship return true else # Walking return $game_map.passable?(x, y) end end #-------------------------------------------------------------------------- # * Determine if Walking is Possible # x : x-coordinate # y : y-coordinate #-------------------------------------------------------------------------- def can_walk?(x, y) last_vehicle_type = @vehicle_type # Remove vehicle type @vehicle_type = -1 # Temporarily set to walking result = passable?(x, y) # Determine if passable @vehicle_type = last_vehicle_type # Restore vehicle type return result end #-------------------------------------------------------------------------- # * Determine if Airship can Land # x : x-coordinate # y : y-coordinate #-------------------------------------------------------------------------- def airship_land_ok?(x, y) unless $game_map.airship_land_ok?(x, y) return false # The tile passable attribute is unlandable end unless $game_map.events_xy(x, y).empty? return false # Cannot land where there is an event end return true # Can land end #-------------------------------------------------------------------------- # * Determine if Riding in Some Kind of Vehicle #-------------------------------------------------------------------------- def in_vehicle? return @vehicle_type >= 0 end #-------------------------------------------------------------------------- # * Determine if Riding in Airship #-------------------------------------------------------------------------- def in_airship? return @vehicle_type == 2 end #-------------------------------------------------------------------------- # * Determine if Dashing #-------------------------------------------------------------------------- def dash? return false if @move_route_forcing return false if $game_map.disable_dash? return false if in_vehicle? return Input.press?(RUN) end #-------------------------------------------------------------------------- # * Determine if Debug Pass-through State #-------------------------------------------------------------------------- def debug_through? return false unless $TEST return Input.press?(Input::CTRL) end #-------------------------------------------------------------------------- # * Set Map Display Position to Center of Screen # x : x-coordinate # y : y-coordinate #-------------------------------------------------------------------------- def center(x, y) display_x = x * 256 - CENTER_X # Calculate coordinates unless $game_map.loop_horizontal? # No loop horizontally? max_x = ($game_map.width - 17) * 256 # Calculate max value display_x = [0, [display_x, max_x].min].max # Adjust coordinates end display_y = y * 256 - CENTER_Y # Calculate coordinates unless $game_map.loop_vertical? # No loop vertically? max_y = ($game_map.height - 13) * 256 # Calculate max value display_y = [0, [display_y, max_y].min].max # Adjust coordinates end $game_map.set_display_pos(display_x, display_y) # Change map location end #-------------------------------------------------------------------------- # * Move to Designated Position # x : x-coordinate # y : y-coordinate #-------------------------------------------------------------------------- def moveto(x, y) super # center(x, y) make_encounter_count # Initialize encounter if in_vehicle? # Riding in vehicle vehicle = $game_map.vehicles[@vehicle_type] # Get vehicle vehicle.refresh # Refresh end end #-------------------------------------------------------------------------- # * Increase Steps #-------------------------------------------------------------------------- def increase_steps super return if @move_route_forcing return if in_vehicle? $game_party.increase_steps $game_party.on_player_walk end #-------------------------------------------------------------------------- # * Get Encounter Count #-------------------------------------------------------------------------- def encounter_count return @encounter_count end #-------------------------------------------------------------------------- # * Make Encounter Count #-------------------------------------------------------------------------- def make_encounter_count if $game_map.map_id != 0 n = $game_map.encounter_step @encounter_count = rand(n) + rand(n) + 1 # As if rolling 2 dice end end #-------------------------------------------------------------------------- # * Determine if in Area # area : Area data (RPG::Area) #-------------------------------------------------------------------------- def in_area?(area) return false if area == nil return false if $game_map.map_id != area.map_id return false if @x < area.rect.x return false if @y < area.rect.y return false if @x >= area.rect.x + area.rect.width return false if @y >= area.rect.y + area.rect.height return true end #-------------------------------------------------------------------------- # * Create Group ID for Troop Encountered #-------------------------------------------------------------------------- def make_encounter_troop_id encounter_list = $game_map.encounter_list.clone for area in $data_areas.values encounter_list += area.encounter_list if in_area?(area) end if encounter_list.empty? make_encounter_count return 0 end return encounter_list[rand(encounter_list.size)] end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh if @actor_id != nil and $game_actors[@actor_id] != nil actor = $game_actors[@actor_id] # Get front actor @character_name = actor.character_name @character_index = actor.character_index else @character_name = "" end end #-------------------------------------------------------------------------- # * Determine if Same Position Event is Triggered # triggers : Trigger array #-------------------------------------------------------------------------- def check_event_trigger_here(triggers) return false if $game_map.interpreter.running? result = false for event in $game_map.events_xy(@x, @y) if triggers.include?(event.trigger) and event.priority_type != 1 event.start result = true if event.starting end end return result end #-------------------------------------------------------------------------- # * Determine if Front Event is Triggered # triggers : Trigger array #-------------------------------------------------------------------------- def check_event_trigger_there(triggers) return false if $game_map.interpreter.running? result = false front_x = $game_map.x_with_direction(@x, @direction) front_y = $game_map.y_with_direction(@y, @direction) for event in $game_map.events_xy(front_x, front_y) if triggers.include?(event.trigger) and event.priority_type == 1 event.start result = true end end if result == false and $game_map.counter?(front_x, front_y) front_x = $game_map.x_with_direction(front_x, @direction) front_y = $game_map.y_with_direction(front_y, @direction) for event in $game_map.events_xy(front_x, front_y) if triggers.include?(event.trigger) and event.priority_type == 1 event.start result = true end end end return result end #-------------------------------------------------------------------------- # * Determine if Touch Event is Triggered # x : x-coordinate # y : y-coordinate #-------------------------------------------------------------------------- def check_event_trigger_touch(x, y) return false if $game_map.interpreter.running? result = false for event in $game_map.events_xy(x, y) if [1,2].include?(event.trigger) and event.priority_type == 1 event.start result = true end end return result end #-------------------------------------------------------------------------- # * Processing of Movement via input from the Directional Buttons #-------------------------------------------------------------------------- def move_by_input return unless movable? return if $game_map.interpreter.running? if Input.press?(DOWN) move_down end if Input.press?(LEFT) move_left end if Input.press?(RIGHT) move_right end if Input.press?(UP) move_up end end #-------------------------------------------------------------------------- # * Determine if Movement is Possible #-------------------------------------------------------------------------- def movable? return false if moving? # Moving return false if @move_route_forcing # On forced move route return false if @vehicle_getting_on # Boarding vehicle return false if @vehicle_getting_off # Getting off vehicle return false if $game_message.visible # Displaying a message return false if in_airship? and not $game_map.airship.movable? return true end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update last_real_x = @real_x last_real_y = @real_y last_moving = moving? move_by_input super update_scroll(last_real_x, last_real_y) if @need_center update_vehicle update_nonmoving(last_moving) end #-------------------------------------------------------------------------- # * Update Scroll #-------------------------------------------------------------------------- def update_scroll(last_real_x, last_real_y) ax1 = $game_map.adjust_x(last_real_x) ay1 = $game_map.adjust_y(last_real_y) ax2 = $game_map.adjust_x(@real_x) ay2 = $game_map.adjust_y(@real_y) if ay2 > ay1 and ay2 > CENTER_Y $game_map.scroll_down(ay2 - ay1) end if ax2 < ax1 and ax2 < CENTER_X $game_map.scroll_left(ax1 - ax2) end if ax2 > ax1 and ax2 > CENTER_X $game_map.scroll_right(ax2 - ax1) end if ay2 < ay1 and ay2 < CENTER_Y $game_map.scroll_up(ay1 - ay2) end end #-------------------------------------------------------------------------- # * Update Vehicle #-------------------------------------------------------------------------- def update_vehicle return unless in_vehicle? vehicle = $game_map.vehicles[@vehicle_type] if @vehicle_getting_on # Boarding? if not moving? @direction = vehicle.direction # Change direction @move_speed = vehicle.speed # Change movement speed @vehicle_getting_on = false # Finish boarding operation @transparent = true # Transparency end elsif @vehicle_getting_off # Getting off? if not moving? and vehicle.altitude == 0 @vehicle_getting_off = false # Finish getting off operation @vehicle_type = -1 # Erase vehicle type @transparent = false # Remove transparency end else # Riding in vehicle vehicle.sync_with_player # Move at the same time as player end end #-------------------------------------------------------------------------- # * Processing when not moving # last_moving : Was it moving previously? #-------------------------------------------------------------------------- def update_nonmoving(last_moving) return if $game_map.interpreter.running? return if moving? return if check_touch_event if last_moving if not $game_message.visible and Input.trigger?(ENTER) return if get_on_off_vehicle return if check_action_event end update_encounter if last_moving end #-------------------------------------------------------------------------- # * Update Encounter #-------------------------------------------------------------------------- def update_encounter return if $TEST and Input.press?(Input::CTRL) # During test play? return if in_vehicle? # Riding in vehicle? if $game_map.bush?(@x, @y) # If in bush @encounter_count -= 2 # Reduce encounters by 2 else # If not in bush @encounter_count -= 1 # Reduce encounters by 1 end end #-------------------------------------------------------------------------- # * Determine Event Start Caused by Touch (overlap) #-------------------------------------------------------------------------- def check_touch_event return false if in_airship? return check_event_trigger_here([1,2]) end #-------------------------------------------------------------------------- # * Determine Event Start Caused by [OK] Button #-------------------------------------------------------------------------- def check_action_event return false if in_airship? return true if check_event_trigger_here([0]) return check_event_trigger_there([0,1,2]) end #-------------------------------------------------------------------------- # * Getting On and Off Vehicles #-------------------------------------------------------------------------- def get_on_off_vehicle return false unless movable? if in_vehicle? return get_off_vehicle else return get_on_vehicle end end #-------------------------------------------------------------------------- # * Board Vehicle # Assumes that the player is not currently in a vehicle. #-------------------------------------------------------------------------- def get_on_vehicle front_x = $game_map.x_with_direction(@x, @direction) front_y = $game_map.y_with_direction(@y, @direction) if $game_map.airship.pos?(@x, @y) # Is it overlapping with airship? get_on_airship return true elsif $game_map.ship.pos?(front_x, front_y) # Is there a ship in front? get_on_ship return true elsif $game_map.boat.pos?(front_x, front_y) # Is there a boat in front? get_on_boat return true end return false end #-------------------------------------------------------------------------- # * Board Boat #-------------------------------------------------------------------------- def get_on_boat @vehicle_getting_on = true # Boarding flag @vehicle_type = 0 # Set vehicle type force_move_forward # Move one step forward @walking_bgm = RPG::BGM::last # Memorize walking BGM $game_map.boat.get_on # Boarding processing end #-------------------------------------------------------------------------- # * Board Ship #-------------------------------------------------------------------------- def get_on_ship @vehicle_getting_on = true # Board @vehicle_type = 1 # Set vehicle type force_move_forward # Move one step forward @walking_bgm = RPG::BGM::last # Memorize walking BGM $game_map.ship.get_on # Boarding processing end #-------------------------------------------------------------------------- # * Board Airship #-------------------------------------------------------------------------- def get_on_airship @vehicle_getting_on = true # Start boarding operation @vehicle_type = 2 # Set vehicle type @through = true # Passage ON @walking_bgm = RPG::BGM::last # Memorize walking BGM $game_map.airship.get_on # Boarding processing end #-------------------------------------------------------------------------- # * Get Off Vehicle # Assumes that the player is currently riding in a vehicle. #-------------------------------------------------------------------------- def get_off_vehicle if in_airship? # Airship return unless airship_land_ok?(@x, @y) # Can't land? else # Boat/ship front_x = $game_map.x_with_direction(@x, @direction) front_y = $game_map.y_with_direction(@y, @direction) return unless can_walk?(front_x, front_y) # Can't touch land? end $game_map.vehicles[@vehicle_type].get_off # Get off processing if in_airship? # Airship @direction = 2 # Face down else # Boat/ship force_move_forward # Move one step forward @transparent = false # Remove transparency end @vehicle_getting_off = true # Start getting off operation @move_speed = 4 # Return move speed @through = false # Passage OFF @walking_bgm.play # Restore walking BGM make_encounter_count # Initialize encounter end #-------------------------------------------------------------------------- # * Force One Step Forward #-------------------------------------------------------------------------- def force_move_forward @through = true # Passage ON move_forward # Move one step forward @through = false # Passage OFF end end
class Scene_Title < Scene_Base alias wor_twopla_scetit_cregam create_game_objects def create_game_objects wor_twopla_scetit_cregam $game_player2 = nil end end
class Scene_Map < Scene_Base alias wor_twopla_scemap_upd update def update wor_twopla_scemap_upd $game_player2.update if $game_player2 != nil end end
class Spriteset_Map alias wor_twopla_sprmap_crecha create_characters alias wor_twopla_sprmap_updcha update_characters def create_characters wor_twopla_sprmap_crecha @character_sprites.push(Sprite_Character.new(@viewport1, $game_player)) @chara_two_pushed = false end def update_characters if !(@chara_two_pushed) and $game_player2 != nil @character_sprites.push(Sprite_Character.new(@viewport1, $game_player2)) @chara_two_pushed = true elsif @chara_two_pushed and $game_player2 == nil for i in 0..@character_sprites.size if @character_sprites[i].character.is_a?(Game_Player2) @character_sprites[i].character.character_name = "" @character_sprites[i].update @character_sprites.delete_at(i) break end end @chara_two_pushed = false end wor_twopla_sprmap_updcha end end
class Game_Map alias wor_twopla_gammap_passable passable? def passable?(x, y, flag = 0x01) if $game_player2 != nil and flag return false if $game_player2.x == x and $game_player2.y == y end wor_twopla_gammap_passable(x, y, flag) end end
puis sur l'event de ton choix tu fait appellé script et entre - Code:
-
$game_player2 = Game_Player2.new $game_player2.create(x, y, id, true/false)
en remplacant x et y par la position de départ du personage que tu veut controlé id par le numéro du personage que tu veux (il faut qu'il soit dans la base de doné à la page persos) de votre choix et true/false par false: l'écran suit le joueur true: l'écran suit le deusième joueur ex - Code:
-
$game_player2 = Game_Player2.new $game_player2.create(1, 1, 2, false) et pour finir - Code:
-
$game_player2.delete
pour suprimé le personage que tu controlé. voila tout.[left] |
|
| |
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Mer 5 Mai 2010 - 18:46 | |
| Heu, rapport ? T'es totalement HS avec ce script... |
|
| |
Mage Lv.11
Age : 27 Inscrit le : 02/03/2009 Messages : 513
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Jeu 6 Mai 2010 - 8:44 | |
| Qui est HS, razore ou moi ? |
|
| |
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Jeu 6 Mai 2010 - 9:02 | |
| Razore.
Toi t'as donné un truc en rapport ^^ et qui résout le problème du parcours. |
|
| |
Habitant Lv.6
Age : 44 Inscrit le : 19/07/2009 Messages : 142
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Jeu 6 Mai 2010 - 14:57 | |
| Bon beh merci à vous et à toi Sylfurion, j'essaierai le script ce week-end |
|
| |
Va-nu-pieds Lv.4
Age : 28 Inscrit le : 28/11/2009 Messages : 62
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Jeu 6 Mai 2010 - 15:33 | |
| c'est dragon quest qui fait ca ! |
|
| |
Habitant Lv.6
Age : 44 Inscrit le : 19/07/2009 Messages : 142
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Sam 8 Mai 2010 - 10:34 | |
| Salut ! Alors, j'ai suivis ton explication, Sylfurion mais ça ne marche pas, la page 1 du premier event en processus parallèle tourne en boucle. Ce qui me paraît logique vu qu'il n'a aucune condition de mise en marche, c'est donc qu'il marche par défaut...Néanmoins, si je mets en condition l'activation d'un interrupteur, ça ne marche pas non plus, car évidemment, tant qu'il est actif, la page tourne en boucle... Serait-il possible d'avoir une démo ?
Sinon, si c'est trop casse-tête je me rabat sur la solution de l'animation avec lever/coucher de soleil. Mais là encore j'aurai besoin d'un tuto : comment fait-on pour déplacer l'angle de vue, est-ce que ça suppose d'agrandir la carte, et tout ça ? |
|
| |
Mage Lv.11
Age : 27 Inscrit le : 02/03/2009 Messages : 513
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Sam 8 Mai 2010 - 15:53 | |
| |
|
| |
Habitant Lv.6
Age : 44 Inscrit le : 19/07/2009 Messages : 142
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Sam 8 Mai 2010 - 18:35 | |
| Voilà : - Spoiler:
- Spoiler:
- Spoiler:
Pour précision : Dans "rejoindre(18,10,11)" 18 est l'ID de l'event d'une porte, 10 et 11 les positions x/y de la case juste avant celle qui contient l'event de la porte et S%Garçon est l'event du PNJ que je voudrais déplacer jusque devant la porte. Je ne sais pas si je pouvais paramétrer comme ça. L'idée c'est qu'à 20h pétante, le garçon, qui marche aléatoirement la journée, se dirige vers la porte de sa maison. Ensuite je ferai en sorte d'ouvrir/fermer la porte. Et à 8h du matin, ça doit faire comme s'il ressortait de la maison, pour aller rejoindre sa position initiale. |
|
| |
Mage Lv.11
Age : 27 Inscrit le : 02/03/2009 Messages : 513
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Dim 9 Mai 2010 - 17:16 | |
| Bon alors, la deuxième page de controlchara, met touche action et pas processus parallèle ( je doute que ça sois ça mais on sais jamais ). Ensuite ta condition ne vas pas marcher car, cette appel de script est traduit comme cela :
@>Si le héros est a telle case ____@>activer interrupteur
Alors que ce que tu veux, c'est si l'event est à telle case non ?
Donc tu n'as qu'à faire a la suite de l'event qui bouge l'autre event d'activer l'interrupteur.
@>Déplacer evenement appel de script ( blabla ) @>activer interrupteur
Cela devrait marcher normalement |
|
| |
Habitant Lv.6
Age : 44 Inscrit le : 19/07/2009 Messages : 142
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Dim 9 Mai 2010 - 18:19 | |
| Ben non ça marche toujours pas...Le PNJ ne bouge même pas, alors qu'il devrait déambuler aléatoirement. Mais déjà à la base ce qui m'étonne c'est que l'event controlchara en processus parallèle n'ait aucune condition de déclenchement. Si je suis la logique actuelle, le PNJ doit se mettre à rejoindre le point indiqué dès mon entrée sur la map, or ce n'est pas ce que je voudrais. Bon, sauf que là ça marche pas du tout... |
|
| |
Mage Lv.11
Age : 27 Inscrit le : 02/03/2009 Messages : 513
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Lun 10 Mai 2010 - 15:37 | |
| Bon fait une démo stp, avec les scripts correspondants et la map et tout et tout stp ^^ |
|
| |
Habitant Lv.6
Age : 44 Inscrit le : 19/07/2009 Messages : 142
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Lun 10 Mai 2010 - 18:56 | |
| Ben en fait je préfère trouver une autre méthode plus simple parce que 1- si je comprends bien il me faudrait faire ça pour chaque PNJ censé rentré chez lui et ça risque de faire beaucoup. 2- déjà que pour les métiers j'ai super galéré et perdu beaucoup de temps, je ne tiens pas à en perdre encore plus sur ce genre de détail. Conclusion, j'abandonne la méthode script au profit, si j'y arrive, d'une méthode par affichage d'image. Je vais voir comment "l'animer". Si je n'y arrive pas, tant pis, je laisse tomber, ça restera une petite imperfection. |
|
| |
Mage Lv.11
Age : 27 Inscrit le : 02/03/2009 Messages : 513
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Mar 11 Mai 2010 - 14:32 | |
| |
|
| |
Habitant Lv.6
Age : 44 Inscrit le : 19/07/2009 Messages : 142
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] Mer 12 Mai 2010 - 12:48 | |
| Hello Oui donc en fait j'ai fait une petite animation par images, c'est tout aussi bien. Merci quand même à vous et peut-être que le script donné par Sylfurion servira quand même à d'autres. |
|
| |
| Sujet: Re: Casse-tête or not casse-tête ? [résolu] | |
| |
|
| |
| Casse-tête or not casse-tête ? [résolu] | |
|