❤ 0 Auteur : Trebor777 (Guillaume777)
Logiciel : RPG Maker XP
Nombre de scripts : 1
Ce script évite, d'écrire 5 ou 6 lignes de commande dans un event.... pour téléporter sur des map spécifiques: je m'explique
disons que j'ai "maison_level_1", 2 , 3 , etc ....
mon event spécial, permet simplement juste en spécifiant le (2, 3, etccc) de téléporter le joueur sur la map de même nom, mais d'indice différent.
et ceux, juste en ayant le nom de l'event.
actuellement, le nom de l'event ressemble à celà :
"warp_2" , téléportera à la map de même nom mais d'indice 2. (donc "maison_level_2")
le joueur est téléporté au même endroit qu'il était au contact de l'event.
On peut mettre une transition, paramétrable niveau durée pour le téléport. si elle n'est pas spécifié le changement de map est instantané.
En éditant le script, vous pouvez personnaliser les noms des paramètres : c'est à dire remplacer "warp_" parce que vous voulez par exemple mettre "aller à la map n°"
pareil pour le paramètre de transition.
je pense que dans une version future, on pourra spécifié de nouvelles coordonnées dans le nom de l'event...
Bon les contraintes de fonctionnement :
- le nom de l'event suit un ordre précis : d'abord le paramètre de map où aller, ensuite en option , le paramètre de transition
- l'event doit être en "contact avec le héros" ( le deuxième type de déclenchement )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
| #===================================================
# Initialisation des constantes
#===================================================
TR = "t+"
WARP = "warp_"
#===================================================
# ▼ CLASS Game_Map Additional Code Begins
#===================================================
class Game_Map
#Dubealex Addition (from XRXS) to show Map Name on screen
def name
$map_infos[@map_id]
end
#Trebor777 Addition
alias warp_setup setup
def setup(map_id)
warp_setup(map_id)
@name = {}
for i in @map.events.keys
@name[i] = @map.events[i].name
end
end
#-------------------------------------------------------------------------
def event_name(event)
@event_id = event
@name[@event_id]
end
#--------------------------------------------------------------------------
end
#===================================================
# ▲ CLASS Game_Map Additional Code Ends
#===================================================
#===================================================
# ▼ CLASS Scene_Title Additional Code Begins
#===================================================
class Scene_Title
#Dubealex Addition (from XRXS) to show Map Name on screen
$map_infos = load_data("Data/MapInfos.rxdata")
$map_info = {}
for key in $map_infos.keys
$map_infos[key] = $map_infos[key].name
end
#Trebor777 Addition
$map_info = $map_infos.invert
end
#===================================================
# ▲ CLASS Scene_Title Additional Code Ends
#===================================================
#===================================================
# ▼ CLASS Game_Player Additional Code Begins
#===================================================
class Game_Player < Game_Character
#--------------------------------------------------------------------------
alias warp_update update
def update
warp_update
unless moving?
if touche_event([1]) and @touch!=true and @event_hit !=nil
@touch=true
base_n=$game_map.name
eventname=$game_map.event_name(@event_hit)
str = eventname.split(/[^0-9]/)
str.delete("")
base_n[-1,1] = str[0]
name = base_n
$game_temp.player_new_x=@x
$game_temp.player_new_y=@y
Graphics.freeze if eventname.include?(TR)
$game_temp.player_new_map_id=$map_info[name]
$scene.transfer_player
Graphics.transition(str[1].to_i) if eventname.include?(TR)
end
end
end
#------------------------------------------------------------
def touche_event(triggers)
result = false
@event_hit=nil
if $game_system.map_interpreter.running?
return result
end
new_x = @x + (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
new_y = @y + (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
for event in $game_map.events.values
if event.x == new_x and event.y == new_y and
triggers.include?(event.trigger) and ($game_map.event_name(event.id)).include?(WARP)
if not event.jumping? and not event.over_trigger?
@event_hit=event.id
result = true
end
end
end
if result == false
if $game_map.counter?(new_x, new_y)
new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
for event in $game_map.events.values
if event.x == new_x and event.y == new_y and
triggers.include?(event.trigger) and ($game_map.event_name(event.id)).include?(WARP)
if not event.jumping? and not event.over_trigger?
@event_hit=event.id
result = true
end
end
end
end
end
return result
end
#--------------------------------------------------
end
#===================================================
# ▲ CLASS Game_Player Additional Code Ends
#=================================================== |
donc on peut voir les constantes des paramètres, définies en début de script vous permettant de changer ou non, le nom qu'aura l'event.
vous le coller dans un nouveau script au dessus de main. et çà ira.
des exemples de nom d'event fonctionnant :
"warp_2" -> pas de transition
"warp_2 t+5" -> transition de 5 frames
"warp_2t+5" -> transition de 5 frames
"warp_2blalfjiejfozefj zoifjofjeofjze oifjzf t+5" -> transition de 5 frames
Enjoy !
Mis à jour le 22 novembre 2020.
|