pigu_6

Raizen| Lune item weight

Nov 24th, 2012
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.41 KB | None | 0 0
  1. #=======================================================
  2. # Lune Item Weight
  3. # Autor : Raizen
  4. #=======================================================
  5.  
  6. module Lune_Weight
  7. #=============================================================================#
  8. #========================= Configuraciones Generales ==============================#
  9. #=============================================================================#
  10.  
  11. # Para configurar el peso de un objeto, basta con ir a la base de datos,
  12. # en el espacio de notas y poner:
  13. # <peso n>, donde n es el valor del peso.
  14.  
  15. # Para que un objeto sea imposible de tirar basta con colocar
  16. # en las notas:
  17. # <keyitem>
  18.  
  19. # En caso de que no haya notas
  20. # el script pondra el valor por defecto:
  21. Default = 50
  22.  
  23. # Coloque el peso para cada moneda que tenga:
  24. Gold = 1
  25.  
  26. # Recibir objetos cuando esta sobrecargado?
  27. # Para evitar perdidas de objetos importantes puede habilitar esta opcion que permitira
  28. # que el personaje siga recibiendo objetos aun cuando anda sobre el limite de peso total.
  29. # true = recibe, false = no recibe
  30. Receive = true
  31.  
  32. # En caso de que quede como true puedes hacer que el heroe se trabe estando encima del peso
  33. # hasta que aliviane la carga: true=si, false=no
  34. Travar = true
  35.  
  36. # Escoja una variable que recibira el peso cargado.
  37. Var_C = 5
  38. # Escoja una variable que recibira el peso maximo.
  39. Var_M = 6
  40. # A partir de esas 2 variables puedes crear varios engines
  41.  
  42. LimiteB = 8000 # Configure solo si esta usando el script Lune_vault
  43. #=============================================================================#
  44. #===================== Configuraciones del limite de peso =======================#
  45. #=============================================================================#
  46.  
  47. # Para indicar que el valor a ser cargado es solo la fuerza del actor principal
  48. # coloque :for1
  49. # Para indicar que el valor a ser cargado es la sumatoria de todas las fuerzas, coloque
  50. # :all_for
  51. # Para indicar que el valor a ser cargado es solo el nivel del actor principal
  52. #, coloque :lvl1
  53. # Para indicar que el valor a ser cargado es la sumatoria de todos los niveles, coloque
  54. # :all_lvl
  55. # Para indicar que es una variable coloque :var
  56. # Para indicar que es un número fijo coloque :fix
  57.  
  58. # Ejemplo: Carry_Limit = lvl1
  59. Carry_Limit = :for1
  60.  
  61. # EN caso de que lo haga de acuerdo a la fuerza o nivel encima, indique
  62. # aqui la formula a ser usada en relación a esto
  63. # donde "at" significa el atributo (nivel o fuerza) que será colocado
  64. # en la formula, por ejemplo.
  65. # Si quiero que el peso sea 2 veces el valor de la fuerza de un personaje colocaria:
  66. # def self.weight_formula(at)
  67. # at * 2
  68. # end
  69.  
  70. # Si es una variable coloque la id de la variable o numero fijo
  71.  
  72. # Ejemplo:
  73.  
  74. # def self.weight_formula(at)
  75. # 20
  76. # end
  77.  
  78. # En el caso de arriba, representa que sera la variable 20 y
  79. # el limite del peso sera 20, dependiendo de que fue escogido en
  80. # Carry_Limit
  81.  
  82.  
  83. def self.weight_formula(at)
  84. at * 2 + 1000
  85. end
  86.  
  87.  
  88. #===================== Configuraciones del Vocabulario ==========================#
  89. # Siempre escribe entre comillas las configuraciones.
  90. # Unidad de peso
  91. PS = ' Oz'
  92.  
  93. # Vocabulario en el menú principal y la tienda:
  94. Peso = 'Peso:'
  95. Carregando = 'Cargando: '
  96. Bau = '' # Deja en blanco.
  97.  
  98. # Vocabulario de la ventana de Objetos.
  99. Usar = 'Usar'
  100. Descartar = 'Descartar'
  101.  
  102. #=============================================================================#
  103. #========================== Aqui começa o script =============================#
  104. #=============================================================================#
  105.  
  106. #--------------------------------------------------------------------------
  107. # * Calculo do limite de peso
  108. #--------------------------------------------------------------------------
  109. def self.weight_limit
  110. return unless $game_party.members[0]
  111. case Carry_Limit
  112. when :for1
  113. weight = weight_formula($game_party.members[0].param(2))
  114. when :all_for
  115. weight = 0
  116. for members in 0...$game_party.members.size - 1
  117. weight += weight_formula($game_party.members[members].param(2))
  118. end
  119. when :lvl1
  120. weight = weight_formula($game_party.members[0].level)
  121. when :all_lvl
  122. weight = 0
  123. for members in 0...$game_party.members.size - 1
  124. weight += weight_formula($game_party.members[members].level)
  125. end
  126. when :fix
  127. weight = weight_formula(0)
  128. when :var
  129. weight = $game_variables[weight_formula(0)]
  130. end
  131. $game_variables[Var_M] = weight
  132. weight
  133. end
  134. end
  135.  
  136.  
  137.  
  138. #==============================================================================
  139. # ** Game_Party
  140. #------------------------------------------------------------------------------
  141. # Esta classe gerencia o grupo. Contém informações sobre dinheiro, itens.
  142. # A instância desta classe é referenciada por $game_party.
  143. #==============================================================================
  144.  
  145. class Game_Party < Game_Unit
  146. alias :lune_weight_gain :gain_item
  147. #--------------------------------------------------------------------------
  148. # * Quantidade de itens carregados mais os itens equipados
  149. #--------------------------------------------------------------------------
  150. def carried_items
  151. @all_carried_items = 0
  152. all_items.each {|item| get_weight(item)}
  153. for i in 0...4
  154. members.each {|actor| @all_carried_items += calc_weight(actor.equips[i], 1)}
  155. end
  156. @all_carried_items += Lune_Weight::Gold * gold/100
  157. $game_variables[Lune_Weight::Var_C] = @all_carried_items
  158. @all_carried_items
  159. end
  160. #--------------------------------------------------------------------------
  161. # * Calculo do peso de um item no inventário
  162. #--------------------------------------------------------------------------
  163. def get_weight(item)
  164. if item.note =~ /<peso (.*)>/i
  165. @all_carried_items += $1.to_i * item_number(item)
  166. else
  167. @all_carried_items += Lune_Weight::Default * item_number(item)
  168. end
  169. end
  170. #--------------------------------------------------------------------------
  171. # * Calculo do peso de um item relativo a quantidade
  172. #--------------------------------------------------------------------------
  173. def calc_weight(item, amount)
  174. return 0 unless item
  175. if item.note =~ /<peso (.*)>/i
  176. carried_itens = $1.to_i * amount
  177. else
  178. carried_itens = Lune_Weight::Default * amount
  179. end
  180. carried_itens
  181. end
  182. #--------------------------------------------------------------------------
  183. # * Acrescentar item (redução)
  184. # item : item
  185. # amount : quantia alterada
  186. # include_equip : incluir itens equipados
  187. #--------------------------------------------------------------------------
  188. def gain_item(item, amount, include_equip = false)
  189. if Lune_Weight::Receive
  190. lune_weight_gain(item, amount, include_equip = false)
  191. return
  192. end
  193. return if item == nil
  194. weight = calc_weight(item, amount) + carried_items
  195. while weight > Lune_Weight.weight_limit
  196. amount -= 1
  197. weight = calc_weight(item, amount) + carried_items
  198. return if amount == 0
  199. end
  200. lune_weight_gain(item, amount, include_equip = false)
  201. end
  202. end
  203.  
  204. #==============================================================================
  205. # ** Scene_Shop
  206. #------------------------------------------------------------------------------
  207. # Esta classe executa o processamento da tela de loja.
  208. #==============================================================================
  209.  
  210. class Scene_Shop < Scene_MenuBase
  211. alias :lune_max_buy :max_buy
  212. #--------------------------------------------------------------------------
  213. # * Aquisição do número máximo disponível para compra
  214. #--------------------------------------------------------------------------
  215. def max_buy
  216. max = lune_max_buy
  217. weight = $game_party.calc_weight(@item, max) + $game_party.carried_items
  218. while weight > Lune_Weight.weight_limit && max > 0
  219. max -= 1
  220. weight = $game_party.calc_weight(@item, max) + $game_party.carried_items
  221. end
  222. max
  223. end
  224. #--------------------------------------------------------------------------
  225. # * Criação da janela de ajuda.
  226. #--------------------------------------------------------------------------
  227. def create_help_window
  228. @help_window = Window_Weight_Help.new
  229. @help_window.viewport = @viewport
  230. @get_item_num = $game_party.carried_items
  231. end
  232. #--------------------------------------------------------------------------
  233. # * Atualização da janela de peso
  234. #--------------------------------------------------------------------------
  235. def update
  236. super
  237. if @get_item_num != $game_party.carried_items
  238. @help_window.refresh
  239. @get_item_num = $game_party.carried_items
  240. end
  241. end
  242. end
  243.  
  244. #==============================================================================
  245. # ** Window_ShopBuy
  246. #------------------------------------------------------------------------------
  247. # Esta janela exibe bens compráveis na tela de loja.
  248. #==============================================================================
  249.  
  250. class Window_ShopBuy < Window_Selectable
  251. alias :lune_enable_item :enable?
  252. #--------------------------------------------------------------------------
  253. # * Definição de habilitação do item
  254. # item : item
  255. #--------------------------------------------------------------------------
  256. def enable?(item)
  257. return false if $game_party.calc_weight(item, 1) + $game_party.carried_items > Lune_Weight.weight_limit
  258. lune_enable_item(item)
  259. end
  260. end
  261.  
  262.  
  263. #==============================================================================
  264. # ** Window_Help
  265. #------------------------------------------------------------------------------
  266. # Esta janela exibe explicação de habilidades e itens e outras informações.
  267. #==============================================================================
  268.  
  269. class Window_Weight_Help < Window_Base
  270. include Lune_Weight
  271. #--------------------------------------------------------------------------
  272. # * Inicialização do objeto
  273. # line_number : número de linhas
  274. #--------------------------------------------------------------------------
  275. def initialize(line_number = 2, bau = false)
  276. @bau = bau
  277. super(0, 0, Graphics.width, fitting_height(line_number))
  278. end
  279. #--------------------------------------------------------------------------
  280. # * Configuração de texto
  281. # text : texto
  282. #--------------------------------------------------------------------------
  283. def set_text(text)
  284. if text != @text
  285. @text = text
  286. refresh
  287. end
  288. end
  289. def on_bau(bau = false)
  290. @bau = bau
  291. end
  292. #--------------------------------------------------------------------------
  293. # * Limpeza
  294. #--------------------------------------------------------------------------
  295. def clear
  296. set_text("")
  297. end
  298. #--------------------------------------------------------------------------
  299. # * Definição de item
  300. # item : habilidades, itens, etc.
  301. #--------------------------------------------------------------------------
  302. def set_item(item)
  303. @item = item
  304. set_text(item ? item.description : "")
  305. end
  306. #--------------------------------------------------------------------------
  307. # * Renovação
  308. #--------------------------------------------------------------------------
  309. def refresh
  310. contents.clear
  311. draw_text_ex(4, 0, @text)
  312. if @item
  313. text = Peso + $game_party.calc_weight(@item,1).to_s + PS
  314. draw_text(4, line_height, 200, line_height, text, 0)
  315. if @bau == true
  316. LimiteB == "" ? text_lim = "????" : text_lim = LimiteB
  317. text = Bau + $game_party.items_on_vault.to_s + "/" + text_lim.to_s + PS
  318. else
  319. text = Carregando + $game_party.carried_items.to_s + "/" + Lune_Weight.weight_limit.to_s + PS
  320. end
  321. draw_text(- 20, line_height, Graphics.width, line_height, text, 2)
  322. end
  323. end
  324. end
  325.  
  326.  
  327. #==============================================================================
  328. # ** Game_Player
  329. #------------------------------------------------------------------------------
  330. # Esta classe gerencia o jogador.
  331. # A instância desta classe é referenciada por $game_player.
  332. #==============================================================================
  333.  
  334. class Game_Player < Game_Character
  335. alias :lune_move_by :move_by_input
  336. #--------------------------------------------------------------------------
  337. # * Processamento de movimento através de pressionar tecla
  338. #--------------------------------------------------------------------------
  339. def move_by_input
  340. return if Lune_Weight::Travar && $game_party.carried_items > Lune_Weight.weight_limit
  341. lune_move_by
  342. end
  343. end
  344.  
  345.  
  346. #==============================================================================
  347. # ** Scene_Item
  348. #------------------------------------------------------------------------------
  349. # Esta classe executa o processamento da tela de item.
  350. #==============================================================================
  351. class Scene_Item < Scene_ItemBase
  352. alias raizen_combine_start start
  353. def start
  354. raizen_combine_start
  355. @combine_item = Window_Item_Combine.new
  356. @combine_item.viewport = @viewport
  357. @combine_item.set_handler(:new_game, method(:command_use))
  358. @combine_item.set_handler(:continue, method(:command_combine))
  359. end
  360. def on_item_ok
  361. if item == nil
  362. @item_window.activate
  363. return
  364. end
  365. if @combine_item.close?
  366. @combine_item.open
  367. @combine_item.activate
  368. else
  369. determine_item
  370. end
  371. end
  372.  
  373. def update
  374. super
  375. if @number_window and @number_window.nitens == true
  376. @number_window.nitens = false
  377. @combine_item.close
  378. @item_window.refresh
  379. @help_window.refresh
  380. @item_window.activate
  381. end
  382. if Input.trigger?(:B) and !@combine_item.close?
  383. Sound.play_cancel
  384. if @number_window and !@number_window.close?
  385. @number_window.close
  386. @combine_item.activate
  387. else
  388. @combine_item.close
  389. @item_window.activate
  390. end
  391. end
  392. end
  393. def command_use
  394. determine_item
  395. end
  396.  
  397. def command_combine
  398. if @number_window and !@number_window.close?
  399. @combine_item.activate
  400. return
  401. end
  402. @number_window = Window_NumberInputInner.new(Window_Base.new(0,0,0,0), item, @item_window.index)
  403. @number_window.viewport = @viewport
  404. @number_window.start
  405. end
  406. def create_help_window
  407. @help_window = Window_Weight_Help.new
  408. @help_window.viewport = @viewport
  409. end
  410. end
  411.  
  412. #==============================================================================
  413. # ** Window_MenuStatus
  414. #------------------------------------------------------------------------------
  415. # Esta janela exibe os parâmetros dos membros do grupo na tela de menu.
  416. #==============================================================================
  417.  
  418. class Window_Item_Combine < Window_Command
  419. include Lune_Weight
  420. #--------------------------------------------------------------------------
  421. # * Inicialização do objeto
  422. #--------------------------------------------------------------------------
  423. def initialize
  424. super(0, 0)
  425. self.z = 9999
  426. self.x = (Graphics.width / 2) - (window_width / 2)
  427. self.y = Graphics.height / 2
  428. self.openness = 0
  429. end
  430. #--------------------------------------------------------------------------
  431. # * Aquisição da largura da janela
  432. #--------------------------------------------------------------------------
  433. def window_width
  434. return 160
  435. end
  436. #--------------------------------------------------------------------------
  437. # * Criação da lista de comandos
  438. #--------------------------------------------------------------------------
  439. def make_command_list
  440. add_main_commands
  441.  
  442. end
  443. #--------------------------------------------------------------------------
  444. # * Adição dos comandos principais
  445. #--------------------------------------------------------------------------
  446. def add_main_commands
  447. add_command(Usar, :new_game, true)
  448. add_command(Descartar, :continue, true)
  449. end
  450. end
  451.  
  452.  
  453.  
  454.  
  455. #==============================================================================
  456. # ** Scene_ItemBase
  457. #------------------------------------------------------------------------------
  458. # Esta é a superclasse das classes que executam as telas de itens e
  459. # habilidades.
  460. #==============================================================================
  461.  
  462. class Scene_ItemBase < Scene_MenuBase
  463. def determine_item
  464. @combine_item.close
  465. if item.is_a?(RPG::Item) and item.for_friend?
  466. show_sub_window(@actor_window)
  467. @actor_window.select_for_item(item)
  468. else
  469. item.is_a?(RPG::Item) ? use_item : Sound.play_buzzer
  470. activate_item_window
  471. end
  472. end
  473. end
  474.  
  475. #==============================================================================
  476. # ** Window_NumberInputInner
  477. #------------------------------------------------------------------------------
  478. # Esta janela é utilizada para o comando de eventos [Armazenar Número]
  479. #==============================================================================
  480.  
  481. class Window_NumberInputInner < Window_NumberInput
  482. attr_accessor :nitens
  483. def initialize(message_window, item, index_2)
  484. @index_2 = index_2
  485. @item = item
  486. @get_lost_itens = 0
  487. super(message_window)
  488. end
  489. #--------------------------------------------------------------------------
  490. # * Inicialização do processo
  491. #--------------------------------------------------------------------------
  492. def start
  493. @digits_max = 2
  494. @number = @get_lost_itens
  495. @number = [[@number, 0].max, 10 ** @digits_max - 1].min
  496. @index = 0
  497. update_placement
  498. create_contents
  499. refresh
  500. open
  501. activate
  502. end
  503. #--------------------------------------------------------------------------
  504. # * Atualização da posição da janela
  505. #--------------------------------------------------------------------------
  506. def update_placement
  507. self.width = @digits_max * 20 + padding * 2
  508. self.height = fitting_height(1)
  509. self.x = (Graphics.width - width) / 2
  510. self.y = Graphics.height/2 - height
  511. self.z = 150
  512. end
  513.  
  514. #--------------------------------------------------------------------------
  515. # * Definição de resultado ao pressionar o botão de confirmação
  516. #--------------------------------------------------------------------------
  517. def process_ok
  518. number = $game_party.item_number(@item)
  519. if @number <= number
  520. make_icon
  521. else
  522. Sound.play_cancel
  523. end
  524. deactivate
  525. @nitens = true
  526. close
  527. end
  528. def make_icon
  529. @nitens = true
  530. if @item.note =~ /<keyitem>/
  531. Sound.play_cancel
  532. else
  533. Sound.play_ok
  534. $game_party.lose_item(@item, @number)
  535. end
  536. end
  537. end
  538.  
  539. #==============================================================================
  540. # ** Window_ItemList
  541. #------------------------------------------------------------------------------
  542. # Esta janela exibe a lista de itens possuidos na tela de itens.
  543. #==============================================================================
  544.  
  545. class Window_ItemList < Window_Selectable
  546. #--------------------------------------------------------------------------
  547. # * Definição de habilitação do item
  548. # item : item
  549. #--------------------------------------------------------------------------
  550. def enable?(item)
  551. true
  552. end
  553. end
  554.  
  555. $lune_weight_script = true
Add Comment
Please, Sign In to add comment