Project1
标题:
脚本建立事件和删除事件
[打印本页]
作者:
sblkhgm
时间:
2013-4-3 23:12
标题:
脚本建立事件和删除事件
在游戏里怎么用脚本复制某地图的事件到当前地图上来,我用过造房子,四处留情之类的脚本,但是很卡,哪为大哥能给个简单的,最好可以储存事件的
作者:
joe5491
时间:
2013-4-4 00:37
本帖最后由 joe5491 于 2013-4-4 12:30 编辑
在Main前插入
class Eve_To_Map
def initialize(x, y, map_id, eve_id)
map = load_data(sprintf("Data/Map%03d.rxdata", map_id))
#p map.events[7]
for i in 200..300
if $game_map.events[i] == nil
$game_map.events[i] = Game_Event.new($game_map.map_id, map.events[eve_id])
$game_map.events[i].moveto(x,y)
$scene.spriteset = Spriteset_Map.new
break
end
end
end
end
复制代码
使用方法,使用腳本:Eve_To_Map.new(x座標, y座標, 地圖編號, 事件編號)
p.s. x座標和y座標是要在現在地圖上顯示的座標,地圖編號和事件編號是你要複製的事件的參數
對了!儲存事件是啥?(存到哪?)
作者:
sblkhgm
时间:
2013-4-4 08:53
就是离开场景会在回来复制的事件还在,顺便问下改地图某坐标的地图块怎么弄
作者:
joe5491
时间:
2013-4-4 12:49
在Main前插入
class Change_Tileset
def initialize(t_id)
$game_map.tileset_name = $data_tilesets[t_id].tileset_name
$game_map.autotile_names = $data_tilesets[t_id].autotile_names
$scene.spriteset = Spriteset_Map.new
end
end
复制代码
使用方法,使用腳本:Change_Tileset.new(地圖區塊編號)
p.s. 地圖區塊編號是指資料庫裡的編號
然後...儲存事件目前還沒想到良好的解決方式....
作者:
joe5491
时间:
2013-4-4 18:37
解決了~
最終方案:
#========================================================
#★ 事件複製 -by joe59491
#========================================================
#========參數設定========================================
$Eve_Control = 18 #是否要關閉自動回復地圖上的事件的開關編號
#========================================================
#========使用說明========================================
#複製事件
#Eve_To_Map.new(新X座標,新Y座標,複製事件所在地圖的編號,複製事件編號)
#刪除事件(全部,針對複製的)
#Dis_Eve.new
#儲存事件(非自動,針對複製的)
#Save_Eve.new
#讀取事件(非自動,針對複製的)
#Load_Eve.new
#p.s. 當開關關閉時,會事件會被保留,否則會消失。
#========================================================
class Game_Character
attr_accessor :id # ID
end
class Eve_To_Map
def initialize(x, y, map_id, eve_id)
map = load_data(sprintf("Data/Map%03d.rxdata", map_id))
#p map.events[7]
for i in 200..300
if $game_map.events[i] == nil
$game_map.events[i] = Game_Event.new($game_map.map_id, map.events[eve_id])
$game_map.events[i].moveto(x,y)
$game_map.events[i].id=i
$scene.spriteset = Spriteset_Map.new
break
end
end
end
end
class Game_Map
attr_accessor :SEve
alias initialize_seve initialize
def initialize
@SEve=[0]
initialize_seve
end
alias update_seve update
def update
if $game_map.need_refresh
#p
end
update_seve
end
end
class Save_Eve
def initialize
$game_map.SEve[$game_map.map_id]=[0]
for i in 200..300
if $game_map.events[i] != nil
$game_map.SEve[$game_map.map_id][i-200] = $game_map.events[i]
end
end
end
end
class Load_Eve
def initialize
if $game_map.SEve[$game_map.map_id]!=nil
for i in 0..100
if $game_map.SEve[$game_map.map_id][i] != nil and $game_map.SEve[$game_map.map_id][i] != 0
$game_map.events[i+200]=$game_map.SEve[$game_map.map_id][i]
end
end
$scene.spriteset = Spriteset_Map.new
end
end
end
class Dis_Eve
def initialize
for i in 200..300
if $game_map.events[i] != nil
$game_map.events[i].erase
end
end
end
end
class Interpreter
alias command_201_seve command_201
def command_201
if !$game_switches[$Eve_Control]
Save_Eve.new
end
command_201_seve
end
end
class Scene_Map
alias transfer_player_seve transfer_player
def transfer_player
transfer_player_seve
if !$game_switches[$Eve_Control]
Load_Eve.new
end
end
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1