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

Project1

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

更改同伴排列顺序的脚本怎么写?

 关闭 [复制链接]

Lv1.梦旅人

指引者

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-10-25
帖子
375
跳转到指定楼层
1
发表于 2009-1-22 23:36:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
首先我要获得同伴的个数
然后按TAB键切换角色(按键处理已经解决)

判断同伴的size

然后替换
例如@play[1]这是第一个同伴 共有4个同伴
@temp
if @play[size]!=0
for i in 1..size-1
@temp=@play[size-1]
@play[size-1]=@play
@play=@play[i+1]
end
end
利用这个排序法来替换队员 然后刷新游戏画面
把第一个替换到最后一个 再把第二个替换到第一个
具体那个插入排序法我也忘了怎么写了

就是把第一个队员踢到最后一个
然后再把第二个放到第一位
然后再把倒数第二个放到第二个
最后完成
排出来的顺序是 2,3,4,1

不过不知道RPG::System.party_members用来做排序能不能达到效果?
或者谁能帮我写下未完成的那个方法{/hx}


  1. class Arpg_Actor
  2. #--------------------------------------------------------------------------
  3. # ● 定义实例变量
  4. #--------------------------------------------------------------------------
  5.   attr_accessor :Actor_id                 # 角色ID
  6.   attr_accessor :Actor_action             # 角色动作 0:什么都不做 1:移动 2:攻击 3:跳跃 4:中击 5:吟唱 6:死亡   
  7.   attr_accessor :Actor_look               # 角色的面向
  8.   attr_accessor :Actor_MapId              # 角色所在地图
  9.   attr_accessor :Actors_x                 # 角色的x坐标
  10.   attr_accessor :Actors_y                 # 角色的y坐标
  11.   MAXHP=280                               # HP最大值的长度
  12.   MAXSP=270                               # SP最大值的长度
  13.   #创建键盘对象
  14.   $GetKeyState = Win32API.new("user32","GetAsyncKeyState",['I'],'I')

  15. #--------------------------------------------------------------------------
  16. # ● 初始化对像
  17. #--------------------------------------------------------------------------
  18.   def initialize
  19.     @temps = 0
  20.     @Actor_id = $game_party.actors[0].id
  21.     @Actor_action=0
  22.     @Actor_look=8
  23.     @Actor_MapId=1
  24.     @Actors_x=0
  25.     @Actors_y=0
  26.   end  
  27.   def Actor_message
  28.     if $GetKeyState.call(0x09)!=0
  29.       
  30.     end
  31.     @actor_ms=Window_Selectable.new(0,0,0,0)
  32.     @actor_ms.update
  33.     @devil = Sprite.new
  34.     @devil.x = 0
  35.     @devil.y = 310
  36.     @devil.bitmap = RPG::Cache.picture("状态栏")
  37.     @[email protected]
  38.     message_refresh
  39.     RPG::Cache.clear
  40.     Graphics.update
  41.    
  42.   end
  43. #--------------------------------------------------------------------------
  44. # ● TAB键更换角色
  45. #--------------------------------------------------------------------------   
  46.    def 替换角色
  47.      
  48.    end
  49. #--------------------------------------------------------------------------
  50. # ● 获得状态栏信息
  51. #--------------------------------------------------------------------------
  52.   def message_refresh
  53.    
  54.     @b = Sprite.new
  55.     @b.x = -30
  56.     @b.y = 380
  57.     @b.bitmap = Bitmap.new("Graphics/Battlers/"+$game_actors[@Actor_id].battler_name.to_s)
  58.     @actor_ms.windowskin.draw_text(1, 30, 120, 32,$game_actors[@Actor_id].name, 0)
  59.     @actor_ms.windowskin.draw_text(90, 120, 120, 32,"HP:", 0)
  60.     @actor_ms.windowskin.draw_text(90, 140, 120, 32,"SP:", 0)
  61.     #显示血槽
  62.     if (showHP/MAXHP*100)< 60
  63.     @actor_ms.windowskin.fill_rect(124,130,showHP,12,Color.new(0,0,0,255))
  64.     @actor_ms.windowskin.fill_rect(124,130,showHP,10,Color.new(255,180,0,255))
  65.     end
  66.     if (showHP/MAXHP*100)< 20
  67.     @actor_ms.windowskin.fill_rect(124,130,showHP,12,Color.new(0,0,0,255))
  68.     @actor_ms.windowskin.fill_rect(124,130,showHP,10,Color.new(255,0,0,255))
  69.     end
  70.     if (showHP/MAXHP*100)> 60
  71.     @actor_ms.windowskin.fill_rect(124,130,showHP,12,Color.new(0,0,0,255))
  72.     @actor_ms.windowskin.fill_rect(124,130,showHP,10,Color.new(0,150,0,255))
  73.     end
  74.     #显示SP
  75.     @actor_ms.windowskin.fill_rect(124,150,showSP,13,Color.new(0,0,0,255))
  76.     @actor_ms.windowskin.fill_rect(124,150,showSP,10,Color.new(45,128,241,255))
  77.     #显示HP和SP文字
  78.     @actor_ms.windowskin.draw_text(122, 120, 120, 32,$game_actors[@Actor_id].hp.to_s+"\\"+$game_actors[@Actor_id].maxhp.to_s, 0)
  79.     @actor_ms.windowskin.draw_text(122, 140, 120, 32,$game_actors[@Actor_id].sp.to_s+"\\"+$game_actors[@Actor_id].maxsp.to_s.to_s, 0)
  80.   end
  81. #--------------------------------------------------------------------------
  82. # ● 计算hp的长度
  83. #--------------------------------------------------------------------------  
  84.   def showHP
  85.      @ih=$game_actors[@Actor_id].hp.to_f
  86.      @mh=$game_actors[@Actor_id].maxhp.to_f
  87.      @temp=@ih/@mh
  88.      return MAXHP*@temp
  89.    
  90.   end
  91. #--------------------------------------------------------------------------
  92. # ● 计算sp的长度
  93. #--------------------------------------------------------------------------   
  94.   def showSP
  95.      @is=$game_actors[@Actor_id].sp.to_f
  96.      @ms=$game_actors[@Actor_id].maxsp.to_f
  97.      @temp=@is/@ms
  98.      return MAXSP*@temp
  99.   end

  100.    
  101. end

复制代码

版务信息:本贴由楼主自主结贴~
↓这是啥-- [IMG][/IMG]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
21 小时
注册时间
2007-7-3
帖子
573
2
发表于 2009-1-22 23:45:34 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

指引者

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-10-25
帖子
375
3
 楼主| 发表于 2009-1-23 00:24:26 | 只看该作者

  1. def runt_Actor
  2.      @array = []
  3.      @t
  4.      for i in 0..$game_party.actors.size
  5.      @array[i] = $game_party.smooth_target_actor(i)
  6.      end
  7.      for j in [email protected]
  8.          if @array.size!=1
  9.             @t=@array[j]
  10.             @array[j]=@array[j+1]
  11.             @array[@array.size]=@t
  12.             $game_party.actors.clear
  13.             for s in [email protected]
  14.              $game_party.actors.push(@array[i])
  15.             
  16.             end
  17.             return
  18.          end
  19.      end
  20.      
  21.    end
复制代码

到底怎么写啊--
我这样写 给状态栏添加了一堆同样的角色--
↓这是啥-- [IMG][/IMG]
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-8-30
帖子
57
4
发表于 2009-1-23 00:29:13 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

指引者

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-10-25
帖子
375
5
 楼主| 发表于 2009-1-23 00:45:22 | 只看该作者

  1. #--------------------------------------------------------------------------
  2. # ● TAB键更换角色
  3. #--------------------------------------------------------------------------   
  4.    def runt_Actor
  5.      @array = []
  6.      @t
  7.      for i in 0..$game_party.actors.size
  8.      @array[i] = $game_party.smooth_target_actor(i)
  9.      
  10.      end
  11.      for j in [email protected]
  12.          
  13.             @t=@array[j]
  14.             @array[j]=@array[j+1]
  15.             @array[@array.size-1]=@t
  16.             
  17.       end
  18.       $game_party.actors.clear  
  19.       for s in [email protected]
  20.              $game_party.actors.push(@array[i])
  21.       end
  22.    end
复制代码
以下引用水蓝于2009-1-22 16:29:13的发言:

- -你说的那个可不叫插入排序

还有方法都写出来,为什么写不出脚本

因为
我大致知道处理方法了
但是复制了一堆同样的角色
麻烦帮我看看问题出在哪吧--
这个我的工程http://rpg.blue/upload_program/d ... ��槽_113071806.rar
↓这是啥-- [IMG][/IMG]
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

6
发表于 2009-1-23 01:57:29 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

指引者

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-10-25
帖子
375
7
 楼主| 发表于 2009-1-23 02:07:54 | 只看该作者
以下引用沉影不器于2009-1-22 17:57:29的发言:

哪那么麻烦

def runt_Actor
actor = $game_party.actors.pop
$game_party.actors.unshift actor
end

没看懂LS的意思--
↓这是啥-- [IMG][/IMG]
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

8
发表于 2009-1-23 06:25:57 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

指引者

梦石
0
星屑
50
在线时间
2 小时
注册时间
2005-10-25
帖子
375
9
 楼主| 发表于 2009-1-23 20:41:40 | 只看该作者
其实我也不知道这个做法行不行得通
因为数组在更改的过程中
Game_Actor 也在侦测角色信息
这样有可能会抛出脚本异常
↓这是啥-- [IMG][/IMG]
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

10
发表于 2009-1-24 02:45:44 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-18 19:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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