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 座標時,用分歧條件下
  1. $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开启,
这样宝箱在移动之前不会显示在地图上。
  1. class Game_Map
  2.   #--------------------------------------------------------------------------
  3.   # ● 将指定事件随机移动到指定区域
  4.   #--------------------------------------------------------------------------
  5.   def set_random_event(event_id, region)
  6.     return msgbox("要移动的事件不存在") if @events[event_id].nil?
  7.     coordinates = []
  8.     for map_x in 0..width
  9.       for map_y in 0..height
  10.         coordinates.push([map_x, map_y]) if region_id(map_x, map_y) == region &&
  11.           !@events[event_id].collide_with_characters?(map_x, map_y)
  12.       end
  13.     end
  14.     return msgbox("无法移动。检查区域设置;区域是否被事件、玩家占据。") if coordinates.empty?
  15.     xy = coordinates[rand(coordinates.size)]
  16.     @events[event_id].moveto(xy[0], xy[1])
  17.     $game_self_switches[[@map_id, event_id, "D"]] = true #不想在移动后开启独立开关就删掉这行
  18.   end
  19. 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