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

Project1

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

关于按键的问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
58 小时
注册时间
2007-8-10
帖子
284
跳转到指定楼层
1
发表于 2009-1-8 18:22:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
1.可不可以实现任何时候按下alc键时调动1号公共事件ctrl键调动2号公共事件
主要是屏蔽CTRL+ESC
          CTRL+ALT+DEL
          ALT+TAB
          ALT+F4
所以我希望当按下CTEL或ALC健时调用公共事件记录游戏内容
2.空手攻击力脚本和会心一击发生冲突怎摸解决
(效果:防止游戏中强退在赌场耍钱刷BUG)

此贴于 2009-1-15 12:12:50 被版主darkten提醒,请楼主看到后对本贴做出回应。
此贴于 2009-1-15 12:15:25 被版主darkten提醒,请楼主看到后对本贴做出回应。
此贴于 2009-1-17 21:42:30 被版主darkten提醒,请楼主看到后对本贴做出回应。
此贴于 2009-1-19 13:09:47 被版主darkten提醒,请楼主看到后对本贴做出回应。
版务信息:版主帮忙结贴~

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-10-12
帖子
1276
8
发表于 2009-1-14 11:27:47 | 只看该作者
不是有屏蔽按键的脚本吗?
http://rpg.blue/web/htm/news1174.htm
系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
58 小时
注册时间
2007-8-10
帖子
284
7
 楼主| 发表于 2009-1-14 10:58:59 | 只看该作者
还是没有办法阻止游戏中强退
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
58 小时
注册时间
2007-8-10
帖子
284
6
 楼主| 发表于 2009-1-12 20:14:53 | 只看该作者
顶起来 谢谢
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
58 小时
注册时间
2007-8-10
帖子
284
5
 楼主| 发表于 2009-1-12 07:53:50 | 只看该作者
顶起来
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
58 小时
注册时间
2007-8-10
帖子
284
4
 楼主| 发表于 2009-1-9 23:52:18 | 只看该作者
按键秘籍脚本如何利用他屏蔽ctrl 和alt 健 别的健都试过了
都没问题只有这两个健不管用
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #
  4. # 作者:幻の飞鱼
  5. # 按键秘籍v1.1
  6. # 配合了夏娜的全键盘使用
  7. # 1.1修复了1.0遇到首字母相同,有一个秘籍不能使用的BUG,但设置秘籍的地方必须保证
  8. # 首单元为nil
  9. #
  10. # 使用方法
  11. # 1.设置方法,所需要的秘籍,按照全键盘布局,输入193行处的$mj处,注意首单元为nil
  12. #   默认设置了MONEY和ITEM两个秘籍,分别调用1号、2号公共事件
  13. # 2.如果需要更多,就设置$mj[2]……
  14. # 3.如果输对$mj[n]号秘籍,就会自动调用n+1号公共事件(谁要数组是从0开始- -|)
  15. # 4.拓展:在下面标注了“成功处理”的地方修改就可以
  16. #   如果不希望随时可用,写脚本再加一个开关控制一下就可以了。
  17. #==============================================================================

  18. #==============================================================================
  19. #全键盘
  20. #==============================================================================
  21. module Kboard
  22.   #==========================================================================
  23.   # 以下是全键盘按键列表
  24.   #--------------------------------------------------------------------------
  25.   $Rmouse_BUTTON_L = 0x01        # left mouse button
  26.   $Rmouse_BUTTON_R = 0x02        # right mouse button
  27.   $Rmouse_BUTTON_M = 0x04        # middle mouse button
  28.   $Rmouse_BUTTON_4 = 0x05        # 4th mouse button
  29.   $Rmouse_BUTTON_5 = 0x06        # 5th mouse button
  30.   #--------------------------------------------------------------------------
  31.   $R_Key_BACK      = 0x08        # BACKSPACE key
  32.   $R_Key_TAB       = 0x09        # TAB key
  33.   $R_Key_RETURN    = 0x0D        # ENTER key
  34.   $R_Key_SHIFT     = 0x10        # SHIFT key
  35.   $R_Key_CTLR      = 0x11        # CTLR key
  36.   $R_Key_ALT       = 0x12        # ALT key
  37.   $R_Key_PAUSE     = 0x13        # PAUSE key
  38.   $R_Key_CAPITAL   = 0x14        # CAPS LOCK key
  39.   $R_Key_ESCAPE    = 0x1B        # ESC key
  40.   $R_Key_SPACE     = 0x20        # SPACEBAR
  41.   $R_Key_PRIOR     = 0x21        # PAGE UP key
  42.   $R_Key_NEXT      = 0x22        # PAGE DOWN key
  43.   $R_Key_END       = 0x23        # END key
  44.   $R_Key_HOME      = 0x24        # HOME key
  45.   $R_Key_LEFT      = 0x25        # LEFT ARROW key
  46.   $R_Key_UP        = 0x26        # UP ARROW key
  47.   $R_Key_RIGHT     = 0x27        # RIGHT ARROW key
  48.   $R_Key_DOWN      = 0x28        # DOWN ARROW key
  49.   $R_Key_SELECT    = 0x29        # SELECT key
  50.   $R_Key_PRINT     = 0x2A        # PRINT key
  51.   $R_Key_SNAPSHOT  = 0x2C        # PRINT SCREEN key
  52.   $R_Key_INSERT    = 0x2D        # INS key
  53.   $R_Key_DELETE    = 0x2E        # DEL key
  54.   #--------------------------------------------------------------------------
  55.   $R_Key_0         = 0x30        # 0 key
  56.   $R_Key_1         = 0x31        # 1 key
  57.   $R_Key_2         = 0x32        # 2 key
  58.   $R_Key_3         = 0x33        # 3 key
  59.   $R_Key_4         = 0x34        # 4 key
  60.   $R_Key_5         = 0x35        # 5 key
  61.   $R_Key_6         = 0x36        # 6 key
  62.   $R_Key_7         = 0x37        # 7 key
  63.   $R_Key_8         = 0x38        # 8 key
  64.   $R_Key_9         = 0x39        # 9 key
  65.   #--------------------------------------------------------------------------
  66.   $R_Key_A         = 0x41        # A key
  67.   $R_Key_B         = 0x42        # B key
  68.   $R_Key_C         = 0x43        # C key
  69.   $R_Key_D         = 0x44        # D key
  70.   $R_Key_E         = 0x45        # E key
  71.   $R_Key_F         = 0x46        # F key
  72.   $R_Key_G         = 0x47        # G key
  73.   $R_Key_H         = 0x48        # H key
  74.   $R_Key_I         = 0x49        # I key
  75.   $R_Key_J         = 0x4A        # J key
  76.   $R_Key_K         = 0x4B        # K key
  77.   $R_Key_L         = 0x4C        # L key
  78.   $R_Key_M         = 0x4D        # M key
  79.   $R_Key_N         = 0x4E        # N key
  80.   $R_Key_O         = 0x4F        # O key
  81.   $R_Key_P         = 0x50        # P key
  82.   $R_Key_Q         = 0x51        # Q key
  83.   $R_Key_R         = 0x52        # R key
  84.   $R_Key_S         = 0x53        # S key
  85.   $R_Key_T         = 0x54        # T key
  86.   $R_Key_U         = 0x55        # U key
  87.   $R_Key_V         = 0x56        # V key
  88.   $R_Key_W         = 0x57        # W key
  89.   $R_Key_X         = 0x58        # X key
  90.   $R_Key_Y         = 0x59        # Y key
  91.   $R_Key_Z         = 0x5A        # Z key
  92.   #--------------------------------------------------------------------------
  93.   $R_Key_LWIN      = 0x5B        # Left Windows key (Microsoft Natural keyboard)
  94.   $R_Key_RWIN      = 0x5C        # Right Windows key (Natural keyboard)
  95.   $R_Key_APPS      = 0x5D        # Applications key (Natural keyboard)
  96.   #--------------------------------------------------------------------------
  97.   $R_Key_NUMPAD0   = 0x60        # Numeric keypad 0 key
  98.   $R_Key_NUMPAD1   = 0x61        # Numeric keypad 1 key
  99.   $R_Key_NUMPAD2   = 0x62        # Numeric keypad 2 key
  100.   $R_Key_NUMPAD3   = 0x63        # Numeric keypad 3 key
  101.   $R_Key_NUMPAD4   = 0x64        # Numeric keypad 4 key
  102.   $R_Key_NUMPAD5   = 0x65        # Numeric keypad 5 key
  103.   $R_Key_NUMPAD6   = 0x66        # Numeric keypad 6 key
  104.   $R_Key_NUMPAD7   = 0x67        # Numeric keypad 7 key
  105.   $R_Key_NUMPAD8   = 0x68        # Numeric keypad 8 key
  106.   $R_Key_NUMPAD9  = 0x69        # Numeric keypad 9 key
  107.   $R_Key_MULTIPLY  = 0x6A        # Multiply key (*)
  108.   $R_Key_ADD       = 0x6B        # Add key (+)
  109.   $R_Key_SEPARATOR = 0x6C        # Separator key
  110.   $R_Key_SUBTRACT  = 0x6D        # Subtract key (-)
  111.   $R_Key_DECIMAL   = 0x6E        # Decimal key
  112.   $R_Key_DIVIDE    = 0x6F        # Divide key (/)
  113.   #--------------------------------------------------------------------------
  114.   $R_Key_F1        = 0x70        # F1 key
  115.   $R_Key_F2        = 0x71        # F2 key
  116.   $R_Key_F3        = 0x72        # F3 key
  117.   $R_Key_F4        = 0x73        # F4 key
  118.   $R_Key_F5        = 0x74        # F5 key
  119.   $R_Key_F6        = 0x75        # F6 key
  120.   $R_Key_F7        = 0x76        # F7 key
  121.   $R_Key_F8        = 0x77        # F8 key
  122.   $R_Key_F9        = 0x78        # F9 key
  123.   $R_Key_F10       = 0x79        # F10 key
  124.   $R_Key_F11       = 0x7A        # F11 key
  125.   $R_Key_F12       = 0x7B        # F12 key
  126.   #--------------------------------------------------------------------------
  127.   $R_Key_NUMLOCK   = 0x90        # NUM LOCK key
  128.   $R_Key_SCROLL    = 0x91        # SCROLL LOCK key
  129.   #--------------------------------------------------------------------------
  130.   $R_Key_LSHIFT    = 0xA0        # Left SHIFT key
  131.   $R_Key_RSHIFT    = 0xA1        # Right SHIFT key
  132.   $R_Key_LCONTROL  = 0xA2        # Left CONTROL key
  133.   $R_Key_RCONTROL  = 0xA3        # Right CONTROL key
  134.   $R_Key_L_ALT    = 0xA4        # Left ALT key
  135.   $R_Key_R_ALT    = 0xA5        # Right ALT key
  136.   #--------------------------------------------------------------------------
  137.   $R_Key_SEP      = 0xBC        # , key
  138.   $R_Key_DASH      = 0xBD        # - key
  139.   $R_Key_DOTT      = 0xBE        # . Key
  140.   #--------------------------------------------------------------------------
  141.   GetKeyState = Win32API.new("user32","GetAsyncKeyState",['I'],'I')
  142.   GetKeyboardState = Win32API.new("user32","GetKeyState",['I'],'I')
  143.   GetSetKeyState = Win32API.new("user32","SetKeyboardState",['I'],'I')
  144.   #--------------------------------------------------------------------------
  145. module_function

  146. @R_Key_Hash = {}
  147. @R_Key_Repeat = {}

  148. GetKeyState = Win32API.new("user32","GetAsyncKeyState",['I'],'I')

  149. def press?(rkey)
  150.    return GetKeyState.call(rkey) != 0
  151. end

  152. def repeat?(rkey)
  153.    result = GetKeyState.call(rkey)
  154.    if result != 0
  155.      if @R_Key_Repeat[rkey].nil?
  156.        @R_Key_Repeat[rkey] = 0
  157.        return true
  158.      end
  159.      @R_Key_Repeat[rkey] += 1
  160.    else
  161.      @R_Key_Repeat[rkey] = nil
  162.      @R_Key_Hash[rkey] = 0
  163.    end
  164.    if !@R_Key_Repeat[rkey].nil? and @R_Key_Repeat[rkey] > 4 # 4乃准确数字
  165.      @R_Key_Repeat[rkey] = 0
  166.      return true
  167.    else
  168.      return false
  169.    end
  170. end

  171. def trigger?(rkey)
  172.    result = GetKeyState.call(rkey)
  173.    if @R_Key_Hash[rkey] == 1 and result != 0
  174.      return false
  175.    end
  176.    if result != 0
  177.      @R_Key_Hash[rkey] = 1
  178.      return true
  179.    else
  180.      @R_Key_Hash[rkey] = 0
  181.      return false
  182.    end
  183. end
  184. end

  185. #==============================================================================
  186. #以下是按键秘籍
  187. #==============================================================================

  188. $mj=[] #在下面设置秘籍
  189. $mj[0] = [nil,$R_Key_ALT,$R_Key_F4]
  190. $mj[1] = [nil,$R_Key_I,$R_Key_T,$R_Key_E,$R_Key_M]

  191. class Scene_Map
  192.   alias old update
  193.   def update
  194.     n = 0
  195.     for i in 1..190
  196.       if Kboard.trigger?(i)
  197.         n = i
  198.       end
  199.     end
  200.    
  201.     if n > 0
  202.       if $open
  203.         $open = false
  204.         for @k in @z
  205.           $open = true if n == $mj[@k][@j[@k]]
  206.         end
  207.         for @k in @z
  208.           if n == $mj[@k][@j[@k]]
  209.             @j[@k]+=1
  210.             if @j[@k]==$mj[@k].size
  211.               #-----成功处理,@k为成功的秘籍编号--------
  212.               $game_temp.common_event_id = @k+1 #按对后的功能
  213.               #------------------------------------------
  214.               @j[@k] = 0
  215.             end
  216.           else
  217.             @j[@k] = 0
  218.           end
  219.         end
  220.       end
  221.     end
  222.    
  223.     if $open != true
  224.       @z = []
  225.       @j = []
  226.       for i in 0..$mj.size-1
  227.         if n == $mj[i][1]
  228.           @z.push(i)
  229.           @j[i] = 2
  230.           $open = true
  231.         end
  232.       end
  233.     end
  234.     old
  235.   end
  236. end
  237. #==============================================================================
  238. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  239. #==============================================================================
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
58 小时
注册时间
2007-8-10
帖子
284
3
 楼主| 发表于 2009-1-9 22:49:36 | 只看该作者
脚本
  1. #============================================================================
  2. #
  3. # ●●作为XP的整核心战斗公式重新整理,很多东西不再是默认的使用前请看懂说明
  4. #   否则会莫名奇妙
  5. #   该脚本与装备扩充,不兼容不过稍作协调即可,另外属性扩从也需要协调
  6. #   
  7. #  ---------------------------------------------------------------------------
  8. #  新的装备属性设定

  9. #    ●武器的会心几率 = 武器的灵巧
  10. #    ●武器命中修正 = 武器的力量

  11. #    ●实际攻击 = 力量 + 装备攻击
  12. #  
  13. #  那么所有的防具的力量都改成攻击力了

  14. #    考虑到有些人希望升级有防御力
  15. #    为了方便设定,把灵巧改为防御(魔法防御的话,不同人的意见很不同,把魔力基础跟魔防基础)

  16. #    ●实际防御 = 基础灵巧 + 装备防御力
  17. #    ●实际魔防 = 基础魔力 + 装备魔防 (基础就是本身的,不加装备的属性)

  18. #  如果还需要防具如首饰也有会心几率的话
  19. #    ●防具的会心几率 = 防具的灵巧

  20. #  关于怪物的相关属性,由于怪物没有装备,所以就设为默认
  21. #    ●怪物的:命中 = 速度 + 力量,会心率 = 灵巧,躲闪 = 速度 + 回避修正(力量是干什么的?)

  22. #  最后战斗公式
  23. #     ●攻击力 = 攻击 + 力量

  24. #     ●伤害 = 攻击力 - 防御力

  25. #     ●会心几率 = 会心几率(怪物,主角不一样啊)
  26. #     ●命中率% = 武器命中 + 速度 - 敌方速度 -敌方回避修正
  27. #-------------------------------------------------------------------------------
  28. #  新的技能属性设定
  29. #    技能灵巧为技能会心率
  30. #      关于技能命中你可以做如下设定;
  31. #        当技能命中设定为0时,该技能没有自身命中,其命中与主角普通攻击时命中相同
  32. #  最终技能公式
  33. #     ●伤害  = 技能威力 + (主角能力)* 相关度 - 敌人守备 * 相关度
  34. #     ●会心率 = 技能灵巧
  35. #----------------暂时这样吧,大概跟火纹相似--------------------------------------------------------


  36. class Game_Actor < Game_Battler
  37. #--------是否为主角----------------------------------------------------  
  38.   def actor?
  39.     true
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● 获取基本力量
  43.   #--------------------------------------------------------------------------
  44.   def base_str
  45.     n = $data_actors[@actor_id].parameters[2, @level]
  46.     #weapon = $data_weapons[@weapon_id]
  47.     #armor1 = $data_armors[@armor1_id]
  48.     #armor2 = $data_armors[@armor2_id]
  49.     #armor3 = $data_armors[@armor3_id]
  50.     #armor4 = $data_armors[@armor4_id]
  51.     #n += weapon != nil ? weapon.str_plus : 0
  52.     #n += armor1 != nil ? armor1.str_plus : 0
  53.     #n += armor2 != nil ? armor2.str_plus : 0
  54.     #n += armor3 != nil ? armor3.str_plus : 0
  55.     #n += armor4 != nil ? armor4.str_plus : 0
  56.     return [[n, 1].max, 999].min
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 获取基本灵巧 — 这个是会心率啦!
  60.   #--------------------------------------------------------------------------
  61.   def base_dex
  62.     #n = $data_actors[@actor_id].parameters[3, @level]
  63.     weapon = $data_weapons[@weapon_id]
  64.     armor1 = $data_armors[@armor1_id]
  65.     armor2 = $data_armors[@armor2_id]
  66.     armor3 = $data_armors[@armor3_id]
  67.     armor4 = $data_armors[@armor4_id]
  68.     armor4 = $data_armors[@armor5_id] if @armor5_id != nil
  69.     armor4 = $data_armors[@armor6_id] if @armor6_id != nil
  70.     n = weapon != nil ? weapon.dex_plus : 0
  71.     n += armor1 != nil ? armor1.dex_plus : 0
  72.     n += armor2 != nil ? armor2.dex_plus : 0
  73.     n += armor3 != nil ? armor3.dex_plus : 0
  74.     n += armor4 != nil ? armor4.dex_plus : 0
  75.     n += armor5 != nil ? armor5.dex_plus : 0
  76.     n += armor6 != nil ? armor6.dex_plus : 0
  77.     return [[n, 1].max, 999].min
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ● 获取基本攻击力
  81.   #--------------------------------------------------------------------------
  82.   def base_atk
  83.     n = $data_actors[@actor_id].parameters[2, @level]
  84.     weapon = $data_weapons[@weapon_id]
  85.     armor1 = $data_armors[@armor1_id]
  86.     armor2 = $data_armors[@armor2_id]
  87.     armor3 = $data_armors[@armor3_id]
  88.     armor4 = $data_armors[@armor4_id]
  89.     armor5 = $data_armors[@armor5_id] if @armor5_id != nil
  90.     armor6 = $data_armors[@armor6_id] if @armor6_id != nil
  91.     n += weapon != nil ? weapon.atk : 0
  92.     n += armor1 != nil ? armor1.str_plus : 0
  93.     n += armor2 != nil ? armor2.str_plus : 0
  94.     n += armor3 != nil ? armor3.str_plus : 0
  95.     n += armor4 != nil ? armor4.str_plus : 0
  96.     n += armor5 != nil ? armor5.str_plus : 0
  97.     n += armor6 != nil ? armor6.str_plus : 0
  98.     return [[n, 1].max, 999].min
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ● 获取基本物理防御
  102.   #--------------------------------------------------------------------------
  103.   def base_pdef
  104.     n = $data_actors[@actor_id].parameters[3, @level]
  105.     weapon = $data_weapons[@weapon_id]
  106.     armor1 = $data_armors[@armor1_id]
  107.     armor2 = $data_armors[@armor2_id]
  108.     armor3 = $data_armors[@armor3_id]
  109.     armor4 = $data_armors[@armor4_id]
  110.     armor5 = $data_armors[@armor5_id] if @armor5_id != nil
  111.     armor6 = $data_armors[@armor6_id] if @armor5_id != nil
  112.     pdef1 = weapon != nil ? weapon.pdef : 0
  113.     pdef2 = armor1 != nil ? armor1.pdef : 0
  114.     pdef3 = armor2 != nil ? armor2.pdef : 0
  115.     pdef4 = armor3 != nil ? armor3.pdef : 0
  116.     pdef5 = armor4 != nil ? armor4.pdef : 0
  117.     pdef6 = armor5 != nil ? armor5.pdef : 0
  118.     pdef7 = armor6 != nil ? armor6.pdef : 0
  119.     return pdef1 + pdef2 + pdef3 + pdef4 + pdef5 + pdef6 + pdef7 + n
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● 获取基本魔法防御
  123.   #--------------------------------------------------------------------------
  124.   def base_mdef
  125.     n = $data_actors[@actor_id].parameters[5, @level]
  126.     weapon = $data_weapons[@weapon_id]
  127.     armor1 = $data_armors[@armor1_id]
  128.     armor2 = $data_armors[@armor2_id]
  129.     armor3 = $data_armors[@armor3_id]
  130.     armor4 = $data_armors[@armor4_id]
  131.     armor5 = $data_armors[@armor5_id] if @armor5_id != nil
  132.     armor6 = $data_armors[@armor6_id] if @armor5_id != nil
  133.     mdef1 = weapon != nil ? weapon.mdef : 0
  134.     mdef2 = armor1 != nil ? armor1.mdef : 0
  135.     mdef3 = armor2 != nil ? armor2.mdef : 0
  136.     mdef4 = armor3 != nil ? armor3.mdef : 0
  137.     mdef5 = armor4 != nil ? armor4.mdef : 0
  138.     mdef6 = armor5 != nil ? armor5.mdef : 0
  139.     mdef7 = armor6 != nil ? armor6.mdef : 0
  140.     return mdef1 + mdef2 + mdef3 + mdef4 + mdef5 + mdef6 + mdef7 + n
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ● 获取修正命中率
  144.   #--------------------------------------------------------------------------
  145.   def base_hit
  146.     weapon = $data_weapons[@weapon_id]
  147.    return weapon != nil ? weapon.str_plus : 0
  148.   end
  149. end
  150. #==============================================================================
  151. # ■ Game_Enemy
  152. #------------------------------------------------------------------------------
  153. #  处理敌人的类。本类在 Game_Troop 类 ($game_troop) 的
  154. # 内部使用。
  155. #==============================================================================

  156. class Game_Enemy < Game_Battler
  157.   def actor?
  158.     false
  159.   end
  160.   def base_hit
  161.     return $data_enemies[@enemy_id].str
  162.   end
  163. end
  164. #==============================================================================
  165. # ■ Game_Battler (分割定义 1)
  166. #------------------------------------------------------------------------------
  167. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  168. # 超级类来使用。
  169. #==============================================================================

  170. class Game_Battler

  171.   #--------------------------------------------------------------------------
  172.   # ● 获取命中修正
  173.   #--------------------------------------------------------------------------
  174.     def eva
  175.       return base_hit
  176.     end
  177.   #--------------------------------------------------------------------------
  178.   # ● 应用通常攻击效果
  179.   #     attacker : 攻击者 (battler)
  180.   #--------------------------------------------------------------------------
  181.   def attack_effect(attacker)
  182.     # 清除会心一击标志
  183.     self.critical = false
  184.     # 第一命中判定
  185.     hit_result = (rand(100) < attacker.hit + attacker.agi - self.agi - self.eva)
  186.     # 命中的情况下
  187.     if hit_result == true
  188.       # 计算基本伤害
  189.       self.damage = [attacker.atk - self.pdef , 0].max
  190.       # 属性修正
  191.       self.damage *= elements_correct(attacker.element_set)
  192.       self.damage /= 100
  193.       # 伤害符号正确的情况下
  194.       if self.damage > 0
  195.         # 会心一击修正
  196.         if rand(100) < attacker.dex
  197.           self.damage *= 3
  198.           self.critical = true
  199.         end
  200.         # 防御修正
  201.         if self.guarding?
  202.           self.damage /= 2
  203.         end
  204.       end
  205.       # 分散
  206.       if self.damage.abs > 0
  207.         amp = [self.damage.abs * 15 / 100, 1].max
  208.         self.damage += rand(amp+1) + rand(amp+1) - amp
  209.       end
  210.       # 第二命中判定
  211.     end
  212.     # 命中的情况下
  213.     if hit_result == true
  214.       # 状态冲击解除
  215.       remove_states_shock
  216.       # HP 的伤害计算
  217.       self.hp -= self.damage
  218.       # 状态变化
  219.       @state_changed = false
  220.       states_plus(attacker.plus_state_set)
  221.       states_minus(attacker.minus_state_set)
  222.     # Miss 的情况下
  223.     else
  224.       # 伤害设置为 "Miss"
  225.       self.damage = "Miss"
  226.       # 清除会心一击标志
  227.       self.critical = false
  228.     end
  229.     # 过程结束
  230.     return true
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # ● 应用特技效果
  234.   #     user  : 特技的使用者 (battler)
  235.   #     skill : 特技
  236.   #--------------------------------------------------------------------------
  237.   def skill_effect(user, skill)
  238.     # 清除会心一击标志
  239.     self.critical = false
  240.     # 特技的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
  241.     # 或者特技的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
  242.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  243.        ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  244.       # 过程结束
  245.       return false
  246.     end
  247.     # 清除有效标志
  248.     effective = false
  249.     # 公共事件 ID 是有效的情况下,设置为有效标志
  250.     effective |= skill.common_event_id > 0
  251.     # 第一命中判定
  252.     if skill.hit !=0
  253.       hit = skill.hit
  254.     else
  255.       hit = user.hit + user.agi - self.agi - self.eva
  256.     end  
  257.     if skill.atk_f > 0
  258.       hit *= user.hit / 100
  259.     end
  260.     hit_result = (rand(100) < hit)
  261.     # 不确定的特技的情况下设置为有效标志
  262.     effective |= hit < 100
  263.     # 命中的情况下
  264.     if hit_result == true
  265.       # 计算威力
  266.       power = skill.power #+ user.atk * skill.atk_f / 100
  267.       if power > 0
  268.         power -= self.pdef * skill.pdef_f / 100
  269.         power -= self.mdef * skill.mdef_f / 100
  270.         power += (user.int * skill.int_f / 100)
  271.         power += (user.atk * skill.atk_f / 100)
  272.       else
  273.         power -= (user.int * skill.int_f / 100)
  274.         power -= (user.atk * skill.atk_f / 100)
  275.       end
  276.       # 计算倍率
  277. #     rate = 20
  278. #     rate += (user.str * skill.str_f / 100)
  279. #     rate += (user.dex * skill.dex_f / 100)
  280. #     rate += (user.agi * skill.agi_f / 100)
  281.       
  282.       # 计算基本伤害
  283.       self.damage = power
  284.       # 属性修正
  285.       self.damage *= elements_correct(skill.element_set)
  286.       self.damage /= 100
  287.       # 伤害符号正确的情况下
  288.       if self.damage > 0
  289.         #h会心修正
  290.         if rand(100) < skill.dex_f
  291.           self.damage *= 3
  292.            self.critical = true
  293.         end  
  294.         # 防御修正
  295.         if self.guarding?
  296.           self.damage /= 2
  297.         end
  298.       end
  299.       # 分散
  300.       if skill.variance > 0 and self.damage.abs > 0
  301.         amp = [self.damage.abs * skill.variance / 100, 1].max
  302.         self.damage += rand(amp+1) + rand(amp+1) - amp
  303.       end
  304.       
  305.       # 不确定的特技的情况下设置为有效标志
  306.       effective |= hit < 100
  307.     end
  308.     # 命中的情况下
  309.     if hit_result == true
  310.       # 威力 0 以外的物理攻击的情况下
  311.       if skill.power != 0 and skill.atk_f > 0
  312.         # 状态冲击解除
  313.         remove_states_shock
  314.         # 设置有效标志
  315.         effective = true
  316.       end
  317.       # HP 的伤害减法运算
  318.       last_hp = self.hp
  319.       self.hp -= self.damage
  320.       effective |= self.hp != last_hp
  321.       # 状态变化
  322.       @state_changed = false
  323.       effective |= states_plus(skill.plus_state_set)
  324.       effective |= states_minus(skill.minus_state_set)
  325.       # 威力为 0 的场合
  326.       if skill.power == 0
  327.         # 伤害设置为空的字串
  328.         self.damage = ""
  329.         # 状态没有变化的情况下
  330.         unless @state_changed
  331.           # 伤害设置为 "Miss"
  332.           self.damage = "Miss"
  333.         end
  334.       end
  335.     # Miss 的情况下
  336.     else
  337.       # 伤害设置为 "Miss"
  338.       self.damage = "Miss"
  339.     end
  340.     # 不在战斗中的情况下
  341.     unless $game_temp.in_battle
  342.       # 伤害设置为 nil
  343.       self.damage = nil
  344.     end
  345.     # 过程结束
  346.     return effective
  347.   end
  348. end
复制代码

给武器添加会心hp mp脚本
  1. #==============================================================================
  2. # ■ Game_Actor
  3. #------------------------------------------------------------------------------
  4. #  处理角色的类。本类在 Game_Actors 类 ($game_actors)
  5. # 的内部使用、Game_Party 类请参考 ($game_party) 。
  6. #==============================================================================

  7. class Game_Actor < Game_Battler
  8.   #--------------------------------------------------------------------------
  9.   # ● 获取基本 MaxHP
  10.   #--------------------------------------------------------------------------
  11.   def base_maxhp
  12.     n = $data_actors[@actor_id].parameters[0, @level]
  13.     weapon = $data_weapons[@weapon_id]
  14.     armor1 = $data_armors[@armor1_id]
  15.     armor2 = $data_armors[@armor2_id]
  16.     armor3 = $data_armors[@armor3_id]
  17.     armor4 = $data_armors[@armor4_id]
  18.     n += weapon != nil ? weapon.hp_plus : 0
  19.     n += armor1 != nil ? armor1.hp_plus : 0
  20.     n += armor2 != nil ? armor2.hp_plus : 0
  21.     n += armor3 != nil ? armor3.hp_plus : 0
  22.     n += armor4 != nil ? armor4.hp_plus : 0
  23.     return n
  24.   end
  25.   #--------------------------------------------------------------------------
  26.   # ● 获取基本 MaxSP
  27.   #--------------------------------------------------------------------------
  28.   def base_maxsp
  29.     n = $data_actors[@actor_id].parameters[1, @level]
  30.     weapon = $data_weapons[@weapon_id]
  31.     armor1 = $data_armors[@armor1_id]
  32.     armor2 = $data_armors[@armor2_id]
  33.     armor3 = $data_armors[@armor3_id]
  34.     armor4 = $data_armors[@armor4_id]
  35.     n += weapon != nil ? weapon.sp_plus : 0
  36.     n += armor1 != nil ? armor1.sp_plus : 0
  37.     n += armor2 != nil ? armor2.sp_plus : 0
  38.     n += armor3 != nil ? armor3.sp_plus : 0
  39.     n += armor4 != nil ? armor4.sp_plus : 0
  40.     return n
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 获取會心一擊率
  44.   #--------------------------------------------------------------------------
  45.   def c_hit
  46.     c_hit_set = []
  47.     n = 0
  48.     for i in 1...$data_system.elements.size
  49.       if $data_system.elements[i].split(/,/)[0] == "會心"
  50.         c_hit_set.push(i)
  51.       end
  52.     end
  53.     weapon = $data_weapons[@weapon_id]
  54.     if c_hit_set.size > 0
  55.       for i in c_hit_set
  56.       if weapon.element_set.include?(i)
  57.           n += $data_system.elements[i].split(/,/)[1].to_i
  58.         end
  59.       end
  60.     end
  61.     return n
  62.   end
  63. end
复制代码

给武器添加会心脚本54行暴错 weapon = $data_weapons[@weapon_id]
  1. class Game_Battler
  2.   #--------------------------------------------------------------------------
  3.   # ● 通常攻撃の効果適用
  4.   #     attacker : 攻撃者 (バトラー)
  5.   #--------------------------------------------------------------------------
  6.   def attack_effect(attacker)
  7.     # クリティカルフラグをクリア
  8.     self.critical[attacker] = false
  9.     state_p[attacker] = []
  10.     state_m[attacker] = []
  11.     # 第一命中判定
  12.     hit_result = (rand(100) < attacker.hit)
  13.     # 命中の場合
  14.     if hit_result == true
  15.       # 基本ダメージを計算
  16.       atk = [attacker.atk - self.pdef / 2, 0].max
  17.       self.damage[attacker] = atk * (20 + attacker.str) / 20
  18.       # 属性修正
  19.       self.damage[attacker] *= elements_correct(attacker.element_set)
  20.       self.damage[attacker] /= 100
  21.       # ダメージの符号が正の場合
  22.       if self.damage[attacker] > 0
  23. #c_hit_plus.......................
  24.         hit_rate = 4 * attacker.dex / self.agi
  25.         if attacker.is_a?(Game_Actor)
  26.           if rand(100 + hit_rate) < (hit_rate + attacker.c_hit)
  27.             self.damage[attacker] *= 2
  28.             self.critical[attacker] = true
  29.           end
  30.         else
  31.           if rand(100) < hit_rate
  32.             self.damage[attacker] *= 2
  33.             self.critical[attacker] = true
  34.           end
  35.         end
  36. =begin
  37.         # クリティカル修正
  38.         if rand(100) < 4 * attacker.dex / self.agi
  39.           self.damage[attacker] *= 2
  40.           self.critical[attacker] = true
  41.         end
  42. =end
  43.         # 防御修正
  44.         if self.guarding? or self.state?(17)
  45.           self.damage[attacker] /= 2
  46.         end
  47.       end
  48.       # 分散
  49.       if self.damage[attacker].abs > 0
  50.         amp = [self.damage[attacker].abs * 15 / 100, 1].max
  51.         self.damage[attacker] += rand(amp+1) + rand(amp+1) - amp
  52.       end
  53.       # 第二命中判定
  54.       eva = 8 * self.agi / attacker.dex + self.eva
  55.       hit = self.damage[attacker] < 0 ? 100 : 100 - eva
  56.       hit = self.cant_evade? ? 100 : hit
  57.       hit_result = (rand(100) < hit)
  58.     end
  59.     # 命中の場合
  60.     if hit_result == true

  61.       # ステート衝撃解除
  62.       remove_states_shock
  63.       # HP からダメージを減算
  64.       # ステート変化
  65.       @state_changed = false
  66.       states_plus(attacker, attacker.plus_state_set)
  67.       states_minus(attacker, attacker.minus_state_set)
  68.     # ミスの場合
  69.     else
  70.       # ダメージに "Miss" を設定
  71.       self.damage[attacker] = "Miss"
  72.       # クリティカルフラグをクリア
  73.       self.critical[attacker] = false
  74.     end
  75.     # メソッド終了
  76.     return true
  77.   end
  78. end
复制代码


回复 支持 反对

使用道具 举报

Lv1.梦旅人

綾川司の姫様<

梦石
0
星屑
50
在线时间
796 小时
注册时间
2007-12-20
帖子
4520

贵宾第3届短篇游戏大赛R剧及RMTV组亚军

2
发表于 2009-1-9 21:20:43 | 只看该作者
1.搜索“全键盘”和“秘籍”。

2.提供你用的脚本,详细描述冲突。.

生命即是责任。自己即是世界。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-19 16:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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