Sto impazzendo da giorni, mi sono studiato rigo per rigo OGNI script inserito di base nel programma e non sono riuscito a capire come risolvere; dal mio ultimo topic ho imparato tantissimo, infatti sto portando avanti un progettino carino, con un battle system semplice senza grosse pretese ma... non riesco a fargli memorizzare i danni ai singoli nemici, sono riuscito a capire come far apparire gli "Troop" specifici ed utilizzo questo script, creato da me prendendo spunto spulciando gli script base:
def troop_update(troop_id) i = 4 while i < 8 @dx[i].contents.clear i += 1 end # troop->enemies; spazio disponibile 148x114 @enemies = [] troop = $data_troops[troop_id] for i in 0...troop.members.size if $data_enemies[troop.members[i].enemy_id] != nil @enemies.push(Game_Enemy.new(troop_id, i)) end img = RPG::Cache.battler(@enemies[i].battler_name, @enemies[i].battler_hue) # grafic @rect = Rect.new(0, 0, @dx[i+4].width, @dx[i+4].height) @dx[i+4].contents.blt(0, 0, img, @rect) hp = (@enemies[i].hp.to_f*100/@enemies[i].maxhp.to_f).ceil if hp >= 51 && hp <= 100 clrhp = Color.new(0, 255, 0, 255) elsif hp >= 21 && hp <= 50 clrhp = Color.new(255, 125, 0, 255) else clrhp = Color.new(255, 0, 0, 255) end sp = (@enemies[i].sp.to_f*100/@enemies[i].maxsp.to_f).ceil if sp >= 51 && sp <= 100 clrsp = Color.new(0, 0, 255, 255) elsif sp >= 21 && sp <= 50 clrsp = Color.new(255, 0, 255, 255) else clrsp = Color.new(125, 0, 125, 255) end # name @dx[i+4].contents.draw_text(0, 0, @dx[i+4].width - 32, 20, @enemies[i].name, 2) @dx[i+4].contents.font.size = 15 @dx[i+4].contents.font.color = @clrbs # hp @dx[i+4].contents.fill_rect(0, 95, 70, 15, Color.new(0, 125, 0, 255)) @dx[i+4].contents.fill_rect(0, 95, (0.7*hp).ceil, 15, clrhp) @dx[i+4].contents.draw_text(0, 95, 70, 15, @enemies[i].hp.to_s+"/"+@enemies[i].maxhp.to_s, 1) # sp @dx[i+4].contents.fill_rect(72, 95, 70, 15, Color.new(0, 0, 125, 255)) @dx[i+4].contents.fill_rect(72, 95, (0.7*sp).ceil, 15, clrsp) @dx[i+4].contents.draw_text(72, 95, 70, 15, @enemies[i].sp.to_s+"/"+@enemies[i].maxsp.to_s, 1) # color e size standart @dx[i+4].contents.font.color = @clrbs @dx[i+4].contents.font.size = @szbs end # end troop_update end
Graficamente è ancora da studiare quindi non fateci caso, come dicevo ciò che mi sta bloccando è come danneggiare gli hp dei nemici, con "@enemies[i].hp" mi visualizza gli hp attuali del nemico, se provo a fare, per esempio:
@enemies[i].hp -= 100
La variabile "@enemies[i].hp" cambia solo in primo momento ma poi torna ad essere pari a "@enemies[i].maxhp", quindi come è possibile rendere il calcolo definitivo? A dirla tutta avrei decine di idee alternative ma sarebbe mille volte più comodo sfruttare/mutare ciò che il programma già ti presenta, avendo visto varie cose carine, mi manca solo capire questa cosa... spero si sia capito, grazie!