Project1

标题: 【脚本】多功能事件 [打印本页]

作者: joe5491    时间: 2013-4-6 02:00
标题: 【脚本】多功能事件
本帖最后由 joe5491 于 2013-4-28 16:10 编辑

因為上次發的腳本功能實在是太少了??!!
所以這次重新寫了些沒人寫過的功能並整合?!(應該吧)

提供功能:扔物品、放置物品、丟錢、放置錢、放置經驗、置設傳送點、複製事件、刪除前面的這些東西
詳情看註解~

p.s. 「置設傳送點」這功能是給ARPG用的(玩家可以用它來在同一張地圖內傳來傳去躲攻擊?!)

~~~~~~~~~2013/4/6 15:17  修復重大的Bug~~~~~~~~~~(之前會當掉...)
~~~~~~~~~2013/4/6 22:35  加入新功能~~~~~~~~~~~
~~~~~~~~~2013/4/10 21:30  修正註解~~~~~~~~~~~
~~~~~~~~~2013/4/28 16:09  支援RGSS3forXP並改進效率~~~~~~~~~~~
  1. #========================================================
  2. #★ 多功能事件 -by joe59491
  3. #========================================================

  4. #========使用說明========================================
  5. #扔物品到地圖上
  6. #Throw_Item_To_Map.new(物品編號,set*)  #會扔在主角面前,名稱為物品名,會扣物品
  7. #Throw_Item_To_Map2.new(物品編號,set*)  #會扔在主角腳下,名稱為物品名,會扣物品
  8. #放置物品到地圖上
  9. #Item_To_Map.new(物品編號,x,y,set*)  #會放在地圖上的(x,y),名稱為物品名,不扣物品
  10. #丟錢到地圖上
  11. #Throw_Money_To_Map.new(多少錢,set*)  #會扔在主角面前,會扣錢
  12. #丟錢到地圖上
  13. #Throw_Money_To_Map2.new(多少錢,set*)  #會扔在主角腳下,會扣錢
  14. #放置錢到地圖上
  15. #Money_To_Map.new(多少錢,x,y,set*)  #會放在地圖上的(x,y),不扣錢
  16. #放置經驗到地圖上
  17. #EXP_To_Map.new(多少經驗,x,y,set*)  #會放在地圖上的(x,y),不扣經驗
  18. #放置變數到地圖上
  19. #Variables_To_Map.new(變數ID,多少,x,y,set*)  #會放在地圖上的(x,y)
  20. #製造傳送點A
  21. #Telport_To_Map_A.new(set*)           #會放在主角面前
  22. #製造傳送點B
  23. #Telport_To_Map_B.new(set*)           #會放在主角面前
  24. #製造傳送點A(xy版)
  25. #Telport_To_Map_A_xy.new(x,y,set*)           #會放在地圖上的(x,y)
  26. #製造傳送點B(xy版)
  27. #Telport_To_Map_B_xy.new(x,y,set*)           #會放在地圖上的(x,y)
  28. # set為是否要刷新地圖,預設會刷新,如果是從非地圖畫面,請寫0
  29. #每對A和B傳送點是互傳的
  30. #複製事件
  31. #Eve_To_Map.new(新X座標,新Y座標,複製事件所在地圖的編號,複製事件編號)
  32. #刪除事件(全部,針對傳送點的)
  33. #Dis_Telport_Eve.new
  34. #刪除事件(全部,針對多功能事件)
  35. #Dis_Eve.new
  36. #刪除某事件(針對多功能事件)
  37. #Dis_A_Eve.new(編號)
  38. #儲存事件(非自動,針對多功能事件)
  39. #Save_Eve.new
  40. #讀取事件(非自動,針對多功能事件)
  41. #Load_Eve.new
  42. #p.s. 當開關關閉時,會事件會被保留,否則會消失。
  43. #多功能事件預設一個地圖最多200個,然後暫時消除多功能事件等於刪掉它
  44. #========================================================

  45. #========參數設定======================================
  46. #Pic開頭是指行走圖名稱
  47. #Dir開頭是指朝向  2上(第一排)  4左(第二排)  6右(第三排)  8下(第四排)
  48. #Item=物品  EXP=經驗  Money=錢  Variables=變數  Telport=傳送點
  49. $Pic_Item = "193-support01"
  50. $Dir_Item = 6
  51. $Pic_EXP = "193-support01"
  52. $Dir_EXP = 6
  53. $Pic_Money = "193-support01"
  54. $Dir_Money = 6
  55. $Pic_Variables = "193-support01"
  56. $Dir_Variables = 6
  57. $Pic_TelportA = "199-support07_tori"
  58. $Dir_TelportA = 2
  59. $Pic_TelportB = "199-support07_tori"
  60. $Dir_TelportB = 6

  61. $Eve_Control = 18  #是否要關閉自動回復地圖上的事件的開關編號
  62. #======================================================

  63. class Game_Character
  64.   attr_accessor   :id                       # ID
  65.   attr_accessor   :tel                       # ID
  66. end

  67. class Eve_To_Map
  68.   def initialize(x, y, map_id, eve_id)
  69.     map = load_data(sprintf("Data/Map%03d.rxdata", map_id))
  70.     for i in 200..300
  71.       if $game_map.events[i] == nil
  72.         $game_map.events[i] = Game_Event.new($game_map.map_id, map.events[eve_id])
  73.         $game_map.events[i].moveto(x,y)
  74.         $game_map.events[i].id=i
  75.         $scene.spriteset.dispose
  76.         $scene.spriteset = Spriteset_Map.new
  77.         break
  78.       end
  79.     end   
  80.   end
  81. end
  82. class Game_Event < Game_Character
  83.   attr_accessor   :erased                       # erased
  84.   def set_as_exp(value,eve_id)
  85.     @through = false
  86.     @direction_fix = true
  87.     @character_name = $Pic_EXP
  88.     @pattern=0
  89.     @opacity=255
  90.     @direction=$Dir_EXP
  91.     @page.list=[RPG::EventCommand.new(315,0,[0,0,0,value]),RPG::EventCommand.new(355,0,["Dis_A_Eve.new("+eve_id.to_s+")"]),RPG::EventCommand.new(0,0,[])]
  92.     @list=[RPG::EventCommand.new(315,0,[0,0,0,value]),RPG::EventCommand.new(355,0,["Dis_A_Eve.new("+eve_id.to_s+")"]),RPG::EventCommand.new(0,0,[])]
  93.     @skippabel=false
  94.     @trigger = 0
  95.     @step_anime=false
  96.     @walk_anime=false
  97.     @move_frequency=3
  98.     @move_speed=3
  99.     @move_type=0
  100.     @name=value.to_s + "EXP"
  101.     @always_on_top=false
  102.     @interpreter = nil
  103.   end
  104.   def set_as_money(value,eve_id)
  105.     @through = false
  106.     @direction_fix = true
  107.     @character_name = $Pic_Money
  108.     @pattern=0
  109.     @opacity=255
  110.     @direction=$Dir_Money
  111.     @page.list=[RPG::EventCommand.new(125,0,[0,0,value]),RPG::EventCommand.new(355,0,["Dis_A_Eve.new("+eve_id.to_s+")"]),RPG::EventCommand.new(0,0,[])]
  112.     @list=[RPG::EventCommand.new(125,0,[0,0,value]),RPG::EventCommand.new(355,0,["Dis_A_Eve.new("+eve_id.to_s+")"]),RPG::EventCommand.new(0,0,[])]
  113.     @skippabel=false
  114.     @trigger = 0
  115.     @step_anime=false
  116.     @walk_anime=false
  117.     @move_frequency=3
  118.     @move_speed=3
  119.     @move_type=0
  120.     @name=value.to_s + $data_system.words.gold
  121.     @always_on_top=false
  122.     @interpreter = nil
  123.   end
  124.   def set_as_variables(variables_id,value,eve_id)
  125.     @through = false
  126.     @direction_fix = true
  127.     @character_name = $Pic_Variables
  128.     @pattern=0
  129.     @opacity=255
  130.     @direction=$Dir_Variables
  131.     @page.list=[RPG::EventCommand.new(315,0,[variables_id,variables_id,1,0,value,0]),RPG::EventCommand.new(355,0,["Dis_A_Eve.new("+eve_id.to_s+")"]),RPG::EventCommand.new(0,0,[])]
  132.     @list=[RPG::EventCommand.new(315,0,[variables_id,variables_id,1,0,value,0]),RPG::EventCommand.new(355,0,["Dis_A_Eve.new("+eve_id.to_s+")"]),RPG::EventCommand.new(0,0,[])]
  133.     @skippabel=false
  134.     @trigger = 0
  135.     @step_anime=false
  136.     @walk_anime=false
  137.     @move_frequency=3
  138.     @move_speed=3
  139.     @move_type=0
  140.     @name=value.to_s
  141.     @always_on_top=false
  142.     @interpreter = nil
  143.   end
  144.   def set_as_item(item_id,eve_id)
  145.     @through = false#true
  146.     @direction_fix = true
  147.     @character_name = $Pic_Item
  148.     @pattern=0
  149.     @opacity=255
  150.     @direction=$Dir_Item
  151.     @page.list=[RPG::EventCommand.new(126,0,[item_id,0,0,1]),RPG::EventCommand.new(355,0,["Dis_A_Eve.new("+eve_id.to_s+")"]),RPG::EventCommand.new(0,0,[])]
  152.     @list=[RPG::EventCommand.new(126,0,[item_id,0,0,1]),RPG::EventCommand.new(355,0,["Dis_A_Eve.new("+eve_id.to_s+")"]),RPG::EventCommand.new(0,0,[])]
  153.     @skippabel=false
  154.     @trigger = 0
  155.     @step_anime=false
  156.     @walk_anime=false
  157.     @move_frequency=3
  158.     @move_speed=3
  159.     @move_type=0
  160.     @name=$data_items[item_id].name
  161.     @always_on_top=false
  162.     @interpreter = nil
  163.   end
  164.   def set_as_telport_a
  165.     @through = true
  166.     @direction_fix = true
  167.     @character_name = $Pic_TelportA
  168.     @pattern=0
  169.     @opacity=255
  170.     @direction=$Dir_TelportA
  171.     @page.list=[RPG::EventCommand.new(101,0,["沒有對應傳送點!"]),RPG::EventCommand.new(0,0,[])]
  172.     @list=[RPG::EventCommand.new(101,0,["沒有對應傳送點!"]),RPG::EventCommand.new(0,0,[])]
  173.     @skippabel=false
  174.     @trigger = 1
  175.     @step_anime=true
  176.     @walk_anime=false
  177.     @move_frequency=3
  178.     @move_speed=3
  179.     @move_type=0
  180.     @name="傳送點"
  181.     @always_on_top=false
  182.     @interpreter = nil
  183.   end
  184.   def set_as_telport_b(tox,toy)
  185.     @through = true
  186.     @direction_fix = true
  187.     @character_name = $Pic_TelportA
  188.     @pattern=0
  189.     @opacity=255
  190.     @direction=$Dir_TelportB
  191.     @page.list=[RPG::EventCommand.new(201,0,[0,$game_map.map_id,tox,toy,0,1]),RPG::EventCommand.new(0,0,[])]
  192.     @list=[RPG::EventCommand.new(201,0,[0,$game_map.map_id,tox,toy,0,1]),RPG::EventCommand.new(0,0,[])]
  193.     @skippabel=false
  194.     @trigger = 1
  195.     @step_anime=true
  196.     @walk_anime=false
  197.     @move_frequency=3
  198.     @move_speed=3
  199.     @move_type=0
  200.     @name="傳送點"
  201.     @always_on_top=false
  202.     @interpreter = nil
  203.   end
  204. end

  205. class Telport_To_Map_A
  206.   def initialize(set = 1)
  207.     if $game_map.Telport_A[$game_map.map_id] != nil
  208.       $game_temp.message_text = "你已經設過了起點!"
  209.       return
  210.     end
  211.     if !$game_player.passable?($game_player.x, $game_player.y, $game_player.direction)
  212.       $game_temp.message_text = "前面無法放傳送點!"
  213.       return
  214.     end
  215.     for i in 200..300
  216.       if $game_map.events[i] == nil
  217.         x=$game_player.x
  218.         y=$game_player.y
  219.         if $game_player.direction==2
  220.           y += 1
  221.         elsif $game_player.direction==4
  222.           x -= 1
  223.         elsif $game_player.direction==6
  224.           x += 1
  225.         elsif $game_player.direction==8
  226.           y -= 1
  227.         end
  228.         $game_map.events[i] = Game_Event.new($game_map.map_id,RPG::Event.new(x,y))
  229.         $game_map.events[i].id=i
  230.         $game_map.events[i].set_as_telport_a
  231.         $game_map.events[i].tel = 1
  232.         $game_map.Telport_A[$game_map.map_id]=i
  233.         if set == 1
  234.           $scene.spriteset.push_eve(i)
  235.         end
  236.         break
  237.       end
  238.     end
  239.   end
  240. end

  241. class Telport_To_Map_B
  242.   def initialize(set = 1)
  243.     if $game_map.Telport_A[$game_map.map_id] == nil
  244.       $game_temp.message_text = "你還沒設起點!"
  245.       return
  246.     end
  247.     if !$game_player.passable?($game_player.x, $game_player.y, $game_player.direction)
  248.       $game_temp.message_text = "前面無法放傳送點!"
  249.       return
  250.     end
  251.     for i in 200..300
  252.       if $game_map.events[i] == nil
  253.         x=$game_player.x
  254.         y=$game_player.y
  255.         if $game_player.direction==2
  256.           y += 1
  257.         elsif $game_player.direction==4
  258.           x -= 1
  259.         elsif $game_player.direction==6
  260.           x += 1
  261.         elsif $game_player.direction==8
  262.           y -= 1
  263.         end
  264.         $game_map.events[i] = Game_Event.new($game_map.map_id,RPG::Event.new(x,y))
  265.         $game_map.events[i].id=i
  266.         
  267.         $game_map.events[i].set_as_telport_b($game_map.events[$game_map.Telport_A[$game_map.map_id]].x,$game_map.events[$game_map.Telport_A[$game_map.map_id]].y)
  268.         $game_map.events[$game_map.Telport_A[$game_map.map_id]].set_as_telport_b($game_map.events[i].x,$game_map.events[i].y)
  269.         $game_map.events[i].tel = 1
  270.         $game_map.Telport_A[$game_map.map_id]=nil
  271.         if set == 1
  272.           $scene.spriteset.push_eve(i)
  273.         end
  274.         break
  275.       end
  276.     end
  277.   end
  278. end

  279. class Telport_To_Map_A_xy
  280.   def initialize(x,y,set = 1)
  281.     if $game_map.Telport_A[$game_map.map_id] != nil
  282.       $game_temp.message_text = "你已經設過了起點!"
  283.       return
  284.     end
  285.     for i in 200..300
  286.       if $game_map.events[i] == nil
  287.         $game_map.events[i] = Game_Event.new($game_map.map_id,RPG::Event.new(x,y))
  288.         $game_map.events[i].id=i
  289.         $game_map.events[i].set_as_telport_a
  290.         $game_map.events[i].tel = 1
  291.         $game_map.Telport_A[$game_map.map_id]=i
  292.         if set == 1
  293.           $scene.spriteset.push_eve(i)
  294.         end
  295.         break
  296.       end
  297.     end
  298.   end
  299. end

  300. class Telport_To_Map_B_xy
  301.   def initialize(x,y,set = 1)
  302.     if $game_map.Telport_A[$game_map.map_id] == nil
  303.       $game_temp.message_text = "你還沒設起點!"
  304.       return
  305.     end
  306.     for i in 200..300
  307.       if $game_map.events[i] == nil
  308.         $game_map.events[i] = Game_Event.new($game_map.map_id,RPG::Event.new(x,y))
  309.         $game_map.events[i].id=i
  310.         $game_map.events[i].set_as_telport_b($game_map.events[$game_map.Telport_A[$game_map.map_id]].x,$game_map.events[$game_map.Telport_A[$game_map.map_id]].y)
  311.         $game_map.events[$game_map.Telport_A[$game_map.map_id]].set_as_telport_b($game_map.events[i].x,$game_map.events[i].y)
  312.         $game_map.events[i].tel = 1
  313.         $game_map.Telport_A[$game_map.map_id]=nil
  314.         if set == 1
  315.           $scene.spriteset.push_eve(i)
  316.         end
  317.         break
  318.       end
  319.     end
  320.   end
  321. end

  322. class Throw_Item_To_Map
  323.   def initialize(item_id, set = 1)
  324.     if $game_party.item_number(item_id)>0
  325.       if !$game_player.passable?($game_player.x, $game_player.y, $game_player.direction)
  326.         $game_temp.message_text = "前面無法放東西!"
  327.         return
  328.       end
  329.       $game_party.gain_item(item_id, -1)
  330.       for i in 200..300
  331.         if $game_map.events[i] == nil
  332.           x=$game_player.x
  333.           y=$game_player.y
  334.           if $game_player.direction==2
  335.             y += 1
  336.           elsif $game_player.direction==4
  337.             x -= 1
  338.           elsif $game_player.direction==6
  339.             x += 1
  340.           elsif $game_player.direction==8
  341.             y -= 1
  342.           end
  343.           $game_map.events[i] = Game_Event.new($game_map.map_id,RPG::Event.new(x,y))
  344.           $game_map.events[i].id=i
  345.           $game_map.events[i].set_as_item(item_id,i)
  346.           if set == 1
  347.             $scene.spriteset.push_eve(i)
  348.           end
  349.           break
  350.         end
  351.       end
  352.     end
  353.   end
  354. end

  355. class Throw_Item_To_Map2
  356.   def initialize(item_id, set = 1)
  357.     if $game_party.item_number(item_id)>0
  358.       $game_party.gain_item(item_id, -1)
  359.       for i in 200..300
  360.         if $game_map.events[i] == nil
  361.           x=$game_player.x
  362.           y=$game_player.y
  363.           $game_map.events[i] = Game_Event.new($game_map.map_id,RPG::Event.new(x,y))
  364.           $game_map.events[i].id=i
  365.           $game_map.events[i].set_as_item(item_id,i)
  366.           if set == 1
  367.             $scene.spriteset.push_eve(i)
  368.           end
  369.           break
  370.         end
  371.       end
  372.     end
  373.   end
  374. end

  375. class Throw_Money_To_Map2
  376.   def initialize(value, set = 1)
  377.     if $game_party.gold > value
  378.       $game_party.gain_gold(value)
  379.       for i in 200..300
  380.         if $game_map.events[i] == nil
  381.           x=$game_player.x
  382.           y=$game_player.y
  383.           $game_map.events[i] = Game_Event.new($game_map.map_id,RPG::Event.new(x,y))
  384.           $game_map.events[i].id=i
  385.           $game_map.events[i].set_as_item_money(value,i)
  386.           if set == 1
  387.             $scene.spriteset.push_eve(i)
  388.           end
  389.           break
  390.         end
  391.       end
  392.     end
  393.   end
  394. end

  395. class Throw_Money_To_Map
  396.   def initialize(value, set = 1)
  397.     if $game_party.gold > value
  398.       if !$game_player.passable?($game_player.x, $game_player.y, $game_player.direction)
  399.         $game_temp.message_text = "前面無法放東西!"
  400.         return
  401.       end
  402.       $game_party.gain_gold(value)
  403.       for i in 200..300
  404.         if $game_map.events[i] == nil
  405.           x=$game_player.x
  406.           y=$game_player.y
  407.           if $game_player.direction==2
  408.             y += 1
  409.           elsif $game_player.direction==4
  410.             x -= 1
  411.           elsif $game_player.direction==6
  412.             x += 1
  413.           elsif $game_player.direction==8
  414.             y -= 1
  415.           end
  416.           $game_map.events[i] = Game_Event.new($game_map.map_id,RPG::Event.new(x,y))
  417.           $game_map.events[i].id=i
  418.           $game_map.events[i].set_as_item_money(value,i)
  419.           if set == 1
  420.             $scene.spriteset.push_eve(i)
  421.           end
  422.           break
  423.         end
  424.       end
  425.     end
  426.   end
  427. end

  428. class Variables_To_Map
  429.   def initialize(variables_id,value, x,y,set = 1)
  430.     for i in 200..300
  431.       if $game_map.events[i] == nil
  432.         $game_map.events[i] = Game_Event.new($game_map.map_id,RPG::Event.new(x,y))
  433.         $game_map.events[i].id=i
  434.         $game_map.events[i].set_as_variables(variables_id,value,i)
  435.         if set == 1
  436.           $scene.spriteset.push_eve(i)
  437.         end
  438.         break
  439.       end
  440.     end
  441.   end
  442. end

  443. class Item_To_Map
  444.   def initialize(item_id, x,y,set = 1)
  445.     for i in 200..300
  446.       if $game_map.events[i] == nil
  447.         $game_map.events[i] = Game_Event.new($game_map.map_id,RPG::Event.new(x,y))
  448.         $game_map.events[i].id=i
  449.         $game_map.events[i].set_as_item(item_id,i)
  450.         if set == 1
  451.           $scene.spriteset.push_eve(i)
  452.         end
  453.         break
  454.       end
  455.     end
  456.   end
  457. end

  458. class Money_To_Map
  459.   def initialize(value, x,y,set = 1)
  460.     for i in 200..300
  461.       if $game_map.events[i] == nil
  462.         $game_map.events[i] = Game_Event.new($game_map.map_id,RPG::Event.new(x,y))
  463.         $game_map.events[i].id=i
  464.         $game_map.events[i].set_as_money(value,i)
  465.         if set == 1
  466.           $scene.spriteset.push_eve(i)
  467.         end
  468.         break
  469.       end
  470.     end
  471.   end
  472. end


  473. class EXP_To_Map
  474.   def initialize(value, x,y,set = 1)
  475.     for i in 200..300
  476.       if $game_map.events[i] == nil
  477.         $game_map.events[i] = Game_Event.new($game_map.map_id,RPG::Event.new(x,y))
  478.         $game_map.events[i].id=i
  479.         $game_map.events[i].set_as_exp(value,i)
  480.         if set == 1
  481.           $scene.spriteset.push_eve(i)
  482.         end
  483.         break
  484.       end
  485.     end
  486.   end
  487. end

  488. class Game_Map
  489.   attr_accessor :SEve
  490.   attr_accessor :Telport_A
  491.   alias initialize_seve initialize
  492.   def initialize
  493.     @SEve=[0]
  494.     @Telport_A=[0]
  495.     initialize_seve
  496.   end
  497.   alias update_seve update
  498.   def update
  499.     if $game_map.need_refresh
  500.     end
  501.   update_seve
  502.   end
  503. end

  504. class Save_Eve
  505.   def initialize
  506.     $game_map.SEve[$game_map.map_id]=[0]
  507.     for i in 200..300
  508.       if $game_map.events[i] != nil
  509.         if !$game_map.events[i].erased
  510.           $game_map.SEve[$game_map.map_id][i-200] = $game_map.events[i]
  511.         end
  512.       end
  513.     end   
  514.   end
  515. end

  516. class Load_Eve
  517.   def initialize
  518.     if $game_map.SEve[$game_map.map_id]!=nil
  519.       for i in 0..200
  520.         if $game_map.SEve[$game_map.map_id][i] != nil and $game_map.SEve[$game_map.map_id][i] != 0
  521.           $game_map.events[i+200]=$game_map.SEve[$game_map.map_id][i]
  522.           $scene.spriteset.push_eve(i+200)
  523.         end
  524.       end   
  525.     end
  526.   end
  527. end

  528. class Dis_A_Eve
  529.   def initialize(eve_id)
  530.     if $game_map.events[eve_id] != nil
  531.       $game_map.events[eve_id].erase
  532.     end  
  533.   end
  534. end


  535. class Dis_Telport_Eve
  536.   def initialize
  537.     for i in 200..300
  538.       if $game_map.events[i] != nil
  539.         if $game_map.events[i].tel=1
  540.           $game_map.events[i].erase
  541.         end
  542.       end  
  543.     end
  544.   end
  545. end

  546. class Dis_Eve
  547.   def initialize
  548.     for i in 200..300
  549.       if $game_map.events[i] != nil
  550.         $game_map.events[i].erase
  551.       end
  552.     end  
  553.   end
  554. end

  555. class Interpreter
  556.   alias command_201_seve command_201
  557.   def command_201
  558.     if !$game_switches[$Eve_Control]
  559.       Save_Eve.new
  560.     end
  561.     command_201_seve
  562.   end
  563. end

  564. class Scene_Map
  565.   attr_accessor :spriteset
  566.   alias transfer_player_seve transfer_player
  567.   def transfer_player
  568.    
  569.     transfer_player_seve
  570.     if !$game_switches[$Eve_Control]
  571.       Load_Eve.new   
  572.     end
  573. #      $Jdll.call("$MOVM"+$game_map.map_id.to_s+" "+$game_player.x.to_s+" "+$game_player.y.to_s+" "+$game_player.direction.to_s+" "+$game_player.move_speed.to_s+" "+$game_player.character_name )
  574. #    $Send_Msg_Map="$MOVM"$game_map.map_id.to_s+" "+$game_player.x+" "+$game_player.y+" "++$game_player.direction

  575.    
  576.   end
  577. end


  578. class Spriteset_Map
  579.   def push_eve(i)
  580.     sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
  581.     @character_sprites.push(sprite)
  582.   end
  583. end

  584. class Game_Character
  585.   attr_accessor :to_x              
  586.   attr_accessor :to_y              
  587. end
复制代码
.

可以扔物品,不過這介面要自己寫....我只提供方法....


物品丟棄完成!


置設傳送點A


置設傳送點B


怪物來了!!快跑!!


呼~逃走了~



附上範例工程:  ARPG腳本是愚零武鬥多提供的,不過已經被我大幅修改了
RMEVENT.rar (481.77 KB, 下载次数: 318)
作者: 火星·奈    时间: 2013-4-6 10:38
不错的脚本.
作者: abc1999611    时间: 2013-4-6 10:53
有木有范例?给个给个撒
作者: 美丽晨露    时间: 2013-4-6 12:03
很强大的脚本
如果能给一个范例参考一下就更好了
作者: joe5491    时间: 2013-4-6 12:42
我的arpg腳本跟太多東西整合在一起了....好像很難拆開....我得想個好辦法弄開了....
作者: chd114    时间: 2013-4-6 12:43
我只想要扔掉物品和改变事件···另外我想要个永久改变事件名称和位置的脚本···之前在6R上弄的会不停出错
作者: 我爱吴悦淇    时间: 2013-4-6 12:59
有没有范例呢?有的话会更好哦~
作者: joe5491    时间: 2013-4-6 14:47
本帖最后由 joe5491 于 2013-4-6 15:11 编辑

範例生成中.....
然後我發現有莫名的BUG.....(範例RM會當掉....)

~~~~~~~~~~~修好了~~~~~~~~~~~
作者: chd114    时间: 2013-4-6 16:39
我只想要其中的2个功能···其他的如果我不要要怎么去掉啊
作者: abc1999611    时间: 2013-4-6 19:48
不错哦
作者: chd114    时间: 2013-4-6 21:03
最后下了这个贴的工程···为什么一打开直接被退掉了···话说这个脚本扔出来的钱没有事件名称吗?我用了地图上显示NPC名字的脚本···这样子不美观啊
作者: chd114    时间: 2013-4-6 22:02
那个18号开关的问题和如何扔变量到地上的问题你还没回答我呢···
作者: 美丽晨露    时间: 2013-4-6 22:51
十分厉害的脚本系统呀
用来做自由RPG的话会很不错吧
作者: joe5491    时间: 2013-4-6 23:54
我原本有想過弄個2D版的Minecraft,不過後來覺得太詭異就放棄了....(2D的能看嗎??)
作者: chd114    时间: 2013-4-7 20:45
如果我想扔到地图上的是
  1. $game_variables[3][0]
复制代码
那么是这样吗?
  1. Variables_To_Map(3[0],15,10,10)
复制代码

作者: chd114    时间: 2013-4-7 20:49
好吧,刚才试了下,随便用一个空白变量,脚本写的是
  1. Variables_To_Map(1,1,2,3)
复制代码
依然会出错求解释
作者: joe5491    时间: 2013-4-7 21:18
chd114 发表于 2013-4-7 20:49
好吧,刚才试了下,随便用一个空白变量,脚本写的是依然会出错求解释

好吧...因為我的愚蠢,註解打錯了....
應該是這樣打才對 「Variables_To_Map.new(變數ID,多少,x,y,set*)」(之前少了.new)

ex:我要在(5,4)的地方放7號變數,拿了7號變數多40
  Variables_To_Map.new(7,40,4,5)

話說這是啥我不知道$game_variables[3][0]是啥...

我乾脆弄個可以扔腳本的腳本好了...


作者: chd114    时间: 2013-4-8 20:37
joe5491 发表于 2013-4-7 21:18
好吧...因為我的愚蠢,註解打錯了....
應該是這樣打才對 「Variables_To_Map.new(變數ID,多少,x,y,set*) ...

原来你不知道变量里面还可以套用数组啊···另外再测了下这个脚本里的其他功能···传送点创建会弹错吗,在角色脚下或面前放钱和经验的脚本无效,话说那个储存事件和读取事件是什么意思···也是无效的脚本吗?
作者: joe5491    时间: 2013-4-10 21:36
@chd114

1. 你說過:「 ···我试过了,传送不管是在新建工程还是在我正在做的游戏里都会出错ArgumentError wrong number of arguments(3 for 1)  」
結論:你應該是要用Telport_To_Map_A_xy.new(x,y,set*) 而不是Telport_To_Map_A.new(set*)(好吧...我註解又打錯了...複製貼上的後果....)

2. 你說過:「还是不明白那个save和load事件的到底是怎么用···反正我用了之后感觉没什么变化  发表于 半小时前」
結論:當你關掉自動恢復事件的功能後,你要把地圖上的事件記錄下來或讀取就要用它...(一般不會去關自動恢復....)
作者: chd114    时间: 2013-4-10 21:41
joe5491 发表于 2013-4-10 21:36
@chd114

1. 你說過:「 ···我试过了,传送不管是在新建工程还是在我正在做的游戏里都会出错ArgumentEr ...

···就不能更具体点吗···给个正确的范例啊···还有就是那个saveload如果我一个地图存了多个事件或者要读取多个事件要怎么选···
作者: chd114    时间: 2013-4-16 00:03
  1. $game_map.events[@event_id].name="123"
  2. Save_Eve.new
复制代码
不是说事件名字改了会保存吗?为什么没有?转换到2号地图后再回1号地图名字还是原来的 Data.rar (177.23 KB, 下载次数: 30)
作者: 弗雷德    时间: 2013-4-16 12:06
很有意思的脚本,虽然不打算做ARPG,先学习学习没准能给游戏增添一点色彩呢。
作者: Matoko    时间: 2013-4-16 17:43
谢谢分享~ 先带回家去学习学习了
作者: 丁二狗    时间: 2013-4-16 21:10
高人     
作者: joe5491    时间: 2013-4-28 16:12
更新增加效能的部份了!(不會每次都重刷地圖)

p.s.我懶得重發了...
作者: DSHWJ    时间: 2013-5-11 14:46
囧~看不懂繁体字……
作者: wutou    时间: 2013-8-2 18:14
很不错哟,感谢~
作者: 47731089    时间: 2013-8-5 14:45
太感谢了,这个配合XAS系统=A=+ 可以做一个怪物仓库!
不知道丢出的事件物品金钱和经验是否可以角色接触后即获得,=.=总是按C键也不好。

我觉得用普通的文章显示太慢,不适合ARPG,最好用这种直接地图上弹出伤害的方式来显示文字
比如
  $game_player.battler.damage = "前面无法放置传送点。"
      $game_player.battler.damage_pop = true

这样的效果更好呢。
传送阵的话加一个动画效果可能更好些。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1