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

Project1

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

[已经解决] 【备份】蚂蚁的帖子

 关闭 [复制链接]

Lv1.梦旅人

蚂蚁卡卡

梦石
0
星屑
116
在线时间
66 小时
注册时间
2007-12-16
帖子
3081
跳转到指定楼层
1
发表于 2009-4-24 21:29:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 redant 于 2009-8-10 23:09 编辑

【序】
算做个备份吧 以后回来也容易看


4.24 【关于雷子的《零之血嗜》引发的……】

TAG【桃花纷飞、图片旋转、事件脚本】

昨晚偶尔翻出雷子的标题作品 原来只是看看效果 昨儿算是正式开工程看了看
因为 有我想知道的效果 【桃花纷飞】
  1. for i in 15..30
  2. $game_screen.pictures[i].show(
  3. "title_fly1.png",1,300+rand(40),
  4. 500+rand(40),rand(50),rand(50),255,1)
  5. $game_screen.pictures[i].rotate(rand(30))
  6. end
  7. for i in 31..40
  8. $game_screen.pictures[i].show(
  9. "title_fly2.png",1,300+rand(40),
  10. 500+rand(40),rand(50),rand(50),255,1)
  11. $game_screen.pictures[i].rotate(rand(30))
  12. end
  13. 循环
  14. for i in 15..40
  15. $game_screen.pictures[i].fly
  16. $game_screen.pictures[i].rotate(rand(30))
  17. end
  18. 以上反复
复制代码

  1. 26。显示图片
  2. $game_screen.pictures[图片编号].show("图片名字", 原点, 画面x坐标, 画面y坐标, x轴放大率, y轴放大率, 不透明度, 显示方式)
  3. 这个稍微复杂些,分开来讲会比较好~~~
  4. 图片名字就是要显示的图片的名字。
  5. 原点就是显示图片的原点位置,0代表左上,1代表中心。
  6. 画面的x坐标和y坐标就是图片原点的画面的x坐标和y坐标。
  7. x轴放大率和y轴放大率就是以原点为中心的x方向和y方向放大率,100为正常大小。
  8. 不透明度就是图片的不透明度,为0到255。
  9. 显示方式其实就是图片的合成方式,0是正常,1是加法,2是减法。
  10. 比如$game_screen.pictures[1].show("BunnyGod", 1, 320, 240, 100, 100, 255, 0)
  11. 就是在画面中心显示一张正常大小,完全不透明,显示方式为正常,编号为1的叫做BunnyGod的图片。

  12. 27。移动图片
  13. $game_screen.pictures[图片编号].move(移动时间, 原点, 画面x坐标, 画面y坐标, x轴放大率, y轴放大率, 不透明度, 显示方式)
  14. 原理和显示图片一样,由于图片已经显示,所以原本的图片名字也变成了移动时间。
  15. 比如$game_screen.pictures[1].move(20, 0, 0, 0, 100, 100, 0, 0)
  16. 就是在20帧内移动编号为1的图片并让其渐渐消失(注意:图片的移动都是渐变式的,不仅是位置,图片的大小和透明度也会跟着一起渐渐变化,就是用来做淡出和淡入图片用的。)。

  17. 28。旋转图片
  18. $game_screen.pictures[图片编号].rotate(旋转速度)
  19. 这个旋转速度是由什么来决定的呢?到底代表着什么?其实这个代表的就是图片在每1帧内的旋转角度,而不是“速度”,由于旋转角度大了,自然速度看起来就快。这个值可以是负数,用来决定旋转的方向。正数是顺时针转,负数是逆时针转。
  20. 比如$game_screen.pictures[1].rotate(18)就是让一号图片以每帧18度的速度旋转。

  21. 29。图片消失
  22. $game_screen.pictures[图片编号].erase
  23. 比如$game_screen.pictures[1].erase就是让编号为1的图片消失。
复制代码
rand(所有数) 雷子设定除了不透明度和显示方式以外 全部随机

fly 是自己定义的 让我好找= =|
  1. #--------------------------------------------------------------------------
  2.   # ● 以下内容应用在飞翔粒子刷新
  3.   #--------------------------------------------------------------------------
  4.   def fly
  5.     if @number%3==1
  6.       @x -= 6
  7.       @y -= 6
  8.       @opacity -=3
  9.     elsif @number%3==2
  10.       @x -= 4
  11.       @y -= 4
  12.       @opacity -=2
  13.     else
  14.       @x -= 3
  15.       @y -= 3
  16.       @opacity -=1
  17.     end
  18.     if @opacity < 5 or @x < -100 or @y < -300 or @y > 500
  19.       @x = rand(900)+100
  20.       @y = rand(360)+150
  21.       @opacity = 200
  22.     end
  23.   end
复制代码
就能做出 花瓣纷飞 大小 旋转不一的情况
本贴由论坛斑竹redant结贴,如楼主认为问题未解决,请重新将此贴编辑为“有事请教”,并回帖叙述疑点即可~ ^-^
  1. #==============================================================================
  2. class Window_Picture_Command2 < Window_Selectable
  3.    attr_accessor :last_index
  4.    attr_accessor :active
  5.   attr_accessor :icon_name
  6.   #--------------------------------------------------------------------------
  7.   # ● 初始化对像
  8.   #     width    : 窗口的宽
  9.   #     commands : 命令字符串序列
  10.   #--------------------------------------------------------------------------
  11.   def initialize(commands,type=2)
  12.     # 由命令的个数计算出窗口的高
  13.     super(0, 0, 640, 480)
  14.     @item_max = commands.size
  15.     @commands = commands
  16.      @name_sprite = nil
  17.     @dash = []
  18.     @sprite = []
  19.     @icon_name = icon_name
  20.     @last_icon = @icon_name
  21.       @count = 0
  22.     @type = type
  23.     @move_index = self.index
  24.     self.opacity = 0
  25.     self.contents = Bitmap.new(width - 32, @item_max * 32)
  26.     refresh
  27.     self.index = 0
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 刷新
  31.   #--------------------------------------------------------------------------
  32.   def refresh
  33.     self.contents.clear
  34.   @name_sprite.dispose unless @name_sprite.nil?

  35.   
  36.     for sprite in @sprite
  37.       sprite.dispose unless sprite.nil?
  38.     end
  39.     @name_sprite = nil
  40.     draw_com_name #if Momo_IconCommand::COM_NAME_DROW
  41.     @sprite = []

  42.      
  43.     for i in 0...@item_max
  44.       
  45.       draw_picture_item(i, @type)
  46.     end
  47.    
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 释放
  51.   #--------------------------------------------------------------------------
  52.   def dispose
  53.     super
  54.     for index in @dash
  55.      if @sprite[index] != nil
  56.        @sprite[index].dispose
  57.        @sprite[index].bitmap.dispose
  58.      end
  59.     end
  60.   end  
  61.   #--------------------------------------------------------------------------
  62.   # ● 描绘图片项目
  63.   #     index : 项目编号
  64.   #     type  : 描绘类型
  65.   #     type = 1 只支持键盘
  66.   #     type = 2 双面支持
  67.   #--------------------------------------------------------------------------
  68.   def draw_picture_item(index, type)
  69.     @sprite[index] = Sprite.new
  70.         @sprite[index].z = 9998
  71.     if @commands[index][0] == nil
  72.       p "图片名设置有误"
  73.     end
  74.     if @commands[index][1] == nil
  75.       p "图片X坐标设置有误"
  76.     end
  77.     if @commands[index][2] == nil
  78.       p "图片Y坐标设置有误"
  79.     end
  80.     bitmap = RPG::Cache.picture(@commands[index][0])
  81.    
  82.    
  83.    
  84.     @sprite[index].bitmap = bitmap
  85.     @sprite[index].x = @commands[index][1]
  86.     @sprite[index].y = @commands[index][2]
  87.     @sprite[index].index = index
  88.     for i in [email protected]
  89.       @sprite[i].update
  90.     end
  91.    
  92.     # @sprite[index].update
  93.     if $xiaoshi == true
  94.       @sprite[index].opacity = 0
  95.     end
  96.    
  97.     if @sprite[index].index != self.index
  98.       @sprite[index].opacity = 155
  99.     else
  100.       @sprite[index].opacity = 255
  101.     end
  102.     @dash.push(index)
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 刷新图片项目
  106.   #--------------------------------------------------------------------------
  107.   def update_item
  108.     if Mouse.get_mouse_pos != nil
  109.     $mouse_x,$mouse_y = Mouse.get_mouse_pos
  110.     end
  111.     if @type == 2 and $stop == false
  112.     for index in @dash
  113.      if @sprite[index] != nil
  114.       top_x = @sprite[index].x
  115.       top_y = @sprite[index].y
  116.       bottom_x = top_x + @sprite[index].bitmap.width
  117.       bottom_y = top_y + @sprite[index].bitmap.height
  118.       if ($mouse_x > top_x) and ($mouse_y > top_y) and
  119.            ($mouse_x < bottom_x) and ($mouse_y < bottom_y)
  120.            self.index = @sprite[index].index
  121.            if @move_index != self.index

  122.              if $xiaoshi == true
  123.                else
  124.            Se.ok
  125.          end
  126.          
  127.            @move_index = self.index
  128.          end
  129.        end
  130.     if $xiaoshi == true
  131.       @sprite[index].opacity = 0
  132.       else
  133.       if @sprite[index].index != self.index
  134.          @sprite[index].opacity = 240
  135.       
  136.   
  137.       else
  138.         @sprite[index].opacity = 255
  139.       end
  140.     end
  141.    
  142.    
  143.     end
  144.   end
  145.     elsif @type == 1
  146.      for index in @dash
  147.         if @sprite[index].index != self.index
  148.          @sprite[index].opacity = 155
  149.        else
  150.         @sprite[index].opacity = 255
  151.        end
  152.      end  
  153.    end
  154.   
  155.   end
  156.   #--------------------------------------------------------------------------
  157.   # ● 图片项目无效化
  158.   #     index : 项目编号
  159.   #--------------------------------------------------------------------------
  160.   def disable_item(index)
  161.     @sprite[index].opacity = 155
  162.   end
  163.   
  164.   #--------------------------------------------------------------------------
  165.   # ● 刷新
  166.   #--------------------------------------------------------------------------
  167.   alias window_picture_command_update update
  168.   def update
  169.    
  170.      window_picture_command_update
  171.     update_item
  172.    icon_update
  173.     com_name_update
  174.    
  175.    
  176.     if @active
  177.      @count += 1
  178.      icon_flash
  179.      @count = 0 if @count == 20
  180.    else
  181.      @count = 0
  182.    end
  183.    
  184.     if self.active
  185.     # 判断当前光标位置
  186.     case @last_index
  187.      when 0 # 攻击
  188.       # 方向键下被按下的情况下
  189.       if Input.repeat?(Input::DOWN)
  190.           # 光标指向物品
  191.           $game_system.se_play($data_system.cursor_se)
  192.           @index = 3      
  193.       end
  194.       # 方向键上被按下的情况下
  195.       if Input.repeat?(Input::UP)
  196.         # 光标指向攻击
  197.           $game_system.se_play($data_system.cursor_se)
  198.           @index = 3      
  199.       end
  200.       # 方向键右被按下的情况下
  201.       if Input.repeat?(Input::RIGHT)
  202.           # 光标指向防御
  203.           $game_system.se_play($data_system.cursor_se)
  204.           @index = 2      
  205.       end
  206.       # 方向键左被按下的情况下
  207.       if Input.repeat?(Input::LEFT)
  208.         # 光标指向法术
  209.           $game_system.se_play($data_system.cursor_se)
  210.           @index = 1
  211.       end
  212.      when 1 # 法术
  213.       # 方向键下被按下的情况下
  214.       if Input.repeat?(Input::DOWN)
  215.           # 光标指向物品
  216.           $game_system.se_play($data_system.cursor_se)
  217.           @index = 3      
  218.       end
  219.       # 方向键上被按下的情况下
  220.       if Input.repeat?(Input::UP)
  221.         # 光标指向攻击
  222.           $game_system.se_play($data_system.cursor_se)
  223.           @index = 0      
  224.       end
  225.       # 方向键右被按下的情况下
  226.       if Input.repeat?(Input::RIGHT)
  227.           # 光标指向防御
  228.           $game_system.se_play($data_system.cursor_se)
  229.           @index = 2      
  230.       end
  231.       # 方向键左被按下的情况下
  232.       if Input.repeat?(Input::LEFT)
  233.         # 光标指向法术
  234.           $game_system.se_play($data_system.cursor_se)
  235.           @index = 2
  236.       end
  237.      when 2 # 防御
  238.       # 方向键下被按下的情况下
  239.       if Input.repeat?(Input::DOWN)
  240.           # 光标指向物品
  241.           $game_system.se_play($data_system.cursor_se)
  242.           @index = 3      
  243.       end
  244.       # 方向键上被按下的情况下
  245.       if Input.repeat?(Input::UP)
  246.         # 光标指向攻击
  247.           $game_system.se_play($data_system.cursor_se)
  248.           @index = 0      
  249.       end
  250.       # 方向键右被按下的情况下
  251.       if Input.repeat?(Input::RIGHT)
  252.           # 光标指向防御
  253.           $game_system.se_play($data_system.cursor_se)
  254.           @index = 1      
  255.       end
  256.       # 方向键左被按下的情况下
  257.       if Input.repeat?(Input::LEFT)
  258.         # 光标指向技能
  259.           $game_system.se_play($data_system.cursor_se)
  260.           @index = 1
  261.       end
  262.      when 3 # 物品
  263.       # 方向键下被按下的情况下
  264.       if Input.repeat?(Input::DOWN)
  265.           # 光标指向物品
  266.           $game_system.se_play($data_system.cursor_se)
  267.           @index = 0      
  268.       end
  269.       # 方向键上被按下的情况下
  270.       if Input.repeat?(Input::UP)
  271.         # 光标指向攻击
  272.           $game_system.se_play($data_system.cursor_se)
  273.           @index = 0      
  274.       end
  275.       # 方向键右被按下的情况下
  276.       if Input.repeat?(Input::RIGHT)
  277.           # 光标指向防御
  278.           $game_system.se_play($data_system.cursor_se)
  279.           @index = 2      
  280.       end
  281.       # 方向键左被按下的情况下
  282.       if Input.repeat?(Input::LEFT)
  283.         # 光标指向法术
  284.           $game_system.se_play($data_system.cursor_se)
  285.           @index = 1
  286.       end

  287.     end      
  288.       @last_index = self.index
  289.     end
  290.    
  291.   end
  292.   #--------------------------------------------------------------------------
  293.   # ● 更新光标举行
  294.   #--------------------------------------------------------------------------
  295.   def update_cursor_rect
  296.     if @index < 0
  297.       self.cursor_rect.empty
  298.       return
  299.     end
  300.     row = @index / @column_max
  301.     if row < self.top_row
  302.       self.top_row = row
  303.     end
  304.     if row > self.top_row + (self.page_row_max - 1)
  305.       self.top_row = row - (self.page_row_max - 1)
  306.     end
  307.     cursor_width = self.width / @column_max - 32
  308.     x = @index % @column_max * (cursor_width + 32)
  309.     y = @index / @column_max * 32 - self.oy
  310.     self.cursor_rect.set(x+5000, y, cursor_width, 32)
  311.   end
  312.   
  313.   #######################

  314.    def draw_com_name
  315.     @name_sprite = Sprite_Comm_Name.new(nil, get_com_name)
  316.   end
  317. ####################
  318.   def icon_update
  319.    for i in [email protected]
  320.       @sprite[i].update
  321.     end
  322.   end

  323.   
  324.    def icon_flash
  325.     if @count % 20 == 0 or @count == 2
  326.       @sprite[index].flash(Color.new(255, 255, 255, 128), 10)
  327.     end
  328.   end
  329.   ############
  330.   def text_reset
  331.     @count = 0
  332.     @x_plus = 0
  333.     self.bitmap.clear
  334.      src_rect = Rect.new(0, -5, 560, 128)
  335.       back_help = Bitmap.new("Graphics/system/menu/back/特技框.png")
  336.       self.bitmap.blt(0, -5, back_help, src_rect, 255)
  337.    
  338.     #定义蓝色(很PL 不是吗?) Momo_IconCommand::COM_NAME_COLOR
  339.       self.bitmap.font.size = 16
  340.       #文字的大小
  341.    
  342.    
  343.   case @name
  344.     when "攻击"
  345.       self.bitmap.font.color = Color.new(255, 10, 10, 255)
  346.     when "特技"
  347.       self.bitmap.font.color = Color.new(255, 255, 0, 255)     
  348.     when "物品"
  349.       self.bitmap.font.color = Color.new(5, 255, 0, 255)
  350.     when"防御"
  351.       self.bitmap.font.color = Color.new(5, 20, 255, 255)
  352.     end
  353.      self.bitmap.draw_text(25, 0, 260, 32, @name)
  354.    end
  355.    
  356.   
  357.   def com_name_update
  358.    # if move_index?
  359.       @name_sprite.name = get_com_name

  360.    
  361. if self.x<100#80
  362.     @name_sprite.x =  self.x + 275
  363.   elsif self.x < 200#150
  364.     @name_sprite.x = self.x + 279
  365.     else self.x < 300#220
  366.     @name_sprite.x = self.x + 282
  367.       end

  368.    if self.y<200#190
  369.     @name_sprite.y =  145
  370.   elsif self.y < 300#250
  371.     @name_sprite.y = 210
  372.     else self.y < 400#320
  373.     @name_sprite.y= 295
  374.       end
  375.    
  376.    
  377. # 文字出现的坐标 以固定在下面

  378.     #+ Momo_IconCommand::COM_NAME_Y_PLUS
  379.     @name_sprite.z = 9998 #self.z + 1
  380.     @name_sprite.active = self.active
  381.     @name_sprite.visible = self.visible
  382.     @name_sprite.update
  383. end
  384. def get_com_name
  385.     make_name_set if @name_set.nil?
  386.     name = @name_set[self.index]   
  387.     name = "" if name.nil?
  388.     return name
  389.   end
  390.   def make_name_set
  391.     @name_set = []
  392.     @name_set[0] = Momo_IconCommand::ATTACK_NAME
  393.     @name_set[1] = Momo_IconCommand::SKILL_NAME
  394.     @name_set[2] = Momo_IconCommand::GUARD_NAME
  395.     @name_set[3] = Momo_IconCommand::ITEM_NAME
  396.     #@name_set[4] = Momo_IconCommand::ESCAPE_NAME
  397.   end
  398.   def move_index?
  399.     return self.index != @last_index
  400.   end
  401.   def need_reset
  402.     @name_sprite.need_reset = true# if Momo_IconCommand::COM_NAME_DROW
  403.   end
  404. def need_reset?
  405.     return (@name != @last_name or @need_reset)
  406.   end
  407. end
  408. #==============================================================================
  409. # ■ Se
  410. #------------------------------------------------------------------------------
  411. # ■ 音效模块
  412. #==============================================================================
  413. module Se
  414.   def self.ok
  415.     $game_system.se_play($data_system.cursor_se)
  416.   end
  417.   def self.no
  418.     $game_system.se_play($data_system.cancel_se)
  419.   end
  420. end
  421. #==============================================================================
  422. # ■ Sprite
  423. #------------------------------------------------------------------------------
  424. # ■ index 选择光标
  425. #==============================================================================
  426. class Sprite
  427.   attr_accessor :index
  428.   
  429. end
复制代码
鼠标结合图标战斗的脚本 部分功能没实现 不过我要的功能还有 哇卡 足够了
  1. #==============================================================================
  2. # ■ 完整鼠标系统(八方向)
  3. #------------------------------------------------------------------------------
  4. #  使用时务必配合专用寻路算法
  5. #   By whbm
  6. #==============================================================================
  7. #下面做一下介绍与使用说明:
  8. #    在屏幕上单击鼠标的时候,会自动进行寻路,这里为了速度更快并且为了进行迷
  9. #宫时的难度寻路被限定在当时的屏幕内部。(否则玩家直接点到终点,呵呵....知道
  10. #后果了吧)
  11. #    在角色移动过程中再次单击鼠标(即双击)并在单击第二次鼠标的时候不松手,
  12. #角色将会跟随鼠标方向移动。(这个应该好理解,不用多说吧)当角色贴着欲被启动
  13. #的事件的时候,单击NPC即可启动事件。若未贴着,将会产生自动寻路到NPC附近的某
  14. #点,那时在单击NPC即可。
  15. #    当鼠标停在某些事件上时候会发现有不同的图标,设置方法为:宝箱事件请在事
  16. #件的执行内容中添加 注释,注释内容为 Item 注意大小写。NPC事件请在事件的执行
  17. #内容中添加 注释注释内容为 NPC 注意大小写。若不箱改变某事件的图标,则不要写
  18. #那两个注释。
  19. #    当把脚本转到您工程的时候千万别忘了那个寻路用的脚本。
  20. #==============================================================================
  21. class Game_Event
  22.   attr_accessor :flag
  23. end

  24. #==============================================================================
  25. # ■ Game_Map
  26. #------------------------------------------------------------------------------
  27. #  处理地图的类。包含卷动以及可以通行的判断功能。
  28. # 本类的实例请参考 $game_map 。
  29. #==============================================================================
  30. class Game_Map
  31.   def show_rate(event)
  32.     return 1
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 检查鼠标处是否有自定义的事件并返回类型
  36.   #--------------------------------------------------------------------------
  37.   def check_event_custom(mouse_x, mouse_y)
  38.     for event in $game_map.events.values #循环所有事件检查
  39.       rate =  show_rate(event)
  40.       event_width = (RPG::Cache.character(event.character_name,event.character_hue).width / $c3_每一步的帧数) * rate
  41.       event_height = (RPG::Cache.character(event.character_name,event.character_hue).height / 8) * rate
  42.       if mouse_x > event.screen_x - event_width / 2 and mouse_x < event.screen_x + event_width / 2 and mouse_y + 32 > event.screen_y + 32 - event_height and mouse_y + 32 < event.screen_y + 32
  43.         for i in 0...event.list.size
  44.           if event.list[i].parameters[0] == "Item" #类型判断
  45.             event.flag = 1
  46.           elsif event.list[i].parameters[0] == "Npc" #类型判断
  47.             event.flag = 2
  48.           elsif event.list[i].parameters[0] == "Place"
  49.             event.flag = 3
  50.           else
  51.             event.flag = 0 if $game_player.get_mouse_sta != 3 #无标志
  52.           end
  53.           return event.flag #返回事件类型标志
  54.         end
  55.       end
  56.     end
  57.     return 0 if $game_player.get_mouse_sta != 3 #如果不是在跟随鼠标状态,则返回无标志
  58.     return $mouse_icon_id #使鼠标图不变化
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 检查鼠标处是否有事件可以开启
  62.   #--------------------------------------------------------------------------
  63.   def check_event_custom_start(mouse_x, mouse_y)
  64.     for event in $game_map.events.values #循环所有事件检查
  65.       #事件角色图片宽度、高度
  66.       rate =  show_rate(event)
  67.       event_width = (RPG::Cache.character(event.character_name,event.character_hue).width / $c3_每一步的帧数) * rate
  68.       event_height = (RPG::Cache.character(event.character_name,event.character_hue).height / 8) * rate
  69.       #判断是否鼠标在事件上
  70.       if mouse_x > event.screen_x - event_width / 2 and mouse_x < event.screen_x + event_width / 2 and mouse_y + 32 > event.screen_y + 32 - event_height and mouse_y + 32 < event.screen_y + 32
  71.         way_x = $game_player.x - event.x
  72.         way_y = $game_player.y - event.y
  73.         if [1,0,-1].include?($game_player.x-event.x) and [1,0,-1].include?($game_player.y-event.y)
  74.           for i in 0...event.list.size
  75.             if ["Item","Npc","Place"].include?(event.list[i].parameters[0]) #当事件属于自定义事件
  76.               #判断主角朝向
  77.               if way_x == -1
  78.                 p_direction = 3 if way_y == -1
  79.                 p_direction = 6 if way_y == 0
  80.                 p_direction = 9 if way_y == 1
  81.               elsif way_x == 0
  82.                 p_direction = 2 if way_y == -1
  83.                 p_direction = 8 if way_y == 1
  84.               else
  85.                 p_direction = 1 if way_y == -1
  86.                 p_direction = 4 if way_y == 0
  87.                 p_direction = 7 if way_y == 1
  88.               end
  89.               event.start #开启事件
  90.               return 1, p_direction #返回即将开启事件以及角色朝向
  91.             end
  92.           end
  93.         end
  94.       end
  95.     end
  96.     return 0, 5 #返回不会开启事件以及角色朝向不变
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● 检查鼠标处是否存在自定义事件 for 寻路
  100.   #--------------------------------------------------------------------------
  101.   def check_event_custom_exist(mouse_x, mouse_y)
  102.     for event in $game_map.events.values #循环所有事件检查
  103.       #事件角色图片宽度、高度
  104.       rate =  show_rate(event)
  105.       event_width = (RPG::Cache.character(event.character_name,event.character_hue).width / $c3_每一步的帧数) * rate
  106.       event_height = (RPG::Cache.character(event.character_name,event.character_hue).height / 8) * rate
  107.       if mouse_x > event.screen_x - event_width / 2 and mouse_x < event.screen_x + event_width / 2 and mouse_y + 32 > event.screen_y + 32 - event_height and mouse_y + 32 < event.screen_y + 32
  108.         for i in 0...event.list.size
  109.           return 1, event if ["Item", "Npc","Place"].include?(event.list[i].parameters[0]) #返回存在自定义事件以及事件体
  110.         end
  111.       end
  112.     end
  113.     return 0, event #返回不存在自定义事件,以及事件体
  114.   end
  115. end
  116. #=================以下两个用来调整战斗时的手感问题,可以自己试试。
  117. $敌人选框扩大 = 20
  118. $角色选框扩大 = 30


  119. #==============================================================================
  120. # ● API调用
  121. #==============================================================================
  122. $ShowCursor = Win32API.new("user32", "ShowCursor", 'i', 'l')
  123. $GetCursorPos = Win32API.new("user32", "GetCursorPos", 'p', 'i')
  124. $ScreenToClient = Win32API.new("user32", "ScreenToClient", 'ip', 'i')
  125. $GetActiveWindow = Win32API.new("user32", "GetActiveWindow", nil, 'l')
  126. $Window_HWND = $GetActiveWindow.call
  127. $GetKeyState = Win32API.new("user32", "GetKeyState", 'i', 'i')
  128. module Mouse  
  129. LEFT = 0x01
  130. RIGHT = 0x02
  131.   #---------------------------
  132.   # ● 等待函数
  133.   #----------------------------
  134.    def self.wait(duration)
  135.     for i in 0...duration
  136.       #update所有 尤其是queding 以及图像
  137.      


  138.     #  Input.update
  139.    #   update
  140.    
  141.      # hua_d
  142.      # queding
  143.       break if i >= duration
  144.     end
  145.   end
  146.   #############################
  147. def self.init(sprite = nil)
  148.    $ShowCursor.call(0)
  149.    
  150.    @show_cursor = false
  151.    #############################
  152.    @mouse_sprite = Sprite.new
  153.    @mouse_sprite.z = 99999
  154.   # @mouse_sprite.bitmap = Bitmap.new('Graphics/Icons/mouse')
  155.   # @mouse_sprite.src_rect.set(0,0,32,32)
  156.    @j = 0
  157.    @k = 0
  158.    ##########################
  159.    @left_press = false
  160.    @right_press = false
  161.    @left_trigger = false
  162.    @right_trigger = false
  163.    @left_repeat = false
  164.    @right_repeat = false
  165.    @click_lock = false
  166.    
  167.    update
  168. end

  169. def self.exit
  170.    @mouse_sprite.bitmap.dispose
  171.    @mouse_sprite.dispose
  172.    @show_cursor = true
  173.    $ShowCursor.call(1)
  174. end
  175. def self.mouse_debug
  176.    return @mouse_debug.bitmap
  177. end
  178. def self.update
  179.    ############################
  180.    
  181. # wait(8)

  182.     @mouse_sprite.src_rect.set(0+@j*32,0+@k*32,32,32)
  183.       
  184.     if @j >=3
  185.          @j = 0
  186.          @k += 1
  187.          if @k >= 7
  188.            @k = 0
  189.          end
  190.          
  191.        end
  192.        #@j+=1 下次变换图片
  193.       @j+=1
  194.    #########################
  195.    left_down = $GetKeyState.call(0x01)
  196.    right_down = $GetKeyState.call(0x02)
  197.    if Graphics.frame_count * 3 / Graphics.frame_rate != @total_sec
  198.      @total_sec = Graphics.frame_count * 3 / Graphics.frame_rate
  199.      @a = !@a
  200.    end
  201.    if $scene.is_a?(Scene_Map) == false
  202.      $mouse_icon_id = 0
  203.    end
  204.    if $mouse_icon_id != $mouse_icon_id_last
  205.      case $mouse_icon_id
  206.      when 1
  207.          @mouse_sprite.bitmap = Bitmap.new('Graphics/Icons/GetItem')
  208.      when 2
  209.          @mouse_sprite.bitmap = Bitmap.new('Graphics/Icons/TalkTo')
  210.     when 3
  211.      @mouse_sprite.bitmap = Bitmap.new('Graphics/Icons/Mouse')
  212.      when 11
  213.        @mouse_sprite.bitmap = Bitmap.new('Graphics/Icons/Mouse')
  214.      when 12
  215.        @mouse_sprite.bitmap = Bitmap.new('Graphics/Icons/Mouse')
  216.      when 13
  217.        @mouse_sprite.bitmap = Bitmap.new('Graphics/Icons/Mouse')
  218.      when 14
  219.        @mouse_sprite.bitmap = Bitmap.new('Graphics/Icons/Mouse')
  220.      when 16
  221.        @mouse_sprite.bitmap = Bitmap.new('Graphics/Icons/Mouse')
  222.      when 17
  223.        @mouse_sprite.bitmap = Bitmap.new('Graphics/Icons/Mouse')
  224.      when 18
  225.        @mouse_sprite.bitmap = Bitmap.new('Graphics/Icons/Mouse')
  226.      when 19
  227.        @mouse_sprite.bitmap = Bitmap.new('Graphics/Icons/Mouse')
  228.      when 0
  229.        @mouse_sprite.bitmap = Bitmap.new('Graphics/Icons/mouse')
  230.      end
  231.       @mouse_sprite.src_rect.set(0,0,32,32)
  232.      $mouse_icon_id_last = $mouse_icon_id
  233.    end
  234.    @click_lock = false
  235.    mouse_x, mouse_y = self.get_mouse_pos
  236.    if @mouse_sprite != nil
  237.      @mouse_sprite.x = mouse_x
  238.      @mouse_sprite.y = mouse_y
  239.    end
  240.    if left_down[7] == 1
  241.      @left_repeat = (not @left_repeat)
  242.      @left_trigger = (not @left_press)
  243.      @left_press = true
  244.    else
  245.      @left_press = false
  246.      @left_trigger = false
  247.      @left_repeat = false
  248.    end
  249.    if right_down[7] == 1
  250.      @right_repeat = (not @right_repeat)
  251.      @right_trigger = (not @right_press)
  252.      @right_press = true
  253.    else
  254.      @right_press = false
  255.      @right_trigger = false
  256.      @right_repeat = false
  257.    end
  258. end
  259. def self.get_mouse_pos
  260.    point_var = [0, 0].pack('ll')
  261.    if $GetCursorPos.call(point_var) != 0
  262.      if $ScreenToClient.call($Window_HWND, point_var) != 0
  263.        x, y = point_var.unpack('ll')
  264.        if (x < 0) or (x > 10000) then x = 0 end
  265.        if (y < 0) or (y > 10000) then y = 0 end
  266.        if x > 640 then x = 640 end
  267.        if y > 480 then y = 480 end
  268.        return x, y
  269.      else
  270.        return 0, 0
  271.      end
  272.    else
  273.      return 0, 0
  274.    end
  275. end
  276. ##############################K'#######################################
  277. def self.kk_trigger?(mouse_code)
  278.    if mouse_code == LEFT
  279.        return @left_trigger
  280.    elsif mouse_code == RIGHT
  281.      return @right_trigger
  282.    else
  283.      return false
  284.    end
  285. end

  286. def self.in?(rect)
  287.   mouse_x, mouse_y = Mouse.get_mouse_pos
  288.   return (mouse_x > rect.x and mouse_x < rect.x + rect.width and mouse_y > rect.y and mouse_y < rect.y + rect.height)
  289. end
  290. ##############################K'#######################################
  291. def self.press?(mouse_code)
  292.    if mouse_code == LEFT
  293.      if @click_lock
  294.        return false
  295.      else
  296.        return @left_press
  297.      end
  298.    elsif mouse_code == RIGHT
  299.      return @right_press
  300.    else
  301.      return false
  302.    end
  303. end
  304. def self.trigger?(mouse_code)
  305.    if mouse_code == LEFT
  306.      if @click_lock
  307.        return false
  308.      else
  309.        return @left_trigger
  310.      end
  311.    elsif mouse_code == RIGHT
  312.      return @right_trigger
  313.    else
  314.      return false
  315.    end
  316. end
  317. def self.repeat?(mouse_code)
  318.    if mouse_code == LEFT
  319.      if @click_lock
  320.        return false
  321.      else
  322.        return @left_repeat
  323.      end
  324.    elsif mouse_code == RIGHT
  325.      return @right_repeat
  326.    else
  327.      return false
  328.    end
  329. end
  330. def self.click_lock?
  331.    return @click_lock
  332. end
  333. def self.click_lock
  334.    @click_lock = true
  335. end
  336. def self.click_unlock
  337.    @click_lock = false
  338. end
  339. end
  340. module Input
  341. if @self_update == nil
  342.    @self_update = method('update')
  343.    @self_press = method('press?')
  344.    @self_trigger = method('trigger?')
  345.    @self_repeat = method('repeat?')
  346. end
  347. def self.update
  348.    @self_update.call
  349.    Mouse.update
  350. end
  351. def self.press?(key_code)
  352.    if @self_press.call(key_code)
  353.      return true
  354.    end
  355.    if key_code == C
  356.      return Mouse.press?(Mouse::LEFT)
  357.    elsif key_code == B
  358.      return Mouse.press?(Mouse::RIGHT)
  359.    else
  360.      return @self_press.call(key_code)
  361.    end
  362. end
  363. def self.trigger?(key_code)
  364.    if @self_trigger.call(key_code)
  365.      return true
  366.    end
  367.    if key_code == C
  368.      return Mouse.trigger?(Mouse::LEFT)
  369.    elsif key_code == B
  370.      return Mouse.trigger?(Mouse::RIGHT)
  371.    else
  372.      return @self_trigger.call(key_code)
  373.    end
  374. end
  375. def self.repeat?(key_code)
  376.    if @self_repeat.call(key_code)
  377.      return true
  378.    end
  379.    if key_code == C
  380.      return Mouse.repeat?(Mouse::LEFT)
  381.    elsif key_code == B
  382.      return Mouse.repeat?(Mouse::RIGHT)
  383.    else
  384.      return @self_repeat.call(key_code)
  385.    end
  386. end
  387. end
  388. ##################################K'################################
  389. class Window_Selectable
  390.   
  391. if @self_alias == nil
  392.    alias self_update update
  393.    @self_alias = true
  394. end
  395. def update
  396.    self_update
  397.    
  398.    if self.active and @item_max > 0
  399.      index_var = @index
  400.      tp_index = @index
  401.      mouse_x, mouse_y = Mouse.get_mouse_pos
  402.      mouse_not_in_rect = true
  403.      for i in (top_row * @column_max)...[@item_max ,top_row * @column_max + page_item_max].min
  404.        @index = i
  405.        update_cursor_rect
  406.        top_x = self.cursor_rect.x + self.x + 16
  407.        top_y = self.cursor_rect.y + self.y + 16
  408.        bottom_x = top_x + self.cursor_rect.width
  409.        bottom_y = top_y + self.cursor_rect.height
  410.        if (mouse_x > top_x) and (mouse_y > top_y) and
  411.           (mouse_x < bottom_x) and (mouse_y < bottom_y)
  412.          mouse_not_in_rect = false
  413.          if tp_index != @index
  414.            tp_index = @index
  415.            $game_system.se_play($data_system.cursor_se)
  416.          end
  417.          break
  418.        end
  419.      end
  420.      if mouse_not_in_rect
  421.        @index = index_var
  422.        update_cursor_rect
  423.        Mouse.click_lock
  424.        if  Mouse.kk_trigger?(Mouse::LEFT)
  425.           x1 = self.x + self.contents.width / 2 + 8
  426.           y1 = self.y + self.height - 16 #
  427.           y2 = self.y - 4
  428.           rect_down = Rect.new(x1,y1,24,24)
  429.           rect_up = Rect.new(x1,y2,24,24)
  430.          #  p Mouse.get_mouse_pos , rect_down
  431.           if Mouse.in?(rect_down)
  432.             if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)
  433.               # 光标向后移动一页
  434.               $game_system.se_play($data_system.cursor_se)
  435.               @index = [@index + self.page_item_max, @item_max - 1].min
  436.               self.top_row += self.page_row_max
  437.             end
  438.           end
  439.           if Mouse.in?(rect_up)
  440.             if self.top_row > 0
  441.               # 光标向前移动一页
  442.               $game_system.se_play($data_system.cursor_se)
  443.               @index = [@index - self.page_item_max, 0].max
  444.               self.top_row -= self.page_row_max
  445.             end
  446.           end
  447.         end      
  448.      else
  449.        Mouse.click_unlock               
  450.      end
  451.    end
  452. end
  453. end


  454. ##################################K'################################
  455. class Window_NameInput
  456. if @self_alias == nil
  457.    alias self_update update
  458.    @self_alias = true
  459. end
  460. def update
  461.    self_update
  462.    if self.active
  463.      index_var = @index
  464.      mouse_x, mouse_y = Mouse.get_mouse_pos
  465.      mouse_not_in_rect = true
  466.      for i in (0...CHARACTER_TABLE.size).to_a.push(180)
  467.        @index = i
  468.        update_cursor_rect
  469.        top_x = self.cursor_rect.x + self.x + 16
  470.        top_y = self.cursor_rect.y + self.y + 16
  471.        bottom_x = top_x + self.cursor_rect.width
  472.        bottom_y = top_y + self.cursor_rect.height
  473.        if (mouse_x > top_x) and (mouse_y > top_y) and
  474.           (mouse_x < bottom_x) and (mouse_y < bottom_y)
  475.          mouse_not_in_rect = false
  476.          break
  477.        end
  478.      end
  479.      if mouse_not_in_rect
  480.        @index = index_var
  481.        update_cursor_rect
  482.        Mouse.click_lock
  483.      else
  484.        Mouse.click_unlock
  485.      end
  486.    end
  487. end
  488. end
  489. class Window_InputNumber
  490. if @self_alias == nil
  491.    alias self_update update
  492.    @self_alias = true
  493. end
  494. def update
  495.    self_update
  496.    mouse_x, mouse_y = Mouse.get_mouse_pos
  497.    if self.active and @digits_max > 0
  498.      index_var = @index
  499.      mouse_not_in_rect = true
  500.      for i in 0...@digits_max
  501.        @index = i
  502.        update_cursor_rect
  503.        top_x = self.cursor_rect.x + self.x + 16
  504.        bottom_x = top_x + self.cursor_rect.width
  505.        if (mouse_x > top_x) and (mouse_x < bottom_x)
  506.          mouse_not_in_rect = false
  507.          break
  508.        end
  509.      end
  510.      if mouse_not_in_rect
  511.        @index = index_var
  512.        update_cursor_rect
  513.        Mouse.click_lock
  514.      else
  515.        Mouse.click_unlock
  516.      end
  517.    end
  518.    if @last_mouse_y == nil
  519.      @last_mouse_y = mouse_y
  520.    end
  521.    check_pos = (@last_mouse_y - mouse_y).abs
  522.    if check_pos > 10
  523.      $game_system.se_play($data_system.cursor_se)
  524.      place = 10 ** (@digits_max - 1 - @index)
  525.      n = @number / place % 10
  526.      @number -= n * place
  527.      n = (n + 1) % 10 if mouse_y < @last_mouse_y
  528.      n = (n + 9) % 10 if mouse_y > @last_mouse_y
  529.      @number += n * place
  530.      refresh
  531.      @last_mouse_y = mouse_y
  532.    end
  533. end
  534. end
  535. class Scene_File
  536. if @self_alias == nil
  537.    alias self_update update
  538.    @self_alias = true
  539. end
  540. def update
  541.    mouse_x, mouse_y = Mouse.get_mouse_pos
  542.    Mouse.click_lock
  543.    idx = 0
  544.    for i in @savefile_windows
  545.      top_x = i.x + 16
  546.      top_y = i.y + 16
  547.      bottom_x = top_x + i.width
  548.      bottom_y = top_y + i.height
  549.      if (mouse_x > top_x) and (mouse_y > top_y) and
  550.         (mouse_x < bottom_x) and (mouse_y < bottom_y)
  551.        i.selected = true
  552.        if @file_index != idx
  553.          @file_index = idx
  554.          $game_system.se_play($data_system.cursor_se)
  555.        end            
  556.        Mouse.click_unlock
  557.      else
  558.        i.selected = false
  559.      end
  560.      idx += 1
  561.    end
  562.    self_update
  563. end
  564. end
  565. class Arrow_Enemy
  566. if @self_alias == nil
  567.    alias self_update update
  568.    @self_alias = true
  569. end
  570. def update
  571.    mouse_x, mouse_y = Mouse.get_mouse_pos
  572.    idx = 0
  573.    for i in $game_troop.enemies do
  574.      if i.exist?
  575.        top_x = i.screen_x - self.ox
  576.        top_y = i.screen_y - self.oy
  577.        bottom_x = top_x + self.src_rect.width
  578.        bottom_y = top_y + self.src_rect.height
  579.        if (mouse_x > top_x - $敌人选框扩大) and (mouse_y > top_y - $敌人选框扩大) and
  580.           (mouse_x < bottom_x + $敌人选框扩大) and (mouse_y < bottom_y + $敌人选框扩大)
  581.          if @index != idx
  582.            $game_system.se_play($data_system.cursor_se)
  583.            @index = idx
  584.          end
  585.        end
  586.      end
  587.      idx += 1
  588.    end
  589.    self_update
  590. end
  591. end
  592. class Arrow_Actor
  593. if @self_alias == nil
  594.    alias self_update update
  595.    @self_alias = true
  596. end
  597. def update
  598.    mouse_x, mouse_y = Mouse.get_mouse_pos
  599.    idx = 0
  600.    for i in $game_party.actors do
  601.     # if i.exist?
  602.        top_x = i.screen_x - self.ox
  603.        top_y = i.screen_y - self.oy
  604.        bottom_x = top_x + self.src_rect.width
  605.        bottom_y = top_y + self.src_rect.height
  606.        if (mouse_x > top_x - $角色选框扩大) and (mouse_y > top_y - $角色选框扩大) and
  607.           (mouse_x < bottom_x + $角色选框扩大) and (mouse_y < bottom_y + $角色选框扩大)
  608.          if @index != idx
  609.            $game_system.se_play($data_system.cursor_se)
  610.            @index = idx
  611.         # end
  612.        end
  613.      end
  614.      idx += 1
  615.    end
  616.    self_update
  617. end
  618. end
  619. #==============================================================================
  620. # ■ Game_Player
  621. #------------------------------------------------------------------------------
  622. #  处理主角的类。事件启动的判定、以及地图的滚动等功能。
  623. # 本类的实例请参考 $game_player。
  624. #   鼠标控制角色的主程序
  625. #==============================================================================
  626. class Game_Player
  627. if @self_alias == nil
  628.    alias self_update update
  629.    @self_alias = true
  630. end
  631. #--------------------------------------------------------------------------
  632. # ● 得到鼠标的状态
  633. #--------------------------------------------------------------------------
  634. def get_mouse_sta
  635.    return @mouse_sta
  636. end
  637. #--------------------------------------------------------------------------
  638. # ● 完整鼠标系统
  639. #--------------------------------------------------------------------------
  640. def update
  641.    mouse_x, mouse_y = Mouse.get_mouse_pos
  642.    @mtp_x = mouse_x
  643.    @mtp_y = mouse_y
  644.    unless $game_system.map_interpreter.running? and @mouse_sta == 2 #鼠标状态不为跟随状态
  645.      #得到鼠标图标方向
  646.      $mouse_icon_id = $game_map.check_event_custom(mouse_x,mouse_y)  if not [11, 12, 13, 14, 16, 17, 18, 19].include?($mouse_icon_id)
  647.    else
  648.      #令鼠标图标为正常
  649.      $mouse_icon_id = 0 if @mouse_sta != 2
  650.    end
  651.    
  652.    #单击鼠标时进行判断寻路或跟随
  653.    if Mouse.trigger?(Mouse::LEFT) #当点击鼠标时
  654.      unless $game_system.map_interpreter.running? or
  655.             @move_route_forcing or $game_temp.message_window_showing #各种无效情况的排除
  656.        #初始化
  657.        @mouse_sta = 1
  658.        p_direction = 5
  659.        #检查鼠标处能否开启事件
  660.        event_start,p_direction = $game_map.check_event_custom_start(mouse_x, mouse_y)
  661.        #若在移动中再次点击鼠标左键(即双击左键),则改鼠标状态为跟随状态
  662.        @mouse_sta = 2 if @paths_id != nil and @paths_id != @paths.size
  663.        if @mouse_sta != 2
  664.          #鼠标状态不为跟随状态则取数据并初始化路径
  665.          trg_x = (mouse_x + $game_map.display_x / 4) / 32
  666.          trg_y = (mouse_y + $game_map.display_y / 4) / 32
  667.          @paths = []
  668.          @paths_id = 0
  669.          if event_start == 0 #若不能开启事件
  670.            if trg_x != $game_player.x or trg_y != $game_player.y #若目标不为自身则开始寻路
  671.              find_path = Find_Path.new
  672.              @paths = find_path.find_player_short_path(trg_x, trg_y, @mtp_x, @mtp_y)
  673.            end
  674.          else #若能开启事件则改变角色朝向
  675.            @direction = p_direction
  676.          end
  677.        end
  678.      end
  679.    end

  680.    #开始移动
  681.    if @mouse_sta != nil and @mouse_sta == 1 #若鼠标状态为寻路状态
  682.      unless moving? or $game_system.map_interpreter.running? or
  683.             @move_route_forcing or $game_temp.message_window_showing #排除无效情况
  684.        if @paths_id != nil and @paths != nil and @paths_id <= @paths.size #若没有完成路径
  685.          case @paths[@paths_id] #判断路径
  686.          when 6
  687.            @last_move_x = true
  688.            move_right
  689.            @paths_id += 1
  690.            @direction = 6
  691.          when 4
  692.            @last_move_x = true
  693.            move_left
  694.            @paths_id += 1
  695.            @direction = 4
  696.          when 2
  697.            @last_move_x = false
  698.            move_down
  699.            @direction = 2
  700.            @paths_id += 1
  701.          when 8
  702.            @last_move_x = false
  703.            move_up
  704.            @direction = 8
  705.            @paths_id += 1
  706.          #斜四方向
  707.          when 1
  708.            @last_move_x = false
  709.            move_lower_left
  710.            @direction = 1
  711.            @paths_id += 1
  712.          when 3
  713.            @last_move_x = false
  714.            move_lower_right
  715.            @direction = 3
  716.            @paths_id += 1
  717.          when 7
  718.            @last_move_x = false
  719.            move_upper_left
  720.            @direction = 7
  721.            @paths_id += 1
  722.          when 9
  723.            @last_move_x = false
  724.            move_upper_right
  725.            @direction = 9
  726.            @paths_id += 1
  727.          end
  728.        end
  729.      end
  730.    elsif @paths != nil and @mouse_sta == 2 #当鼠标状态为跟随,且在移动中
  731.      if Mouse.press?(Mouse::LEFT) #持续按住鼠标
  732.        unless moving? or $game_system.map_interpreter.running? or
  733.               @move_route_forcing or $game_temp.message_window_showing #排除无效情况
  734.          #跟随方向判断并跟随
  735.          rate =  $game_map.show_rate(self)
  736.          width = (RPG::Cache.character(self.character_name,self.character_hue).width / $c3_每一步的帧数) * rate
  737.          height = (RPG::Cache.character(self.character_name,self.character_hue).height / 8) * rate
  738.          self_ox = (self.screen_x - width / 2 + self.screen_x + width / 2) / 2
  739.          self_oy = (self.screen_y - height + self.screen_y) / 2
  740.          #self_ox = self.screen_x
  741.          #self_oy = self.screen_y
  742.          if (@mtp_x - self_ox)*(@mtp_x - self_ox) + (@mtp_y - self_oy)*(@mtp_y - self_oy) >= 961
  743.            if @mtp_x > self_ox
  744.              if self_oy - @mtp_y < 0.4 * (@mtp_x - self_ox) and
  745.                 @mtp_y - self_oy < 0.4 * (@mtp_x - self_ox)
  746.                move_right
  747.                $mouse_icon_id = 16
  748.                @direction = 6
  749.              end
  750.              if @mtp_y - self_oy > - 0.4 * ( self_ox - @mtp_x ) and
  751.                 @mtp_y - self_oy < - 2.4 * ( self_ox - @mtp_x )
  752.                move_lower_right
  753.                $mouse_icon_id = 13
  754.                @direction = 3
  755.              end
  756.              if @mtp_y - self_oy < 0.4 * ( self_ox - @mtp_x ) and
  757.                 @mtp_y - self_oy > 2.4 * ( self_ox - @mtp_x )
  758.                move_upper_right
  759.                $mouse_icon_id = 19
  760.                @direction = 9
  761.              end
  762.              if @mtp_y - self_oy > 2.4 * ( @mtp_x - self_ox )
  763.                move_down
  764.                $mouse_icon_id = 12
  765.                @direction = 2
  766.              end
  767.              if @mtp_y - self_oy < - 2.4 * ( @mtp_x - self_ox )
  768.                move_up
  769.                $mouse_icon_id = 18
  770.                @direction = 8
  771.              end
  772.            end
  773.            if @mtp_x < self_ox
  774.              if @mtp_y - self_oy > - 0.4 * ( self_ox - @mtp_x ) and
  775.                 @mtp_y - self_oy < 0.4 * ( self_ox - @mtp_x )
  776.                move_left
  777.                $mouse_icon_id = 14
  778.                @direction = 4
  779.              end
  780.              if @mtp_y - self_oy > 0.4 * ( self_ox - @mtp_x ) and
  781.                 @mtp_y - self_oy < 2.4 * ( self_ox - @mtp_x )
  782.                move_lower_left
  783.                $mouse_icon_id = 11
  784.                @direction = 1
  785.              end
  786.              if @mtp_y - self_oy < - 0.4 * ( self_ox - @mtp_x ) and
  787.                 @mtp_y - self_oy > - 2.4 * ( self_ox - @mtp_x )
  788.                move_upper_left
  789.                $mouse_icon_id = 17
  790.                @direction = 7
  791.              end
  792.              if @mtp_y - self_oy > 2.4 * ( self_ox - @mtp_x )
  793.                move_down
  794.                $mouse_icon_id = 12
  795.                @direction = 2
  796.              end
  797.              if @mtp_y - self_oy < - 2.4 * ( self_ox - @mtp_x )
  798.                move_up
  799.                $mouse_icon_id = 18
  800.                @direction = 8
  801.              end
  802.            end
  803.          end
  804.            #...................................................................
  805.            if @mtp_x > self_ox
  806.              if @mtp_y - self_oy > - 0.4 * ( @mtp_x - self_ox ) and
  807.                 @mtp_y - self_oy < 0.4 * ( @mtp_x - self_ox )
  808.                $mouse_icon_id = 16
  809.                @direction = 6
  810.              end
  811.              if @mtp_y - self_oy > 0.4 * ( @mtp_x - self_ox ) and
  812.                @mtp_y - self_oy < 2.4 * ( @mtp_x - self_ox )
  813.                $mouse_icon_id = 13
  814.                @direction = 3
  815.              end
  816.              if @mtp_y - self_oy < - 0.4 * ( @mtp_x - self_ox ) and
  817.                @mtp_y - self_oy > - 2.4 * ( @mtp_x - self_ox )
  818.                $mouse_icon_id = 19
  819.                @direction = 9
  820.              end
  821.              if @mtp_y - self_oy > 2.4 * ( @mtp_x - self_ox )
  822.                $mouse_icon_id = 12
  823.                @direction = 2
  824.              end
  825.              if @mtp_y - self_oy < - 2.4 * ( @mtp_x - self_ox )
  826.                $mouse_icon_id = 18
  827.                @direction = 8
  828.              end
  829.            end
  830.            if @mtp_x < self_ox
  831.              if @mtp_y - self_oy > - 0.4 * ( self_ox - @mtp_x ) and
  832.                 @mtp_y - self_oy < 0.4 * ( self_ox - @mtp_x )
  833.                $mouse_icon_id = 14
  834.                @direction = 4
  835.              end
  836.              if @mtp_y - self_oy > 0.4 * ( self_ox - @mtp_x ) and
  837.                 @mtp_y - self_oy < 2.4 * ( self_ox - @mtp_x )
  838.                $mouse_icon_id = 11
  839.                @direction = 1
  840.              end
  841.              if @mtp_y - self_oy < - 0.4 * ( self_ox - @mtp_x ) and
  842.                 @mtp_y - self_oy > - 2.4 * ( self_ox - @mtp_x )
  843.                $mouse_icon_id = 17
  844.                @direction = 7
  845.              end
  846.              if @mtp_y - self_oy > 2.4 * ( self_ox - @mtp_x )
  847.                $mouse_icon_id = 12
  848.                @direction = 2
  849.              end
  850.              if @mtp_y - self_oy < - 2.4 * ( self_ox - @mtp_x )
  851.                $mouse_icon_id = 18
  852.                @direction = 8
  853.              end
  854.            end
  855.            #...................................................................
  856.        end
  857.      else #没状态的情况
  858.        $mouse_icon_id = 0
  859.        @mouse_sta = 0
  860.        @paths_id = @paths.size #终止寻路移动
  861.      end
  862.    end
  863.    self_update
  864. end
  865. end
  866. Mouse.init
  867. END { Mouse.exit }
复制代码
这个东西 直接拷过来了 鼠标素材图就是4*8  估计以后还要改 先备个份

.青山不改,绿水长流,兄弟!后会有期!
驾~~~~~~
2.坏人:你倒是喊啊,你喊破喉咙也没人救你
女人:救命啊~~~~救命啊
好人:你这个恶贼,竟然敢在光天化日之下强抢民女,吃我一剑!
坏人:啊!~~~大侠饶命~
3.路人甲:此剑XX尺XX寸,重XX斤XX两
后面还有武侠大片,经典剧情
.背后疗伤法  多数是X主角受内伤或中毒后,要治伤势,必有一男的在背后双掌对其背部。两人一前一后盘腿坐下,后面的一顿猛拍,这时双手的上方会有烟雾出现,后面的一般双目紧闭。直到伤者的口里吐出血来,这时治疗全程结束。

2.脱衣去寒法  也是受重伤时发生的情节,通常倒楣的都会是女主角。女主角可能受了重伤,他们为了躲敌人,隐蔽到深山。而且,那个深山一定会下雨。女主角受不了寒冷,男主角此时往往就会用身体帮她取暖,要女主角把衣服脱了。但是女主角都会不干,所以男主角就会插插两下(点穴啦) 而且都会点两边肩膀那,哈哈~然后女主角就不动了。 如果有设计哑穴的话,男主角连哑穴也会点,然后就会,演下去……

3.两女共处法  如果武侠有那种2女都喜欢1男的情况,通常都会有几集是三个人因某种原因同时在一起,男主角喜欢的是女主角,但是女配角因为武功比较弱,所以都会因为保护男主角受伤,所以男主角就会对女配角好一点。这时候女主角就一定会留书出走,曰:“我成全你们!xxx是个好姑娘!你要好好对待她!”然后就不见了。

4.下雨躲庙法  这个剧情也是很让人开心的喔! 而且不是山神庙就是土地庙,反正那神都要拿大刀立着然后呢!我们就会看到破庙扔猩火,男女主角各把淋湿的衣服都披在“晾衣绳”上,透过火光,2人都……你可不要想歪哦,没有一丝不挂,都会穿着白色衣物的

5武侠界绝顶客栈 龙门客栈:打架专用,你如果看到有人打架,背景大多是。 悦来客栈:中国最大的连锁店面经营由此开始了,你可以在各省份中看到他的分店,无论是江南还是塞北,就算在远赴西藏,上面还是斗大四个汉字--悦来客栈。

6.被蛇咬伤时  不管是男主角、或是女主角,在森林穿行时都会被毒蛇咬。这时没受伤的为了表示他/她的诚意,都会帮受伤的那人吸毒。而且在我的记忆中,女主角每次都会被咬到小腿,男主角都会被咬到手。女主角都会很害羞的不要,然后男主角就会被骂:你想死啊?然后偶而会被再插插两下点穴,被咬的小腿此刻露出肌肤,考验女主角的身材,哈哈!男主角通常被咬时,女主角都会被设计是不大会武功的,情急之下顾不得自身安危帮男主角吸血,然后自己会晕倒,最后男主角就感动,马上陷入情网。

7.蒙面纱法  这种事会发生在女主角身上。女的可能是有某种原因,脸上蒙面纱,不知道长什么样子。往往这样的女孩都美丽绝伦。但是要碰上玩世不恭的男主角,再一阵纠缠之下,男的无意中的掀起了女主角的面纱,然后就等着看男主角惊为天人的表情吧。

8.好人被冤枉法 好人一定会一直被陷害,被陷害的好人在看到尸体的时候,一定会呆呆的把插在死者身上的刀拔起(九成以上的几率),在这个时候,一定会有大批武林人士或死者的亲友冲进来指着好人大喊:“你!你为什么杀他?!”好人一定会拿着刚拔出的赃物,摇头说:“不是我!不是我!”接着众人一定会吼到:“证据确凿,你休想狡辩!”所以说啊,科学辩案很重要的哦。

9.关键时刻咽气法  记得当年看射雕时有一镜头, 江南七怪被杀于桃花岛,靖蓉赶到时有一人尚未咽气,欲写下文字提供线索,他竟然写杀我者乃……然后再写下一横一竖时。正好咽气。其实白痴都知道他要写谁杀的他,而且最可笑的是他撑着写这四个字的时间,已经足够写两遍——西毒了。

10.主角不死定律 主角在乱刀、乱箭、乱棍之中怎么都打不死,配角一上就伤,反派一击即死!·
《隋唐乱》完整解密版点击进入
米兰,让我怎么说离开……

曾经我也是一个有志青年,直到我膝盖中了一箭……

《隋唐乱》博客地址
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2025-1-16 01:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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