Advertisement
Black_Mage

Custom Shop Window RMXP Script

Mar 15th, 2014
395
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.19 KB | None | 0 0
  1. #==============================================================================
  2. # ** Custom Shop Window By Black Mage
  3. #==============================================================================
  4. #==============================================================================
  5. # ** Window_ShopBuy
  6. #------------------------------------------------------------------------------
  7. # This window displays buyable goods on the shop screen.
  8. #==============================================================================
  9.  
  10. class Window_ShopBuy < Window_Selectable
  11. #--------------------------------------------------------------------------
  12. # * Object Initialization
  13. # shop_goods : goods
  14. #--------------------------------------------------------------------------
  15. def initialize(shop_goods)
  16. super(0, 128, 640, 132)
  17. @shop_goods = shop_goods
  18. refresh
  19. self.index = 0
  20. end
  21. #--------------------------------------------------------------------------
  22. # * Item Acquisition
  23. #--------------------------------------------------------------------------
  24. def item
  25. return @data[self.index]
  26. end
  27. #--------------------------------------------------------------------------
  28. # * Refresh
  29. #--------------------------------------------------------------------------
  30. def refresh
  31. if self.contents != nil
  32. self.contents.dispose
  33. self.contents = nil
  34. end
  35. @data = []
  36. for goods_item in @shop_goods
  37. case goods_item[0]
  38. when 0
  39. item = $data_items[goods_item[1]]
  40. number = $game_party.item_number(@item.id)
  41. when 1
  42. item = $data_weapons[goods_item[1]]
  43. number = $game_party.weapon_number(@item.id)
  44. when 2
  45. item = $data_armors[goods_item[1]]
  46. number = $game_party.armor_number(@item.id)
  47. end
  48. if item != nil
  49. @data.push(item)
  50. end
  51. end
  52. # If item count is not 0, make a bit map and draw all items
  53. @item_max = @data.size
  54. if @item_max > 0
  55. self.contents = Bitmap.new(width - 32, row_max * 32)
  56. for i in 0...@item_max
  57. draw_item(i)
  58. end
  59. end
  60. end
  61. #--------------------------------------------------------------------------
  62. # * Draw Item
  63. # index : item number
  64. #--------------------------------------------------------------------------
  65. def draw_item(index)
  66. item = @data[index]
  67. # Get items in possession
  68. case item
  69. when RPG::Item
  70. number = $game_party.item_number(item.id)
  71. when RPG::Weapon
  72. number = $game_party.weapon_number(item.id)
  73. when RPG::Armor
  74. number = $game_party.armor_number(item.id)
  75. end
  76. # If price is less than money in possession, and amount in possession is
  77. # not 99, then set to normal text color. Otherwise set to disabled color
  78. if item.price <= $game_party.gold and number < 99
  79. self.contents.font.color = normal_color
  80. else
  81. self.contents.font.color = disabled_color
  82. end
  83. x = 4
  84. y = index * 32
  85. rect = Rect.new(x, y, self.width - 32, 32)
  86. self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  87. bitmap = RPG::Cache.icon(item.icon_name)
  88. opacity = self.contents.font.color == normal_color ? 255 : 128
  89. self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  90. self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  91. self.contents.draw_text(x + 260, y, 88, 32, "Price :")
  92. self.contents.draw_text(x + 300, y, 88, 32, item.price.to_s, 2)
  93. self.contents.draw_text(x + 470, y, 88, 32, "Owned :")
  94. self.contents.draw_text(x + 550, y, 32, 32, number.to_s, 2)
  95. end
  96. #--------------------------------------------------------------------------
  97. # * Help Text Update
  98. #--------------------------------------------------------------------------
  99. def update_help
  100. @help_window.set_text(self.item == nil ? "" : self.item.description)
  101. end
  102. end
  103.  
  104. #==============================================================================
  105. # ** Window_ShopStatus
  106. #------------------------------------------------------------------------------
  107. # This window displays number of items in possession and the actor's equipment
  108. # on the shop screen.
  109. #==============================================================================
  110.  
  111. class Window_ShopStatus < Window_Base
  112. #--------------------------------------------------------------------------
  113. # * Object Initialization
  114. #--------------------------------------------------------------------------
  115. def initialize
  116. super(0, 260, 640, 220)
  117. self.contents = Bitmap.new(width - 32, height - 32)
  118. @item = nil
  119. refresh
  120. end
  121. #--------------------------------------------------------------------------
  122. # * Refresh
  123. #--------------------------------------------------------------------------
  124. def refresh
  125. self.contents.clear
  126. if @item == nil
  127. return
  128. end
  129. case @item
  130. when RPG::Item
  131. number = $game_party.item_number(@item.id)
  132. when RPG::Weapon
  133. number = $game_party.weapon_number(@item.id)
  134. when RPG::Armor
  135. number = $game_party.armor_number(@item.id)
  136. end
  137. if @item.is_a?(RPG::Item)
  138. return
  139. end
  140. # Equipment adding information
  141. for i in 0...$game_party.actors.size
  142. # Get actor
  143. actor = $game_party.actors[i]
  144. # If equippable, then set to normal text color. If not, set to
  145. # invalid text color.
  146. if actor.equippable?(@item)
  147. self.contents.font.color = normal_color
  148. disabler = false
  149. else
  150. self.contents.font.color = Color.new(255, 255, 255, 128)
  151. disabler = true
  152. end
  153. # Get current equipment
  154. if @item.is_a?(RPG::Weapon)
  155. check = $data_weapons[actor.weapon_id]
  156. if check ==nil
  157. oldwpnstr = 0
  158. oldwpndex = 0
  159. oldwpnint = 0
  160. oldwpnagi = 0
  161. oldwpnpdf = 0
  162. oldwpnmdf = 0
  163. atkwpn = 0
  164. else
  165. oldwpnstr = $data_weapons[actor.weapon_id].str_plus
  166. oldwpndex = $data_weapons[actor.weapon_id].dex_plus
  167. oldwpnint = $data_weapons[actor.weapon_id].int_plus
  168. oldwpnagi = $data_weapons[actor.weapon_id].agi_plus
  169. oldwpnpdf = $data_weapons[actor.weapon_id].pdef
  170. oldwpnmdf = $data_weapons[actor.weapon_id].mdef
  171. atkwpn = @item.atk
  172. end
  173. elsif @item.kind == 0
  174. check = $data_armors[actor.armor1_id]
  175. if check ==nil
  176. oldwpnstr = 0
  177. oldwpndex = 0
  178. oldwpnint = 0
  179. oldwpnagi = 0
  180. oldwpnpdf = 0
  181. oldwpnmdf = 0
  182. atkwpn = 0
  183. else
  184. oldwpnstr = $data_armors[actor.armor1_id].str_plus
  185. oldwpndex = $data_armors[actor.armor1_id].dex_plus
  186. oldwpnint = $data_armors[actor.armor1_id].int_plus
  187. oldwpnagi = $data_armors[actor.armor1_id].agi_plus
  188. oldwpnpdf = $data_armors[actor.armor1_id].pdef
  189. oldwpnmdf = $data_armors[actor.armor1_id].mdef
  190. atkwpn = 0
  191. end
  192. elsif @item.kind == 1
  193. check = $data_armors[actor.armor2_id]
  194. if check ==nil
  195. oldwpnstr = 0
  196. oldwpndex = 0
  197. oldwpnint = 0
  198. oldwpnagi = 0
  199. oldwpnpdf = 0
  200. oldwpnmdf = 0
  201. atkwpn = 0
  202. else
  203. oldwpnstr = $data_armors[actor.armor2_id].str_plus
  204. oldwpndex = $data_armors[actor.armor2_id].dex_plus
  205. oldwpnint = $data_armors[actor.armor2_id].int_plus
  206. oldwpnagi = $data_armors[actor.armor2_id].agi_plus
  207. oldwpnpdf = $data_armors[actor.armor2_id].pdef
  208. oldwpnmdf = $data_armors[actor.armor2_id].mdef
  209. atkwpn = 0
  210. end
  211. elsif @item.kind == 2
  212. check = $data_armors[actor.armor3_id]
  213. if check ==nil
  214. oldwpnstr = 0
  215. oldwpndex = 0
  216. oldwpnint = 0
  217. oldwpnagi = 0
  218. oldwpnpdf = 0
  219. oldwpnmdf = 0
  220. atkwpn = 0
  221. else
  222. oldwpnstr = $data_armors[actor.armor3_id].str_plus
  223. oldwpndex = $data_armors[actor.armor3_id].dex_plus
  224. oldwpnint = $data_armors[actor.armor3_id].int_plus
  225. oldwpnagi = $data_armors[actor.armor3_id].agi_plus
  226. oldwpnpdf = $data_armors[actor.armor3_id].pdef
  227. oldwpnmdf = $data_armors[actor.armor3_id].mdef
  228. atkwpn = 0
  229. end
  230. else
  231. check = $data_armors[actor.armor4_id]
  232. if check ==nil
  233. oldwpnstr = 0
  234. oldwpndex = 0
  235. oldwpnint = 0
  236. oldwpnagi = 0
  237. oldwpnpdf = 0
  238. oldwpnmdf = 0
  239. atkwpn = 0
  240. else
  241. oldwpnstr = $data_armors[actor.armor4_id].str_plus
  242. oldwpndex = $data_armors[actor.armor4_id].dex_plus
  243. oldwpnint = $data_armors[actor.armor4_id].int_plus
  244. oldwpnagi = $data_armors[actor.armor4_id].agi_plus
  245. oldwpnpdf = $data_armors[actor.armor4_id].pdef
  246. oldwpnmdf = $data_armors[actor.armor4_id].mdef
  247. atkwpn = 0
  248. end
  249. end
  250.  
  251. # Draw item
  252. x = 4 + 152*i
  253. y = 24
  254.  
  255. # Draw actor's name
  256. self.contents.draw_text(4 + 152*i, -8, 120, 32, actor.name)
  257.  
  258. opacity = self.contents.font.color == normal_color ? 255 : 128
  259.  
  260. if disabler == false
  261. self.contents.font.color = system_color
  262. end
  263.  
  264. self.contents.draw_text(x, y-2, 212, 32, "STR")
  265. self.contents.draw_text(x, y+19, 212, 32, "DEX")
  266. self.contents.draw_text(x, y+40, 212, 32, "INT")
  267. self.contents.draw_text(x, y+61, 212, 32, "AGI")
  268. self.contents.draw_text(x, y+82, 212, 32, "ATK")
  269. self.contents.draw_text(x, y+103, 212, 32, "PDEF")
  270. self.contents.draw_text(x, y+124, 212, 32, "MDEF")
  271.  
  272. if disabler == false
  273. self.contents.font.color = normal_color
  274. end
  275.  
  276. # Draw STR
  277. act = actor.str
  278. wpn = @item.str_plus - oldwpnstr
  279. self.contents.draw_text(64 + 152*i, y-2, 112, 32, act.to_s(10))
  280. if disabler == false
  281. if wpn > 0
  282. self.contents.font.color = Color.new(0, 100, 255, 255)
  283. elsif wpn < 0
  284. self.contents.font.color = Color.new(100, 0, 0, 255)
  285. else
  286. self.contents.font.color = normal_color
  287. end
  288. self.contents.draw_text(32 + 152*i, y-2, 112, 32, sprintf("%+d", wpn), 2)
  289. end
  290.  
  291. # Draw DEX
  292. act = actor.dex
  293. wpn = @item.dex_plus - oldwpndex
  294. if disabler == false
  295. self.contents.font.color = normal_color
  296. end
  297. self.contents.draw_text(64 + 152*i, y+19, 112, 32, act.to_s(10))
  298. if disabler == false
  299. if wpn > 0
  300. self.contents.font.color = Color.new(0, 100, 255, 255)
  301. elsif wpn < 0
  302. self.contents.font.color = Color.new(100, 0, 0, 255)
  303. else
  304. self.contents.font.color = normal_color
  305. end
  306. self.contents.draw_text(32 + 152*i, y+19, 112, 32, sprintf("%+d", wpn), 2)
  307. end
  308.  
  309. # Draw INT
  310. act = actor.int
  311. wpn = @item.int_plus - oldwpnint
  312. if disabler == false
  313. self.contents.font.color = normal_color
  314. end
  315. self.contents.draw_text(64 + 152*i, y+40, 112, 32, act.to_s(10))
  316. if disabler == false
  317. if wpn > 0
  318. self.contents.font.color = Color.new(0, 100, 255, 255)
  319. elsif wpn < 0
  320. self.contents.font.color = Color.new(100, 0, 0, 255)
  321. else
  322. self.contents.font.color = normal_color
  323. end
  324. self.contents.draw_text(32 + 152*i, y+40, 112, 32, sprintf("%+d", wpn), 2)
  325. end
  326.  
  327. # Draw AGI
  328. act = actor.agi
  329. wpn = @item.agi_plus - oldwpnagi
  330. if disabler == false
  331. self.contents.font.color = normal_color
  332. end
  333. self.contents.draw_text(64 + 152*i, y+61, 112, 32, act.to_s(10))
  334. if disabler == false
  335. if wpn > 0
  336. self.contents.font.color = Color.new(0, 100, 255, 255)
  337. elsif wpn < 0
  338. self.contents.font.color = Color.new(100, 0, 0, 255)
  339. else
  340. self.contents.font.color = normal_color
  341. end
  342. self.contents.draw_text(32 + 152*i, y+61, 112, 32, sprintf("%+d", wpn), 2)
  343. end
  344.  
  345. # Draw ATK
  346. act = actor.atk
  347. if disabler == false
  348. self.contents.font.color = normal_color
  349. end
  350. self.contents.draw_text(64 + 152*i, y+82, 112, 32, act.to_s(10))
  351. if disabler == false
  352. if atkwpn > 0
  353. self.contents.font.color = Color.new(0, 100, 255, 255)
  354. elsif atkwpn < 0
  355. self.contents.font.color = Color.new(100, 0, 0, 255)
  356. else
  357. self.contents.font.color = normal_color
  358. end
  359. self.contents.draw_text(32 + 152*i, y+82, 112, 32, sprintf("%+d", atkwpn), 2)
  360. end
  361.  
  362. # Draw PDEF
  363. act = actor.pdef
  364. wpn = @item.pdef - oldwpnpdf
  365. if disabler == false
  366. self.contents.font.color = normal_color
  367. end
  368. self.contents.draw_text(64 + 152*i, y+103, 112, 32, act.to_s(10))
  369. if disabler == false
  370. if wpn > 0
  371. self.contents.font.color = Color.new(0, 100, 255, 255)
  372. elsif wpn < 0
  373. self.contents.font.color = Color.new(100, 0, 0, 255)
  374. else
  375. self.contents.font.color = normal_color
  376. end
  377. self.contents.draw_text(32 + 152*i, y+103, 112, 32, sprintf("%+d", wpn), 2)
  378. end
  379.  
  380. # Draw MDEF
  381. act = actor.mdef
  382. wpn = @item.mdef - oldwpnmdf
  383. if disabler == false
  384. self.contents.font.color = normal_color
  385. end
  386. self.contents.draw_text(64 + 152*i, y+124, 112, 32, act.to_s(10))
  387. if disabler == false
  388. if wpn > 0
  389. self.contents.font.color = Color.new(0, 100, 255, 255)
  390. elsif wpn < 0
  391. self.contents.font.color = Color.new(100, 0, 0, 255)
  392. else
  393. self.contents.font.color = normal_color
  394. end
  395. self.contents.draw_text(32 + 152*i, y+124, 112, 32, sprintf("%+d", wpn), 2)
  396. end
  397.  
  398. end
  399. end
  400. #--------------------------------------------------------------------------
  401. # * Set Item
  402. # item : new item
  403. #--------------------------------------------------------------------------
  404. def item=(item)
  405. if @item != item
  406. @item = item
  407. refresh
  408. end
  409. end
  410. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement