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

Project1

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

[已经解决] 脚本盲求人帮忙改个脚本,帖内附代码

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
73 小时
注册时间
2008-5-30
帖子
84
跳转到指定楼层
1
发表于 2011-4-22 11:23:02 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 xzqcm111 于 2011-4-22 11:43 编辑

要求:1.调整下显示窗口,名字和职业貌似只能看到三个字,调整到能看到四个就好
          2.检查下有无队员仓库最大数量的限制,要是有麻烦扩充至99个,没有就算了。
PS:据说日站有个更好的脚本,可惜我在论坛没找到- -||如果有更加优化的脚本,麻烦大神们提供一下~谢谢
  1. # 队员管理脚本(v1.1c)
  2. #这个脚本不起其他同类的脚本要简陋的多,队伍人数仍然限制为4人,
  3. #而且也无法在战斗中更换队员,但这种简单脚本我想也会有朋友需要吧~~

  4. #使用方法:

  5. #1.系统呼出命令: $scene = Scene_Party.new

  6. #2.队员锁定命令: $game_party.members[0].actor.required = true
  7. #(其中数字0表示1号队员在队伍中锁定而无法进入仓库,1即为2号队员,以此类推)

  8. #3.队员加入仓库命令: $data_actors[5].found = true
  9. #(其中数字5表示5号队员直接进入仓库等待招募而不加入队伍,当队伍满员时使用此命令)

  10. #4.队员踢除仓库命令: $data_actors[5].found = false
  11. #(其中数字5表示将呆在仓库里的5号队员清除,该命令用于离开的队员)

  12. #5.队员加入仓库但无法被招募:$data_actors[8].found = true
  13. #$data_actors[8].unavailable = true
  14. #(其中数字8表示8号队员# 直接进入仓库但无法被招募,该命令用于俘虏类)

  15. #6.仓库里无法招募的队员启动命令:
  16. #$data_actors.each do |a| a.unavailable = false if a end
  17. #(该命令作为第5项命令的补充,使所有仓库里无法被招募的队员重启为可招募状态)

  18. #7.全体队员进入仓库: $data_actors.each do |a| a.found = true if a nd
  19. #(该命令使所有队员进入仓库等待招募,在队伍 中的队员不受影响)

  20. #由于脚本的缺陷及技术不足,角色名和职业名尽量控制在3个字或3个字以下
  21. #不然会出现被遮住而无法显示的画面
  22. # 队员管理脚本(v1.1c)
  23. module RPG

  24. class Actor
  25.   def setup
  26.     @found = false
  27.     @unavailable = false
  28.     @required = false
  29.   end
  30.     attr_accessor :found
  31.     attr_accessor :unavailable
  32.     attr_accessor :required
  33.   end
  34. end
  35. class Game_Actors
  36.   attr_reader :data
  37.     alias prex_party_g_actors_initialize initialize
  38.       def initialize
  39.         prex_party_g_actors_initialize
  40.         $data_actors.each do |actor|
  41.         actor.setup if actor
  42.         @data[actor.id] = Game_Actor.new(actor.id) if actor
  43.       end
  44.   end
  45. end
  46. class Scene_File < Scene_Base
  47.   alias prex_party_s_file_write_save_data write_save_data
  48.   alias prex_party_s_file_read_save_data read_save_data
  49.   def write_save_data(file)
  50.         prex_party_s_file_write_save_data(file)
  51.         Marshal.dump($data_actors, file)
  52.   end
  53.   def read_save_data(file)
  54.       prex_party_s_file_read_save_data(file)
  55.       $data_actors = Marshal.load(file)
  56.   end
  57. end
  58. class Scene_Title < Scene_Base
  59. alias prex_party_s_title_command_new_game command_new_game
  60.   def command_new_game
  61.   prex_party_s_title_command_new_game
  62.   $game_party.members.each {|s| s.actor.found = true if s}
  63.   end
  64. end
  65. class Window_Base < Window
  66.   def draw_item_name(item, x, y, enabled = true, width = 172)
  67.     if item != nil
  68.     draw_icon(item.icon_index, x, y, enabled)
  69.     self.contents.font.color = normal_color
  70.     self.contents.font.color.alpha = enabled ? 255 : 128
  71.     self.contents.draw_text(x + 24, y, width, WLH, item.name)
  72.     end
  73.   end
  74. end
  75. class Scene_Party < Scene_Base
  76.   def start
  77.   super
  78.   create_menu_background
  79.   create_windows
  80.   end
  81.   def create_windows
  82.   @member_window = Window_CurrentMember.new
  83.   @party_window = Window_CurrentParty.new
  84.   @party_window.active = true
  85.   @selectable_window = Window_SelectMember.new
  86.   end
  87.   def update_windows
  88.   @member_window.update
  89.   @party_window.update
  90.   @selectable_window.update
  91.     if @party_window.active
  92.     @member_window.set_member(@party_window.member)
  93.     elsif @selectable_window.active
  94.     @member_window.set_member(@selectable_window.member)
  95.     end
  96.   end
  97.   def terminate
  98.   super
  99.   @member_window.dispose
  100.   @party_window.dispose
  101.   @selectable_window.dispose
  102.   end
  103.   def update
  104.   super
  105.   update_windows
  106.   update_input
  107.   end
  108.   def update_input
  109.     if Input.trigger?(Input::A)
  110.     if @member_window.mode == 1
  111.     @member_window.set_mode(0)
  112.     elsif @member_window.mode == 0
  113.     @member_window.set_mode(1)
  114.     end
  115.   end
  116.   if @party_window.active
  117.   if Input.trigger?(Input::B)
  118.   Sound.play_cancel
  119.   $scene = Scene_Map.new
  120.   elsif Input.trigger?(Input::C)
  121.   member = @party_window.member
  122.   if member != nil
  123.   if member.actor.unavailable or member.actor.required
  124.   Sound.play_buzzer
  125.   return
  126.   end
  127. end
  128. Sound.play_decision
  129. @party_window.active = false
  130. @selectable_window.active = true
  131. @selectable_window.index = 0
  132. end
  133. elsif @selectable_window.active
  134.   if Input.trigger?(Input::B)
  135.   Sound.play_cancel
  136.   @selectable_window.index = -1
  137.   @selectable_window.active = false
  138.   @party_window.active = true
  139.   elsif Input.trigger?(Input::C)
  140.   member = @selectable_window.member
  141.   if member != nil
  142.   if member.actor.unavailable
  143.   Sound.play_buzzer
  144.   return
  145.   end
  146. end
  147. Sound.play_decision
  148. $game_party.remove_actor(@party_window.member.id) if @party_window.member != nil
  149. $game_party.add_actor(@selectable_window.member.id) if @selectable_window.member != nil
  150. @selectable_window.refresh
  151. @party_window.refresh
  152. @selectable_window.index = -1
  153. @selectable_window.active = false
  154. @party_window.active = true
  155. end
  156. end
  157. end
  158. end
  159. class Window_CurrentMember < Window_Base
  160. attr_reader :mode
  161. def initialize(member = nil, mode = 0)
  162. super(304, 80, 192, 256)
  163. create_contents
  164. @member = member
  165. @mode = 0
  166. refresh
  167. end
  168. def member
  169. return @member
  170. end
  171. def set_member(member)
  172. old_member = @member
  173. @member = member
  174. refresh if old_member != @member
  175. end
  176. def set_mode(mode)
  177. @mode = mode if [0, 1].include?(mode)
  178. refresh
  179. end
  180. def refresh
  181. self.contents.clear
  182. return unless @member
  183. x, y = 0, 0
  184. self.draw_actor_name(@member, x + 100, y)
  185. self.draw_actor_class(@member, x + 100, y + WLH)
  186. self.draw_actor_level(@member, x + 103, y + WLH*2)
  187. case @mode
  188. when 0
  189. self.draw_actor_face(@member, x, y, 96) #****
  190. self.draw_actor_hp(@member, x, y + WLH*3, 160)
  191. self.draw_actor_mp(@member, x, y + WLH*4, 160)
  192. self.draw_actor_parameter(@member, x, y + WLH*5, 0)
  193. self.draw_actor_parameter(@member, x, y + WLH*6, 1)
  194. self.draw_actor_parameter(@member, x, y + WLH*7, 2)
  195. self.draw_actor_parameter(@member, x, y + WLH*8, 3)
  196. when 1
  197. self.draw_actor_face(@member, x, y, 96) #****
  198. for i in [email protected]
  199. item = @member.equips[i]
  200. self.draw_item_name(item, x, y + WLH*(3+i), true, self.contents.width - 24)
  201. end
  202. end
  203. end
  204. end
  205. class Window_CurrentParty < Window_Selectable
  206. def initialize
  207. super(48, 80, 256, 64)
  208. @item_max = 4
  209. @column_max = @item_max
  210. create_contents
  211. self.index = 0
  212. refresh
  213. end
  214. def member
  215. return $game_party.members[self.index]
  216. end
  217. def refresh
  218. for i in 0...@item_max
  219. rect = item_rect(i)
  220. self.contents.clear_rect(rect)
  221. end
  222. for i in 0...$game_party.members.size
  223. rect = item_rect(i)
  224. bitmap = Cache.character($game_party.members[i].character_name)
  225. sign = $game_party.members[i].character_name[/^[\!\$]./]
  226. if sign != nil and sign.include?('$')
  227. cw = bitmap.width / 3
  228. ch = bitmap.height / 4
  229. else
  230. cw = bitmap.width / 12
  231. ch = bitmap.height / 8
  232. end
  233. n = $game_party.members[i].character_index
  234. src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
  235. if $game_party.members[i].actor.unavailable
  236. self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128)
  237. else
  238. self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255)
  239. end
  240. if $game_party.members[i].actor.required
  241. lock_bitmap = Cache.system("Locked")
  242. self.contents.blt(rect.x + rect.width - lock_bitmap.width,
  243. rect.y + rect.height - lock_bitmap.height,
  244. lock_bitmap, lock_bitmap.rect)
  245. end
  246. end
  247. end
  248. def item_rect(index)
  249. rect = Rect.new(0, 0, 0, 0)
  250. rect.width = (contents.width + @spacing) / @column_max - @spacing
  251. rect.height = 32
  252. rect.x = index % @column_max * (rect.width + @spacing)
  253. rect.y = index / @column_max * 32
  254. return rect
  255. end
  256. end
  257. class Window_SelectMember < Window_Selectable
  258. def initialize
  259. super(48, 144, 256, 192)
  260. calculate_actors
  261. @item_max = @actors.size + 1
  262. @column_max = 4
  263. self.index = -1
  264. self.active = false
  265. refresh
  266. end
  267. def calculate_actors
  268. @actors = []
  269. for a in $game_actors.data
  270. @actors << a if a != nil and a.actor.found and !$game_party.members.include?(a)
  271. end
  272. end
  273. def member
  274. return @actors[self.index]
  275. end
  276. def refresh
  277. self.contents.clear
  278. calculate_actors
  279. @item_max = @actors.size + 1
  280. for i in [email protected]
  281. rect = item_rect(i)
  282. bitmap = Cache.character(@actors[i].character_name)
  283. sign = @actors[i].character_name[/^[\!\$]./]
  284. if sign != nil and sign.include?('$')
  285. cw = bitmap.width / 3
  286. ch = bitmap.height / 4
  287. else
  288. cw = bitmap.width / 12
  289. ch = bitmap.height / 8
  290. end
  291. n = @actors[i].character_index
  292. src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
  293. if @actors[i].actor.unavailable
  294. self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128)
  295. else
  296. self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255)
  297. end
  298. if @actors[i].actor.required
  299. lock_bitmap = Cache.system("Locked")
  300. self.contents.blt(rect.x + rect.width - lock_bitmap.width,
  301. rect.y + rect.height - lock_bitmap.height,
  302. lock_bitmap, lock_bitmap.rect)
  303. end
  304. end
  305. end
  306. def item_rect(index)
  307. rect = Rect.new(0, 0, 0, 0)
  308. rect.width = (contents.width + @spacing) / @column_max - @spacing
  309. rect.height = 32
  310. rect.x = index % @column_max * (rect.width + @spacing)
  311. rect.y = index / @column_max * 32
  312. return rect
  313. end
  314. end
复制代码

点评

经测试,仓库人数20人以后就没有行走图的图像了,但是数量上没有限制,所以只要哪位大神帮忙加入一个滚动刷新就好了  发表于 2011-4-22 11:54

Lv1.梦旅人

梦石
0
星屑
50
在线时间
73 小时
注册时间
2008-5-30
帖子
84
3
 楼主| 发表于 2011-4-23 14:14:58 | 只看该作者
对了还有个问题,这个脚本,在管理的时候会出现一个空的角色,双杀兄能不能找到症结所在?把那个空角色删掉啊?



xzqcm111于2011-4-23 16:51补充以下内容:
额,这事是我自己误操作形成的,已经解决- -||
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
105 小时
注册时间
2009-7-25
帖子
201
2
发表于 2011-4-23 07:04:46 | 只看该作者
回复 xzqcm111 的帖子

搜索#****,把打了这个标记的两行注释掉,然后把194-195行
  1. self.draw_actor_name(@member, x + 100 , y)
  2. self.draw_actor_class(@member, x + 100 , y + WLH)
复制代码
的+100删掉就行了
这样没有脸图,但是不会遮住角色名字和职业名字了

点评

额,那个窗口不能想办法稍微扩大一点么- -||  发表于 2011-4-23 14:12
我是好人

VX ARPG迷城的国度试玩版已经放出
后续版本紧张制作中

正在策划迷城的伊苏:以超难迷宫为主的中型游戏
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 23:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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