Project1

标题: 求大神 怎么让飞行器单独遇敌而且只能在大地图使用? [打印本页]

作者: lixinglixing022    时间: 2019-2-26 15:57
标题: 求大神 怎么让飞行器单独遇敌而且只能在大地图使用?
本帖最后由 lixinglixing022 于 2019-2-27 07:54 编辑

求好心的大神帮帮忙! 现在我的飞行器随便哪个地图都能用而且还不能遇敌,我想让飞行器单独遇天空中的怪物 还有飞行器只能在大地图使用!麻烦大神们了!
作者: KB.Driver    时间: 2019-2-26 15:57
标题: RE: 求大神 怎么让飞行器单独遇敌而且只能在大地图使用?
本帖最后由 KB.Driver 于 2019-2-28 23:28 编辑

数据库设置

权值小于20的是通常遇敌
权值不小于20的只有坐上飞艇才会碰到




工程内脚本





演示




工程
Project4.zip (1.44 MB, 下载次数: 5)
作者: lixinglixing022    时间: 2019-2-27 07:54
有大神在吗? 帮帮我 谢谢了.
作者: RMVXA    时间: 2019-2-27 09:02
好像YEA的汉化脚本合集里有这个。
作者: lixinglixing022    时间: 2019-2-27 20:51
RMVXA 发表于 2019-2-27 09:02
好像YEA的汉化脚本合集里有这个。

大神 有解决的办法吗?
作者: 魔法丶小肉包    时间: 2019-2-27 22:58
使用方法:

设置大地图:在地图的备注栏里写上<大地图>,在大地图中才能使用飞船

设置空中的敌人列表:在地图的备注栏里写上<空中 [[敌群ID,权重(遇敌几率)]]>
比如:<空中 [[2,10],[3,10]]>
那么在空中的时候就会随机遇到敌群ID为2或3的敌人
遇敌的平均步数跟地面上一样,不用另外设置

RUBY 代码复制
  1. class Game_Map
  2.   def note
  3.     @map.note
  4.   end
  5.   def airship_fly_ok?
  6.     note.include?("<大地图>") ? true : false
  7.   end
  8. end
  9. class Game_Vehicle
  10.   def update_airship_altitude
  11.     if @driving
  12.       @altitude += 1 if @altitude < max_altitude && takeoff_ok? && $game_map.airship_fly_ok?
  13.     elsif @altitude > 0
  14.       @altitude -= 1
  15.       @priority_type = 0 if @altitude == 0
  16.     end
  17.     @step_anime = (@altitude == max_altitude)
  18.     @priority_type = 2 if @altitude > 0
  19.   end
  20. end
  21. class Game_Player
  22.   def get_on_off_vehicle
  23.     if vehicle
  24.       get_off_vehicle
  25.     else
  26.       get_on_vehicle if $game_map.note.include?("<大地图>")
  27.     end
  28.   end
  29.   def update_encounter
  30.     return if $TEST && Input.press?(:CTRL)
  31.     return if $game_party.encounter_none?
  32.     return if @move_route_forcing
  33.     @encounter_count -= encounter_progress_value
  34.   end
  35.   def encounter
  36.     return false if $game_map.interpreter.running?
  37.     return false if $game_system.encounter_disabled
  38.     return false if @encounter_count > 0
  39.     make_encounter_count
  40.     troop_id = make_encounter_troop_id
  41.     return false unless $data_troops[troop_id]
  42.     BattleManager.setup(troop_id)
  43.     BattleManager.on_encounter
  44.     return true
  45.   end
  46.   def make_encounter_troop_id
  47.     encounter_list = []
  48.     weight_sum = 0
  49.     air_en = nil
  50.     if in_airship?
  51.       return unless $game_map.note =~ /<空中\s*(.+)>/
  52.       air_en = eval($1)
  53.       air_en.each do |airen|
  54.         weight_sum += airen[1]
  55.       end
  56.       if weight_sum > 0
  57.       value = rand(weight_sum)
  58.       air_en.each do |airen|
  59.         value -= airen[1]
  60.         return airen[0] if value < 0
  61.       end
  62.       end
  63.     else
  64.     $game_map.encounter_list.each do |encounter|
  65.       next unless encounter_ok?(encounter)
  66.       encounter_list.push(encounter)
  67.       weight_sum += encounter.weight
  68.     end
  69.     if weight_sum > 0
  70.       value = rand(weight_sum)
  71.       encounter_list.each do |encounter|
  72.         value -= encounter.weight
  73.         return encounter.troop_id if value < 0
  74.       end
  75.     end
  76.     end
  77.     return 0
  78.   end
  79. end

作者: KB.Driver    时间: 2019-2-28 12:04
要让飞行器只能在大地图用可以用这个
RUBY 代码复制
  1. class Game_Player
  2.   #--------------------------------------------------------------------------
  3.   # ● [别名修改]登上载具
  4.   #--------------------------------------------------------------------------
  5.   alias get_on_vehicle_overworld get_on_vehicle
  6.   def get_on_vehicle
  7.     return if $game_map.airship.pos?(@x, @y) && !$game_map.overworld?
  8.     get_on_vehicle_overworld
  9.   end
  10. end

作者: lixinglixing022    时间: 2019-2-28 14:18
魔法丶小肉包 发表于 2019-2-27 22:58
使用方法:

设置大地图:在地图的备注栏里写上,在大地图中才能使用飞船

大神 出现错误了!

QQ图片20190228141544.png (20.91 KB, 下载次数: 24)

QQ图片20190228141544.png

作者: 黄亦天    时间: 2019-2-28 20:18
如果用纯事件的话,在大地图上做一个并行事件,条件分歧判断人物是否在飞艇上,登上飞艇的时候记录步数,然后实时判断步数到达多少步之后触发战斗,至于想让飞艇不进入大地图以外的地方的话,在场所移动的事件里加个是否乘坐飞艇的条件分歧就行了。
作者: lixinglixing022    时间: 2019-3-1 11:02
KB.Driver 发表于 2019-2-28 23:11
数据库设置

权值小于20的是通常遇敌

KB 哥 跟这个是不是有冲突??

QQ图片20190301110051.png (71.76 KB, 下载次数: 17)

QQ图片20190301110051.png

作者: lixinglixing022    时间: 2019-3-1 11:04
lixinglixing022 发表于 2019-3-1 11:02
KB 哥 跟这个是不是有冲突??

我上不了飞船!

QQ图片20190301110349.png (13.01 KB, 下载次数: 16)

QQ图片20190301110349.png

作者: KB.Driver    时间: 2019-3-1 11:26
lixinglixing022 发表于 2019-3-1 11:04
我上不了飞船!

我把你说的两个脚本放一起,没有出现这样的问题。

你先检查一下这几个:
1.你的“筋斗云”确实是“飞艇”改了行走图得来的,而不是小舟或大船
(这个问题还没那么大)
2.你所在的地图的图块是“世界地图类型”


因为这个脚本就是让飞艇只能在“世界地图类型”的地图上使用,如果不是世界地图自然用不了
作者: lixinglixing022    时间: 2019-3-1 11:28
lixinglixing022 发表于 2019-3-1 11:02
KB 哥 跟这个是不是有冲突??

就这里以前改过 为了停船!

新建文本文档 (6).zip

1.59 KB, 下载次数: 58






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