幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1475|回复: 4

[已解决] 新人求教

[复制链接]

1

主题

2

帖子

18

积分

②入门

积分
18
发表于 2009-12-26 19:15:33 | 显示全部楼层 |阅读模式
这种脚本怎么就不能用呢
# 队员管理脚本(v1.1c)
module RPG
class Actor
def setup
@found = false
@unavailable = false
@required = false
end
attr_accessor :found
attr_accessor :unavailable
attr_accessor :required
end
end
class Game_Actors
attr_reader :data
alias prex_party_g_actors_initialize initialize
def initialize
prex_party_g_actors_initialize
$data_actors.each do |actor|
actor.setup if actor
@data[actor.id] = Game_Actor.new(actor.id) if actor
end
end
end
class Scene_File < Scene_Base
alias prex_party_s_file_write_save_data write_save_data
alias prex_party_s_file_read_save_data read_save_data
def write_save_data(file)
prex_party_s_file_write_save_data(file)
Marshal.dump($data_actors, file)
end
def read_save_data(file)
prex_party_s_file_read_save_data(file)
$data_actors = Marshal.load(file)
end
end
class Scene_Title < Scene_Base
alias prex_party_s_title_command_new_game command_new_game
def command_new_game
prex_party_s_title_command_new_game
$game_party.members.each {|s| s.actor.found = true if s}
end
end
class Window_Base < Window
def draw_item_name(item, x, y, enabled = true, width = 172)
if item != nil
draw_icon(item.icon_index, x, y, enabled)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x + 24, y, width, WLH, item.name)
end
end
end
class Scene_Party < Scene_Base
def start
super
create_menu_background
create_windows
end
def create_windows
@member_window = Window_CurrentMember.new
@party_window = Window_CurrentParty.new
@party_window.active = true
@selectable_window = Window_SelectMember.new
end
def update_windows
@member_window.update
@party_window.update
@selectable_window.update
if @party_window.active
@member_window.set_member(@party_window.member)
elsif @selectable_window.active
@member_window.set_member(@selectable_window.member)
end
end
def terminate
super
@member_window.dispose
@party_window.dispose
@selectable_window.dispose
end
def update
super
update_windows
update_input
end
def update_input
if Input.trigger?(Input::A)
if @member_window.mode == 1
@member_window.set_mode(0)
elsif @member_window.mode == 0
@member_window.set_mode(1)
end
end
if @party_window.active
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
member = @party_window.member
if member != nil
if member.actor.unavailable or member.actor.required
Sound.play_buzzer
return
end
end
Sound.play_decision
@party_window.active = false
@selectable_window.active = true
@selectable_window.index = 0
end
elsif @selectable_window.active
if Input.trigger?(Input::B)
Sound.play_cancel
@selectable_window.index = -1
@selectable_window.active = false
@party_window.active = true
elsif Input.trigger?(Input::C)
member = @selectable_window.member
if member != nil
if member.actor.unavailable
Sound.play_buzzer
return
end
end
Sound.play_decision
$game_party.remove_actor(@party_window.member.id) if @party_window.member != nil
$game_party.add_actor(@selectable_window.member.id) if @selectable_window.member != nil
@selectable_window.refresh
@party_window.refresh
@selectable_window.index = -1
@selectable_window.active = false
@party_window.active = true
end
end
end
end
class Window_CurrentMember < Window_Base
attr_reader :mode
def initialize(member = nil, mode = 0)
super(304-12, 80, 192+24, 256)
create_contents
@member = member
@mode = 0
refresh
end
def member
return @member
end
def set_member(member)
old_member = @member
@member = member
refresh if old_member != @member
end
def set_mode(mode)
@mode = mode if [0, 1].include?(mode)
refresh
end
def refresh
self.contents.clear
return unless @member
x, y = 0, 0
self.draw_actor_name(@member, x + 100, y)
self.draw_actor_class(@member, x + 100, y + WLH)
self.draw_actor_level(@member, x + 103, y + WLH*2)
case @mode
when 0
self.draw_actor_face(@member, x, y, 96) #****
self.draw_actor_hp(@member, x, y + WLH*3, 160)
self.draw_actor_mp(@member, x, y + WLH*4, 160)
self.draw_actor_parameter(@member, x, y + WLH*5, 0)
self.draw_actor_parameter(@member, x, y + WLH*6, 1)
self.draw_actor_parameter(@member, x, y + WLH*7, 2)
self.draw_actor_parameter(@member, x, y + WLH*8, 3)
when 1
self.draw_actor_face(@member, x, y, 96) #****
for i in 0...@member.equips.size
item = @member.equips
self.draw_item_name(item, x, y + WLH*(3+i), true, self.contents.width - 24)
end
end
end
end
class Window_CurrentParty < Window_Selectable
def initialize
super(48-12, 80, 256, 64)
@item_max = 4
@column_max = @item_max
create_contents
self.index = 0
refresh
end
def member
return $game_party.members[self.index]
end
def refresh
for i in 0...@item_max
rect = item_rect(i)
self.contents.clear_rect(rect)
end
for i in 0...$game_party.members.size
rect = item_rect(i)
bitmap = Cache.character($game_party.members.character_name)
sign = $game_party.members.character_name[/^[\!\$]./]
if sign != nil and sign.include?('$')
cw = bitmap.width / 3
ch = bitmap.height / 4
else
cw = bitmap.width / 12
ch = bitmap.height / 8
end
n = $game_party.members.character_index
src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
if $game_party.members.actor.unavailable
self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128)
else
self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255)
end
if $game_party.members.actor.required
lock_bitmap = Cache.system("Locked")
self.contents.blt(rect.x + rect.width - lock_bitmap.width,
rect.y + rect.height - lock_bitmap.height,
lock_bitmap, lock_bitmap.rect)
end
end
end
def item_rect(index)
rect = Rect.new(0, 0, 0, 0)
rect.width = (contents.width + @spacing) / @column_max - @spacing
rect.height = 32
rect.x = index % @column_max * (rect.width + @spacing)
rect.y = index / @column_max * 32
return rect
end
end
class Window_SelectMember < Window_Selectable
def initialize
super(48-12, 144, 256, 192)
calculate_actors
@item_max = @actors.size + 1
@column_max = 4
self.index = -1
self.active = false
refresh
end
def calculate_actors
@actors = []
for a in $game_actors.data
@actors << a if a != nil and a.actor.found and !$game_party.members.include?(a)
end
end
def member
return @actors[self.index]
end
def refresh
self.contents.clear
calculate_actors
@item_max = @actors.size + 1
for i in 0...@actors.size
rect = item_rect(i)
bitmap = Cache.character(@actors.character_name)
sign = @actors.character_name[/^[\!\$]./]
if sign != nil and sign.include?('$')
cw = bitmap.width / 3
ch = bitmap.height / 4
else
cw = bitmap.width / 12
ch = bitmap.height / 8
end
n = @actors.character_index
src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
if @actors.actor.unavailable
self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128)
else
self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255)
end
if @actors.actor.required
lock_bitmap = Cache.system("Locked")
self.contents.blt(rect.x + rect.width - lock_bitmap.width,
rect.y + rect.height - lock_bitmap.height,
lock_bitmap, lock_bitmap.rect)
end
end
end
def item_rect(index)
rect = Rect.new(0, 0, 0, 0)
rect.width = (contents.width + @spacing) / @column_max - @spacing
rect.height = 32
rect.x = index % @column_max * (rect.width + @spacing)
rect.y = index / @column_max * 32
return rect
end
end
电池是有用的,用不好也是有害的
回复

使用道具 举报

1

主题

2

帖子

18

积分

②入门

积分
18
 楼主| 发表于 2009-12-26 19:20:06 | 显示全部楼层
顺便说一句
每次都是这一句出问题:
$data_actors = Marshal.load(file)
电池是有用的,用不好也是有害的
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-26 19:31:41 | 显示全部楼层
XP?VX?提问时先说明一下

还有这个脚本怎么调用。。。
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

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

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-26 19:47:50 | 显示全部楼层
我把有问题的地方改了。。你那个问题没出现。。我试过存读档也没有问题
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-14 20:10 , Processed in 0.023539 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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