-
Posts
175 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Posts posted by makgyver
-
-
Ecco la Scene_Item modificata e tutto ciò ke ti serve:
sostituisci la classe Window_Item con questa nuova (che si chiama con lo stesso nome come tutte):
class Window_Item < Window_Selectable attr_accessor :kind #-------------------------------------------------------------------------- # ● Inizializzazione dell'oggetto #-------------------------------------------------------------------------- def initialize(kind = 0) super(0, 128, 640, 352) @column_max = 2 refresh self.index = 0 # Durante una finestra si muove al centro dello schermo e diventa # translucente if $game_temp.in_battle self.y = 64 self.height = 256 self.back_opacity = 160 end @kind = kind end #-------------------------------------------------------------------------- # ● Acquisizione di un oggetto #-------------------------------------------------------------------------- def item return @data[self.index] end #-------------------------------------------------------------------------- # ● Aggiornamento #-------------------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] # Aggiunta di un oggetto case @kind when 0 for i in 1...$data_items.size if $game_party.item_number(i) > 0 @data.push($data_items[i]) if (not Filter_Items::SPECIAL_ITEMS.include?(i)) end end # Vengono anche aggiunti un'arma e uno scudo se è possibile, # eccetto durante una battaglia when 1 unless $game_temp.in_battle for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0 @data.push($data_weapons[i]) if (not Filter_Items::SPECIAL_WEAPONS.include?(i)) end end for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 @data.push($data_armors[i]) if (not Filter_Items::SPECIAL_ARMORS.include?(i)) end end end when 2 for i in 1...$data_items.size if $game_party.item_number(i) > 0 @data.push($data_items[i]) if (Filter_Items::SPECIAL_ITEMS.include?(i)) end end # Vengono anche aggiunti un'arma e uno scudo se è possibile, # eccetto durante una battaglia unless $game_temp.in_battle for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0 @data.push($data_weapons[i]) if (Filter_Items::SPECIAL_WEAPONS.include?(i)) end end for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 @data.push($data_armors[i]) if (Filter_Items::SPECIAL_ARMORS.include?(i)) end end end end # Se il numero degli oggetti è 0, verrà creato un bitmap e tutti # gli oggetti verranno disegnati @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) for i in 0...@item_max draw_item(i) end end end #-------------------------------------------------------------------------- # ● Disegna un oggetto # index : Numero dell'oggetto #-------------------------------------------------------------------------- def draw_item(index) item = @data[index] case item when RPG::Item number = $game_party.item_number(item.id) when RPG::Weapon number = $game_party.weapon_number(item.id) when RPG::Armor number = $game_party.armor_number(item.id) end if item.is_a?(RPG::Item) and $game_party.item_can_use?(item.id) self.contents.font.color = normal_color else self.contents.font.color = disabled_color end self.contents.font.name = "Arial" self.contents.font.size = 24 x = 4 + index % 2 * (288 + 32) y = index / 2 * 32 rect = Rect.new(x, y, self.width / @column_max - 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) self.contents.draw_text(x + 240, y, 16, 32, ":", 1) self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2) end #-------------------------------------------------------------------------- # ● Aggiornamento del testo di aiuto #-------------------------------------------------------------------------- def update_help @help_window.set_text(self.item == nil ? "" : self.item.description) end end
Poi sostituisci Scene_Item con questa nuova:
class Scene_Item #-------------------------------------------------------------------------- # ● メイン処理 #-------------------------------------------------------------------------- def main # ヘルプウィンドウ、アイテムウィンドウを作成 @choise_window = Window_Choise.new @help_window = Window_Help.new @item_window = Window_Item.new @choise_window.active = true # ヘルプウィンドウを関連付け @item_window.help_window = @help_window # ターゲットウィンドウを作成 (不可視・非アクティブに設定) @target_window = Window_Target.new @target_window.visible = false @target_window.active = false # トランジション実行 Graphics.transition # メインループ loop do # ゲーム画面を更新 Graphics.update # 入力情報を更新 Input.update # フレーム更新 update # 画面が切り替わったらループを中断 if $scene != self break end end # トランジション準備 Graphics.freeze # ウィンドウを解放 @help_window.dispose @item_window.dispose @target_window.dispose @choise_window.dispose end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # ウィンドウを更新 if @choise_window.active == false @help_window.update @item_window.update @target_window.update # ターゲットウィンドウがアクティブの場合: update_target を呼ぶ if @item_window.active update_item return end if @target_window.active update_target return end else @choise_window.update update_choise update_help end # アイテムウィンドウがアクティブの場合: update_item を呼ぶ end def update_choise if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Menu.new(0) end # C ボタンが押された場合 if Input.trigger?(Input::C) $game_system.se_play($data_system.decision_se) @choise_window.active = false @item_window.active = true end @item_window.kind = @choise_window.index @item_window.refresh end #-------------------------------------------------------------------------- # ● フレーム更新 (アイテムウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_item # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # メニュー画面に切り替え @choise_window.active = true @item_window.active = false return end # C ボタンが押された場合 if Input.trigger?(Input::C) # アイテムウィンドウで現在選択されているデータを取得 @item = @item_window.item # 使用アイテムではない場合 unless @item.is_a?(RPG::Item) # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) return end # 使用できない場合 unless $game_party.item_can_use?(@item.id) # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) return end # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # 効果範囲が味方の場合 if @item.scope >= 3 # ターゲットウィンドウをアクティブ化 @item_window.active = false @target_window.x = (@item_window.index + 1) % 2 * 304 @target_window.visible = true @target_window.active = true # 効果範囲 (単体/全体) に応じてカーソル位置を設定 if @item.scope == 4 || @item.scope == 6 @target_window.index = -1 else @target_window.index = 0 end # 効果範囲が味方以外の場合 else # コモンイベント ID が有効の場合 if @item.common_event_id > 0 # コモンイベント呼び出し予約 $game_temp.common_event_id = @item.common_event_id # アイテムの使用時 SE を演奏 $game_system.se_play(@item.menu_se) # 消耗品の場合 if @item.consumable # 使用したアイテムを 1 減らす $game_party.lose_item(@item.id, 1) # アイテムウィンドウの項目を再描画 @item_window.draw_item(@item_window.index) end # マップ画面に切り替え $scene = Scene_Map.new return end end return end end #-------------------------------------------------------------------------- # ● フレーム更新 (ターゲットウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_target # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # アイテム切れなどで使用できなくなった場合 unless $game_party.item_can_use?(@item.id) # アイテムウィンドウの内容を再作成 @item_window.refresh end # ターゲットウィンドウを消去 @item_window.active = true @target_window.visible = false @target_window.active = false return end # C ボタンが押された場合 if Input.trigger?(Input::C) # アイテムを使い切った場合 if $game_party.item_number(@item.id) == 0 # ブザー SE を演奏 $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.item_effect(@item) end end # ターゲットが単体の場合 if @target_window.index >= 0 # ターゲットのアクターにアイテムの使用効果を適用 target = $game_party.actors[@target_window.index] used = target.item_effect(@item) end # アイテムを使った場合 if used # アイテムの使用時 SE を演奏 $game_system.se_play(@item.menu_se) # 消耗品の場合 if @item.consumable # 使用したアイテムを 1 減らす $game_party.lose_item(@item.id, 1) # アイテムウィンドウの項目を再描画 @item_window.draw_item(@item_window.index) end # ターゲットウィンドウの内容を再作成 @target_window.refresh # 全滅の場合 if $game_party.all_dead? # ゲームオーバー画面に切り替え $scene = Scene_Gameover.new return end # コモンイベント ID が有効の場合 if @item.common_event_id > 0 # コモンイベント呼び出し予約 $game_temp.common_event_id = @item.common_event_id # マップ画面に切り替え $scene = Scene_Map.new return end end # アイテムを使わなかった場合 unless used # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) end return end end def update_help text = "" case @choise_window.index when 0 text = "Visualizze gli oggetti comuni." when 1 text = "Visualizza le armi e gli scudi." when 2 text = "Visualizza gli oggetti rari." end @help_window.set_text(text) end end
Infine aggiungi prima di main questa classe e chiamala come vuoi:
module Filter_Items #SPECIAL_ITEM = [id1, id2...] id degli oggetti rari SPECIAL_ITEMS = [1] SPECIAL_WEAPONS = [] SPECIAL_ARMORS = [] end class Window_Choise < Window_Selectable def initialize super(0, 64, 640, 64) commands = ["Oggetti", "Armi", "Rarita'"] @item_max = commands.size @commands = commands @column_max = 3 self.contents = Bitmap.new(width - 32, height - 32) refresh self.index = 0 end #-------------------------------------------------------------------------- # ● Aggiornamento #-------------------------------------------------------------------------- def refresh self.contents.clear for i in 0...@item_max draw_item(i, normal_color) end end #-------------------------------------------------------------------------- # ● Disegna un oggetto # index : Numero dell'oggetto # color : Colore del personaggio #-------------------------------------------------------------------------- def draw_item(index, color) self.contents.font.color = color self.contents.font.name = "Arial" self.contents.font.size = 24 rect = Rect.new(4 + index*220, 0, self.contents.width - 8, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) self.contents.draw_text(rect, @commands[index]) end #-------------------------------------------------------------------------- # ● Cancellazione di un oggetto # index : Numero dell'oggetto #-------------------------------------------------------------------------- def disable_item(index) draw_item(index, disabled_color) end end
Istruzioni:
Semplicemente troverai nell'ultima classe ke hai inserito all'inizio 3 array all'interno del modulo Filter_Items li inserisci gli id degli oggetti, armi o armature kefanno parte degli oggetti speciali e il gioco è fatto.
Per qualsiasi problema o domanda sai dove trovarmi.
-
In un menù che ho postato tempo fa c'era proprio la suddivisione degli oggetti in ogg-rarità non so se esista uno script ma per farlo non è difficile. Per esempio puoi crearti o un vettore o un Hashtable con gli id degli oggetti rari cosicchè in fase di visualizzazione nel menu puoi filtrarli escludendo o includendo solamente tali id. Non è molto difficile se hai problemi posso provare ad aiutarti.
-
mmm ok provo a fare qualche cosa a casa speriamo bene ^^ Grazie

una variabile che in Scene_Title indica già se ci sono o meno salvataggi è @continue_enabled che viene impostata a true o false in base al risultato del ciclo for appena successivo alla sua dichiarazione (questo almeno nell' XP) e li puoi fare un:
if @continue_enabled #fai fare la scelta magari creandoti una piccola window_Command con le 2 scelte else #fai partire l'intro end
non so essere più preciso xke non scripto in VX ma spero di esserti stato d'aiuto.
-
Crea presto il Texas Hold'em!!! Mi serve!!!

Ci sto lavorando su, dovrei essere a buon punto ma è molto più difficile del previsto :unsure:
-
Descrizione:
Questo "Progetto" consiste nella creazione degli script, e correlata grafica, che simulano in tutto e per tutto i giochi dei Casinò cosicchè se volete creare un casinò o più semplicemente permettere ai personaggi dei vostri RPG di giocare "d'azzardo"(così magari i pg guadagnano soldi divertendosi) con giochi che esistono e sono belli da giocare.
Il topic cmq avrà in se la lista di tutti gli script creati che saranno postati in topic a se stanti.
Autore:
IO (makgyver)
Lista script realizzati:
- BlackJack V1.1 (Carte grandi - Funzionalità minime)
- BlackJack V2.1 (Carte piccole - Ricco di funzioni)
Lista script in lavorazione:
- Texas Hold'em V1.0 Beta (Grafica simile a BlackJack V2.1)
-
@losco:
lo [0] e il [2] sono gli indici degli array cui si riferiscono... arr1[0] indica prendi il primo valore all'interno dell'array, arr1[2][0] significa prendi il terzo valore dell'array arr1 che a sua volta tale valore è un array allora di questo array (arr1[2] e come se fosse astrattamente un nuovo array) prendimi il primo elemento quindi [0] e in definitiva arr1[2][0]... Spero di essere stato chiaro...
-
Allora in mancanza di Mikb ti dico io:
la prima riga è ok, la seconda non è sbagliata ma credo ke l'esercizio intendesse di riferirsi ai 2 numeri del primo array e non di riscrivere "a mano" i 2 numeri. Cioè scrivere
arr2 = [arr1[...]+arr1[...], ...]
la terza riga è ok, e l'ultima invece è sbagliata(sempre se non ho inteso male io il significato dell'es.) xke dovevi inserire nella terza posizione riferendoti a essa e non riscrivendo completamente l'array e mettendo nella terza posizione il valore.
@Mikb: scusami per l'intrusione ma è per risp più velocemente a ki scrive in caso dica qualcosa di errato dimmi pure!!
EDIT: cavolo mi hai bruciato sul tempo!! sorry Mikb x la doppia risposta!!
-
Si sono scripter... la tua idea non sarebbe male xò si dovrebbero trovare tempi uguali tra maestri e allievi e ki come me ha la maggior parte della giornata occupata (da domani) farebbe fatica a fare qualcosa... Un'altra cosa ke si potrebbe fare è creare una mini-guida ke ha in se tutte le lezioni già scritte (stile libro scolastico) e ki è al passo con le lezioni e non vuole aspettare intanto può esercitarsi con le lezioni successive oppure, mettendo altri esercizi fare quelli... Però bisogna sentire Mikb xke è il suo corso io sono solo un supervisore ke quando posso lo aiuto...
-
Si credo tu abbia ragione... Io direi magari di mettere a ogni lezione la "durata" ovvero dal momento in cui parte fino al momento in cui si aspettano le risposte, e la lezione seguente parte subito dopo così chi vuole seguire passo passo deve rispettare quei tempi altrimenti dovrà mettersi in pari, una sorta di "fuori corso" anke se è brutto da dire... Vediamo ke ne pensa Mikb...
-
Eh l'ieda è proprio texas hold'em anke xke almeno li c'è bisogno di abilità oltre ke della fortuna... Solo ke da programmare è un po difficile anke xke qui entrano nel gioco altri giocatori... xò cercherò di fare del mio meglio...
-
Premetto che sono uno scripter del XP cmq il fatto ke il danno lo vedi prima dell'animazione è o meglio può essere dovuto da 2 fattori(insieme o singolarmente qst non saprei):
1) Gli script sono più veloci degli eventi;
2) Il momento in cui fai partire l'evento è troppo dopo il momento in cui viene visualizzato il danno
Il modo per risolvere questo può essere quello di anticipare l'evento e ritardare (tramite script) la visualizzazione del danno...
-
Mitico! Adoro il minigame del BlackJack! Lo userò nei miei progetti ;)
Tra un pò posto la versione 2.1 con alcune nuove cose, tipo che la frase di vittoria e sconfitta esce a random e non è fissa... Cmq grazie mille!!
EDIT: L'aggiornamento è disponibile, lo script V. 2.1 è stato uppato... Buon divertimento!!
-
+tatterdemalion
Davvero Molto bello...
-
Benvenuto!!
-
Mi scuso per il doppio post ma l'aggiornamento apportato allo script è notevole.
E' disponibile la versione 2.0 del gioco del blackjack le differenze con la 1.1 sono:
- Le puntate vengono effettuate tramite fiches ke vengono visualizzate a video;
- E' visualizzata una barra dei soldi ke indica se state perdendo (vedendo anke indicativamente quanto) o guadagnando (la barra diventa verde);
- La grafica delle carte è cambiata(migliorata oso dire e ringrazio i grafici di Windows Vista);
- E' stato aggiunto un puntatore "alla mano" ovvero quando si sdoppia si vede a quale mano sono riferite le azioni ke state compiendo;
- Minor pesantezza della grafica (da 3.1 a 1.7 MB di grafica);
- Infine sono cambiate la disposizione di alcune finestre.
Per commenti, consigli, critiche o altro io sono qui. Grazie, a presto con un nuovo script o con aggiornamenti!!
-
Se apportesti le modifiche per poi postare lo script completo faresti contenti un po tutti:D
Appena posso lo faccio ora mi sto occupando di altri script ma al più presto cerco di postare la versione aggiornata...
-
Le carte si possono sempre contare, e in un gioco è pure più facile visto che puoi segnarti tutte le carte che escono su un foglio...
Basta che il tuo script non bari (ovvero non venga generato un mazzo nuovo per ogni singola partita ma le carte finiscano in fondo al mazzo) e il gioco è pronto per essere contato...
Eh no a ogni mano il mazzo è nuovo e mischiato quindi contare è impossibile...
-
io l'help di rpg maker ce l'ho in giapponese e non lo capisco, quindi posso guardare solo gli esempi.
sicuramente parlerò di p e print, ma finora non ce n'è stato bisogno. A proposito, ci sono differenze sostanziali fra i due?
la prossima lezione credo tratterà gli array, dopodichè o funzioni, classi e moduli, o cominciamo con condizioni e cicli
Ti consiglio di fare prima le condizioni e i cicli delle funzioni e delle classi xkè così hanno materiale per poter far fare qualcosa di abbastanza "complesso" in una funzione e/o metodi di una classe, e anke xke i cicli sono direttamente collegati al concetto di array (vettore)... Cmq sta andando molto bene il corso grande mikb89!!
-
allora premetto che sei un mostro in ruby, lo script funge che è una bellezza solo una cosa, quando rende le cose rende solo le armi e non gli scudi,perche se metto un mithril shield lui me lo cambia come un lether whip e sono entrambi numerati come 005 quindi credo che se noi in give_armors modifichiamo questa riga
$game_party.gain_item($data_weapons, @armor)
cosi:
$game_party.gain_item($data_armors, @armor)
dovrebbe... SIIIIII funge evviva che bello, sono quasi commosso, sei un asso makguyver!!! davvero
ti chiederei di insegnarmi qualcosa ma è già molto quello che hai fatto, davvero grazie voglio troppo sdebitarmi con te :D
Si si era giusto mettere armors mi ero dimenticato di modificare la riga
... Beh grazie mille dei complimenti valoroso guerriero (adoro guru guru) sono contento ti "funga" tutto... Per qualsiasi cosa sai dove trovarmi... -
Bello script complimenti e poi il BlackJack mi piace molto^^
Grazie mille!! Piace anke a me come gioco specialmente dopo aver visto il film 21!! In effetti mi era venuta la tentazione di creare lo script come se giocasse come in un vero casinò con la possibilità di contare le carte....
EDIT: Aggiustato piccolo bug nel girare della carta del banco!!
-
Si credo si possa fare, inoltre xò devo dire ke c'è un piccolo bug k xò fa andare in crash il gioco. L'errore è dovuto ad alcune variabili ke in alcuni istanti posso essere nulle credo cmq non ci voglia molto a sistemarlo.. Si l'idea principale in effetti era di collegarlo all'effeto giorno-notte basta cambiare le variabili @hour e @min (e ovviamente risolvere il problema ke ho detto prima)...
-
grazie grandissimo, purtroppo da ancora errore non riconosce il metodo equip.
immaginavo era un dubbione ke avevo.. xò è un passo avanti ke sia un errore così... apetta un attimo ke guardo cosa devi mettere appena lo trovo edito questo messaggio e ti dico...
EDIT:
cambia le 2 righe actor.equip(0,0) e (1,0) con
actor.change_equip(0,nil) actor.change_equip(1,nil)
-
bene... vuol dire che devo lasciar perdere l'idea, conviene segnalare che lo script è incompatibile con il vx
Beh nell'altro topic ke hai aperto ho provato a convertire a mano il codice, premetto e di rgss2 non ho mai scritto una riga ma in teoria le modifiche che ho fatto non sono sbagliate...
-
Ok testato,lo script sembra girare bene,premetto che non so le regole del giocoxD
Comunque riguardo al tuo progetto casinò graficamente forse posso aiutarti
Beh le regole sono semplici ki si avvicina più a 21 senza andare oltre vince. Sdoppiare vuol dire ke se le prime 2 carte sono uguali giochi 2 mani contemporaneamente. Raddoppiare vuol dire ke punti il doppio e giri una sola carta in più.
Per il progetto ti so dire xke devo ancora decidere ke giocki inserire in questo "set" vorrei anke il poker ma da programmare è un casino...

Suddividere gli oggetti(equip.rarità ecc)
in Richieste scripts RGSS (XP)
Posted