Secuter96 Posted February 10, 2017 Share Posted February 10, 2017 (edited) MultidropDescrizioneQuesto script consente di aumentare il numero di oggetti droppati da un nemico e di aggiungere metodi di drop alternativi.Ho visto che Holy mi ha anticipato con uno script simile, ho messo anche il mio visto che agiscono in modo diverso e sono comunque compatibilil, il mio opera sui nemici mentre quello di holy sulle truppe, si possono anche usare entrambi ho provato e funziona xD.Script aggiornato, stesse funzioni ma fa l'alias di alcuni metodi per aumentarne la compatibilità.Nuova funzione ora disegna anche l'icona! AutoreSecuter Funzioni dello ScriptNuove modalità di drop- quantità di oggetti droppati, un valore o a caso in un intervallo- drop di un oggetto fra un gruppo di oggetti- drop solo alla prima uccisione- drop ogni N uccisioni di quel nemico- drop solo se lo switch X è attivo- drop solo se la variabile Y è maggiore o uguale ad una quantitàSi possono anche combinare più effetti, es. drop ogni 2 uccisioni se lo switch 33 è attivo Categorie di nemici- dividere i nemici in 6 categorie (mob, miniboss, boss, boss finali, mob evento, boss evento)- possibilità di impostare un drop per ogni categoria, es. tutti i boss droppano una Banana- per le condizioni alla prima uccisione e ogni n uccisioni non verrà considerato il singolo nemico ma tutta la categoria Altro- mostra l'icona dell'oggetto- mostra il drop di più oggetti uguali come " Hai ottenuto OGGETTO x 317!- numero massimo di oggetti aumentabile- compatibilità con lo script item_rarity di Hime ma serve anche il mio script aumento escape characters Istruzioni Modifica/Aggiunta del drop<dropN: Condizioni> modifica dell'oggetto numero N (i valori 1,2,3 sono quelli di base, da 4 in poi quelli aggiunti)<add TIPO ID Condizioni> crea un nuovo oggetto (TIPO item, weapon o armor)Se inserisco più ID genererà un array di oggetti di cui ne cadrà uno a caso.es. <add: armor 23 24> dropperà o l'armatura 23 o la 24.Ps: funziona sia con i : che senza in alcuni punti li ho dimenticati ma va comunque xD Condizioni1/N probabilità di ottenere l'oggetto, definita in 1 su NxN definisce la quantità N di oggetti ottenutixN-M definisce un range di quantità da N a Mfirst_only l'oggetto si otterrà solo alla prima uccisione di quel nemicoogniN si otterrà un oggetto assicurato ogni N uccisioniswitchN solo se lo switch numero N è onvarN>M solo se la variabile numero N è maggiore o uguale a M Tag per definire le categorie di nemici<boss> :boss<mini> :mini_boss<final> :final_boss<e_mob> :event_mob<e_boss> :event_bosstutti gli altri :mob Drop per categorie di nemiciOrdine dei parametri [1=>kind, 2=>data_id, 3=>denominator, 4=>quantity, 5=>ogniN, 6=>switch, 7=>variable]kind : 1-> oggetto, 2-> arma, 3-> armaturadata_id : id dell'oggettodenominator : probabilità di drop, es. 20 -> drop 1 ogni 20, ignorato se ogniN è maggiore di 0quantity : in numero(es. 2) o range(es. [1, 3])ogniN : se 1 drop solo alla prima uccisione, se >1 drop ogni N uccusioni, se 0 non applicatoswitch : id dell'switchvariabile : [iD, N] se la variabile numero ID è maggiore o uguale a N Esempi:mob => {true => [1, 110, 1, 1, 10, 0, 0],}Drop dell' oggetto numero 110 ogni 10 uccisioni di nemici normali:boss => {"$game_party.highest_level > 10" => [2, 1, 1, 5],}Drop dell'arma numero 1 in quantità di 5 per tutti i boss se il livello del gruppo è maggiore di 10, è una cosa stupida ma è un esempio. Lol:event_mob => {"$game_switches[74]" => [1, 256, 1, 1, 20],}Drop dell'oggetto 256 ogni 20 nemici uccisi se lo switch 74 è attivo, ad esempio per mettere drop diversi a natale o ad halloween. Configurazione dei parametri nello script. Script $imported = {} if $imported.nil? $imported["Secuter-Multidrop"] = true #============================================================================== # ** Multidrop * #------------------------------------------------------------------------------ # Autore: Secuter # Versione: 1.1.1 #------------------------------------------------------------------------------ # Script che permette di modificare gli oggetti ottenuti dai nemici, si possono # modificare le condizioni per i tre di base o aggiungere oggetti extra. # Inoltre se si ottengono più oggetti uguali nel messaggio di fine battaglia li # mette solo una volta scrivendo es. Hai ottenuto OGGETTO x2!. # Permette di raggruppare i nemici in categorie e aggiungere un determinato # drop a tutta la categoria. #============================================================================== # * Comandi da inserire nel notetag del nemico #------------------------------------------------------------------------------ # SELEZIONE DELL'OGGETTO # <dropN: ...> seleziona l'oggetto già presente numero N, i tre oggetti di base # sono indicati con 1,2,3. # AGGIUNTA DI UN NUOVO OGGETTO # <add TIPO ID ...> aggiunge un nuovo oggetto, TIPO -> item/weapon/armor # SE inserisco più ID genererà un array di oggetti di cui ne cadrà uno a caso. # es. <add: armor 23 24> dropperò o l'armatura 23 o la 24. #------------------------------------------------------------------------------ # COMANDI da inserire al posto dei ... # 1/N probabilità di ottenere l'oggetto, definita in 1 su N # xN definisce la quantità N di oggetti ottenuti # xN-M definisce un range di quantità da N a M # first_only l'oggetto si otterrà solo alla prima uccisione di quel nemico # ogniN si otterrà un oggetto assicurato ogni N uccisioni # switchN solo se lo switch numero N è on # varN>M solo se la variabile numero N è maggiore o uguale a M #------------------------------------------------------------------------------ # * Tag per definire le categorie di nemici # <boss> per i boss # <mini> per i mini-boss # <final> per i boss finali # <e_mob> per i mostri di un evento # <e_boss> per i boss di un evento # se non indicato saranno considerati nella categoria dei :mob #============================================================================== module Default #---------------------------------------------------------------------------- # Parametri per modificare il numero massimo di oggetti nell'inventario #---------------------------------------------------------------------------- MAX_ITEM = 999 #per gli oggetti MAX_EQUIP = 99 #per armi e armature #---------------------------------------------------------------------------- # Contiene i dati del drop a categorie di nemici. # Inserisci i dati dell'oggetto in un vettore secondo le regole seguenti # mantenendo l'ordine dei comandi. # Non puoi saltare dei campi ma se gli ultimi non ti servono puoi non metterli. #---------------------------------------------------------------------------- EXTRA_DROP = { =begin Per aggiungere un oggetto inserisco : true => [VALORI] Per i più esperti al posto di true potete mettere una stringe che richiama un metodo o una condizione. es. $game_party.highest_level > 10 VALORI rappresenta le variabili da passare a EnemyDrop secondo lo schema : [1=>kind, 2=>data_id, 3=>denominator, 4=>quantity, 5=>ogniN, 6=>switch, 7=>variable] kind : 1-> oggetto, 2-> arma, 3-> armatura data_id : id dell'oggetto denominator : probabilità di drop, es. 20 -> drop 1 ogni 20 quantity : in numero(es. 2) o range(es. [1, 3]) ogniN : se 1 drop solo alla prima uccisione se >1 drop ogni N uccusioni se 0 condizioni normali switch : id dell'switch variabile : [ID, N] se la variabile numero ID è maggiore o uguale a N =end :mob => { true => [1, 110, 1, 1, 10, #switch e variabili non mi servono e non le metto ], }, :mini_boss => {}, :boss => { "$BTEST" => [2, 1, 1, 5], true => [1, 110, 1], }, :final_boss => {}, :event_mob => { "$game_switches[74]" => [1, 256, 1, 1, 20], }, :event_boss => {}, } end module Vocab #---------------------------------------------------------------------------- # * Frase detta quando trova più oggetti uguali. #---------------------------------------------------------------------------- ObtainItemComplete = "Hai trovato \eI[%s]\eR[%s]%s\eC[0]!" ObtainItemsComplete = "Hai trovato \eI[%s]\eR[%s]%s\eC[0] x%s!" ObtainItemIcon = "Hai trovato \eI[%s]%s!" ObtainItemsIcon = "Hai trovato \eI[%s]%s x%s!" end #============================================================================== # ** INIZIO DEL CODICE NON MODIFICARE !!! ** #============================================================================== #------------------------------------------------------------------------------ # * Override di make_drop_items #------------------------------------------------------------------------------ class Game_Enemy < Game_Battler alias make_drop_items_mtd make_drop_items def make_drop_items make_drop_items_mtd + update_drop_items + add_drop_items end #---------------------------------------------------------------------------- # * Applica le condizioni al drop esistente : # - aggiunge oggetti se droppa più di uno # - rimuove gli oggetti per cui le condizioni non sono rispettate #---------------------------------------------------------------------------- def update_drop_items enemy.update_drop_items.inject([]) do |r, di| cond = kill_condition(di.ogniN) #controlla se esiste e tutte le condizioni (sw, var, first_only, ogni X) if di.kind > 0 and cond >= 0 and drop_condition(di.switch, di.variable) #funzione random o se drop già definito per kill_condition if rand * di.denominator < drop_item_rate or cond == 1 #quantità -1, quello droppato di base r.push([item_object(di.kind, f_data_id(di.data_id)), f_quantity(di.quantity)-1]) else #rimuove se non droppa r.push([item_object(di.kind, f_data_id(di.data_id)), -1]) end else #rimuove se condizioni non rispettate r.push([item_object(di.kind, f_data_id(di.data_id)), -1]) end end end #---------------------------------------------------------------------------- # * Restituisce un array di oggetti droppati #---------------------------------------------------------------------------- def add_drop_items (enemy.add_drop_items + enemy.drop_extra_items).inject([]) do |r, di| cond = kill_condition(di.ogniN) #controlla se esiste e tutte le condizioni (sw, var, first_only, ogni X) if di.kind > 0 and cond >= 0 and drop_condition(di.switch, di.variable) #funzione random o se drop già definito per kill_condition if rand * di.denominator < drop_item_rate or cond == 1 r.push([item_object(di.kind, f_data_id(di.data_id)), f_quantity(di.quantity)]) else r #non droppa random end else r #condizioni non rispettate end end end #---------------------------------------------------------------------------- # * Restituisce l'id dell'oggetto # Se legge un vettore restituisce un valore random #---------------------------------------------------------------------------- def f_data_id (data_id) return data_id[rand(data_id.size)] if data_id.is_a?(Array) data_id end #---------------------------------------------------------------------------- # * Restituisce la quantità # Se legge un vettore restituisce un valore compreso nel range #---------------------------------------------------------------------------- def f_quantity (quantity) return quantity if not quantity.is_a?(Array) r = quantity[1] - quantity[0] + 1 if r > 0 quantity = quantity[0] + rand(r) else quantity = quantity[0] end quantity end #---------------------------------------------------------------------------- # Controllo per switch e variabili #---------------------------------------------------------------------------- def drop_condition (sw, var) sw_cond(sw) and var_cond(var) end # True se switch ON o condizione disattivata def sw_cond (param) return true if param == 0 return $game_switches[param] end # True se variabile >= X o condizione disattivata def var_cond (param) return true if param[1] == 0 return $game_variables[param[0]] >= param[1] end #---------------------------------------------------------------------------- # * Controlla le condizioni first_only e ogni X. # Ritorna 0 se condizione disattivata, -1 se non droppa, 1 se droppa. #---------------------------------------------------------------------------- def kill_condition (param) return 0 if param[0] == 0 if param[1] battle_killed = $game_party.battle_rank_killed(enemy.rank) else battle_killed = $game_party.battle_killed(enemy_id) end if param[0] > 1 #------------------------------------------------------------------------ # * Controllo per ogni X uccisioni. #------------------------------------------------------------------------ if battle_killed >= 0 and (battle_killed % param[0]) == 0 return 1 else return -1 end else #------------------------------------------------------------------------ # * Controllo per prima uccisione. #------------------------------------------------------------------------ if battle_killed == 1 return 1 else return -1 end end end end #------------------------------------------------------------------------------ # Aggiunta una variabile per indicare la quantità ottenuta di un oggetto ed i # metodi per mostrarlo in un unica volta nel messaggio di fine battaglia. #------------------------------------------------------------------------------ module BattleManager #---------------------------------------------------------------------------- # * Override di gain_drop_items per memorizzare la quantità degli oggetti #---------------------------------------------------------------------------- def self.gain_drop_items initialize_drop_message $game_troop.make_drop_items.each do |item| item = [item, 1] if not item.is_a?(Array) #per compatibilità con script next if not item[0].is_a?(RPG::BaseItem) drop_message(item[0], item[1]) #oggetto + quantità end drop_message.each_key do |item| next if drop_message(item) < 1 #ottiene l'oggetto/i se maggiori di 0 $game_party.gain_item(item, drop_message(item)) icon = item.icon_index #disegna l'icona #colora il testo se hai importato item rarity if $imported[:TH_ItemRarity] and $imported["Secuter-EscapeChar"] if drop_message(item) > 1 #restituisce i messaggi per uno o più oggetti $game_message.add(sprintf(Vocab::ObtainItemsComplete, item.icon_index, item.rarity, item.name, drop_message(item))) else $game_message.add(sprintf(Vocab::ObtainItemComplete, item.icon_index, item.rarity, item.name)) end else if drop_message(item) > 1 #restituisce i messaggi per uno o più oggetti $game_message.add(sprintf(Vocab::ObtainItemsIcon, item.icon_index, item.name, drop_message(item))) else $game_message.add(sprintf(Vocab::ObtainItemIcon, item.icon_index, item.name)) end end end wait_for_message end def self.initialize_drop_message @drop_message = {} end #---------------------------------------------------------------------------- # * Memorizza le quantità degli oggetti droppati per il messaggio #---------------------------------------------------------------------------- def self.drop_message (item = false, value = false) initialize_drop_message if !@drop_message if !item #se false restituisce le quantità @drop_message else if !value #se false restituisce la quantità dell'oggetto @drop_message[item] else if !@drop_message[item] #aggiorna il valore @drop_message[item] = value else @drop_message[item] += value end end end end end #------------------------------------------------------------------------------ # Legge le informazione aggiuntive dal notetag di RPG::Enemy. #------------------------------------------------------------------------------ class RPG::Enemy < RPG::BaseItem #---------------------------------------------------------------------------- # * Ottieni gli oggetti aggiuntivi #---------------------------------------------------------------------------- def add_drop_items return @drop_items2 if !@drop_items2.nil? @drop_items2 = [] text = @note.clone rows = text.scan(/(.+)$/) for row in rows row = row[0] if row[/<add(.+)>/i] #oggetti aggiuntivi kind = 0 data_id = 0 quantity = 1 denominator = 1 ogniN = 0 switch = 0 variable = [0, 0] dati = $1.split(' ') dati.each do |i| if i[/item/] kind = 1 elsif i[/weapon/] kind = 2 elsif i[/armor/] kind = 3 end if i[/first_only/] #solo uno ogniN = 1 next end if i[/ogni(\d+)/] #ogni X ogniN = $1.to_i next end if i[/switch(\d+)/] #switch switch = $1.to_i next end if i[/var(\d+)>(\d+)/] #variabile variable = [$1.to_i, $2.to_i] next end if i[/1\/(\d+)/] #rate denominator = $1.to_i next elsif i[/x(\d+)-(\d+)/] #range quantity = [$1.to_i, $2.to_i] next elsif i[/x(\d+)/] #quantità quantity = $1.to_i next elsif i[/(\d+)/] #id oggetto if data_id.is_a?(Array) data_id.push($1.to_i) elsif data_id > 0 data_id = [data_id, $1.to_i] else data_id = $1.to_i end next end end new_drop_item = RPG::Enemy::DropItem.new(kind, data_id, denominator, quantity, ogniN, switch, variable) @drop_items2.push(new_drop_item) end end return @drop_items2 end #---------------------------------------------------------------------------- # * Ottieni gli oggetti aggiuntivi #---------------------------------------------------------------------------- def update_drop_items return @drop_items3 if !@drop_items3.nil? @drop_items3 = [] text = @note.clone rows = text.scan(/(.+)$/) for row in rows row = row[0] if row[/<drop(\d+):(.+)>/i] #update drop base next if $1.to_i > @drop_items.size kind = @drop_items[$1.to_i - 1].kind data_id = @drop_items[$1.to_i - 1].data_id quantity = 1 denominator = 1 ogniN = 0 switch = 0 variable = [0, 0] dati = $2.split(' ') dati.each do |i| if i[/first_only/] #solo uno ogniN = 1 next end if i[/ogni(\d+)/] #ogni X ogniN = $1.to_i next end if i[/switch(\d+)/] #switch switch = $1.to_i next end if i[/var(\d+)>(\d+)/] #variabile variable = [$1.to_i, $2.to_i] next end if i[/x(\d+)-(\d+)/] #range quantity = [$1.to_i, $2.to_i] next elsif i[/x(\d+)/] #quantità quantity = $1.to_i next end end new_drop_item = RPG::Enemy::DropItem.new(kind, data_id, denominator, quantity, ogniN, switch, variable) @drop_items3.push(new_drop_item) end end return @drop_items3 end #---------------------------------------------------------------------------- # * Ottiene il drop extra della categoria del nemico #---------------------------------------------------------------------------- def drop_extra_items @drop_extra_items if @drop_extra_items @drop_extra_items = [] extra_drop = Default::EXTRA_DROP[rank] extra_drop.each_key do |key| next if not (key.is_a?(String) ? eval(key) : key) new_drop_item = RPG::Enemy::DropItem.new(extra_drop[key]) @drop_extra_items.push(new_drop_item) end return @drop_extra_items end #---------------------------------------------------------------------------- # * Restituisce il rango del nemico, mob boss ecc... #---------------------------------------------------------------------------- def rank @rank if @rank @rank = :mob self.note.split(/[\r\n]+/).each { |row| case row when /<mini>/i @rank = :mini_boss return @rank when /<boss>/i @rank = :boss return @rank when /<final>/i @rank = :final_boss return @rank when /<e_mob>/i @rank = :event_mob return @rank when /<e_boss>/i @rank = :event_boss return @rank end } @rank end end #------------------------------------------------------------------------------ # Aggiunge la quantità al drop. #------------------------------------------------------------------------------ class RPG::Enemy::DropItem #---------------------------------------------------------------------------- # * Stampa nella console tutti i valori dell'oggetto #---------------------------------------------------------------------------- def print_info data_id = @data_id data_id = [data_id] if not data_id.is_a?(Array) data_id.each do |id| case kind when 1 print " #{$data_items[id].name}" when 2 print " #{$data_weapons[id].name}" when 3 print " #{$data_armors[id].name}" end end print " 1/#{@denominator}" print " x#{@quantity.to_s}" print " ogni #{@ogniN.to_s}" if @ogniN[0] != 0 print " sw #{@switch.to_s}" if @switch != 0 print " ver #{@variable.to_s}" if @variable != [0, 0] println "" end def initialize (kind = 0, data_id = 1, denominator = 1, quantity = 1, ogniN = 0, switch = 0, variable = [0, 0]) if not kind.is_a?(Array) @kind = kind @data_id = data_id @denominator = denominator @quantity = quantity @ogniN = [ogniN, false] @switch = switch @variable = variable else @kind = kind[0] ? kind[0] : 0 @data_id = kind[1] ? kind[1] : 1 @denominator = kind[2] ? kind[2] : 1 @quantity = kind[3] ? kind[3] : 1 @ogniN = kind[4] ? [kind[4], true] : [0, true] @switch = kind[5] ? kind[5] : 0 @variable = kind[6] ? kind[6] : [0, 0] end end attr_accessor :quantity attr_accessor :ogniN attr_accessor :switch attr_accessor :variable def quantity @quantity = 1 if !@quantity return @quantity end def ogniN @ogniN = [0, false] if !@ogniN @ogniN end def switch @switch = 0 if !@switch @switch end def variable @variable = [0, 0] if !@variable @variable end end #----------------------------------------------------------------------------- # Metodi che utilizzano le stesse variabili dello script degli # obbiettivi di Holy per contare i nemici solo una volta. # Funzionano sia insieme che separati. #----------------------------------------------------------------------------- class Game_Party < Game_Unit #--------------------------------------------------------------------------- # * Restituisce il numero di uccisioni dello stesso nemico #--------------------------------------------------------------------------- alias enemy_killed_a enemy_killed if $imported["H87_Achievements"] def enemy_killed(enemy_id) if $imported["H87_Achievements"] enemy_killed_a(enemy_id) else @enemy_killed = {} unless @enemy_killed @enemy_killed[enemy_id] = 0 unless @enemy_killed[enemy_id] @enemy_killed[enemy_id] end end #--------------------------------------------------------------------------- # * Aggiunge un nemico ucciso #--------------------------------------------------------------------------- alias add_enemy_killed_a add_enemy_killed if $imported["H87_Achievements"] def add_enemy_killed(enemy_id) if $imported["H87_Achievements"] add_enemy_killed_a(enemy_id) else @enemy_killed = {} if @enemy_killed.nil? @enemy_killed[enemy_id] = 0 if @enemy_killed[enemy_id].nil? @enemy_killed[enemy_id] += 1 end #aumenta anche il contatore della battaglia @battle_killed = {} if @battle_killed.nil? @battle_killed[enemy_id] = 0 if @battle_killed[enemy_id].nil? @battle_killed[enemy_id] += 1 end #--------------------------------------------------------------------------- # * Numero uccisione nell'ultima battaglia # Per contare tutte le uccisioni, ad ogni chiamata restituisce il risultato -1 #--------------------------------------------------------------------------- def battle_killed(enemy_id) @battle_killed = {} unless @battle_killed @battle_killed[enemy_id] = 0 unless @battle_killed[enemy_id] @battle_killed[enemy_id] -= 1 enemy_killed(enemy_id) - @battle_killed[enemy_id] end #--------------------------------------------------------------------------- # * Restituisce il numero di uccisioni dello stesso nemico #--------------------------------------------------------------------------- def rank_killed(rank) @rank_killed = {} unless @rank_killed @rank_killed[rank] = 0 unless @rank_killed[rank] @rank_killed[rank] end #--------------------------------------------------------------------------- # * Metodo per differenziare le uccisioni a fine battalia #--------------------------------------------------------------------------- def battle_rank_killed(rank) @battle_rank_killed = {} unless @battle_rank_killed @battle_rank_killed[rank] = 0 unless @battle_rank_killed[rank] @battle_rank_killed[rank] -= 1 rank_killed(rank) - @battle_rank_killed[rank] end #--------------------------------------------------------------------------- # * Aggiunge un nemico ucciso #--------------------------------------------------------------------------- def add_killed_by_rank(rank) @rank_killed = {} if @rank_killed.nil? @rank_killed[rank] = 0 if @rank_killed[rank].nil? @rank_killed[rank] += 1 #aumenta anche il contatore della battalia @battle_rank_killed = {} if @battle_rank_killed.nil? @battle_rank_killed[rank] = 0 if @battle_rank_killed[rank].nil? @battle_rank_killed[rank] += 1 end #--------------------------------------------------------------------------- # * Resetta i contatori #--------------------------------------------------------------------------- def reset_battle_kill_count @battle_killed = {} @battle_rank_killed = {} end end #----------------------------------------------------------------------------- # Incrementa il numero ad ogni uccisione #----------------------------------------------------------------------------- class Game_Battler < Game_BattlerBase alias die_alias die def die die_alias if !$imported["H87_Achievements"] and enemy? $game_party.add_enemy_killed(enemy_id) end $game_party.add_killed_by_rank(enemy.rank) if is_a?(Game_Enemy) end end #----------------------------------------------------------------------------- # * Resetta il conteggio ad ogni battaglia #----------------------------------------------------------------------------- class Scene_Battle < Scene_Base alias post_start_alias post_start def post_start $game_party.reset_battle_kill_count post_start_alias end end #----------------------------------------------------------------------------- # * Modifica della quantità massima di un oggetto #----------------------------------------------------------------------------- class Game_Party < Game_Unit def max_item_number(item) return Default::MAX_ITEM if item.is_a?(RPG::Item) return Default::MAX_EQUIP end end Bug e conflitti notiNA Esempio di un nemico con i vari comandi http://i.imgur.com/vkqGUDP.png <drop1: x1-2>Modifica l'oggetto 1 (Tenda) impostando un range di drop fra 1 e 2.<drop2: x1-2>Idem per il due.<drop3: first_only>L'oggetto 3 (Lancia di Brunnius) sarà droppato solo alla prima uccisione, es. un oggetto che serve per proseguire nella storia non voglio farne avere più di uno.<add item 2 x4-6>Aggiunge l'oggetto di ID 2 in quantità da 4 a 6, sono le Pozione Alta nello screen di esempio.<damage_multiplier: 2.0>Ignoratelo è un'altro script. xD<boss>Definisce il nemico come un boss, dropperà gli oggetti della categoria :boss. Visualizzazione degli oggetti ottenuti a fine battaglia. http://i.imgur.com/nbpVpgV.png - numero massimo di oggetti aumentabile Edited February 15, 2017 by Secuter96 Link to comment Share on other sites More sharing options...
Guardian of Irael Posted February 10, 2017 Share Posted February 10, 2017 Ah ah mi pareva infatti... be' più sono meglio è! XDUn bel po' di opzioni pure qui con tanto di percentuali di successo.^ ^ (\_/)(^ ^) <----coniglietto rosso, me! (> <) Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^ http://i.imgur.com/KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^ http://i.imgur.com/FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^ REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^ 🖤http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gifhttp://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3http://i.imgur.com/MpaUphY.jpg by Idriu E:3Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44) http://i.imgur.com/PgUqHPm.pngUfficiale"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"http://i.imgur.com/TbRr4iS.png<- Grazie Testament E:3Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^http://i.imgur.com/u8UJ4Vm.gifby Flame ^ ^http://i.imgur.com/VbggEKS.gifhttp://i.imgur.com/2tJmjFJ.gifhttp://projectste.altervista.org/Our_Hero_adotta/ado2.pngGrazie Testament XD Fan n°1 ufficiale di PQ! :DVivail Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che nonavevo programmi di grafica per fare un banner su questo pc XD (ora ho dinuovo il mio PC veramente :D) Rosso Guardiano dellahttp://i.imgur.com/Os5rvhx.pngRpg2s RPG BY FORUM:Nome: Darth Reveal PV totali 2PA totali 16Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.Bozze vesti non definitive qui.Equipaggiamento:Indossa:60$ e 59$ divisi in due tasche interneLevaitanSpada a due mani elsa lungaGuanti del Defender (2PA)Anello del linguaggio animale (diventato del Richiamo)Scrinieri da lanciere (2 PA)Elmo del Leone (5 PA)Corazza del Leone in Ferro Corrazzato (7 PA) ZAINO (20) contenente:Portamonete in pelle di cinghiale contenente: 100$Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)CordaBottiglia di idromeleForma di formaggioTorcia (serve ad illuminare, dura tre settori)Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)Ampolla BiancaSemi di Balissa CAVALLO NORMALE + SELLA (30 +2 armi) contentente:66$Benda di pronto soccorso x3Spada a due maniFagotto per Adara (fazzoletto ricamato) Link to comment Share on other sites More sharing options...
Holy87 Posted February 10, 2017 Share Posted February 10, 2017 Il fatto che ci siano già script simili, non significa che tu non possa pubblicarlo. Anche script con funzioni simili hanno le loro differenze, che possono essere più adatte o meno a seconda delle preferenze di chi li usa e perché magari qualcuno è compatibile con altri script, mentre altri danno conflitto.Riguardo allo script, ho da dire un paio di cose:I metodi sono troppo grandi, tra 1 anno ti dimenticherai tutto e se vorrai fixare qualcosa ti verrà un gran mal di testa.Non fai uso di alias ma crudi override dei metodi esistenti. Ciò causerà incompatibilità con script che operano sui drop et simila. "Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]http://holyres.altervista.org/UserBoard/BannerOverdrive35.pnghttp://holyres.altervista.org/UserBoard/Cap3.pnghttp://www.indiexpo.net/signature/578.png Miei script per RPG Maker VX Ace:*NB Tutti i miei script sono protetti da licenza CC - BY http://i.creativecommons.org/l/by/3.0/88x31.png Questa licenza permette a terzi di distribuire, modificare, ottimizzare ed utilizzare la tua opera come base, anche commercialmente, fino a che ti diano il credito per la creazione originale. Questa è la più accomodante delle licenze offerte. É raccomandata per la diffusione e l'uso massimo di materiali coperti da licenza. Modulo di supporto scripters - per utilizzare le API di Windows facilmente!Sistema Popup generaleHOT - per dei popup più divertenti!Sistema di monete - come in WoWDownload e avviso patch di giocoHOT - Sistema d'aggiornamenti!Sistema degli obiettiviHOT - Per dare un valore aggiunto al tuo gioco!Set Equipaggiamenti - perché vestire pan-dan va di moda!Logo inizialeHOT - flessibilissimo, funzionale e personalizzabile!Requisiti Equipaggiamenti - se vuoi dare un tocco di RPG occidentaleLampeggiamento critico - fa vedere al giocatore un alone rosso intorno allo schermo quando sta per morireMenu titolo person. - uno stile originale per il menu iniziale!Movmento fluido - Puoi muovere in modo stickoso sprite, finestre e viewportTransizioni fluide del menu - Animazione di transizione per le finestre dei menuInfo del gioco dal Titolo - fa sempre bene mostrare i crediti del gioco!Barra generica - una barra per fare quello che vuoiScambio truppe di nemici - utile se usi gli incontri casualiParty multipli - se vuoi avere due gruppi paralleliFinestra dettagli oggetti - Per avere le informazioni più dettagliate su oggetti, equip e abilitàConteggio nemici uccisi - per le quest!Titoli di coda - quando finalmente finirai il gioco!Cartella salvataggi - Per raggruppare i salvataggi in una cartella specifica o nella home dell'utente I miei tutorial:Come distribuire il gioco - e anche come creare un'installazione professionale!RGSS in pillole - Guida completa e facile all'RGSS2 e RGSS3 per novizi ed espertiCome mappare con VX (e VX Ace) - guida base all'uso degli strumenti del mappingLoop delle musiche - come tagliarle in modo da far venire musiche continue senza interruzioni finaliCreare backup dei progetti - per evitare di uccidervi dopo un errore che ha fatto perdere tutto! Link to comment Share on other sites More sharing options...
Secuter96 Posted February 10, 2017 Author Share Posted February 10, 2017 Il fatto che ci siano già script simili, non significa che tu non possa pubblicarlo. Anche script con funzioni simili hanno le loro differenze, che possono essere più adatte o meno a seconda delle preferenze di chi li usa e perché magari qualcuno è compatibile con altri script, mentre altri danno conflitto.Riguardo allo script, ho da dire un paio di cose:I metodi sono troppo grandi, tra 1 anno ti dimenticherai tutto e se vorrai fixare qualcosa ti verrà un gran mal di testa.Non fai uso di alias ma crudi override dei metodi esistenti. Ciò causerà incompatibilità con script che operano sui drop et simila. Hai ragione mi viene già adesso il mal di testa a guardarli. Aggiungendo tutte quelle condizioni e calcoli mi sono usciti un paio di metodi belli incasinati, mi sa che devo accorciarli ancora un po', prima erano anche peggio. Riguardo agli alias ho cercato di usarli il più possibile, riguardando lo script gli override pesanti che ho fatto sono 3, Game_Enemy.drop_items, BattleManager.make_drop_items e RPG.Enemy.gain_drop_items, quest'ultimo ho proprio sbagliato dovrei riuscire a farlo con un alias e anche accorciarlo.Per gli altri due dovevo modificare aggiungere delle condizioni dentro ad un ciclo e non ho trovato un modo di farlo senza riscrivere tutto il metodo. Se hai consigli su come usare di più gli alias intanto provo a sistemare un po' quello che riesco. Link to comment Share on other sites More sharing options...
Holy87 Posted February 10, 2017 Share Posted February 10, 2017 per make_drop_items basterebbe restituire l'array dei drop speciali unito all'array dei drop normali del metodo aliasato.EDIT: da come ho capito, aggiunge delle condizioni ai drop specificati nel db. Perché invece non aggiungi dei drop speciali OLTRE a quelli settabili? Sarebbe molto più utile e semplificherebbe le cose. "Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]http://holyres.altervista.org/UserBoard/BannerOverdrive35.pnghttp://holyres.altervista.org/UserBoard/Cap3.pnghttp://www.indiexpo.net/signature/578.png Miei script per RPG Maker VX Ace:*NB Tutti i miei script sono protetti da licenza CC - BY http://i.creativecommons.org/l/by/3.0/88x31.png Questa licenza permette a terzi di distribuire, modificare, ottimizzare ed utilizzare la tua opera come base, anche commercialmente, fino a che ti diano il credito per la creazione originale. Questa è la più accomodante delle licenze offerte. É raccomandata per la diffusione e l'uso massimo di materiali coperti da licenza. Modulo di supporto scripters - per utilizzare le API di Windows facilmente!Sistema Popup generaleHOT - per dei popup più divertenti!Sistema di monete - come in WoWDownload e avviso patch di giocoHOT - Sistema d'aggiornamenti!Sistema degli obiettiviHOT - Per dare un valore aggiunto al tuo gioco!Set Equipaggiamenti - perché vestire pan-dan va di moda!Logo inizialeHOT - flessibilissimo, funzionale e personalizzabile!Requisiti Equipaggiamenti - se vuoi dare un tocco di RPG occidentaleLampeggiamento critico - fa vedere al giocatore un alone rosso intorno allo schermo quando sta per morireMenu titolo person. - uno stile originale per il menu iniziale!Movmento fluido - Puoi muovere in modo stickoso sprite, finestre e viewportTransizioni fluide del menu - Animazione di transizione per le finestre dei menuInfo del gioco dal Titolo - fa sempre bene mostrare i crediti del gioco!Barra generica - una barra per fare quello che vuoiScambio truppe di nemici - utile se usi gli incontri casualiParty multipli - se vuoi avere due gruppi paralleliFinestra dettagli oggetti - Per avere le informazioni più dettagliate su oggetti, equip e abilitàConteggio nemici uccisi - per le quest!Titoli di coda - quando finalmente finirai il gioco!Cartella salvataggi - Per raggruppare i salvataggi in una cartella specifica o nella home dell'utente I miei tutorial:Come distribuire il gioco - e anche come creare un'installazione professionale!RGSS in pillole - Guida completa e facile all'RGSS2 e RGSS3 per novizi ed espertiCome mappare con VX (e VX Ace) - guida base all'uso degli strumenti del mappingLoop delle musiche - come tagliarle in modo da far venire musiche continue senza interruzioni finaliCreare backup dei progetti - per evitare di uccidervi dopo un errore che ha fatto perdere tutto! Link to comment Share on other sites More sharing options...
Secuter96 Posted February 10, 2017 Author Share Posted February 10, 2017 E' vero! Mi ero complicato tutto per niente xDLo script fa già entrambe le funzioni, basta togliere quella di modifica e lasciare le condizioni solo ai drop aggiuntivi.Grazie, ero io che mi ero incasinato per nulla. Domani metto lo script aggiornato e semplificato. Link to comment Share on other sites More sharing options...
Secuter96 Posted February 11, 2017 Author Share Posted February 11, 2017 (edited) Script aggiornato per migliorarne la compatibilità.Semplificazione di alcuni metodi, ora sono più corti e meno incasinati. xDAlias di make_drop_items e drop_items, ora gestisce le liste di oggetti separatamente e le unisce solo alla fine.Unico override rimasto su gain_drop_items per modificare il messaggio, purtroppo questo sembra necessario.Stesse funzioni di prima, solo che ora effettua il controllo dopo aver ottenuto gli oggetti e nel caso li toglie. Alias della lista e solo dopo li aggiunge. EDIT: Aggiunta anche l'icona degli oggetti nel messaggio. Edited February 12, 2017 by Secuter96 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now