- BencocoMembre
- Nombre de messages : 31
Age : 34
Localisation : Alsace
Distinction : aucune
Date d'inscription : 04/03/2012
Le pouvoir absolu, la possession mentale à la portée de tous !
Mar 15 Jan 2013 - 22:59
Amis Makers, je suis très heureux de vous présenter ma dernière création !
Qui n'a jamais rêvé de pouvoir contrôler l'esprit des autres ? hein ? si si je sais que vous y avez déjà pensé au moins une fois ! même pas ? mince suis-je donc si différent ? Enfin là n'est pas la question !
Grâce à ce tout petit script tout simple vous permettrez à votre joueur de contrôler n'importe quel PNJ sur la MAP !!! C'est pas génial ?
Comment ça marche me direz-vous ! eh bien il suffit d'insérer le code suivant sous Materials comme d'habitude :
Le code est activable ( pas certain que ça soit français...) par un bouton "in game" que vous définissez avec :
Ensuite pour qu'un PNJ puisse être contrôlable, il faut insérer les caractères #c ou #s dans son nom. Quelle différence ?
si vous appelez votre PNJ "Marguerite#c" le joueur devra être derrière le PNJ et regarder dans sa direction pour pouvoir en prendre le contrôle comme ceci :
si vous appelez votre PNJ "Marguerite#s" le joueur pourra être n'importe où autour du PNJ en regardant dans n'importe quelle direction pour pouvoir en prendre le contrôle comme ceci :
si vous le souhaitez vous pouvez modifier le temps que dure la possession grâce à cette variable :
et voilà je crois que j'ai tout dit si vous avez des idées d'amélioration n'hésitez pas à les soumettre !
/!\ /!\ /!\ Comme ce script touche un peut à d'autres scripts de la base de donnée comme Scene_Map, Game_Map et Game_Event, il peut générer différents bugs avec d'autres scripts /!\ /!\ /!\
Bon Making à tous ! et à bientot pour d'autres scripts délirants !
+5 pts de participation
Qui n'a jamais rêvé de pouvoir contrôler l'esprit des autres ? hein ? si si je sais que vous y avez déjà pensé au moins une fois ! même pas ? mince suis-je donc si différent ? Enfin là n'est pas la question !
Grâce à ce tout petit script tout simple vous permettrez à votre joueur de contrôler n'importe quel PNJ sur la MAP !!! C'est pas génial ?
Comment ça marche me direz-vous ! eh bien il suffit d'insérer le code suivant sous Materials comme d'habitude :
- Code:
#==============================================================================
# ** Scene_Possession
#-------------------------------------------------------------------------------
# Ce Script est une création originale de Bencoco,
# Il peut être utilisé pour tout types de projet
# à condition de me citer dans les credits :-D
#------------------------------------------------------------------------------
# Ce Script permet de contrôler les PNJ sur la MAP
# Il existe deux façon de posséder les PNJ :
# - soit en se plaçant derrière eux
# pour cele il faut écrire #c dans le nom du PNJ
# - soit en étant simplement positionné à coté
# pour cele il faut écrire #s dans le nom du PNJ
#
# Enjoy !
#
#==============================================================================
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
# This class performs the map screen processing.
#==============================================================================
class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# * Constante
#--------------------------------------------------------------------------
TEMPS_DE_POSSESSION = 10
SON_POSSESSION = "Darkness7"
SWITCH_DE_CONTROLE = 1
#--------------------------------------------------------------------------
# * Start Processing
#--------------------------------------------------------------------------
def start
super
SceneManager.clear
$game_player.straighten
$game_map.refresh
$game_message.visible = false
create_spriteset
create_all_windows
@menu_calling = false
#interrupteur qui détermine l'appel de la fonction possession
@possession_calling = true
$recup = []
$possession_en_cours = false
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
$game_map.update(true)
$game_player.update
$game_timer.update
@spriteset.update
#mise à jour pour le décompte
update_possession
update_scene if scene_change_ok?
end
#--------------------------------------------------------------------------
# * Update Scene Transition
#--------------------------------------------------------------------------
def update_scene
check_gameover
update_transfer_player unless scene_changing?
update_encounter unless scene_changing?
update_call_menu unless scene_changing?
#met à jour l'appel de la fonction possession
update_call_possession unless scene_changing?
update_call_debug unless scene_changing?
end
#--------------------------------------------------------------------------
# * Détermine si l'on a appuyé sur Shifr pour appeler Possession
#--------------------------------------------------------------------------
def update_call_possession
#si aucun timer n'est en cours
unless $game_timer.working? or $game_switches[SWITCH_DE_CONTROLE] == false
#détermine l'appui sur la touche A
@possession_calling ||= Input.trigger?(:A)
call_possession if @possession_calling && !$game_player.moving?
end
end
#--------------------------------------------------------------------------
# * code qui appel la possession
#--------------------------------------------------------------------------
def call_possession
#pour chaque event sur la map
$game_map.events.each do |i|
#détermine l'id de l'event
event_id = i[0]
#détermine la position x du joueur
pos_player_x = $game_player.x
#détermine la position y du joueur
pos_player_y = $game_player.y
#détermine la direction du joueur
player_direction = $game_player.direction
#détermine le nom du chara et son index
original_graphic_p = [$game_player.character_name, $game_player.character_index]
#détermine la position x de l'event
pos_event_x = $game_map.events[event_id].x
#détermine la position y de l'event
pos_event_y = $game_map.events[event_id].y
#détermine la direction de l'event
event_direction = $game_map.events[event_id].direction
#détermine si il s'agit d'une possession complexe
possession_complexe = ($game_map.events[event_id].name =~ /#c/)
#détermine si il s'agit d'une possession simple
possession_simple = ($game_map.events[event_id].name =~ /#s/)
#si c'est une possession simple
if possession_simple != nil
#if (pos_player_x == pos_event_x and ( pos_player_y + 1 == pos_event_y or pos_player_y - 1 == pos_event_y )) or (pos_player_y == pos_event_y and (pos_player_x + 1 == pos_event_x or pos_player_x - 1 == pos_event_x))
if pos_event_x >= pos_player_x-1 and pos_event_x <= pos_player_x+1 and pos_event_y >= pos_player_y-1 and pos_event_y <= pos_player_y+1
original_graphic_e = [$game_map.events[event_id].character_name, $game_map.events[event_id].character_index]
$recup = [event_id, pos_player_x ,pos_player_y,original_graphic_e,original_graphic_p,pos_event_x,pos_event_y]
possede
break
end
end
if possession_complexe != nil
if pos_player_x == pos_event_x
if pos_player_y + 1 == pos_event_y and player_direction == 2 and event_direction == 2
original_graphic_e = [$game_map.events[event_id].character_name, $game_map.events[event_id].character_index]
$recup = [event_id, pos_player_x ,pos_player_y,original_graphic_e,original_graphic_p,pos_event_x,pos_event_y]
possede
break
end
if pos_player_y - 1 == pos_event_y and player_direction == 8 and event_direction == 8
original_graphic_e = [$game_map.events[event_id].character_name, $game_map.events[event_id].character_index]
$recup = [event_id, pos_player_x ,pos_player_y,original_graphic_e,original_graphic_p,pos_event_x,pos_event_y]
possede
break
end
end
#===============================================================================
if pos_player_y == pos_event_y
if pos_player_x - 1 == pos_event_x and player_direction == 4 and event_direction == 4
original_graphic_e = [$game_map.events[event_id].character_name, $game_map.events[event_id].character_index]
$recup = [event_id, pos_player_x ,pos_player_y,original_graphic_e,original_graphic_p,pos_event_x,pos_event_y]
possede
break
end
if pos_player_x + 1 == pos_event_x and player_direction == 6 and event_direction == 6
original_graphic_e = [$game_map.events[event_id].character_name, $game_map.events[event_id].character_index]
$recup = [event_id, pos_player_x ,pos_player_y,original_graphic_e,original_graphic_p,pos_event_x,pos_event_y]
possede
break
end
end
end #fin if complexe ou simple
end #fin do
@possession_calling = false
end
#===============================================================================
# - code qui effectue la possession
#===============================================================================
def possede
# $recup = [0=event_id,
# 1=pos_player_x,2=pos_player_y,3=original_graphic_e,
# 4=original_graphic_p,5=pos_event_x,6=pos_event_y,
# 7=map_origin,8=move_type,9=dir_player]
player_graph = $recup[4]
event_graph = $recup[3]
dir1 = $game_map.events[$recup[0]].direction
dir2 = $game_player.direction
trigger = $game_map.events[$recup[0]].trigger
map_origin = $game_map.map_id
move_type = $game_map.events[$recup[0]].move_type
$recup.push(map_origin,move_type,dir2,trigger)
RPG::SE.new(SON_POSSESSION,80,100).play
$game_player.set_graphic(event_graph[0],event_graph[1])
$game_player.moveto($recup[5] ,$recup[6] )
$game_player.set_direction(dir1)
$game_map.events[$recup[0]].set_graphic(player_graph[0],player_graph[1])
$game_map.events[$recup[0]].moveto($recup[1] ,$recup[2] )
$game_map.events[$recup[0]].move_type = 0
$game_map.events[$recup[0]].trigger = nil
$game_map.events[$recup[0]].set_direction(dir2)
$game_timer.start(TEMPS_DE_POSSESSION * Graphics.frame_rate)
$possession_en_cours = true
end
#===============================================================================
# - depossede
#===============================================================================
def depossede
player_graph = $recup[4]
event_graph = $recup[3]
fadeout(30)
if $game_map.map_id != $recup[7]
$game_player.reserve_transfer($recup[7],$recup[1] ,$recup[2])
$game_player.perform_transfer
$game_map.events[$recup[0]].set_graphic("",0)
$game_map.events[$recup[0]].erase
$game_map.events[$recup[0]].moveto(0, 0)
else
$game_map.events[$recup[0]].set_graphic(event_graph[0],event_graph[1])
$game_map.events[$recup[0]].moveto($game_player.x, $game_player.y)
$game_map.events[$recup[0]].set_direction($game_player.direction)
$game_map.events[$recup[0]].move_type = $recup[8]
end
$game_player.set_graphic(player_graph[0],player_graph[1])
$game_player.moveto($recup[1] ,$recup[2] )
$game_player.set_direction($recup[9])
$game_map.events[$recup[0]].trigger = $recup[10]
$possession_en_cours = false
RPG::SE.new(SON_POSSESSION,80,100).play
fadein(30)
end
#===============================================================================
# - Mise à jour pendant timer
#===============================================================================
def update_possession
if $game_timer.working?
if $game_timer.sec ==0
$game_timer.stop
depossede
end
end
end
end
class Game_Map
#--------------------------------------------------------------------------
# * Setup
#--------------------------------------------------------------------------
def setup(map_id)
@map_id = map_id
@map = load_data(sprintf("Data/Map%03d.rvdata2", @map_id))
@tileset_id = @map.tileset_id
@display_x = 0
@display_y = 0
referesh_vehicles
setup_events
setup_scroll
setup_parallax
setup_battleback
@need_refresh = false
initialize_event
end
def initialize_event
if $possession_en_cours == true and $game_map.map_id == $recup[7]
player_graph = $recup[4]
$game_map.events[$recup[0]].set_graphic(player_graph[0],player_graph[1])
$game_map.events[$recup[0]].moveto($recup[1] ,$recup[2] )
$game_map.events[$recup[0]].move_type = 0
end
end
end
class Game_Event < Game_Character
attr_accessor :name
attr_accessor :move_type
attr_accessor :trigger
#--------------------------------------------------------------------------
# * Object Initialization
# event: RPG::Event
#--------------------------------------------------------------------------
def initialize(map_id, event)
super()
@map_id = map_id
@event = event
@id = @event.id
#permet d'utiliser le nom de l'event
@name = @event.name
@move_type = move_type
@trigger = trigger
moveto(@event.x, @event.y)
refresh
end
end
Le code est activable ( pas certain que ça soit français...) par un bouton "in game" que vous définissez avec :
- Code:
SWITCH_DE_CONTROLE = 1
Ensuite pour qu'un PNJ puisse être contrôlable, il faut insérer les caractères #c ou #s dans son nom. Quelle différence ?
si vous appelez votre PNJ "Marguerite#c" le joueur devra être derrière le PNJ et regarder dans sa direction pour pouvoir en prendre le contrôle comme ceci :
si vous appelez votre PNJ "Marguerite#s" le joueur pourra être n'importe où autour du PNJ en regardant dans n'importe quelle direction pour pouvoir en prendre le contrôle comme ceci :
si vous le souhaitez vous pouvez modifier le temps que dure la possession grâce à cette variable :
- Code:
TEMPS_DE_POSSESSION = 10
et voilà je crois que j'ai tout dit si vous avez des idées d'amélioration n'hésitez pas à les soumettre !
/!\ /!\ /!\ Comme ce script touche un peut à d'autres scripts de la base de donnée comme Scene_Map, Game_Map et Game_Event, il peut générer différents bugs avec d'autres scripts /!\ /!\ /!\
Bon Making à tous ! et à bientot pour d'autres scripts délirants !
+5 pts de participation
- KrysTofMembre
- Nombre de messages : 437
Age : 30
Localisation : Bretagne
Distinction : aucune
Date d'inscription : 12/12/2008
Re: Le pouvoir absolu, la possession mentale à la portée de tous !
Mar 15 Jan 2013 - 23:14
Pas mal !! Cela peut toujours servir ! Merci du partage !!
- somerealMembre
- Nombre de messages : 378
Age : 28
Localisation : Belgium for ever!
Distinction : Use sans scrupule de blagues et remarques douteuses et délirantes. A prendre au 3e^n degré (où n est égal au nombre de neurones qu'ils vous reste après chaque lecture de ses commentaires). [Pharazon]
Date d'inscription : 14/01/2013
Re: Le pouvoir absolu, la possession mentale à la portée de tous !
Mar 15 Jan 2013 - 23:16
Si ça c'est pas une idée de fou!
Tu te rend compte ce que ça implique?
Tu vas changer le monde !
Je t'aime!
Tu te rend compte ce que ça implique?
Tu vas changer le monde !
Je t'aime!
- BalbereithStaffeux retraité
- Nombre de messages : 4129
Age : 32
Localisation : dans l'ombre...
Distinction : Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires ) [Coco' ]
Date d'inscription : 13/05/2009
Re: Le pouvoir absolu, la possession mentale à la portée de tous !
Jeu 17 Jan 2013 - 23:08
Merci pour ce script
+5 pts de participation ^^
+5 pts de participation ^^
- lokjdu27110Membre
- Nombre de messages : 21
Age : 22
Localisation : Haute Normandie
Distinction : aucune
Date d'inscription : 31/08/2014
Re: Le pouvoir absolu, la possession mentale à la portée de tous !
Dim 31 Aoû 2014 - 15:01
Super script ! Merci !
- Gold BaronMembre
- Nombre de messages : 89
Distinction : aucune
Date d'inscription : 14/04/2015
Re: Le pouvoir absolu, la possession mentale à la portée de tous !
Sam 2 Mai 2015 - 16:01
Oui je sais, ça pue le nécropost, mais je n'ai pas réussi à faire marcher ce script, est ce le cas de tout le monde ? Comme il n'y pas beaucoup de commentaires dessus.
Peut on donner des capacités aux PNJ ?
Peut on donner des capacités aux PNJ ?
- lokjdu27110Membre
- Nombre de messages : 21
Age : 22
Localisation : Haute Normandie
Distinction : aucune
Date d'inscription : 31/08/2014
Re: Le pouvoir absolu, la possession mentale à la portée de tous !
Dim 3 Mai 2015 - 13:44
Moi, sa a marché (Vive les necropost, j'utilise meme plus RPG Maker pour le moment)
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum