roste91
-
Posts
16 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Posts posted by roste91
-
-
Ho provato a creare un game da solo e, non essendo ne scripter ne grafico, mi sono accorto che il gioco stava venendo carino ma non "particolare" e quindi ho deciso di cercare qualcuno interessato al progetto.
Il gioco è tratto dalla serie di Librigame di Lupo Solitario.Per chi non conoscesse l'argomento.
Per chi non avesse voglia di leggere da wiki faccio una panoramica del mondo di gioco: Età medievale (tipica della buona parte degli RPG.)ambiente ricco di arti magiche senza la presenza di cenni fantascentifici (come invece i FF). I malvagi Signori delle Tenebre minacciano la pace del Magnamund(regione in cui sono ambientati i racconti e la nostra storia) e i monaci Ramas, gli unici in grado di fronteggiarli, sono stati sterminati tutti, tutti tranne uno: Lupo Solitario.
Vorrei ricreare un' avventura nel mondo del Magnamund, dove l'eroe può utilizzare liberamente le Arti Ramas che apprenderà nel corso della storia, che si staccherà da quella raccontata dalla collana di libri, creando una specie di "storia alternativa".
Come progetto base avavo pensato di inserire lo script Elaborated Equipment Shop di "The Sleeping Leonhart" e di cambiare il BS magari con il tankentai o uno in tempo reale.
Le Arti le ho già create ma avranno bisogno di una buona revisione perchè sono un po "rozze"
Avrei quindi bisogno di qualcuno disponibile come scripter, grafico, e qualcuno esperto in eventi magari...
Io mi reputo un mapper decente e mi diverto a creare oggetti armi e armature. Purtroppo non ho molta familiarità con i vari parametri da fissare come attacco, difesa, velocità ecc...Quindi mi farebbe comodo qualcuno con questa esperienza.
Grazie mille a chiunque sia interessato!
-
...ok ora funziona... il masso si muove, però quanto premo il tasto A (dovrebbe essere la Z su tastiera giusto?) si blocca il masso e anche il pg.
http://img413.imageshack.us/img413/4368/immaginevg.png
Edit: Risolto! dovevo solo abilitare "ignora movimenti impossibili"
ora è perfetto!
Come posso mettere un'animazione tipo polvere sotto la roccia che rotola?
O meglio... far levitare la roccia?
-
Non mi funziona... appena attivo l'evento si blocca tutto... il pg non si muove e il sasso nemmeno...
-
Ma per "chiama evento azione" intendi "chiama evento comune" e il resto lo devo strutturare come evento comune?
Oppure lo metto nella pagina dell'evento?
-
Aaaaa! Maledette variabili... sarà l'unica comando degli eventi che non so nemmeno interpretare...
Hai tempo, ma soprattutto voglia, di farmi una demo? o una spiegazione dettagliata? perchè non saprei dove sbattere il muso...

-
Però così dovrei cambiare sia la grafica di eroe/evento sia la loro posizione... ovvero invertirla... ma una volta che la roccia è ferma e devo reinvertire la posizione sò dove rimettere l'eroe (poichè è fermo li), ma non posso prevedere dove verrà spostata la roccia...
-
E dopo il Sesto Senso mi serve aiuto anche per la Telecinesi...
E' possibile creare ad eventi qualcosa del genere?:
Sono davanti ad una roccia (quella tonda che può rotolare).
Con IF imposto che, se l'abilità Telecinesi è appresa, l'eroe rimane fermo dov'è e per 3-4 secondi posso muovere a mio piacimento la roccia.
Finiti i 3-4 secondi la roccia rimane dove l'ho lasciata e riprendo a muovere il mio eroe.
Tutto qui...nn so come "prendere possesso" di un evento lasciando fermo l'eroe...
E non pensate sia finita qui... dovrete darmi una mano anche con altre abilità...
Grazie mille a chiunque sopporta le mie richieste e nonostante tutto riesce a capire cosa mi serve...
mah!:rovatfl: :smile: :rovatfl:
-
Ho cercato di capire il più possibile e di farti una demo. Guarda se è quello che volevi.
Perfetto!!! era proprio quello che mi serviva!!! Grazie mille mi hai salvato il progetto!!!
Edit: Però se metto l'evento in inizio automatico per far funzionare tutto, mi sparisce l'hud che ho sullo schermo... come mai?
Edit 2: Risolto! Funziona!
-
Purtroppo non me ne intendo di programmazione... è possibile spostare la mia discussione in "richieste script"?
Magari qualche maker annoiato potrebbe prendere in considerazione questo post. (e sarebbe la seconda volta...
) -
Basta aggiungere una terza pagina VUOTA con attivazione Self Switch A, e mettere ON tale self switch come ultima istruzione della prima pagina dell'evento . . .
Ricapitolando:
Pagina1 - Pressione Tasto - Dai Monete/Infliggi Danni/ecc. + Metti ON self switch A
Pagina2 - Attivazione con Switch "sesto senso" - Processo parallelo - Mostra Balloon
Pagina3 - Attivazione con Self Switch A - Pressione Tasto - Nessun Comando - Magari con grafica che ricordi che l'oggetto è già stato utilizzato
Però in questo modo quando utilizzo l'abilità l'evento rimane su quella pagina e anche con la pressione del tasto nn cambia pagina poichè rimane sulla seconda.
Ho fatto così:
Pagina 1 in action button
@> Play SE
@> Text
@> change gold
@> control self switch A
Pagina 2 in parallel process
Switch 0002 is ON
@> show balloon icon
Pagina 3 in action button
self switch A is ON
@>
-
Il problema è che in questo modo se attivo l'abilità mostra i baloons su tutti gle eventi "di interesse" di tutta la mappa, ed essendo grande non tutti gli eventi saranno visibili durante l'azione quindi rischio di perderne qualcuno.
Provo a semplificare ancora la cosa:
Cammino sul sentiero e di fianco a me c'è una pietra.
| | |
| | |_ Mi incuriosisce: Con "action button" attivo l'evento e, in stile forziere, trovo delle monete.(quindi una volta
| | sola)
| |
| |_ Non ci faccio caso: Però voglio utilizzare il sesto senso quindi premendo X compare sulla roccia il ballons che mi
| avvisa, quindi lo attivo con action button e prendo le mie monete (sempre una volta sola)
|
|_Una seconda pietra mostra il baloon ma nn è nel mio campo visivo: mi sposto e una volta inquadrata, incuriosendomi anche quella, riutilizzo 6° senso. La pietra di prima ovviamente sarà OFF (quindi una semplice roccia in tutto e per tutto)
mentre questa roccia, che già era stata attivata per mostrare il baloons, verrà riattivata nuovamente e mostrerà di nuovo il baloons. Successivamente verrà attivata come la prima roccia: "action button", monete, OFF.
In pratica vorrei che il "parallel process", ovvero il "mostrare il baloons", sia eseguibile all'infinito finchè l'evento non è attivato con "action button". una volta attivato con l' "A B" funzionerà una volta sola, ad esempio donando monete o oggetti, e poi si disattiverà.
Spero di essermi spiegato meglio.

-
Non riesco a creare degli eventi "particolari"...
In pratica mi serve un evento ad esempio un orsetto di peluches che se viene attivato con "action button" faccia diminuire i pv dell'eroe di 5... e fin qui nessun problema.
Ora vorrei che premendo il tasto "x" (la A su tastiera credo) si attivi un ipotetica abilità "sesto senso" che faccia apparire un baloon per far intuire il pericolo, e con una switch lo riporta alla situazione iniziale e cioè a togliere 5 pv se attivato con action button.
E anche questo è molto semplice da programmare. il problema è che premendo una seconda volta X, il baloon nn appare più e quindi se l'oggetto nn è inquadrato nella schermata durante il gioco si rischia di nn vedere il "suggerimento" e cadere nella trappola.
Quindi ricapitolando mi serve un modo per mostrare, con la pressione di uno dei tasti X Y Z L o R, un baloon su un evento senza modificare la sua funzione.
Per capire meglio proverò a fare un esempio:
Il pg si avvicina ad un oggetto lo aziona e scopre che è pericoloso.
se il pg è in dubbio su quell oggetto, prima di attivarlo e scoprire che è pericoloso, attiva l'abilità che mostra un baloon con il punto esclamativo, così si rende conto del pericolo e lo evita.
Stessa cosa con oggetti positivi: se il pg una la stessa abilità, su una roccia che passerebbe inosservata, compare un baloon con la lampadina. il pg si avvicina alla roccia e attivandola riceve delle monete d'oro.
Questa abilità (far apparire i baloons) deve però essere utilizzabile più volte in quanto se la roccia nn è nel mio campo visivo, nn mi accorgo del ballons, ma se muovendomi la inquadro e utilizzo di nuovo l'abilità mi mostra il baloons.
Spero di essere stato chiaro e di non chiedere qualcosa di impossibile. :rovatfl:
Ringrazio anticipatamente chiunque si cimentera in questo lavoro: GRAZIE!

-
UP
Nessuno sa come fare ance solo a eventi?
-
Ho bisogno che qualche anima pia aggiunga a questo script una funzione che mi permetta di cliccare su alcuni eventi attivandoli, senza bisogno che l'eroe ci vada sopra... L'idea è quella di creare un punta e clicca con rpg...credo sia un idea mooolto innovativa...
Cmq posto qui lo script
Grazie in anticipo di ogni eventuale aiuto!
#==================================================================# GMUS Guedez Mouse Use System# Version: 1.0# Released: 26/5/2006 Last Update: 1/6/2006# Thx to: Cadafalso, Near Fantastica, and some guys from asylum!#==================================================================class Mouse_PositionCheck def initialize end def main get_pos end def get_window_index(window) window.get_rect_positions return -1 if window.index == -1 return -2 if window.index == -2 for i in 0...window.get_rect.size if window.get_rect[i][0] < $bg.x and window.get_rect[i][1] < $bg.y and window.get_rect[i][2] > $bg.x and window.get_rect[i][3] > $bg.y return i end end return -999999 end def set_pos(x,y) $setCursorPos.Call(x,y) end #==============================Thx to: Cadafalso=================== def get_pos lpPoint = " " * 8 # store two LONGs $getCursorPos.Call(lpPoint) $bg.x, $bg.y = lpPoint.unpack("LL") # get the actual values end#==================================================================end class Window_Selectable < Window_Base def get_rect_positions index = self.index @rect_position = [] if @rect_position == nil if @rect_position == [] for i in 0...(self.row_max * @column_max) self.index = i update_cursor_rect p = self.cursor_rect.to_s p.gsub!("($1,$2,$3,$4):rect","");p.gsub!("(", ""); p.gsub!(")", "") p = p.split(/,\s*/) @rect_position[i] = [p[0].to_i + self.x + 16, p[1].to_i - self.oy + self.y + 16, p[0].to_i + p[2].to_i + self.x + 16, p[1].to_i + p[3].to_i - self.oy + self.y + 16] end self.index = index end end def refresh_rect_positions @rect_position = [] get_rect_positions end def get_rect return @rect_position end alias guedez_update update def update get_rect_positions if self.active == true old_index = self.index new_index = $mouse.get_window_index(self) $game_system.se_play($data_system.cursor_se) if old_index != new_index and not new_index == -999999 @index = new_index if old_index != -1 self.cursor_rect.empty if new_index == -999999 self.index = new_index end guedez_update end end # Actualy my script only need the mouse stuff, but i dont think# the rest will bring any trouble :D, so i let the full script #==============================================================================# ** Keyboard Input Module#==============================================================================# Near Fantastica# Version 5# 29.11.05#==============================================================================# The Keyboard Input Module is designed to function as the default Input module# dose. It is better then other methods keyboard input because as a key is # tested it is not removed form the list. so you can test the same key multiple# times the same loop.#============================================================================== #------------------------------------------------------------------------------# * SDK Log Script#------------------------------------------------------------------------------#SDK.log("Keyboard Input", "Near Fantastica", 5, "29.11.05") #------------------------------------------------------------------------------# * Begin SDK Enable Test#------------------------------------------------------------------------------#if SDK.state("Keyboard Input") == true module Keyboard #-------------------------------------------------------------------------- @keys = [] @pressed = [] Mouse_Left = 1 Mouse_Right = 2 Back= 8 Tab = 9 Enter = 13 Shift = 16 Ctrl = 17 Alt = 18 Esc = 27 Space = 32 Numberkeys = {} Numberkeys[0] = 48 Numberkeys[1] = 49 Numberkeys[2] = 50 Numberkeys[3] = 51 Numberkeys[4] = 52 Numberkeys[5] = 53 Numberkeys[6] = 54 Numberkeys[7] = 55 Numberkeys[8] = 56 Numberkeys[9] = 57 Numberpad = {} Numberpad[0] = 45 Numberpad[1] = 35 Numberpad[2] = 40 Numberpad[3] = 34 Numberpad[4] = 37 Numberpad[5] = 12 Numberpad[6] = 39 Numberpad[7] = 36 Numberpad[8] = 38 Numberpad[9] = 33 Letters = {} Letters["A"] = 65 Letters["B"] = 66 Letters["C"] = 67 Letters["D"] = 68 Letters["E"] = 69 Letters["F"] = 70 Letters["G"] = 71 Letters["H"] = 72 Letters["I"] = 73 Letters["J"] = 74 Letters["K"] = 75 Letters["L"] = 76 Letters["M"] = 77 Letters["N"] = 78 Letters["O"] = 79 Letters["P"] = 80 Letters["Q"] = 81 Letters["R"] = 82 Letters["S"] = 83 Letters["T"] = 84 Letters["U"] = 85 Letters["V"] = 86 Letters["W"] = 87 Letters["X"] = 88 Letters["Y"] = 89 Letters["Z"] = 90 Fkeys = {} Fkeys[1] = 112 Fkeys[2] = 113 Fkeys[3] = 114 Fkeys[4] = 115 Fkeys[5] = 116 Fkeys[6] = 117 Fkeys[7] = 118 Fkeys[8] = 119 Fkeys[9] = 120 Fkeys[10] = 121 Fkeys[11] = 122 Fkeys[12] = 123 Collon = 186 Equal = 187 Comma = 188 Underscore = 189 Dot = 190 Backslash = 191 Lb = 219 Rb = 221 Quote = 222 State = Win32API.new("user32","GetKeyState",['i'],'i') Key = Win32API.new("user32","GetAsyncKeyState",['i'],'i') #-------------------------------------------------------------------------- def Keyboard.getstate(key) return true unless State.call(key).between?(0, 1) return false end #-------------------------------------------------------------------------- def Keyboard.testkey(key) Key.call(key) & 0x01 == 1 end #-------------------------------------------------------------------------- def Keyboard.update @keys = [] @keys.push(Keyboard::Mouse_Left) if Keyboard.testkey(Keyboard::Mouse_Left) @keys.push(Keyboard::Mouse_Right) if Keyboard.testkey(Keyboard::Mouse_Right) @keys.push(Keyboard::Back) if Keyboard.testkey(Keyboard::Back) @keys.push(Keyboard::Tab) if Keyboard.testkey(Keyboard::Tab) @keys.push(Keyboard::Enter) if Keyboard.testkey(Keyboard::Enter) @keys.push(Keyboard::Shift) if Keyboard.testkey(Keyboard::Shift) @keys.push(Keyboard::Ctrl) if Keyboard.testkey(Keyboard::Ctrl) @keys.push(Keyboard::Alt) if Keyboard.testkey(Keyboard::Alt) @keys.push(Keyboard::Esc) if Keyboard.testkey(Keyboard::Esc) @keys.push(Keyboard::Space) if Keyboard.testkey(Keyboard::Space) for key in Keyboard::Numberkeys.values @keys.push(key) if Keyboard.testkey(key) end for key in Keyboard::Numberpad.values @keys.push(key) if Keyboard.testkey(key) end for key in Keyboard::Letters.values @keys.push(key) if Keyboard.testkey(key) end for key in Keyboard::Fkeys.values @keys.push(key) if Keyboard.testkey(key) end @keys.push(Keyboard::Collon) if Keyboard.testkey(Keyboard::Collon) @keys.push(Keyboard::Equal) if Keyboard.testkey(Keyboard::Equal) @keys.push(Keyboard::Comma) if Keyboard.testkey(Keyboard::Comma) @keys.push(Keyboard::Underscore) if Keyboard.testkey(Keyboard::Underscore) @keys.push(Keyboard::Dot) if Keyboard.testkey(Keyboard::Dot) @keys.push(Keyboard::Backslash) if Keyboard.testkey(Keyboard::Backslash) @keys.push(Keyboard::Lb) if Keyboard.testkey(Keyboard::Lb) @keys.push(Keyboard::Rb) if Keyboard.testkey(Keyboard::Rb) @keys.push(Keyboard::Quote) if Keyboard.testkey(Keyboard::Quote) @pressed = [] @pressed.push(Keyboard::Mouse_Left) if Keyboard.getstate(Keyboard::Mouse_Left) @pressed.push(Keyboard::Mouse_Right) if Keyboard.getstate(Keyboard::Mouse_Right) @pressed.push(Keyboard::Back) if Keyboard.getstate(Keyboard::Back) @pressed.push(Keyboard::Tab) if Keyboard.getstate(Keyboard::Tab) @pressed.push(Keyboard::Enter) if Keyboard.getstate(Keyboard::Enter) @pressed.push(Keyboard::Shift) if Keyboard.getstate(Keyboard::Shift) @pressed.push(Keyboard::Ctrl) if Keyboard.getstate(Keyboard::Ctrl) @pressed.push(Keyboard::Alt) if Keyboard.getstate(Keyboard::Alt) @pressed.push(Keyboard::Esc) if Keyboard.getstate(Keyboard::Esc) @pressed.push(Keyboard::Space) if Keyboard.getstate(Keyboard::Space) for key in Keyboard::Numberkeys.values @pressed.push(key) if Keyboard.getstate(key) end for key in Keyboard::Numberpad.values @pressed.push(key) if Keyboard.getstate(key) end for key in Keyboard::Letters.values @pressed.push(key) if Keyboard.getstate(key) end for key in Keyboard::Fkeys.values @pressed.push(key) if Keyboard.getstate(key) end @pressed.push(Keyboard::Collon) if Keyboard.getstate(Keyboard::Collon) @pressed.push(Keyboard::Equal) if Keyboard.getstate(Keyboard::Equal) @pressed.push(Keyboard::Comma) if Keyboard.getstate(Keyboard::Comma) @pressed.push(Keyboard::Underscore) if Keyboard.getstate(Keyboard::Underscore) @pressed.push(Keyboard::Dot) if Keyboard.getstate(Keyboard::Dot) @pressed.push(Keyboard::Backslash) if Keyboard.getstate(Keyboard::Backslash) @pressed.push(Keyboard::Lb) if Keyboard.getstate(Keyboard::Lb) @pressed.push(Keyboard::Rb) if Keyboard.getstate(Keyboard::Rb) @pressed.push(Keyboard::Quote) if Keyboard.getstate(Keyboard::Quote) end #-------------------------------------------------------------------------- def Keyboard.trigger?(key) return true if @keys.include?(key) return false end #-------------------------------------------------------------------------- def Keyboard.pressed?(key) return true if @pressed.include?(key) return false end #end #------------------------------------------------------------------------------# * End SDK Enable Test#------------------------------------------------------------------------------end #=========================Game_Fixes============================= $showm = Win32API.new 'user32', 'keybd_event', %w(l l l l), ''$showm.call(18,0,0,0)$showm.call(13,0,0,0)$showm.call(13,0,2,0)$showm.call(18,0,2,0)$mouse = Mouse_PositionCheck.new$getCursorPos = Win32API.new("user32", "GetCursorPos", ['P'], 'V')$setCursorPos = Win32API.new("user32", "SetCursorPos", ['I','I'], 'V')$bg = Sprite.new$bg.bitmap = RPG::Cache.icon('Icon')$bg.z = 999999$bg.y = 0$bg.x = 0 module Input if @self_update == nil @self_update = method('update') @self_press = method('press?') @self_rep = method('repeat?') end def self.update @self_update.call $mouse.main Keyboard.update end def self.trigger?(key_code) if @self_press.call(key_code) return true end if key_code == C return Keyboard.trigger?(Keyboard::Mouse_Left) elsif key_code == B return Keyboard.trigger?(Keyboard::Mouse_Right) else return @self_press.call(key_code) end end def self.repeat?(key_code) if @self_rep.call(key_code) return true end if key_code == C return Keyboard.pressed?(Keyboard::Mouse_Left) elsif key_code == B return Keyboard.pressed?(Keyboard::Mouse_Right) else return @self_rep.call(key_code) end end end class Arrow_Enemy < Arrow_Base def update super $game_troop.enemies.size.times do break if self.enemy.exist? @index += 1 @index %= $game_troop.enemies.size end #size = 0 #for i in 0...$game_troop.enemies.size # size += 1 if $game_troop.enemies[i].hp > 0 #end size = $game_troop.enemies.size if size == nil @index = ((size / 640.0) * $bg.x.to_f).to_i if self.enemy != nil self.x = self.enemy.screen_x self.y = self.enemy.screen_y end end end class Arrow_Actor < Arrow_Base def update super @index = 0 if $bg.x > 0 and $bg.x <= 160 and 0 <= ($game_party.actors.size - 1) @index = 1 if $bg.x > 160 and $bg.x <= 320 and 1 <= ($game_party.actors.size - 1) @index = 2 if $bg.x > 320 and $bg.x <= 480 and 2 <= ($game_party.actors.size - 1) @index = 3 if $bg.x > 480 and $bg.x <= 640 and 3 <= ($game_party.actors.size - 1) if self.actor != nil self.x = self.actor.screen_x self.y = self.actor.screen_y end end end class Window_Target < Window_Selectable alias gupdate update def update @defaultx = 0 if @defaultx == nil if @defaultx != self.x @defaultx = self.x self.refresh_rect_positions return else gupdate end end def update_cursor_rect if @index == -1 self.cursor_rect.set(0, 0, self.width - 32, @item_max * 116 - 20) else self.cursor_rect.set(0, @index * 116, self.width - 32, 96) end end end class Scene_Battle def phase3_setup_command_window @party_command_window.active = false @party_command_window.visible = false @actor_command_window.active = true @actor_command_window.visible = true @actor_command_window.x = @actor_index * 160 @actor_command_window.refresh_rect_positions @actor_command_window.index = 0 end end class Scene_Equip def initialize(actor_index = 0, equip_index = 0) @actor_index = actor_index @equip_index = equip_index @actor = $game_party.actors[@actor_index] end alias gmain main def main @dummy = Window_EquipItem.new(@actor, 99) gmain @dummy.dispose end alias gupdate_right update_right def update_right if @right_window.index == -999999 if Input.trigger?(Input::C) $game_system.se_play($data_system.buzzer_se) end else gupdate_right end end def refresh @item_window1.visible = (@right_window.index == 0) @item_window2.visible = (@right_window.index == 1) @item_window3.visible = (@right_window.index == 2) @item_window4.visible = (@right_window.index == 3) @item_window5.visible = (@right_window.index == 4) @dummy.visible = (@right_window.index == -999999) item1 = @right_window.item case @right_window.index when 0 @item_window = @item_window1 when 1 @item_window = @item_window2 when 2 @item_window = @item_window3 when 3 @item_window = @item_window4 when 4 @item_window = @item_window5 when -999999 return end if @right_window.active @left_window.set_new_parameters(nil, nil, nil) end if @item_window.active item2 = @item_window.item last_hp = @actor.hp last_sp = @actor.sp @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id) new_atk = @actor.atk new_pdef = @actor.pdef new_mdef = @actor.mdef @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id) @actor.hp = last_hp @actor.sp = last_sp @left_window.set_new_parameters(new_atk, new_pdef, new_mdef) end end end class Scene_Skill def update_target if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @skill_window.active = true @target_window.visible = false @target_window.active = false return end if Input.trigger?(Input::C) unless @actor.skill_can_use?(@skill.id) $game_system.se_play($data_system.buzzer_se) return end if @target_window.index == -1 used = false for i in $game_party.actors used |= i.skill_effect(@actor, @skill) end end if @target_window.index == -2 target = $game_party.actors[@target_window.index + 10] used = target.skill_effect(@actor, @skill) end if @target_window.index <= -3 $game_system.se_play($data_system.buzzer_se) return end if @target_window.index >= 0 target = $game_party.actors[@target_window.index] used = target.skill_effect(@actor, @skill) end if used $game_system.se_play(@skill.menu_se) @actor.sp -= @skill.sp_cost @status_window.refresh @skill_window.refresh @target_window.refresh if $game_party.all_dead? $scene = Scene_Gameover.new return end if @skill.common_event_id > 0 $game_temp.common_event_id = @skill.common_event_id $scene = Scene_Map.new return end end unless used $game_system.se_play($data_system.buzzer_se) end return end end end class Scene_File def update @help_window.update for i in @savefile_windows i.update end if Input.trigger?(Input::C) if @file_index == -1 $game_system.se_play($data_system.buzzer_se) else on_decision(make_filename(@file_index)) $game_temp.last_file_index = @file_index return end end if Input.trigger?(Input::B) on_cancel return end if $bg.y > 64 and $bg.y < 168 if @savefile_windows[0].selected == false $game_system.se_play($data_system.cursor_se) end @savefile_windows[0].selected = true @savefile_windows[1].selected = false @savefile_windows[2].selected = false @savefile_windows[3].selected = false @file_index = 0 elsif $bg.y > 168 and $bg.y < 272 if @savefile_windows[1].selected == false $game_system.se_play($data_system.cursor_se) end @savefile_windows[0].selected = false @savefile_windows[1].selected = true @savefile_windows[2].selected = false @savefile_windows[3].selected = false @file_index = 1 elsif $bg.y > 272 and $bg.y < 376 if @savefile_windows[2].selected == false $game_system.se_play($data_system.cursor_se) end @savefile_windows[0].selected = false @savefile_windows[1].selected = false @savefile_windows[2].selected = true @savefile_windows[3].selected = false @file_index = 2 elsif $bg.y > 376 and $bg.y < 480 if @savefile_windows[3].selected == false $game_system.se_play($data_system.cursor_se) end @savefile_windows[0].selected = false @savefile_windows[1].selected = false @savefile_windows[2].selected = false @savefile_windows[3].selected = true @file_index = 3 else @file_index = -1 @savefile_windows[0].selected = false @savefile_windows[1].selected = false @savefile_windows[2].selected = false @savefile_windows[3].selected = false end end endclass Scene_Menu def update_status if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @command_window.active = true @status_window.active = false @status_window.index = -1 return end if Input.trigger?(Input::C) unless @status_window.index < 0 case @command_window.index when 1 if $game_party.actors[@status_window.index].restriction >= 2 $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) $scene = Scene_Skill.new(@status_window.index) when 2 $game_system.se_play($data_system.decision_se) $scene = Scene_Equip.new(@status_window.index) when 3 $game_system.se_play($data_system.decision_se) $scene = Scene_Status.new(@status_window.index) end return end end end end class Game_Player def update last_moving = moving? unless moving? or $game_system.map_interpreter.running? or @move_route_forcing or $game_temp.message_window_showing or @cant_move case Input.dir4 when 2 move_down when 4 move_left when 6 move_right when 8 move_up end end last_real_x = @real_x last_real_y = @real_y super if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y $game_map.scroll_down(@real_y - last_real_y) end if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X $game_map.scroll_left(last_real_x - @real_x) end if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X $game_map.scroll_right(@real_x - last_real_x) end if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y $game_map.scroll_up(last_real_y - @real_y) end unless moving? if last_moving result = check_event_trigger_here([1,2]) if result == false unless $DEBUG and Input.press?(Input::CTRL) if @encounter_count > 0 @encounter_count -= 1 end end end end if Input.trigger?(Input::C) check_curor_field if (@field_x == self.x + 1 and @field_y == self.y and self.direction == 6) or (@field_x == self.x - 1 and @field_y == self.y and self.direction == 4) or (@field_x == self.x and @field_y == self.y + 1 and self.direction == 2) or (@field_x == self.x and @field_y == self.y - 1 and self.direction == 8) check_event_trigger_there([0,1,2]) end end if Input.repeat?(Input::C) check_curor_field unless moving? or $game_system.map_interpreter.running? or @move_route_forcing or $game_temp.message_window_showing or @cant_move and not (@field_x == self.x and @field_y == self.y) move_by_mouse end check_event_trigger_here([0]) end end end def check_curor_field dummyx = $game_map.display_x > 0 ? $bg.x + 16 : $bg.x @field_x = dummyx / 32 + $game_map.display_x / 128 @field_y = $bg.y / 32 + $game_map.display_y / 128 end def move_by_mouse dy = @field_x - self.x dx = self.y - @field_y if dx > 0 and dy > 0 #quarter 1 if dx > dy if passable?(self.x, self.y, 8) move_up else move_right end return elsif dx < dy if passable?(self.x, self.y, 6) move_right else move_up end return elsif dx == dy if passable?(self.x, self.y, 8) move_up else move_right end return end elsif dx > 0 and dy < 0 #quarter 2 if dx > -dy if passable?(self.x, self.y, 8) move_up else move_left end return elsif dx < -dy if passable?(self.x, self.y, 4) move_left else move_up end return elsif dx == -dy if passable?(self.x, self.y, 8) move_up else move_left end return end elsif dx < 0 and dy < 0 #quarter 2 if -dx > -dy if passable?(self.x, self.y, 2) move_down else move_left end return elsif -dx < -dy if passable?(self.x, self.y, 4) move_left else move_down end return elsif -dx == -dy if passable?(self.x, self.y, 2) move_down else move_left end return end elsif dx < 0 and dy > 0 #quarter 4 if -dx > dy if passable?(self.x, self.y, 2) move_down else move_right end return elsif -dx < dy if passable?(self.x, self.y, 6) move_right else move_down end return elsif -dx == dy if passable?(self.x, self.y, 2) move_down else move_right end return end elsif dx == 0 and dy < 0 move_left elsif dx == 0 and dy > 0 move_right elsif dx < 0 and dy == 0 move_down elsif dx > 0 and dy == 0 move_up end endend -
Mi servirebbe uno script particolare in stile Monster Hunter:
In pratica un mercante che, utilizzando sia denaro che oggetti nel inventario del party, forgia delle armi e armature.
Esempio:
Uccidi 2 lupi e ottieni 2 "Pelli di lupo"
Il mercante ha una schermata da negozio dove è in vendita il progetto di una "Spada Selvaggia" e per poterla comprare bisogna avere le 2 pelli e 1500G.
Il mercante prende materiale e denaro e ti dà la spada.
Credo sia molto complicato come script, ma se me lo trovate mi salvate il progetto...
Grazie in anticipo!!! :rovatfl:
:rovatfl:

Team per un Nuovo Progetto
in Reclutamento VX e VX-Ace
Posted
Beh... L'ambientazione è tratta da una collana di libri ma la storia sarà completamente inventata da me. I fatti che accadranno nel gioco saranno come una storia alternativa.
O meglio ora che ci penso mi piacerebbe farla contemporaneamente a quella dei libri: nuovi personaggi, nuova avventura ma i fatti importanti che accadono nel libro saranno riscontrabili nella trama del gioco.
Per chiarirci potrebbe essere un po come "il signore degli anelli: la 3a era"... non so se conosci quel gioco...