Autore: io
Requisiti : plugin visustella core (il message sicuro)
Descrizione : se l'abilità è legata a uno o più statistiche di base del personaggio (attacco,difesa ecc.) queste vengono mostrate singolarmente e con totale nella sua descrizione (battaglia e fuori battaglia).
Credit : Visustella
Passo 1 : dedicate una variabile di gioco al contenimento di quello che sarà la gestione del totale . Nel caso da me trattato io ho usato la variabile con id 2 dandole il nome : salvo_tot
Codice e posizione : si usa la text macros del plugin message core di Visustella, il codice viene scritto direttamente li
Esempi:
Procedura : aprire il plugin message core\Text macros
Scrivi il nome (questo ti servirà per richiamare il codice dalla descrizione dell'abilità). Elimina quello che trovi scritto in STR: Text. Aggiungi il codice (che troverai sotto l'immagine) nella sezione JS: Text
Passo 2 : Bisogna creare 7 macro , una per ogni abilità e l'ultima per il totale . Il codice per le abilità è il seguente :
if (!$gameParty.inBattle()){
let x = $gameParty.menuActor().actorId();
for (o = 0; o < 42; o++){
if ($gameActors.actor(x).hasSkill(o)){
let y = $gameActors.actor(x).atk;
let b = $gameVariables.value(2);
let somma = y + b;
$gameVariables.setValue(2,somma);
return $gameActors.actor(x).atk;
}
}
} else {let a = BattleManager.actor().actorId();
let y = $gameActors.actor(a).atk;
let b = $gameVariables.value(2);
let somma = y + b;
$gameVariables.setValue(2,somma);
return $gameActors.actor(a).atk;};
Questo è quello relativo all'attacco . Cambiare ogni 'atk' con la relativa abreviazione per tutte le altre abilità (def,mat,mdf,agi,luk).
Spiegazione codice:
1) controlla se il gruppo non è in battaglia
2) salva in una variabile l'id dell'attore selezionato dal menu
3) ciclo che racchiude tutti gli id del database (o , se volete, solo una parte di esso) abilità (sostituite il 42 con il numero massimo del vostro database abilità + 1 )
4) (il precedente ciclo mi serve per questo controllo). Controlla se l'attore che è stato selezionato dal menu possiede una delle abilità del database
5) salvo il valore attacco dell'attore selezionato in una variabile locale
6) salvo il valore della variabile di gioco con id 2 in una variabile locale (questo mi serve x calcolare il futuro totale)
7/8/9) in pratica aumento la variabile di gioco con id 2 di = suo valore + statistica dell'attore selezionato
10) (il return) restituisco il valore della statistica dell'attore selezionato a quello che sarà il mio comando per richiamarlo .
blocco else = fa le stesse cose delle precedenti istruzioni tranne che considera l'id dell' attore attualmente attivo in battaglia ( . BattleManager.actor().actorId();)
Questo blocco viene usato durante la battaglia.
Codice per il totale :
let a = $gameVariables.value(2);
$gameVariables.setValue(2,0);
return a;
Spiegazione :
1) salvo l'attuale valore in una variabile locale
2) resetto la variabile di gioco con id 2 a zero (altrimenti aumenterebbe di continuo ad ogni selezione)
3) restituisco il valore del totale (prima che venga azzerato) a quello che sarà il mio comando per richiamarlo
In descrizione abilità : Ricordate i return ? , vengono richiamati dai comandi inseriti tra parentesi quadre (che sono anche i titoli che abbiamo dato alle macro). Ovviamente il tutto deve essere coerente con la formula danno da voi inserita
Fine .
Precisazione : non sono un programmatore esperto(sto cercando di imparare) e questo codice ha delle evidenti limitazioni (non può fare operazioni e forse è pure molto rozzo).
Per i motivi sopra citati chiedo a chi ne sa più di me qualche suggerimento su come migliorare questo codice