Rpg˛S Forum uses cookies. Read the Privacy Policy for more info. To remove this message, please click the button to the right:    I accept the use of cookies

Vai al contenuto

Rpg˛S Forum uses cookies. Read the Privacy Policy for more info. To remove this message, please click the button to the right:    I accept the use of cookies

Screen Contest #90

Kamikun






  • Si prega di effettuare il log in prima di rispondere
Come ridurre tramite call script la durabilitā? Selchar - Equipment Durability

    La fine di An Another Life
  • Prode Guerriero

  • Utenti di Natale
  • Rens: 111
  • 3
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 2072 messaggi
  • Sesso:Maschio
  • Provenienza:Inferno, Ade
  • Abilitā:Novizio

#1 Inviato 02 September 2014 - 23:45 PM

Inizialmente avrei voluto lavorare con l'Xail - Item Durability, ma come si evince da altri topic lo script è incompleto e buggato.
Quindi sono passato allo Equipment Durability Ver. 1.06 di Selchar.

Ho necessità di ridurre la durabilità dell'arma equipaggiata in un evento tramite call script.

A questo link, Selchar posta un call script ma è troppo complesso per quel che serve a me e non riesco a capire come farlo funzionare.

Le varie chance e possibilità infatti le gestirei tramite evento con dei branch.
Ho provato diverse volte modificando l'actor id e mettendo il mio, ma mi crasha il gioco.

 

A me servirebbe un semplice riga di codice che riduca di valore (che può essere specificato manualmente o con una variabile) la durabilità dell'arma correntemente equipaggiata
del personaggio principale e unico del mio gioco.
 

Ringrazio in anticipo chi vorrà aiutarmi. ;D


CYNDA BYTES

Spoiler

Creiamo mondi, storie e giochi che possano emozionare.
DEV BLOG <-- Ultime notizie e approfondimenti so quello che stiamo facendo.
SOCIAL Non dimenticarti di seguirmi! :beard:
FACEBOOK TWITTER YOUTUBE GOOGLE PLUS DEVIANTART

 

An Another Life Uan-Ciù The WEBCOMIC
Fumetto online demenziale gratuito che parodizza i manga giapponesi e i giochi di ruolo:
arti marziali, J-Rpg, magia, shonen, combattimenti, ignoranza, tette e tante botte! Leggilo qui sul forum!
Puoi seguirci su Facebook, Twitter o Deviantart. Se il fumetto ti piace, per sostenerci e spronarci ad andare avanti metti un like <3 sui social,
oppure votaci su shockdom! Puoi leggere quest webcomic anche sul nostro blog ufficiale.

GIOCHI COMPLETI
Scarica, gioca e commenta i miei giochi per sostenere il making italiano. :cool:

Bloody Repression (in Inglese, versione ITA disponibile nel topic) -> Topic Ufficiale\ Trailer starring Martis \ Video Gameplay ITA \ Short Gameplay Video ENG

1026.png

LOVE & WAR NEVER CHANGE -> Topic Ufficiale \ Let's Play By Martis

Un gioco breve dalla storia toccante. 2° Posto all Short RTP Game Contest.

666.png

Se non vuoi perderti tutto il mondo della Cynda Bytes (trofei, regali, webcomics, contest...), apri lo spoiler. Lo so che lo vuoi. :sisi:

Spoiler

    Kingartur2
  • Arshes (RmXP)

  • Vincitore Lotteria
  • Rens: 154
  • 0
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 1597 messaggi
  • Sesso:Maschio
  • Provenienza:Nave Madre Aliena
  • Abilitā:Maestro

#2 Inviato 03 September 2014 - 14:25 PM

Premetto che non l'ho provato e che non ho avuto modo di farlo, ma se ho capito bene più o meno dovrebbe andar bene così:

class Game_Interpreter
  def consume_equip(actor_id=1, slot=0, value=10)
    equip = $game_actors[actor_id].equips[slot]
    equip.durability -= value
    if equip.durability < 0
      equip.durability = 0
      equip.break_by_durability($game_actors[actor_id])
    end
  end
end

per utilizzarlo:

consume_equip(ID_EROE, SLOT, VALORE_DI_CONSUMO)
#ID_EROE = ID eroe nel database
#SLOT = 0 è l'arma, da 1 in poi sono tutte le protezioni in ordine come sono mostrate nella schermata equip
#VALORE_DI_CONSUMO = un numero oppure se vuoi usare una variabile $game_variables[ID_VARIABILE] 

Spero funzioni visto che non ho avuto modo di testarlo >_<


Modificato da Kingartur2, 03 September 2014 - 14:26 PM.

Per qualsiasi motivo non aprite questo spoiler.
Spoiler

Immagine inserita

 

Immagine inserita


    Axel Phantom
  • Utente occasionale

  • Utenti
  • Rens: 12
  • 0
  • StellettaStelletta
  • 195 messaggi
  • Sesso:Maschio
  • Provenienza:Osimo [AN]
  • Abilitā:Esperto

#3 Inviato 03 September 2014 - 14:46 PM

Cosa non riesci a capire del codice aggiuntivo che ha fornito Selchar?
Devi incollare questa parte di codice, che è il metodo che andrai a chiamare quando userai il call script, sotto lo script originale; e penso che qui c'eri arrivato.

class Game_Interpreter

  def appraise_equip(actor_id, slot=0, chance=0.5)
    equip = $game_actors[actor_id].equips[slot]
    if rand <= chance
      #What happens with a success goes here.
      #set_suffix(equip, 62) #Sets a suffix to your equip, from Tsukihime's Affixes
      return true
    else
      #What happens with failure goes here
      equip.durability -= rand(10)+1 #(loose between 1 and 10 durability
      if equip.durability < 0
        equip.durability = 0
        equip.break_by_durability($game_actors[actor_id])
      end
    return false
    end
  end
end

 

Per quanto ri guarda questo:

a = $game_variables[7] #Whatever variable you set the actor id to.

s = $game_variables[8] #Whatever variable you set the slot id to if applicable
if appraise_equip(a, s)
  $game_switches[5] = true #Switch you use for eventing after this scriptcall for dialogue/etc...
else
  $game_switches[5] = false#Switch you use for eventing after this scriptcall for dialogue/etc...
end


Devi copiare tutte le sette righe di codice nel call script e modificarlo secondo le tue esigenze:
a = $game_variables[7]

Questa linea significa che l'interprete andrà nella variabile di gioco n°7 e il valore che troverà all'interno di essa sarà l'id dell'actor designato. Quindi basta cambiare il numero 7 dentro le parentesi quadre con un altro numero, per cambiare la variabile di gioco in cui l'interprete andrà a lavorare.
s = $game_variables[8]

Come sopra, solamente che stavolta la variabile numero 8 conterrà l'id dello slot dell'equipaggiamento dell'actor selezionato prima. 
if appraise_equip(a, s)

Ok, questo invece è un po' diverso. Di default la possibilità di ridurre la durabilità tramite questo call script è del 50%. Se vuoi aumentare o ridurre questa possibilità, dentro le parentesi tonde e dopo il carattere 's' aggiungi una virgola ed un numero compreso tra 0 e 1 (dove 1 rappresenta il 100% di successo dell'operazione); ad esempio:
if appraise_equip(a, s, 0.7)

Significa che ora chiamando questo script si ha il 70% di possibilità che la riduzione di durabilità avvenga.

Quello che succede invece nella riga successiva (o nelle righe successive, potresti aggiungere altro codice) fino alla parola chiave 'else' succede solamente se la riduzione di durabilità non ha avuto successo. Lui nello script mette ON su uno switch probabilmente per far partire un evento comune. Invece quello che succede nelle righe sottostanti 'else' fino ad 'end' ha effetto se la riduzione di durabilità è avvenuta (questa volta mette OFF lo switch di gioco numero 5).
 
-
Alternativamente puoi, tramite eventi, usare un conditional branch basato su questo codice
appraise_equip(a, s, c)
dove al posto di 'a' va inserito l'ID dell'actor, al posto di 's' il numero dello slot dell'equipaggiamento e al posto di 'c' la probabilità di successo (come prima).

Ah, non l'ho testato

Modificato da Axel Phantom, 03 September 2014 - 14:49 PM.

9gegqx.png


    La fine di An Another Life
  • Prode Guerriero

  • Utenti di Natale
  • Rens: 111
  • 3
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 2072 messaggi
  • Sesso:Maschio
  • Provenienza:Inferno, Ade
  • Abilitā:Novizio

#4 Inviato 04 September 2014 - 00:42 AM

Dunque, volevo ringraziarvi per l'aiuto offerto.
Ho testato il metodo di kingartur ma non riduce la durabilità dell'arma. Tra l'altro genera un curioso bug che raddoppia l'oggetto. :O Se si prova su un slot non equipaggiato ad esempio l'1,
il gioco crasha: "undefined method durability for nil:NilClass".

Axel ti ringrazio per avermi spiegato dettagliamente come utilizzarlo. Tuttavia utilizzandolo correttamente non succede niente. Anzi si ripresenta il bug del raddoppio dell'arma.
Mentre nella soluzione alternativa non succede niente.

Io utilizzo lo script dell'abs di Falcao, ma questo script per il momento ha sempre funzionato. Se vi fosse un problema di incompatibilità rinuncerei a questo.


CYNDA BYTES

Spoiler

Creiamo mondi, storie e giochi che possano emozionare.
DEV BLOG <-- Ultime notizie e approfondimenti so quello che stiamo facendo.
SOCIAL Non dimenticarti di seguirmi! :beard:
FACEBOOK TWITTER YOUTUBE GOOGLE PLUS DEVIANTART

 

An Another Life Uan-Ciù The WEBCOMIC
Fumetto online demenziale gratuito che parodizza i manga giapponesi e i giochi di ruolo:
arti marziali, J-Rpg, magia, shonen, combattimenti, ignoranza, tette e tante botte! Leggilo qui sul forum!
Puoi seguirci su Facebook, Twitter o Deviantart. Se il fumetto ti piace, per sostenerci e spronarci ad andare avanti metti un like <3 sui social,
oppure votaci su shockdom! Puoi leggere quest webcomic anche sul nostro blog ufficiale.

GIOCHI COMPLETI
Scarica, gioca e commenta i miei giochi per sostenere il making italiano. :cool:

Bloody Repression (in Inglese, versione ITA disponibile nel topic) -> Topic Ufficiale\ Trailer starring Martis \ Video Gameplay ITA \ Short Gameplay Video ENG

1026.png

LOVE & WAR NEVER CHANGE -> Topic Ufficiale \ Let's Play By Martis

Un gioco breve dalla storia toccante. 2° Posto all Short RTP Game Contest.

666.png

Se non vuoi perderti tutto il mondo della Cynda Bytes (trofei, regali, webcomics, contest...), apri lo spoiler. Lo so che lo vuoi. :sisi:

Spoiler

    Axel Phantom
  • Utente occasionale

  • Utenti
  • Rens: 12
  • 0
  • StellettaStelletta
  • 195 messaggi
  • Sesso:Maschio
  • Provenienza:Osimo [AN]
  • Abilitā:Esperto

#5 Inviato 06 September 2014 - 15:30 PM

Non conosco lo script che stai usando, ho solamente letto il post che hai linkato e ti ho spiegato come utilizzarlo. Per il problema che il gioco crasha se selezioni uno slot vuoto è un errore dello script di supporto che ha fornito Selchar (che non controlla se lo slot è vuoto; e se è vuoto ovviamente va in crash perchè non puoi ridurre la durabilità a qualcosa che non c'è) ma si può aggirare. Per il bug del doppio non ne ho idea, non so se sia un problema d'incompatibilità con altri scripts o sia di nuovo un errore dello scripter.

L'ho fatto al volo, ma prova a sostituire questo allo script di supporto che ha dato Selchar, quello alla fine dello script originale.

class Game_Interpreter

  def appraise_equip(actor_id, slot=0, chance=0.5)

    if $game_actors[actor_id].equips[slot] != nil

      equip = $game_actors[actor_id].equips[slot]

      if rand <= chance

        #What happens with a success goes here.

        #set_suffix(equip, 62) #Sets a suffix to your equip, from Tsukihime's Affixes

        return true

      else

        #What happens with failure goes here

        equip.durability -= rand(10)+1 #(loose between 1 and 10 durability

        if equip.durability < 0

          equip.durability = 0

          equip.break_by_durability($game_actors[actor_id])

        end

        return false

      end

    end

  end

end


Modificato da Axel Phantom, 06 September 2014 - 15:38 PM.

9gegqx.png


    La fine di An Another Life
  • Prode Guerriero

  • Utenti di Natale
  • Rens: 111
  • 3
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 2072 messaggi
  • Sesso:Maschio
  • Provenienza:Inferno, Ade
  • Abilitā:Novizio

#6 Inviato 06 September 2014 - 21:11 PM

Grazie per il nuovo tentativo, ma anche questo da errore. Nello specifico "undefined method equips".

Credo che sia proprio un bug dello script.

Pensavo però: non si può simulare una battaglia? Nel senso di ricreare le condizioni che danneggiano l'arma nello script. Sfogliandolo ho trovato questa parte:
 

#===============================================================================
# On Successful Damage
#===============================================================================
  alias :process_weapon_durability_mdv :make_damage_value
  def make_damage_value(user, item)
    process_weapon_durability_mdv(user, item)
    user.process_weapon_durability(item) if user.actor? && @result.hit?
  end

Si potrebbe richiamare? Magari sto dicendo cavolate. In questo campo sono un nabbo totale.


CYNDA BYTES

Spoiler

Creiamo mondi, storie e giochi che possano emozionare.
DEV BLOG <-- Ultime notizie e approfondimenti so quello che stiamo facendo.
SOCIAL Non dimenticarti di seguirmi! :beard:
FACEBOOK TWITTER YOUTUBE GOOGLE PLUS DEVIANTART

 

An Another Life Uan-Ciù The WEBCOMIC
Fumetto online demenziale gratuito che parodizza i manga giapponesi e i giochi di ruolo:
arti marziali, J-Rpg, magia, shonen, combattimenti, ignoranza, tette e tante botte! Leggilo qui sul forum!
Puoi seguirci su Facebook, Twitter o Deviantart. Se il fumetto ti piace, per sostenerci e spronarci ad andare avanti metti un like <3 sui social,
oppure votaci su shockdom! Puoi leggere quest webcomic anche sul nostro blog ufficiale.

GIOCHI COMPLETI
Scarica, gioca e commenta i miei giochi per sostenere il making italiano. :cool:

Bloody Repression (in Inglese, versione ITA disponibile nel topic) -> Topic Ufficiale\ Trailer starring Martis \ Video Gameplay ITA \ Short Gameplay Video ENG

1026.png

LOVE & WAR NEVER CHANGE -> Topic Ufficiale \ Let's Play By Martis

Un gioco breve dalla storia toccante. 2° Posto all Short RTP Game Contest.

666.png

Se non vuoi perderti tutto il mondo della Cynda Bytes (trofei, regali, webcomics, contest...), apri lo spoiler. Lo so che lo vuoi. :sisi:

Spoiler




  • Feed RSS