Jump to content
Rpg²S Forum

Sleeping Leonhart

Utenti
  • Posts

    569
  • Joined

  • Last visited

Everything posted by Sleeping Leonhart

  1. @Hash'ak'Gik Per quanto riguarda l'audio non ce un comando che indichi la durata, devi gestirtelo tu. @Squall_Leonheart Per cambiare il limite alla quantità del singolo tipo di oggetto devi agire sul metodo gain_item della classe Game_Party(stiamo parlando di rpg maker Xp no? anche se nel Vx è simile). Come puoi osservare il metdo limita gli oggetti a 99 def gain_item(item_id, n) if item_id > 0 @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min #controlla che il minimo sia 0 ed il massimo 99 end end Quindi ti converrebbe crearti un Hash contenente i valori massimi di ciascun oggetto ed usarlo al posto del 99 come limite superiore. L'hash deve essere una cosa del tipo Max_Item = {1 => 10}Max_Item.default = 99 dove 1 è l'id dell'oggetto, 10 è il limite massimo, e Max_Item.default = 99 è il limite massimo per gli oggetti che non hai definito nell'hash. Ora non ti resta che modificare il metodo in modo che imposti il massimo seguendo l'hash e cioè def gain_item(item_id, n) if item_id > 0 @items[item_id] = [[item_number(item_id) + n, 0].max, Max_Item[item_id]].min end end Ti ho spiegato tutto in modo che tu possa capire tutti i passaggi da fare, inoltre magari può tornare utile ad altri senza appoggiarsi per forza a script esterni. Un ultima cosa, con questo modo non limiti la capicità di acquistare 99 oggetti nello Shop ma puoi usare l'hash per limitarlo nell Scene_Shop, ti posso spiegare anche come modificare quella se serve ;)
  2. Ma non ti funziona la demo o hai cambiato la configurazione della griglia e ti da problemi?
  3. Classico problema di Font credo, usa il main modificato di Dad o usa questo snippet class Font alias fntnvsbl_init initialize def initialize fntnvsbl_init self.name = "MS PGothic" #Tipo di font self.size = 22 #Grandezza endend
  4. Comunque per gli script come regola generale vanno messi sotto tutti gli altri ma sopra il main, quello che ti ho postato io non fa eccezione e credo neanche quelli di heisenman. Per il resto consiglio anche io come suggerisce Guardian di portarlo su mappa e poi fargli fare tutto quello che vuoi via eventi, hai così molte possibilità di personalizzazione e non devi stare a smanettare ulteriormente con gli script :smile:
  5. E invece sono tile, ho dato per scontato che gli servissero quelli, comunque per le coordinate a schermo(in pixel relativo a dove è il pg sullo schermo, non sulla mappa) si può usare $game_player.screen_x, $game_player.screen_y. Comunque non ho mica capito cosa ti serve sai Squall, spiegati meglio xD Tu salvi le coordinate, che ne so in $coord = [$game_player.x, $game_player.y, $game_map.map_id] prima di cambiare mappa, e poi le riusi quando ti servono (ho messo pure l'id della mappa perché in teoria per il trasporto serve anche quello)
  6. Usando il comando draw_text(x, y, width, height, str [, align]) delle bitmap puoi passare come ultimo argomento opzionale l'allineamento del testo che può essere 1 centrato e 2 allineato a destra, questo relativo comunque a quanto spazio gli dai con la width (fai qualche esperimento se non capisci quest'ultima frase perchè non so spiegarlo xP) Dannazione scrivete tutti mentre rispondo?!?! :smile: Per ottenere le coordinate dell'eroe su mappa puoi usare $game_player.x e $game_player.y
  7. Aaaallora, vediamo se ho capito bene, ti serve un pezzo di codice che quando si viene sconfitti in battaglia ti riporti in una determinata mappa giusto? Ora, questo è il codice presupponendo che il BS sia standard: class Scene_Battle def call_gameover $game_temp.next_scene = nil $game_map.setup(1) #Cambia l'1 con l'ID della mappa desiderata, serve ad impostare la mappa su cui verrai portato $game_player.moveto(8, 6) #Cambia 8 con la coordinata X e 6 con la coordinata Y, ti imposta la posizione del player sulla mappa $game_player.set_direction(2) #Imposta la direzione dell'eroe, 2 è Giu, 8 è su, 4 è sinistra e 6 è destra $game_player.refresh $scene = Scene_Map.new #Ti porta dalla battaglia alla mappa $game_map.autoplay #fa partire BGM e BGS se ci sono #Cura tutti, cancella fino a for actor in $game_party.members #scorre i membri del party actor.recover_all #e li cura uno ad uno end #qui se non ti serve @message_window.clear #Pulisce la finestra dei messaggi di battaglia endend Ti ho commentato tutto il codice, vedi se ti servono delle modifiche, se lo vuoi disattivabile ecc... ;)
  8. Ma no ma no, se mi dava fastidio aiutarti neanche ti rispondevo, è un piacere aiutare quando posso, finché ci sono anzi puoi approfittarne xP
  9. Hai commentato via il metodo update nel ciclo lopp che sta nel main Graphics.transition loop do Graphics.update Input.update #update <=DECOMMENTA QUESTO if $scene != self break end end Graphics.freeze@finestrevarie.dispose quindi non viene richiamato, quindi non succede nulla xD
  10. l'update di una scena viene normalmente chiamata una volta a frame, quindi puoi sfruttarlo come un ciclo. Non ho idea del perchè non ti funzioni, forse sbagli a fare qualcosa, non so. Per quello che vuoi fare io mi sono immaginato una cosa del genere #Ciclo che scorre i tasti standard di Rpg Maker for tasto in ["DOWN", "LEFT", "RIGHT", "UP", "A", "B", "C", "X", "Y", "Z", "L", "R", "SHIFT", "CTRL", "ALT", "F5", "F6", "F7", "F8", "F9"] if Input::trigger?(eval("Input::#{tasto}")) #Controlla se il tasto è premuto trasformando la stringa nella costante definita nel modulo Input @tasti.push(tasto) #Se il tasto è premuto viene aggiunto all'array che tiene memoria dell'input @tasti.shift if @tasti.size > 5 #Se l'array eccede i 5 input memorizzati cancella l'input più vecchio end #Questa parte converte l'input digitato in una stringa unica text = "" for t in @tasti text += "#{t};" end #Se l'input corrisponde a una sequenza faccio succedere qualcosa if text.include?("UP;UP;DOWN;") p "ciao" #Cancello l'input memorizzato altrimenti l'operazione di confronto qui sopra si ripete sempre @tasti = [] end #ovviamente puoi aggiungere altre sequenze sotto vedi se ti ci ritrovi. Per dividere un immagine, beh puoi usare il comando blt delle bitmap per prendere una porzione rettangolare di immagine. Direttamente preso dalla guida di rpg maker (tradotto un bel po alla buona) Non ho capito che intendi con "non linearmente"
  11. Beh l'ordine in cui metti le funzioni non conta, l'ho messo dopop perchè, bo, mi piaceva di più li sotto. Per il sistema che vuoi adottare non ho giocato a Zelda però se ho capito bene vuoi controllare se l'input dell'utente corrisponde a una sequenza già conosciuta, giusto? In quel caso probabilemente trasformare in stringa e confrontare può essere si una bella pensata, fammi/facci sapere come va che magari può tornare utile a qualcuno Hai editato mentre scrivevo, meno male che ho fatto anteprima, la funzione è sempre include? puoi fare quindi una cosa del genere s1 = 'abc' s2 = 'skasbczqw' s2.include?(s1) che ti ritorna true ;) Edit: hai ri-editato mentre scrivevo xD
  12. No se passassi un array ad include? ti cercherebbe un array nell'array, roba del tipo: a1 = ['a', 'b', 'c'] a2 = ['z', 'a', 'b', 'c'] a3 = ['a', 'z', ['a', 'b', 'c']] a2.include?(a1) ritorna false a3.include?(a1) ritorna true per il motivo che ti ho anche evidenziato in grassetto :P Per controllare invece se il contenuto di un array è presente in un altro devi usare una funzione ricorsiva, un cosa tipo class Array def includes?(val) for i in 0...self.size if ctrl_seq(val, i, 0) == true return true end end return false end def ctrl_seq(seq, i, iseq) if self[i] == seq[iseq] if iseq < seq.size - 1 if i < self.size - 1 ctrl_seq(seq, i + 1, iseq + 1) else return false end else return true end else return false end endend aggiungi questo pezzo di codice e usa la nuova funzione per array chiamata includes? (ti conviene rinominarla che così magari si confonde :P ) passandogli l'array da confrontare, ad esempio a1 = ['a', 'b', 'c'] a2 = ['s', 'k', 'a', 'b', 'c', 'z', 'q', 'w'] a2.includes?(a1) ritorna a questo punto true :D E' una funzione scritta così su due piedi sicuramente c'è un metodo migliore di questo ( e pensandoci me ne e venuto in mente un'altro un po contorto xD). Fammi sapere se ti è utile quello che ho scritto ;)
  13. Non so se ce un qualche metodo ufficiale, però puoi usare le api di windows, tieni questa funzioncina def tempPath(bfflnght = 80) path = " " * bfflnght Win32API.new("kernel32","GetTempPath",['N','P'],'N').call(bfflnght, path) return path.gsub(/\0.*$/) {}end la richiami con tempPath(NumeroMassimoCaratteri) e ti ritorna la stringa con il percorso dimmi se ti funzica ;)
  14. Non l'ho salvato su pc e non mi sono salvato neanche il percorso di imageshack, però posso modificare quello attuale ..... ....... Si pensò che farò così xD
  15. Nuuu Buon Nasale volevo dirlo io Vabbè Buon Natale a tutti, anche se quest'anno non ho l'avatar natalizio :P
  16. Per The Witcher il fattore difficoltà incide di più sulla dipendenza dall'alchimia che altro ma sicuramente a difficile è molto più godibile. Comunque mi sembra che una mod per la difficoltà ed il bilanciamento nella platinum (se è quella che hai comprato, questa per capirci) ci sia (flash mod credo) se proprio la difficoltà ti fa storcere il naso.
  17. Che sistema operativo usi? se vista o 7 usi la dll apposita? hai provato ad eseguire il Game.exe come amministratore? Più dettagli por favor :D
  18. Premetto che non mi sono messo a leggere tutto ma così su due piedi mi viene da chiederti se hai controllato che la finestra sia abbastanza grande da poter contenere quello che vuoi disegnare. Comunque posta tutto il codice della finestra magari con allegato uno screen che non guasta mai ;)
  19. Cioè vuoi che gli eventi continuino a muoversi? Puoi usare $game_map.update oltre ad aggiornare anche lo Spriteset_Map, non aggiornando l'Intepreter (quello che gestisce le azioni degli eventi) non dovrebbero crearsi problemi. Se invece vuoi solo un immagine animata di sfondo allora ti conviene fare con un altro metodo che se vuoi ti posso spiegare.
  20. Aggiungi questo in un nuovo script e dimmi se va class Scene_Menu alias abs_scene_cpctmn_main main alias abs_scene_cpctmn_update update alias abs_scene_cpctmn_update_skill update_skill def main @shk_window = Window_Command.new(250, ["Abilità assegniata al Tasto"]) @shk_window.visible = false @shk_window.active = false @shk_window.x = 200 @shk_window.y = 250 @shk_window.z = 1500 abs_scene_cpctmn_main @shk_window.dispose end def update @shk_window.update abs_scene_cpctmn_update if @shk_window.active update_shk return end end def update_skill abs_scene_cpctmn_update_skill if Input.trigger?(Input::X) $game_system.se_play($data_system.decision_se) @skill_window.active = false @shk_window.active = true @shk_window.visible = true $ABS.skill_key[1] = @skill_window.skill.id end if Input.trigger?(Input::Y) $game_system.se_play($data_system.decision_se) @skill_window.active = false @shk_window.active = true @shk_window.visible = true $ABS.skill_key[2] = @skill_window.skill.id end if Input.trigger? (Input::Z) $game_system.se_play($data_system.decision_se) @skill_window.active = false @shk_window.active = true @shk_window.visible = true $ABS.skill_key[3] = @skill_window.skill.id end end def update_shk if Input.trigger?(Input::C) $game_system.se_play($data_system.decision_se) @shk_window.active = false @shk_window.visible = false @skill_window.active = true return end endend
  21. Molto interessanti tutti e 2 i contest anche se a me attira solo il gameplay contest per il quale ho votato. Per la questione diversità dei tileset in teoria le differenze sono: 2k, 2k3: 18 Autotile di differente tipologia 288 Tile XP: 7 Autotile che possono essere animati o non Infiniti Tile VX 104 Autotile di differente tipologia(simile al 2k) divisi in TileA1,A2,A3,A4 1152 Tile divisi in TileA5(16*32), TileB,C,D,E (32*32) Il più limitati sono il 2k sul fattore Tile e l'XP sul fattore Autotile, quindi volendo si può fare un allineamento verso il basso a 288 Tile e 7 Autotile per poter mettere il tutto alla pari anche se non so se può essere una cosa adatta per il contest
  22. Mettila qui no?!?!??? Al massimo se l'oggetto non ha Rune mostri "Nessuna runa", oppure nascondi la finestra
  23. Si, volendo si può usare un fattore tempo, facendo una cosa del tipo ((rand(valore) + (Time.now.sec * valore / 60.0)) / 2).ceil cioè prendo i secondi dell'orologio di sistema e li metto in rapporto al valore random che voglio ottenere, poi faccio la media con un valore random ottenuto nel modo classico del ruby. Purtroppo però l'unità più piccola a disposizione è il secondo anche se dovrebbe bastare a rendere le cose un po più random.
  24. Se ho capito bene fai così, aggiungi questo scriptino e rimetti MAX_MEMBERS = 4 class Game_Party def add_actor(actor_id) #cambia il 50 con il numero della switch che desideri max_members = $game_switches[50] == true ? 1 : MAX_MEMBERS if @actors.size < max_members and not @actors.include?(actor_id) @actors.push(actor_id) $game_player.refresh end endend Poi quando vuoi impostare 1 solo membro attivi la switch 50, altrimenti la disattivi, puoi cambiare numero di switch modificando il 50 di $game_switches[50]
  25. vai in Game_Party e imposta MAX_MEMBERS = 1 e dovrebbe andare
×
×
  • Create New...