Project1
标题:
如何設置一個寶箱,隨機出現在設定的地圖區域內?!
[打印本页]
作者:
a000b1745
时间:
2013-3-13 16:24
标题:
如何設置一個寶箱,隨機出現在設定的地圖區域內?!
本帖最后由 a000b1745 于 2013-3-19 00:32 编辑
進入RM VA後~按下
F7
,可以標記 1~ 63 號的地圖區域。
在MAPID : 005 我想設定一個事件(假設為寶箱),
在我進入MAP 005 後這寶箱會
隨機
的出現在 7號 區域上的其中一格,這要如何做到呢??
能事件解決嗎??
或用上簡單的腳本亦可!!
作者:
j433463
时间:
2013-3-13 16:33
本帖最后由 j433463 于 2013-3-13 16:44 编辑
其實很簡單的,用兩個變量記錄亂數取的 X, Y 座標,比方說,想要在 x 軸 11 ~ 15,Y 軸 6 ~ 12 的範圍內隨機出現寶箱,
就隨機取 x 軸的值 0~4 , 然後 X 的值再加 11,而 y 軸取隨機數 0~6,結果再加 6,就是寶箱的 x, y 座標,
您可以設好一個隱藏看不到寶箱的事件,等到 x, y 座標有了,再移動事件到座標處,切換分頁顯示寶箱,這就好了。
另外有一種方式,是我以前 rm2k3 時嘗試的事件隨機出現方式,用來做在地圖上採集隨機位置出現的藥草、食材任務,
好處是不受矩形範圍限制,因為我是直接取一個亂數值 0~7 到變量3,也就是有八個位置隨機出現藥草,
然後分歧條如果變量3等於 0,藥草出現在 5, 9 位置,如果變量3等於 1,藥草出現在 2, 13 位置,依此類推,
這樣就不一定出現在一個小矩形範圍內,整個地圖都可以納入隨機位置,要多少個隨機,就增加多少位置和亂數,
不過,這樣寫起來會很長一串的分歧條件,設定時比較累,但效果更好。
作者:
a000b1745
时间:
2013-3-13 16:50
大獅子!!
你說的沒錯~ "用兩個變量記錄亂數取的 X, Y 座標 " 這是一種解決方法,
但偏偏我的事件隨機會
出現的範圍是很不規則...零碎的...
所以我才想說利用F7 的功能來判定{:2_254:}
作者:
j433463
时间:
2013-3-13 17:27
本帖最后由 j433463 于 2013-3-13 17:32 编辑
我後來補加的另一種方法不行嗎?不限制出現範圍,隨機的。
您說的那個腳本不是適合用來設置隨機寶箱位置的,其實只要在取得 x, y 座標時,用分歧條件下
$game_map.terrain_tag(x, y) == 地形標誌 id
复制代码
來判斷那位置是否符合地形標誌,不是的話重新取 x, y 座標就好了。
喔!更正一下,那個補充的區域控制事件倒是可以,您先亂數取得 x, y 座標,把事件移動到座標位置,然後用那個區域控制事件方式,如 area == M 就 start 事件,如果 area != M 就重新亂數取 x, y 重做一遍,這也是可以的。
作者:
千昭
时间:
2013-3-13 20:25
那个区域每个格子都放个宝箱
每个宝箱第一页事件开关 随机打开 打开的出现第二页的宝箱
作者:
喵呜喵5
时间:
2013-3-14 12:55
同大狮子说的
设置一个循环随机X、Y坐标,判定该坐标的地形标志,如果为1则把宝箱移过去同时跳出循环
作者:
Sion
时间:
2013-3-14 20:30
本帖最后由 Sion 于 2013-3-16 22:41 编辑
@a000b1745
编辑了,不会移动到玩家和事件(不允许穿透)的位置。
在事件中插入脚本:
$game_map.set_random_event(event_id, region)
event_id是要移动的事件id
region是移动到的区域id
事件移动后,独立开关D会开启。
例如:$game_map.set_random_event(4, 7)就是将4号事件随机移动到区域7中
需要设置宝箱的话,就把宝箱的第一页出现条件设置为独立开关D开启,
这样宝箱在移动之前不会显示在地图上。
class Game_Map
#--------------------------------------------------------------------------
# ● 将指定事件随机移动到指定区域
#--------------------------------------------------------------------------
def set_random_event(event_id, region)
return msgbox("要移动的事件不存在") if @events[event_id].nil?
coordinates = []
for map_x in 0..width
for map_y in 0..height
coordinates.push([map_x, map_y]) if region_id(map_x, map_y) == region &&
!@events[event_id].collide_with_characters?(map_x, map_y)
end
end
return msgbox("无法移动。检查区域设置;区域是否被事件、玩家占据。") if coordinates.empty?
xy = coordinates[rand(coordinates.size)]
@events[event_id].moveto(xy[0], xy[1])
$game_self_switches[[@map_id, event_id, "D"]] = true #不想在移动后开启独立开关就删掉这行
end
end
复制代码
作者:
csk244
时间:
2013-3-15 09:38
我也有一個問題
我先把第頁事件設透明,第二,三頁設事件,當隨機數是1時第一頁,隨機數是2時第二頁,但進入地圖時太近事件,事件會突然出現相當突兀,而遠一點進入地點出現就正常多,各大大有沒有方法解決?
作者:
Kumahk
时间:
2013-3-15 22:26
我也想引入隨機寶箱的系統, 可是不知道該怎樣處理寶箱變成路障的問題 --- 假設地圖可以隨機4個或以上的寶箱, 便有機會完全封住道路
不知道各位大大會怎樣解決?
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1