设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1769|回复: 9
打印 上一主题 下一主题

[已经过期] 我想实现战斗中召唤。

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
125 小时
注册时间
2006-7-19
帖子
336
跳转到指定楼层
1
发表于 2011-9-26 18:22:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不懂脚本,有没有人帮忙给改一下。想实现,创建一个物品或者技能,然后利用公共事件 实现召唤。

Lv2.观梦者

梦石
0
星屑
354
在线时间
1036 小时
注册时间
2011-5-19
帖子
2098
2
发表于 2011-9-26 18:45:14 | 只看该作者
本帖最后由 MSQ 于 2011-9-26 18:56 编辑

我再度无耻的发个传送们~~
貌似VX区的版主对我很无语呃~~可是我不会脚本~~= =||,当然,这不能作为理由。
http://rpg.blue/forum.php?mod=vi ... =%E5%8F%AC%E5%94%A4

用技能/物品调用公共事件,事件为加入所要加入的ID,配合那个脚本用。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
125 小时
注册时间
2006-7-19
帖子
336
3
 楼主| 发表于 2011-9-26 19:35:09 | 只看该作者
用公共事件,会与这条发生冲突。
  1. $CP可见 = true
  2. $敌人血条显示 = true

  3. class Scene_Battle < Scene_Base
  4.   #--------------------------------------------------------------------------
  5.   # ● 开始技能选择
  6.   #--------------------------------------------------------------------------
  7.   def start_skill_selection
  8.     @help_window = Window_Help.new
  9.     @skill_window = Window_Skill.new(0, 56, 544, 208, @active_battler)
  10.     @skill_window.z = 520
  11.     @help_window.z = 520
  12.     @skill_window.help_window = @help_window
  13.     @actor_command_window.active = false
  14.   end  
  15.   #--------------------------------------------------------------------------
  16.   # ● 生成资讯显示端口
  17.   #--------------------------------------------------------------------------
  18.   def create_info_viewport
  19.     @info_viewport = Viewport.new(0, 256, 544, 160)
  20.     @info_viewport.z = 100
  21.     @status_window = Window_BattleStatus.new
  22.     @party_command_window = Window_PartyCommand.new
  23.     @actor_command_window = Window_ActorCommand.new
  24.     @status_window.viewport = @info_viewport
  25.     @party_command_window.viewport = @info_viewport
  26.     @actor_command_window.viewport = @info_viewport
  27.     @actor_command_window.setup(nil)
  28.     @status_window.x = 128
  29.     @status_window.y = $CP可见 ? 32 : 8
  30.     @actor_command_window.x = 0
  31.     @actor_command_window.y = 8
  32.     @info_viewport.visible = false
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 更新资讯显示端口
  36.   #--------------------------------------------------------------------------
  37.   def update_info_viewport
  38.     @party_command_window.update
  39.     @actor_command_window.update
  40.     @status_window.update   
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● CP条生成
  44.   #--------------------------------------------------------------------------
  45.   def make_cp
  46.     @blank_window = Window_Blank.new
  47.     @cppic = {}
  48.     @baseicons = Cache.system("Iconset")
  49.     for iii in $game_party.members + $game_troop.members
  50.       @cppic[iii] = Sprite.new
  51.       @cppic[iii].bitmap = @baseicons
  52.       @cppic[iii].x = 4
  53.       @cppic[iii].y = 264
  54.       @cppic[iii].z = 510
  55.       @cppic[iii].zoom_x = 1.0
  56.       @cppic[iii].zoom_y = 1.0
  57.       @cppic[iii].opacity = 255
  58.       @cppic[iii].visible = $CP可见
  59.     end
  60.     @basepic = Sprite.new
  61.     @basepic.bitmap = Bitmap.new(384, 8)
  62.     @basepic.x = 16
  63.     @basepic.y = 272
  64.     @basepic.z = 500
  65.     @basepic.zoom_x = 1.0
  66.     @basepic.zoom_y = 1.0
  67.     @basepic.opacity = 255
  68.     @basepic.bitmap.fill_rect(0, 0, 384, 8, Color.new(0, 128, 192, 255))
  69.     @basepic.visible = $CP可见
  70.     refresh_cp
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● CP条更新
  74.   #--------------------------------------------------------------------------
  75.   def refresh_cp
  76.     if @blank_window.disposed?
  77.       return
  78.     end
  79.     @blank_window.x = 128 - @info_viewport.ox
  80.     @basepic.x = 144 - @info_viewport.ox   
  81.     for iii in $game_party.members + $game_troop.members
  82.       if iii.is_a?(Game_Actor)
  83.         if iii.weapon_id == 0
  84.           @cppic[iii].src_rect.set(96, 192, 24, 24)
  85.         else
  86.           icon_index = $data_weapons[iii.weapon_id].icon_index
  87.           @cppic[iii].src_rect.set(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
  88.         end
  89.       else
  90.         @cppic[iii].src_rect.set(312, 216, 24, 24)
  91.       end
  92.       if iii.hp > 0
  93.         @cppic[iii].visible = $CP可见
  94.       else
  95.         @cppic[iii].visible = false
  96.       end
  97.       if iii.waiting_time > 0
  98.         @cppic[iii].x = 132 + 384 * (iii.max_waiting_time - iii.waiting_time) / iii.max_waiting_time - @info_viewport.ox
  99.         @cppic[iii].y = 264 - 480 * (Graphics.frame_count % 2)
  100.       else
  101.         @cppic[iii].x = 132 + (iii.cp * 384 / 5000).to_i - @info_viewport.ox
  102.         @cppic[iii].y = 264
  103.       end      
  104.     end
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ● CP条消去
  108.   #--------------------------------------------------------------------------
  109.   def dispose_cp
  110.     for iii in $game_party.members + $game_troop.members
  111.       @cppic[iii].dispose
  112.     end
  113.     @baseicons.dispose
  114.     @basepic.dispose
  115.     @blank_window.dispose
  116.   end
  117. end

  118. #==============================================================================
  119. # ■ Window_Blank
  120. #------------------------------------------------------------------------------
  121. #  用来放置CP的空白窗口。
  122. #==============================================================================

  123. class Window_Blank < Window_Base
  124.   #--------------------------------------------------------------------------
  125.   # ● 初始化对像
  126.   #--------------------------------------------------------------------------
  127.   def initialize
  128.     super(0, 264, 416, 24)
  129.     self.visible = $CP可见
  130.     self.z = 490   
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ● 生成窗口内容
  134.   #--------------------------------------------------------------------------
  135.   def create_contents
  136.     #REM
  137.   end
  138. end

  139. #==============================================================================
  140. # ■ Window_ActorCommand
  141. #------------------------------------------------------------------------------
  142. #  选择角色命令(如「攻击」或「技能」)的窗口。
  143. #==============================================================================

  144. class Window_ActorCommand < Window_Command
  145.   #--------------------------------------------------------------------------
  146.   # ● 初始化对像
  147.   #--------------------------------------------------------------------------
  148.   def initialize
  149.     super(128, [], 1, 5)
  150.     self.active = false
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ● 设置
  154.   #     actor : 角色
  155.   #--------------------------------------------------------------------------
  156.   def setup(actor)
  157.     s1 = Vocab::attack
  158.     s2 = Vocab::skill
  159.     s3 = Vocab::guard
  160.     s4 = Vocab::item
  161.     s5 = Vocab::escape
  162.     if actor != nil
  163.       if actor.class.skill_name_valid     # 是否指定职业技能文字
  164.         s2 = actor.class.skill_name       # 替换「技能」命令文字
  165.       end
  166.       self.index = 0
  167.     else
  168.       self.index = -1
  169.     end
  170.     @commands = [s1, s2, s3, s4, s5]
  171.     @item_max = 5
  172.     refresh
  173.   end
  174. end

  175. #==============================================================================
  176. # ■ Sprite_Battler
  177. #------------------------------------------------------------------------------
  178. #  战斗显示用活动块。Game_Battler 类的实例监视、活动块的状态的监视。
  179. #==============================================================================

  180. class Sprite_Battler < Sprite_Base
  181.   # 敌人血条的显示
  182.   attr_accessor :hpmeter_value
  183.   def create_hpmeter
  184.     @hpmeter = Sprite.new
  185.     @hpmeter.bitmap = Bitmap.new(70, 24)
  186.     @hpmeter.visible = @battler_visible
  187.     @hpmeter.z = 200
  188.     @hpmeter.x = @battler.screen_x - 32
  189.     @hpmeter.y = @battler.screen_y - 96
  190.     @hpmeter.bitmap.fill_rect(0, 16, 64, 8, Color.new(0, 0, 0, 255))
  191.     @hpmeter2 = Sprite.new
  192.     @hpmeter2.bitmap = Bitmap.new(96, 32)
  193.     @hpmeter2.visible = @battler_visible
  194.     @hpmeter2.z = 201
  195.     @hpmeter2.x = @hpmeter.x
  196.     @hpmeter2.y = @hpmeter.y   
  197.     @hpmeter_value = 0
  198.     refresh_hpmeter
  199.   end
  200.   def refresh_hpmeter
  201.     @hpmeter.bitmap.clear
  202.     @hpmeter2.bitmap.clear
  203.     @hpmeter.visible = @battler_visible
  204.     unless $敌人血条显示
  205.       @hpmeter.visible = false
  206.     end
  207.     if @battler.hidden
  208.       @hpmeter.visible = false
  209.     end
  210.     if @battler.hp <= 0
  211.       @hpmeter.visible = false
  212.     end
  213.     @hpmeter.x = @battler.screen_x - 32
  214.     @hpmeter.y = @battler.screen_y - 64
  215.     @hpmeter2.visible = @hpmeter.visible
  216.     @hpmeter2.x = @hpmeter.x
  217.     @hpmeter2.y = @hpmeter.y - 8
  218.     if @hpmeter_value != @battler.hp
  219.       @hpmeter.bitmap.fill_rect(0, 10, 70, 12, Color.new(0, 0, 0, 255))
  220.       @hpmeter.bitmap.fill_rect(1, 11, 68, 10, Color.new(255, 255, 255, 255))
  221.       @hpmeter.bitmap.fill_rect(2, 12, 66, 8, Color.new(0, 0, 0, 255))
  222.       @hpmeter.bitmap.fill_rect(3, 13, (64 * (1.0 * @battler.hp / @battler.maxhp)).to_i, 6, Color.new(255, 0, 0, 255))
  223.       @hpmeter2.bitmap.draw_number(32, 0, @battler.hp)
  224.     end
  225.   end
  226.   def dispose_hpmeter
  227.     @hpmeter.dispose
  228.     @hpmeter2.dispose
  229.   end
  230. end

  231. #==============================================================================
  232. # ■ Window_BattleStatus
  233. #------------------------------------------------------------------------------
  234. #  显示战斗画面同伴状态的窗口。
  235. #==============================================================================

  236. class Window_BattleStatus < Window_Selectable
  237.   #--------------------------------------------------------------------------
  238.   # ● 初始化对像
  239.   #--------------------------------------------------------------------------
  240.   def initialize
  241.     if $CP可见
  242.       super(0, 0, 416, 128)
  243.     else
  244.       super(0, 0, 416, 152)
  245.     end
  246.     refresh
  247.     self.active = false
  248.   end
  249. end

  250. #==============================================================================
  251. # ■ Game_Enemy
  252. #------------------------------------------------------------------------------
  253. #  处理敌人的类。本类在 Game_Troop 类 ($game_troop) 的 内部使用。
  254. #==============================================================================

  255. class Game_Enemy < Game_Battler
  256.   #--------------------------------------------------------------------------
  257.   # ● 生成战斗行动
  258.   #--------------------------------------------------------------------------
  259.   def make_action
  260.     @action.clear
  261.     return unless movable?
  262.     available_actions = []
  263.     rating_max = 0
  264.     for action in enemy.actions
  265.       next unless conditions_met?(action)
  266.       if action.kind == 1
  267.         next unless skill_can_use?($data_skills[action.skill_id])
  268.       end
  269.       available_actions.push(action)
  270.       rating_max = [rating_max, action.rating].max
  271.     end
  272.     ratings_total = 0
  273.     rating_zero = rating_max - 3
  274.     for action in available_actions
  275.       next if action.rating <= rating_zero
  276.       ratings_total += action.rating - rating_zero
  277.     end
  278.     return if ratings_total == 0
  279.     value = rand(ratings_total)
  280.     for action in available_actions
  281.       next if action.rating <= rating_zero
  282.       if value < action.rating - rating_zero
  283.         @action.kind = action.kind
  284.         @action.basic = action.basic
  285.         @action.skill_id = action.skill_id
  286.         @action.decide_random_target
  287.         jjj = []
  288.         for iii in self.states
  289.           jjj.push(iii.id)
  290.         end
  291.         if jjj.include?(26)
  292. # 26 号状态降低敌人的逃跑率 ====================================================
  293.           if rand(100) < 30
  294.             if @action.kind == 0
  295.               if @action.basic == 2
  296.                 @action.basic = 0
  297.               end
  298.             end
  299.           end
  300. # ==============================================================================
  301.         end
  302.         return
  303.       else
  304.         value -= action.rating - rating_zero
  305.       end
  306.     end
  307.   end
  308.       
  309. end

  310. #==============================================================================
  311. # ■ Game_Unit
  312. #------------------------------------------------------------------------------
  313. #  处理单位的类。这个类作为 Game_Party 类与 Game_Troop 类的超级类来使用。
  314. #==============================================================================

  315. class Game_Unit
  316.   #--------------------------------------------------------------------------
  317.   # ● 计算平均敏捷
  318.   #--------------------------------------------------------------------------
  319.   def average_agi
  320.     result = 0
  321.     n = 0
  322.     for member in members
  323.       if member.hidden or member.dead?
  324.         next
  325.       end
  326.       result += member.agi
  327.       n += 1
  328.     end
  329.     result /= n if n > 0
  330.     result = 1 if result == 0
  331.     return result
  332.   end
  333. end

  334. #==============================================================================
  335. # ■ Bitmap
  336. #------------------------------------------------------------------------------
  337. #  自制数字字库。
  338. #==============================================================================

  339. class Bitmap
  340.   def draw_number(x, y, nu, pict = Bitmap.new("Graphics/System/Number+.png"))
  341.     w=pict.width / 10
  342.     h=pict.height
  343.     ce = Rect.new(0,0,w,h)
  344.     nu=nu.to_s
  345.     ar = nu.split(//)
  346.     for i in 0...ar.size
  347.       ar[i] = ar[i].to_i
  348.     end
  349.     for sz in ar
  350.       ce.x = sz * w
  351.       self.blt(x,y,pict,ce)
  352.       x+=w * 4 / 5
  353.     end
  354.   end
  355. end
复制代码
这是某某整合的用行走图做战斗图的那个整合横版战斗脚本。具体是那个版本,我倒是给忘了。
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
354
在线时间
1036 小时
注册时间
2011-5-19
帖子
2098
4
发表于 2011-9-26 19:39:46 | 只看该作者
天涯孤客 发表于 2011-9-26 19:35
用公共事件,会与这条发生冲突。这是某某整合的用行走图做战斗图的那个整合横版战斗脚本。具体是那个版本, ...

不会吧!用公共事件居然会引起冲突~~抱歉,这已经超出我的能力范围了。我只会用一些简单的事件~~=A=。不用着急,等会一些触手会来呦~~

点评

我……我才不是触手呢~~!  发表于 2011-9-26 20:58
等待触手+255 表示没懂这个贴……  发表于 2011-9-26 19:54
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
125 小时
注册时间
2006-7-19
帖子
336
5
 楼主| 发表于 2011-9-26 19:51:05 | 只看该作者
嗯,多谢你。

点评

MSQ
不用谢~~=W=  发表于 2011-9-26 20:49
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
678 小时
注册时间
2010-8-11
帖子
1533
6
发表于 2011-9-26 19:55:37 | 只看该作者
请lz说具体点,要召唤什么
要不然触手们(大雾)怎么知道

点评

MSQ
你不就是吗~~=W=  发表于 2011-9-26 20:49
小艾工作室开张= =
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
125 小时
注册时间
2006-7-19
帖子
336
7
 楼主| 发表于 2011-9-26 21:01:00 | 只看该作者
RPGmaster 发表于 2011-9-26 19:55
请lz说具体点,要召唤什么
要不然触手们(大雾)怎么知道

就是使用道具,比如“召唤之符”一类的,消耗品或者用某种召唤技能,召唤怪物出来,在战斗结束后自动删除,自动删除的脚本,我已经获得了,而召唤的方法,可以直接使用公共事件。 用技能或者物品挂钩公共事件,XXX加入队伍,即可。

不过,现在的问题是,我使用的这个横版脚本,用公共事件挂钩的话,就会出现错误,出现错误的篇幅,就是3楼发的那个。

点评

难道就不能用敌人队伍里面的事件吗0 0  发表于 2011-9-26 21:03
回复

使用道具 举报

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

8
发表于 2011-9-27 10:27:52 手机端发表。 | 只看该作者
天涯孤客 发表于 2011-9-26 21:01
就是使用道具,比如“召唤之符”一类的,消耗品或者用某种召唤技能,召唤怪物出来,在战斗结束后自动删除 ...

不懂脚本,有没有人帮忙给改一下。想实现,创建一个物品或者技能,然后利用公共事件 实现召唤。dsu_plus_rewardpost_czw

请把错误提示贴出来。
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4432
在线时间
1912 小时
注册时间
2010-12-21
帖子
2365
9
发表于 2011-9-27 11:24:03 | 只看该作者
http://rpg.blue/forum.php?mod=vi ... =%E5%8F%AC%E5%94%A4
这里倒是有个简单的系统

如果是比较简单的纯事件的话
执行一个公共事件,
内容是
角色加入
条件分歧
如果该角色已存在则无效
end

如果想要离开战斗后消失,可以再开启一个开关
另外一个并行公共事件由这个开关开启
内容是判断召唤人物是否在队,若在队,就让这个人物离队
end
然后最后关闭这个开关
绿坝娘素材库企划

素材库获取方法:暂时中止,需求者私聊。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
125 小时
注册时间
2006-7-19
帖子
336
10
 楼主| 发表于 2011-9-27 13:25:51 | 只看该作者
本帖最后由 天涯孤客 于 2011-9-27 13:43 编辑




就是这个了。 代码就是3楼发出来的那段代码。


怕你们看不到图,还是打出来吧:脚本'Sideview6'的第85行发生了NoMethoError undefined method src_rect for nil:NiClass

点评

嘛…… 一般来说把工程放出来比较好~ 因为不清楚是不是和别的什么脚本冲突了  发表于 2011-9-27 13:58
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-9 01:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表