Lieber Besucher, herzlich willkommen bei: RPG Studio - Make your World real. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

41

Freitag, 2. Juni 2017, 19:02

Klar kann ich dabei helfen ^^

Die lösung ist simpel, einfach den folgenden code hinter zeile 423 schieben:

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
          #unsere endlosschleife für den exit
          loop do
            #alle wichtigen sachen / fenster etc. weiterhin updaten
            Graphics.update
            @sprite.update
            @combination_window.update(@combination)
            Input.update
            if Input.trigger?(Input::C)
              #back to map
              $scene = Scene_Map.new
              return
            end
          end


Freue mich das ich dir helfen kann ^^
  • Info

    Code 4 Life

    Humorvoller bis leicht verrückter Coder mit einer Vorliebe zu Kawaiien Katzen.
    Neko FTW

    (sobald ich kreativere Ideen hierfür hab pack ich das hier rein)
  • Sprachen

    Programmiersprachen:
    - C, C++, C#, Java, Ruby, Lua

    Websprachen
    - JS, HTML, CSS, PHP

    (Zumindest von allem einen guten anteil, nix Perfekt)
  • Meep

    Do you like Cookies? Me too. *mapft kekse* :cookie3:

    Das Ziel eines Programmierers ist es, Software zu entwickeln die Bug-frei ist.
    Das Ziel des Universums ist, Menschen zu erschaffen die diese Software kaputt bekommen.
    Wäre es ein Wettrennen, würde das Universum gewinnen.

    Why wear Java developers glasses? Because they can't C#.
  • ITgenies aktuelle Arbeit

    Ich arbeite meist *etwas* chaotischer als andere. Das heißt bei mir:
    Projekt anfangen, Woche bis 2 Wochen arbeiten, Projekt vergessen, Wiederhole nach Monaten Vorgang

    - ICG / IngameCharsetGenerator Thread (v1.6 - Release)
    - Umsetzung eines eigenen Makers :3
    - Support bei den Skriptanfragen
  • ITgenies pausierten Projekte

    - Eigenes Jump n' Run (+ eigener Physik Engine)
    - Eigenes (umfangreiches) Strategie / Echtzeit Spiel
    - Eigene Website
    - Mit Acc System, Achievements, Leveln...
    - Remake Alter Games
    - N haufen Engines....
    - .... und anderen random Code '^' x3

Josey

Storyteller

  • »Josey« ist der Autor dieses Themas

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Nachricht senden

42

Freitag, 2. Juni 2017, 19:12

Super, vielen vielen dank! :D

Kannst du mir noch sagen, wieso in meinem Code, das "Junk-Item" nicht als Doppel-Groß-Icon angezeigt wird? :/

Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
#===============================================================================
#                    Mr Wiggles Alchemy Script
#===============================================================================
# By Mr Wiggles
# Version 2.4
# 3-20-11
#-------------------------------------------------------------------------------
# Instructions:
#    Fill out the constants, And then call this script by using...
#    $scene = Alchemy.new
#===============================================================================
 
#-------------------------------------------------------------------------------
module ALCHEMY#/////////           *** EDIT AREA  ***                 /////////#
#-------------------------------------------------------------------------------
# Item IDs that can be used in Alchemy.
ALCHEMY_ITEMS   = [1,2,3,4,5]
#-------------------------------------------------------------------------------
# Item IDs that are not consumed when combined.
NON_CONSUME_ITEMS = [1,3]
#-------------------------------------------------------------------------------
# Weapon IDs that can be used in Alchemy.
ALCHEMY_WEAPONS = [1,2,3,4]
#-------------------------------------------------------------------------------
# Weapon IDs that are not consumed when combined.
NON_CONSUME_WEAPONS = [2,4]
#-------------------------------------------------------------------------------
# Armor IDs that can be used in Alchemy.
ALCHEMY_ARMORS  = [1,2,3,4]
#-------------------------------------------------------------------------------
# Armor IDs that are not consumed when combined.
NON_CONSUME_ARMORS = [2,3]
#-------------------------------------------------------------------------------
# Can combine more then the same type of item together, or just one of each.
COMBINE_DUPS = true
#-------------------------------------------------------------------------------
# Button that is used to check if the items being combined make anything.
CHECK_RECIPE_BUTTON = Input::A
#-------------------------------------------------------------------------------
# Sound to play if the recipe was successful. leave blank if none.
RIGHT_SE = "055-Right01"
#-------------------------------------------------------------------------------
# Sound to play if the recipe failed. leave blank if none.
WRONG_SE = "057-Wrong01"
#-------------------------------------------------------------------------------
# recipes to make items. Example of a recipe:
# [[A,B], [A,B], [A,B], [A,B]]
# A = Type of Item in the recipe, (0 = Item, 1 = Weapon, 2 = Armor)
# B = ID if Item
# if slot is not being used in recipe, use 0.
ALCHEMY_RECIPES = [
[[0,1], [0,1], [0,1], [0,1], [0,1], [0,1], [0,1], [0,1]], 
[[0,1], [[1,1],[1,2]], [0,1], [0,1], [0,1],   0  ,   0  ,   0  ], 
[[0,2], [0,2],   0  ,   0  ,   0  ,   0  ,   0  ,   0  ], 
[[1,2], [0,2], [2,3], [0,3],   0  ,   0  ,   0  ,   0  ],
[[1,2], [2,6], [0,4],   0  ,   0  ,   0  ,   0  ,   0  ],
[[1,2], [2,5], [0,5],   0  ,   0  ,   0  ,   0  ,   0  ],
[[1,2], [2,4], [0,6],   0  ,   0  ,   0  ,   0  ,   0  ],
[[2,2], [0,2], [1,7],   0  ,   0  ,   0  ,   0  ,   0  ],
[[0,1], [0,2], [0,1],   0  ,   0  ,   0  ,   0  ,   0  ],
 
#"kartofel brei rezpte"
[[0,2], [0,5] , 0, 0, 0, 0, 0, 0],  #guter
[[0,1], [0,4] , 0, 0, 0, 0, 0, 0],  #schlechter
 
[ [[0,1],[0,2],[0,3]] , [[0,4],[0,5]] , 0, 0, 0, 0, 0, 0 ] #mittel
 
#[[0,2], [0,4] , 0, 0, 0, 0, 0, 0],  #mittel /1
#[[0,1], [0,5] , 0, 0, 0, 0, 0, 0]  #mittel /2
 
]# needs to be here
#-------------------------------------------------------------------------------
# Out comes of the above recipes:
# [A, B]
# A = Type of Creation (0 = Item, 1 = Weapon, 2 = Armor)
# B = ID of Item
ALCHEMY_OUTCOMES = [
[1, 1], # 0 Makes Flame Fuel
[1, 1],  # 1 Makes Recurve Bow
[2, 5],  # 2 Makes Leather Boots
[1, 2],
[1, 3],
[1, 4],
[1, 5],
[0, 3],
[0, 3],
 
#kartoffelbreie
[0, 17],  #9.  Seed of Life     aka guter kartoffelbrei
[0, 18],  #10. Seed of Mana     aka schlechter kartoffelbrei
[0, 19]   #11. Seed of Strength aka normaler kartoffelbrei
#[0, 19]  #12. auch normaler Kartoffelbrei, wird für mittel /2 benötigt 
          #bei BLUEPRINTS fürs testen 12 hinzufügen damit es klappt
 
]# needs to be here
 
#Die Animations ID in der Datenbank die genutzt werden soll
ALCHEMY_ANIMATION = 100
 
#-------------------------------------------------------------------------------
# Blue prints: the basic idea behind this is that the player can not create any
# items that they do not know how to create it. This can be done by using a
# script call command in an event that says:
# $game_system.add_blue_prints(Blue Print ID)
# the Blue print id refers to the location of the recipe in the
# ALCHEMY_RECIPES array, also remember that it starts counting at 0, this
# means that 1=0, 2=1, and so on.
#
# Bellow is the blue prints that the player already knows at the start of the
# game. [BP, BP, BP]  BP = Blue Print ID
BLUE_PRINTS = [0,1,2,4, 9,10,11]
#-------------------------------------------------------------------------------
# Remove the items being combined if the recipe is wrong.
PENALIZE = true
#-------------------------------------------------------------------------------
# Give the player a junk item if the mix was wrong. PENALIZE must be true for
# this. If you don't want to use this set the ID to 0.
JUNK_ITEM_ID = 33
#-------------------------------------------------------------------------------
end#/////////              *** END EDIT AREA  ***                     /////////#
#-------------------------------------------------------------------------------
 
 
#===============================================================================
# ** Alchemy
#===============================================================================
class Alchemy
  #----------------------------------------------------------------
  # * Main
  #----------------------------------------------------------------
  def main
 
    # Create Windows
    @alchemy_window = Window_Alchemy.new
    @item_selection_window = Item_Selection_Window.new
    @help_window = Alchemy_Help.new
#    @map_back    = Spriteset_Map.new
@background_sprite = Sprite.new           # Make Background
@background_sprite.bitmap = RPG::Cache.windowskin('Alchemy Back')
    @combination_window   = Combination_List_Window.new
    @finished_item_window = Finished_Item_Window.new
 
    @viewport1 = Viewport.new(0, 0, 640, 480)
    @sprite = RPG::Sprite.new(@viewport1)
    @sprite.x=320
    @sprite.y=80
 
    # change Z
    @alchemy_window.z = 210
    @item_selection_window.z = 210
    @finished_item_window.z = 210
    @combination_window.z = 210
    @help_window.z = 210
    # Make variables
    @items_being_combined = []
    @recipes = ALCHEMY::ALCHEMY_RECIPES
    @out_comes = ALCHEMY::ALCHEMY_OUTCOMES
    @creation = []
    @combination = ""
    @showing_text_wait = 0
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @alchemy_window.dispose
    @item_selection_window.dispose
    @help_window.dispose
#    @map_back.dispose
@background_sprite.dispose                # Dispose background
    @combination_window.dispose
    @finished_item_window.dispose
  end
  #----------------------------------------------------------------
  # * Update
  #----------------------------------------------------------------
  def update
    # Show the names of items being added
    @showing_text_wait -= 1 if @showing_text_wait != 0
    if @showing_text_wait == 0
      item_names = []
      for item in @items_being_combined
        return if item == nil
        item_names << item.name.to_s
      end
      @combination = item_names.join(" + ")
      @finished_item_window.update
    end
    # Update Windows
    @alchemy_window.refresh(@items_being_combined)
    @item_selection_window.update
    @combination_window.update(@combination)
    # update mains
    update_help
    update_commands
 
    @sprite.update
  end
  #----------------------------------------------------------------
  # * Update Help
  #----------------------------------------------------------------
  def update_help
    if @item_selection_window.item != nil
      @help_window.set_text(@item_selection_window.item.description)
    end
  end
  #----------------------------------------------------------------
  # * Update Commands
  #----------------------------------------------------------------
  def update_commands
    #--------------------------
    # If B button was pressed
    #--------------------------
    if Input.trigger?(Input::B)
      @showing_text_wait = 0
      if @items_being_combined.size > 0
        item = @items_being_combined[@items_being_combined.size - 1]
        case item
        when RPG::Item
          $game_party.gain_item(item.id, 1) if 
            !ALCHEMY::NON_CONSUME_ITEMS.include?(item.id)
        when RPG::Weapon
          $game_party.gain_weapon(item.id, 1) if 
            !ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id)
        when RPG::Armor
          $game_party.gain_armor(item.id, 1) if
            !ALCHEMY::NON_CONSUME_ARMORS.include?(item.id)
        end
        $game_system.se_play($data_system.cancel_se)
        @items_being_combined.delete_at(@items_being_combined.size - 1)
      else
        # Return to map
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Map.new
      end
      # Update item selection window
      @item_selection_window.refresh
      return
    end
    #--------------------------
    # If C button was pressed
    #--------------------------
    if Input.trigger?(Input::C)
      @showing_text_wait = 0
      item = @item_selection_window.item
      return if item == nil
      if @items_being_combined.size < 8
        if !@items_being_combined.include?(item) and
            ALCHEMY::COMBINE_DUPS == false
          $game_system.se_play($data_system.decision_se)
          @items_being_combined << item
          case item
          when RPG::Item
            $game_party.gain_item(item.id, -1) if 
              !ALCHEMY::NON_CONSUME_ITEMS.include?(item.id)
          when RPG::Weapon
            $game_party.gain_weapon(item.id, -1) if 
              !ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id)
          when RPG::Armor
            $game_party.gain_armor(item.id, -1) if
              !ALCHEMY::NON_CONSUME_ARMORS.include?(item.id)
          end
        elsif ALCHEMY::COMBINE_DUPS == true
          $game_system.se_play($data_system.decision_se)
          @items_being_combined << item
          case item
          when RPG::Item
            $game_party.gain_item(item.id, -1) if 
              !ALCHEMY::NON_CONSUME_ITEMS.include?(item.id)
          when RPG::Weapon
            $game_party.gain_weapon(item.id, -1) if 
              !ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id)
          when RPG::Armor
            $game_party.gain_armor(item.id, -1) if
              !ALCHEMY::NON_CONSUME_ARMORS.include?(item.id)
          end
        else
          $game_system.se_play($data_system.buzzer_se)
        end
      else
        $game_system.se_play($data_system.buzzer_se)
      end
      # Update item selection window
      @item_selection_window.refresh
      return
    end
    #--------------------------
    # If Check button was pressed
    #--------------------------
    if Input.trigger?(ALCHEMY::CHECK_RECIPE_BUTTON)
      # check if the player was able to make anything
      @creation = []
      if @items_being_combined.size > 1
        for id in 0..@recipes.size - 1
          recipe = @recipes[id]
#          new_recipe = recipe.flatten
#          new_recipe.sort!
          # if player does not know recipe
          next unless $game_system.blue_prints.include?(id)
          # get created item
          @creation = @out_comes[id]
          # kill game to prevent syntax error
          if @creation == nil
            print ("There is no out come for the recipie, please add one.")
            $scene = nil
            return
          end
          # get items to be combine
          items_combined = []
          for i in 0..@items_being_combined.size - 1
            item = @items_being_combined[i]
            case item
            when RPG::Item
              type = 0
            when RPG::Weapon
              type = 1
            when RPG::Armor
              type = 2
            end
            item_array = [type, item.id]
            items_combined.push(item_array)
          end
          # fill empty slots with 0
          empty_slots = 8 - items_combined.size
          for i in 0..empty_slots
            items_combined << 0 if items_combined.size < 8
          end
#          items_combined.flatten!
#          items_combined.sort!
#          # see if the combination matches any recipes then
#          # returns the item that was created
#          break if items_combined == new_recipe
 
          #code zum clearen von elementen eines arrays
          #a ist das array
          #e ist das element
          def delElement(a,e)
            for i in 0...a.size
              if a[i] == e
                a[i] = nil
                return
              end
            end
          end
 
          success = false
          for i in 0...recipe.size
            #prüfe ob rezept element in eingabe items enthalten
            if items_combined.include?(recipe[i])
              #wenn ja dann lösche / cleare es im input
              delElement(items_combined, recipe[i])
 
            elsif recipe[i].kind_of?(Array) and recipe[i][0].kind_of?(Array)
              #sollte element nich im input enthalten sein aber das element ist 
              #ein array also eine oder anweisung dann:
 
              orElement = recipe[i] #unser ODER
              for j in 0...orElement.size
                if items_combined.include?(orElement[j])
                  #wenn eins der elemente in der ODER anweisung enthalten ist dann
                  delElement(items_combined, orElement[j])
                  break
                end
              end
 
            end
          end
 
          #entferne alle geclearten elemente aus dem array
          items_combined.delete(nil)
          #prüfe ob das array leer ist, also das rezept stimmt
          if items_combined.size == 0
            success = true
          end
 
          break if success == true
          @creation = []
        end
        # show result
 
        if @creation != []
          Audio.se_play("Audio/SE/"+ALCHEMY::RIGHT_SE, 90, 100) rescue nil
          # Add Item
          case @creation[0]
          when 0
            $game_party.gain_item(@creation[1], 1)
            item = $data_items[@creation[1]]
          when 1
            $game_party.gain_weapon(@creation[1], 1)
            item = $data_weapons[@creation[1]]
          when 2
            $game_party.gain_armor(@creation[1], 1)
            item = $data_armors[@creation[1]]
          end
          # Clear Varaibles
          @items_being_combined = []
#          @showing_text_wait = 150
 
          #spielt die HIT animation ab
          @sprite.animation($data_animations[ALCHEMY::ALCHEMY_ANIMATION],true)
timeOut = 60    #anzahl der Frames die gewartet werden soll, sollte nicht kleiner sein der Frame-Anzahl der Animation
while timeOut > 0 do
  Graphics.update
  @sprite.update
  timeOut-=1
end
 
                    # Show text
          @combination = "Success! Looks like you made a(n) #{item.name}."
          @finished_item_window.update(item)
 
 
          #unsere endlosschleife für den exit
          loop do
            #alle wichtigen sachen / fenster etc. weiterhin updaten
            Graphics.update
            @sprite.update
            @combination_window.update(@combination)
            Input.update
            if Input.trigger?(Input::C)
              #back to map
              $scene = Scene_Map.new
              return
            end
          end
 
 
        else
          Audio.se_play("Audio/SE/"+ALCHEMY::WRONG_SE, 90, 100) rescue nil
          # Clear items being combined
          if ALCHEMY::PENALIZE
            @items_being_combined = []
            junk_id = ALCHEMY::JUNK_ITEM_ID
            $game_party.gain_item(junk_id, 1) if junk_id > 0
          end
#          @showing_text_wait = 150
 
          #spielt die MISS animation ab
          @sprite.animation($data_animations[ALCHEMY::ALCHEMY_ANIMATION],false)
 
timeOut = 60    #anzahl der Frames die gewartet werden soll, sollte nicht kleiner sein der Frame-Anzahl der Animation
while timeOut > 0 do
  Graphics.update
  @sprite.update
  timeOut-=1
end
 
 
          # Show text
          @combination = "I don't think those go well together."
        end
      end
 
          #unsere endlosschleife für den exit
          loop do
            #alle wichtigen sachen / fenster etc. weiterhin updaten
            Graphics.update
            @sprite.update
            @combination_window.update(@combination)
            Input.update
            if Input.trigger?(Input::C)
              #back to map
              $scene = Scene_Map.new
              return
            end
          end
 
 
      # Update item selection window
      @item_selection_window.refresh
      return
    end
  end
end
 
#===============================================================================
# ** Game_System
#===============================================================================
class Game_System
  attr_accessor :blue_prints
 
alias alchemy_init initialize
  def initialize
    alchemy_init
    @blue_prints = ALCHEMY::BLUE_PRINTS
    @recipes = ALCHEMY::ALCHEMY_RECIPES
  end
 
  def add_blue_prints(prints)
    if !@blue_prints.include?(prints) and prints < @recipes.size - 1
      @blue_prints << prints
    end
  end
end
 
#===============================================================================
# ** Alchemy Window
#===============================================================================
class Window_Alchemy < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(60, 200, 525, 80)   
    self.opacity = 160
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh([])
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh(items)
    @item_place = 0
    @item_anz = items.size
    self.contents.clear
    for item in items
      draw_item(item, @item_place)
      @item_place += 1
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def draw_item(item, place)
    return if item == nil
    #die 6 zentriert nochmal ein bischen mehr
    x = 0 + (place * 64) + ((525-(@item_anz*64))/2) -6
    y = 0
    bitmap = RPG::Cache.icon(item.icon_name)
    w = bitmap.width
    h = bitmap.height
    src_rect  = Rect.new(0, 0, w, h)
    dest_rect = Rect.new(x, y, w*2, h*2)
    self.contents.stretch_blt(dest_rect, bitmap, src_rect)
  end
end
 
#===============================================================================
# ** Item Selection Window
#===============================================================================
class Item_Selection_Window < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#-------------------------------------------------------------------------- 
  def initialize
    super(0, 290, 426, 191)   # x, y, width, height
    self.opacity = 160
    @column_max = 2
    refresh
    self.index = 1
  end
#--------------------------------------------------------------------------
# * Refresh
#-------------------------------------------------------------------------- 
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    # Add Items that can be combined
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0 and ALCHEMY::ALCHEMY_ITEMS.include?(i)
        @data.push($data_items[i])
      end
    end
    # Add Weapons that can be combined
    for i in 1...$data_weapons.size
      if $game_party.weapon_number(i) > 0 and ALCHEMY::ALCHEMY_WEAPONS.include?(i)
        @data.push($data_weapons[i])
      end
    end
    # Add Armors that can be combined
    for i in 1...$data_armors.size
      if $game_party.armor_number(i) > 0 and ALCHEMY::ALCHEMY_ARMORS.include?(i)
        @data.push($data_armors[i])
      end
    end
    # Make selection Window
    @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
#--------------------------------------------------------------------------
# * Item
#-------------------------------------------------------------------------- 
  def item
    return @data[self.index]
  end
#--------------------------------------------------------------------------
# * Item by index
#--------------------------------------------------------------------------
  def return_item(index)
    return @data[index]
  end
#--------------------------------------------------------------------------
# * Draw Item
#--------------------------------------------------------------------------
  def draw_item(index)
    # Load Item Data
    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
    self.contents.font.color = normal_color
    # Creat Selector
    x = 4 + index % 2 * ((self.width - 30) / 2)
    if index == 1
      y = 0
    else
      y = index / 2 * 32
    end
    rect = Rect.new(x, y, self.width / @column_max, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    # Create Item Icon
    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.font.size = 16
    if number > 1
      self.contents.draw_text(x, y + 8, 24, 32, number.to_s, 1)
    end
    # Draw Item name next to Icon
    self.contents.font.size = 16
    self.contents.draw_text(x+32, y, 130, 32, item.name)
  end
#-------------------------------------------------------------------------- 
# * Frame Update
#--------------------------------------------------------------------------
  def update
    # If cursor is movable
    if self.active and @item_max > 0 and @index >= 0
      # Move cursor down
      if Input.repeat?(Input::DOWN)
        if @index < @item_max - @column_max
          $game_system.se_play($data_system.cursor_se)
          @index = (@index + @column_max) % @item_max
        end
      end
      # Move cursor up
      if Input.repeat?(Input::UP)
        if @index >= @column_max
          $game_system.se_play($data_system.cursor_se)
          @index = (@index - @column_max + @item_max) % @item_max
        end
      end
      # Move cursor right
      if Input.repeat?(Input::RIGHT)
        if (@index % 3 < @item_max)
          if @index != @item_max - 1
            @index += 1
            $game_system.se_play($data_system.cursor_se)
          end
        end
      end
      # Move cursor left
      if Input.repeat?(Input::LEFT)
        if (@item_max > 0)
          @index -= 1
          $game_system.se_play($data_system.cursor_se)
        end
      end
    end
    # Update cursor rectangle
    update_cursor_rect
  end
#-------------------------------------------------------------------------- 
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
  def update_cursor_rect
    # If cursor position is less than 0
    if @index < 0
      self.cursor_rect.empty
      return
    end
    # Get current row
    row = @index / @column_max
    # If current row is before top row
    if row < self.top_row
      # Scroll so that current row becomes top row
      self.top_row = row
    end
    # If current row is more to back than back row
    if row > self.top_row + (self.page_row_max - 1)
      # Scroll so that current row becomes back row
      self.top_row = row - (self.page_row_max - 1)
    end
    # Calculate cursor width
    cursor_width = self.width / @column_max - 16
    # Calculate cursor coordinates
    x = @index % @column_max * (cursor_width + 4)
    y = @index / @column_max * 32 - self.oy
    # Update cursor rectangle
    self.cursor_rect.set(x, y, cursor_width, 32)
  end
end
 
#==============================================================================
# ** Alchemy_Help
#==============================================================================
class Alchemy_Help < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(426, 416, 214, 64)
    self.opacity = 160
    self.contents = Bitmap.new(width - 32, height - 32)
  end
  #--------------------------------------------------------------------------
  # * Set Text
  #--------------------------------------------------------------------------
  def set_text(text, align = 0)
    if text != @text or align != @align
      self.contents.clear
      self.contents.font.color = normal_color
      self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
      @text = text
      @align = align
      @actor = nil
    end
    self.visible = true
  end
end
 
#==============================================================================
# ** Combination_List_Window
#==============================================================================
class Combination_List_Window < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(426, 289, 214, 127)
    self.opacity = 190
    self.contents = Bitmap.new(width - 32, height - 32)
    update
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update(text="")
    self.contents.clear
    self.contents.font.size = 17
 
    e = wrap_long_string(text)
    if e.kind_of?(Array)
      for i in 0...e.size
        self.contents.draw_text(0, -6+(i*17), 640, 32, e[i].to_s)
      end
    else
      self.contents.draw_text(0, -6, 640, 32, e)
    end
 
  end
 
  #Credits für diese Methode gehen an das Internet
  def wrap_long_string(text,max_width = 26)
    return text.scan(/\S.{0,#{max_width}}\S(?=\s|$)|\S+/)
  end
 
end
 
#==============================================================================
# ** Finished_Item_Window
#==============================================================================
class Finished_Item_Window < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(276, 0, 96, 96)
    self.opacity = 0
    self.contents = Bitmap.new(width - 32, height - 32)
    update
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update(item=nil)
    self.contents.clear
    if item != nil
      bitmap = RPG::Cache.icon(item.icon_name)
      w = bitmap.width
      h = bitmap.height
      src_rect  = Rect.new(0, 0, w, h)
      dest_rect = Rect.new(0, 0, w*2, h*2)
      self.contents.stretch_blt(dest_rect, bitmap, src_rect)
    end
  end
end
zum Lesen den Text mit der Maus markieren


Also, das funktioniert alles, aber das Icon von 33 wird nicht angezeigt, wenn ich Müll produziere ._.
Diese Zeile scheint zu fehlen:
@finished_item_window.update(item)
Ist aber nicht ganz die richtige?


Ist bei dir, wenn du das Rezept-Dings öffnest, der Cursor auch zuerst auf High-Potion, statt auf Potion?
  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

43

Freitag, 2. Juni 2017, 19:43

Ja ist bei mir auch xD Das der Cursor falsch positioniert ist, liegt daran das es

Ruby Quellcode

1
self.index = 0
in zeile 537 heißen muss und nicht 1.

Und um den Müll anzeigen zu lassen einfach

Ruby Quellcode

1
@finished_item_window.update($data_items[ALCHEMY::JUNK_ITEM_ID])
hinter zeile 453 packen :)
  • Info

    Code 4 Life

    Humorvoller bis leicht verrückter Coder mit einer Vorliebe zu Kawaiien Katzen.
    Neko FTW

    (sobald ich kreativere Ideen hierfür hab pack ich das hier rein)
  • Sprachen

    Programmiersprachen:
    - C, C++, C#, Java, Ruby, Lua

    Websprachen
    - JS, HTML, CSS, PHP

    (Zumindest von allem einen guten anteil, nix Perfekt)
  • Meep

    Do you like Cookies? Me too. *mapft kekse* :cookie3:

    Das Ziel eines Programmierers ist es, Software zu entwickeln die Bug-frei ist.
    Das Ziel des Universums ist, Menschen zu erschaffen die diese Software kaputt bekommen.
    Wäre es ein Wettrennen, würde das Universum gewinnen.

    Why wear Java developers glasses? Because they can't C#.
  • ITgenies aktuelle Arbeit

    Ich arbeite meist *etwas* chaotischer als andere. Das heißt bei mir:
    Projekt anfangen, Woche bis 2 Wochen arbeiten, Projekt vergessen, Wiederhole nach Monaten Vorgang

    - ICG / IngameCharsetGenerator Thread (v1.6 - Release)
    - Umsetzung eines eigenen Makers :3
    - Support bei den Skriptanfragen
  • ITgenies pausierten Projekte

    - Eigenes Jump n' Run (+ eigener Physik Engine)
    - Eigenes (umfangreiches) Strategie / Echtzeit Spiel
    - Eigene Website
    - Mit Acc System, Achievements, Leveln...
    - Remake Alter Games
    - N haufen Engines....
    - .... und anderen random Code '^' x3

Josey

Storyteller

  • »Josey« ist der Autor dieses Themas

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Nachricht senden

44

Freitag, 2. Juni 2017, 19:48

Jei, super! XD
Vielen Dank! *______________*
Klar, auf den Index hätte ich kommen sollen. Wie oft mir schon erklärt wurde, dass der mit 0 anfängt und nicht mit 1 >_>

So, ich hoffe, das sind die letzten beiden Sachen:
1.) Wo stellt man die Miss-Animation ein ( du hast da unten eine, die ein "false" hat, gibts da eine andere einzustellen irgendwo, mich hat nur das "false" irritiert?)

2.) Hab meinen ersten Post nochmal gelesen: Non-Concumable-Items sollen nicht mehrfach verwendet werden können, geht das? (Wären sowas wie Topf, Löffel, usw, die sind nur einmal da :< Ansonsten lasse ich sie konsumieren und gebe sie nach jedem Kochgang dem Player zurück, wenn das nicht möglich ist)

Ich kann aber verstehen, wenn du langsam keine Lust mehr hast XD°
  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

45

Freitag, 2. Juni 2017, 20:15

Nix zu danken xD

1.) Also es gibt ja bei Animationen Hit und Miss ("Play Hit" und "Play Miss" in der Dataenbank) und das false ist halt dafür das das Miss abgespielt wird.
Ich hab aber ka wie man Hit und Miss einer Animation anders ausehen lässt xD

Solltest du auch keine Ahnung von sowas haben einfach das machen:

Ruby Quellcode

1
@sprite.animation($data_animations[ALCHEMY::ALCHEMY_ANIMATION_FAIL],false)


Und weiter oben wo ALCHEMY_ANIMATION = 1 steht eine neue zeile mit ALCHEMY_ANIMATION_FAIL = 1 bzw deiner AnimationsID einfügen. :)

2.) Habs abgeändert (änderungen ab zeile 277)

Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
#===============================================================================
#                    Mr Wiggles Alchemy Script
#===============================================================================
# By Mr Wiggles
# Version 2.4
# 3-20-11
#-------------------------------------------------------------------------------
# Instructions:
#    Fill out the constants, And then call this script by using...
#    $scene = Alchemy.new
#===============================================================================
 
#-------------------------------------------------------------------------------
module ALCHEMY#/////////           *** EDIT AREA  ***                 /////////#
#-------------------------------------------------------------------------------
# Item IDs that can be used in Alchemy.
ALCHEMY_ITEMS   = [1,2,3,4,5]
#-------------------------------------------------------------------------------
# Item IDs that are not consumed when combined.
NON_CONSUME_ITEMS = [1,3]
#-------------------------------------------------------------------------------
# Weapon IDs that can be used in Alchemy.
ALCHEMY_WEAPONS = [1,2,3,4]
#-------------------------------------------------------------------------------
# Weapon IDs that are not consumed when combined.
NON_CONSUME_WEAPONS = [2,4]
#-------------------------------------------------------------------------------
# Armor IDs that can be used in Alchemy.
ALCHEMY_ARMORS  = [1,2,3,4]
#-------------------------------------------------------------------------------
# Armor IDs that are not consumed when combined.
NON_CONSUME_ARMORS = [2,3]
#-------------------------------------------------------------------------------
# Can combine more then the same type of item together, or just one of each.
COMBINE_DUPS = true
#-------------------------------------------------------------------------------
# Button that is used to check if the items being combined make anything.
CHECK_RECIPE_BUTTON = Input::A
#-------------------------------------------------------------------------------
# Sound to play if the recipe was successful. leave blank if none.
RIGHT_SE = "055-Right01"
#-------------------------------------------------------------------------------
# Sound to play if the recipe failed. leave blank if none.
WRONG_SE = "057-Wrong01"
#-------------------------------------------------------------------------------
# recipes to make items. Example of a recipe:
# [[A,B], [A,B], [A,B], [A,B]]
# A = Type of Item in the recipe, (0 = Item, 1 = Weapon, 2 = Armor)
# B = ID if Item
# if slot is not being used in recipe, use 0.
ALCHEMY_RECIPES = [
[[0,1], [0,1], [0,1], [0,1], [0,1], [0,1], [0,1], [0,1]], 
[[0,1], [[1,1],[1,2]], [0,1], [0,1], [0,1],   0  ,   0  ,   0  ], 
[[0,2], [0,2],   0  ,   0  ,   0  ,   0  ,   0  ,   0  ], 
[[1,2], [0,2], [2,3], [0,3],   0  ,   0  ,   0  ,   0  ],
[[1,2], [2,6], [0,4],   0  ,   0  ,   0  ,   0  ,   0  ],
[[1,2], [2,5], [0,5],   0  ,   0  ,   0  ,   0  ,   0  ],
[[1,2], [2,4], [0,6],   0  ,   0  ,   0  ,   0  ,   0  ],
[[2,2], [0,2], [1,7],   0  ,   0  ,   0  ,   0  ,   0  ],
[[0,1], [0,2], [0,1],   0  ,   0  ,   0  ,   0  ,   0  ],
 
#"kartofel brei rezpte"
[[0,2], [0,5] , 0, 0, 0, 0, 0, 0],  #guter
[[0,1], [0,4] , 0, 0, 0, 0, 0, 0],  #schlechter
 
[ [[0,1],[0,2]] , [[0,4],[0,5]] , 0, 0, 0, 0, 0, 0 ] #mittel
 
#[[0,2], [0,4] , 0, 0, 0, 0, 0, 0],  #mittel /1
#[[0,1], [0,5] , 0, 0, 0, 0, 0, 0]  #mittel /2
 
]# needs to be here
#-------------------------------------------------------------------------------
# Out comes of the above recipes:
# [A, B]
# A = Type of Creation (0 = Item, 1 = Weapon, 2 = Armor)
# B = ID of Item
ALCHEMY_OUTCOMES = [
[1, 1], # 0 Makes Flame Fuel
[1, 1],  # 1 Makes Recurve Bow
[2, 5],  # 2 Makes Leather Boots
[1, 2],
[1, 3],
[1, 4],
[1, 5],
[0, 3],
[0, 3],
 
#kartoffelbreie
[0, 17],  #9.  Seed of Life     aka guter kartoffelbrei
[0, 18],  #10. Seed of Mana     aka schlechter kartoffelbrei
[0, 19]   #11. Seed of Strength aka normaler kartoffelbrei
#[0, 19]  #12. auch normaler Kartoffelbrei, wird für mittel /2 benötigt 
          #bei BLUEPRINTS fürs testen 12 hinzufügen damit es klappt
 
]# needs to be here
 
#Die Animations ID in der Datenbank die genutzt werden soll
ALCHEMY_ANIMATION = 1
 
#-------------------------------------------------------------------------------
# Blue prints: the basic idea behind this is that the player can not create any
# items that they do not know how to create it. This can be done by using a
# script call command in an event that says:
# $game_system.add_blue_prints(Blue Print ID)
# the Blue print id refers to the location of the recipe in the
# ALCHEMY_RECIPES array, also remember that it starts counting at 0, this
# means that 1=0, 2=1, and so on.
#
# Bellow is the blue prints that the player already knows at the start of the
# game. [BP, BP, BP]  BP = Blue Print ID
BLUE_PRINTS = [0,1,2,4, 9,10,11]
#-------------------------------------------------------------------------------
# Remove the items being combined if the recipe is wrong.
PENALIZE = true
#-------------------------------------------------------------------------------
# Give the player a junk item if the mix was wrong. PENALIZE must be true for
# this. If you don't want to use this set the ID to 0.
JUNK_ITEM_ID = 33
#-------------------------------------------------------------------------------
end#/////////              *** END EDIT AREA  ***                     /////////#
#-------------------------------------------------------------------------------
 
 
#===============================================================================
# ** Alchemy
#===============================================================================
class Alchemy
  #----------------------------------------------------------------
  # * Main
  #----------------------------------------------------------------
  def main
 
    # Create Windows
    @alchemy_window = Window_Alchemy.new
    @item_selection_window = Item_Selection_Window.new
    @help_window = Alchemy_Help.new
#    @map_back    = Spriteset_Map.new
@background_sprite = Sprite.new           # Make Background
@background_sprite.bitmap = RPG::Cache.windowskin('Alchemy Back')
    @combination_window   = Combination_List_Window.new
    @finished_item_window = Finished_Item_Window.new
 
    @viewport1 = Viewport.new(0, 0, 640, 480)
    @sprite = RPG::Sprite.new(@viewport1)
    @sprite.x=320
    @sprite.y=80
 
    # change Z
    @alchemy_window.z = 210
    @item_selection_window.z = 210
    @finished_item_window.z = 210
    @combination_window.z = 210
    @help_window.z = 210
    # Make variables
    @items_being_combined = []
    @recipes = ALCHEMY::ALCHEMY_RECIPES
    @out_comes = ALCHEMY::ALCHEMY_OUTCOMES
    @creation = []
    @combination = ""
    @showing_text_wait = 0
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @alchemy_window.dispose
    @item_selection_window.dispose
    @help_window.dispose
#    @map_back.dispose
@background_sprite.dispose                # Dispose background
    @combination_window.dispose
    @finished_item_window.dispose
  end
  #----------------------------------------------------------------
  # * Update
  #----------------------------------------------------------------
  def update
    # Show the names of items being added
    @showing_text_wait -= 1 if @showing_text_wait != 0
    if @showing_text_wait == 0
      item_names = []
      for item in @items_being_combined
        return if item == nil
        item_names << item.name.to_s
      end
      @combination = item_names.join(" + ")
      @finished_item_window.update
    end
    # Update Windows
    @alchemy_window.refresh(@items_being_combined)
    @item_selection_window.update
    @combination_window.update(@combination)
    # update mains
    update_help
    update_commands
 
    @sprite.update
  end
  #----------------------------------------------------------------
  # * Update Help
  #----------------------------------------------------------------
  def update_help
    if @item_selection_window.item != nil
      @help_window.set_text(@item_selection_window.item.description)
    end
  end
  #----------------------------------------------------------------
  # * Update Commands
  #----------------------------------------------------------------
  def update_commands
    #--------------------------
    # If B button was pressed
    #--------------------------
    if Input.trigger?(Input::B)
      @showing_text_wait = 0
      if @items_being_combined.size > 0
        item = @items_being_combined[@items_being_combined.size - 1]
        case item
        when RPG::Item
          $game_party.gain_item(item.id, 1) if 
            !ALCHEMY::NON_CONSUME_ITEMS.include?(item.id)
        when RPG::Weapon
          $game_party.gain_weapon(item.id, 1) if 
            !ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id)
        when RPG::Armor
          $game_party.gain_armor(item.id, 1) if
            !ALCHEMY::NON_CONSUME_ARMORS.include?(item.id)
        end
        $game_system.se_play($data_system.cancel_se)
        @items_being_combined.delete_at(@items_being_combined.size - 1)
      else
        # Return to map
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Map.new
      end
      # Update item selection window
      @item_selection_window.refresh
      return
    end
    #--------------------------
    # If C button was pressed
    #--------------------------
    if Input.trigger?(Input::C)
      @showing_text_wait = 0
      item = @item_selection_window.item
      return if item == nil
      if @items_being_combined.size < 8
        if !@items_being_combined.include?(item) and
            ALCHEMY::COMBINE_DUPS == false
          $game_system.se_play($data_system.decision_se)
          @items_being_combined << item
          case item
          when RPG::Item
            $game_party.gain_item(item.id, -1) if 
              !ALCHEMY::NON_CONSUME_ITEMS.include?(item.id)
          when RPG::Weapon
            $game_party.gain_weapon(item.id, -1) if 
              !ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id)
          when RPG::Armor
            $game_party.gain_armor(item.id, -1) if
              !ALCHEMY::NON_CONSUME_ARMORS.include?(item.id)
          end
        elsif ALCHEMY::COMBINE_DUPS == true
#          $game_system.se_play($data_system.decision_se)
#          @items_being_combined << item
          case item
          when RPG::Item
            #prüft ob ein item vorhanden ist und Non-Concumable ist, wenn nicht dann fortfahren
            if !(@items_being_combined.include?(item) and ALCHEMY::NON_CONSUME_ITEMS.include?(item.id))
              $game_system.se_play($data_system.decision_se)
              @items_being_combined << item
              $game_party.gain_item(item.id, -1) if 
                !ALCHEMY::NON_CONSUME_ITEMS.include?(item.id)
            end
          when RPG::Weapon
            #prüft ob eine waffe vorhanden ist und Non-Concumable ist, wenn nicht dann fortfahren
            if !(@items_being_combined.include?(item) and ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id))
              $game_system.se_play($data_system.decision_se)
              @items_being_combined << item
              $game_party.gain_weapon(item.id, -1) if 
                !ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id)
            end
          when RPG::Armor
            #prüft ob eine rüstung vorhanden ist und Non-Concumable ist, wenn nicht dann fortfahren
            if !(@items_being_combined.include?(item) and ALCHEMY::NON_CONSUME_ARMORS.include?(item.id))
              $game_system.se_play($data_system.decision_se)
              @items_being_combined << item            
              $game_party.gain_armor(item.id, -1) if
                !ALCHEMY::NON_CONSUME_ARMORS.include?(item.id)
            end
          end
        else
          $game_system.se_play($data_system.buzzer_se)
        end
      else
        $game_system.se_play($data_system.buzzer_se)
      end
      # Update item selection window
      @item_selection_window.refresh
      return
    end
    #--------------------------
    # If Check button was pressed
    #--------------------------
    if Input.trigger?(ALCHEMY::CHECK_RECIPE_BUTTON)
      # check if the player was able to make anything
      @creation = []
      if @items_being_combined.size > 1
        for id in 0..@recipes.size - 1
          recipe = @recipes[id]
#          new_recipe = recipe.flatten
#          new_recipe.sort!
          # if player does not know recipe
          next unless $game_system.blue_prints.include?(id)
          # get created item
          @creation = @out_comes[id]
          # kill game to prevent syntax error
          if @creation == nil
            print ("There is no out come for the recipie, please add one.")
            $scene = nil
            return
          end
          # get items to be combine
          items_combined = []
          for i in 0..@items_being_combined.size - 1
            item = @items_being_combined[i]
            case item
            when RPG::Item
              type = 0
            when RPG::Weapon
              type = 1
            when RPG::Armor
              type = 2
            end
            item_array = [type, item.id]
            items_combined.push(item_array)
          end
          # fill empty slots with 0
          empty_slots = 8 - items_combined.size
          for i in 0..empty_slots
            items_combined << 0 if items_combined.size < 8
          end
#          items_combined.flatten!
#          items_combined.sort!
#          # see if the combination matches any recipes then
#          # returns the item that was created
#          break if items_combined == new_recipe
 
          #code zum clearen von elementen eines arrays
          #a ist das array
          #e ist das element
          def delElement(a,e)
            for i in 0...a.size
              if a[i] == e
                a[i] = nil
                return
              end
            end
          end
 
          success = false
          for i in 0...recipe.size
            #prüfe ob rezept element in eingabe items enthalten
            if items_combined.include?(recipe[i])
              #wenn ja dann lösche / cleare es im input
              delElement(items_combined, recipe[i])
 
            elsif recipe[i].kind_of?(Array) and recipe[i][0].kind_of?(Array)
              #sollte element nich im input enthalten sein aber das element ist 
              #ein array also eine oder anweisung dann:
 
              orElement = recipe[i] #unser ODER
              for j in 0...orElement.size
                if items_combined.include?(orElement[j])
                  #wenn eins der elemente in der ODER anweisung enthalten ist dann
                  delElement(items_combined, orElement[j])
                  break
                end
              end
 
            end
          end
 
          #entferne alle geclearten elemente aus dem array
          items_combined.delete(nil)
          #prüfe ob das array leer ist, also das rezept stimmt
          if items_combined.size == 0
            success = true
          end
 
          break if success == true
          @creation = []
        end
        # show result
 
        if @creation != []
          Audio.se_play("Audio/SE/"+ALCHEMY::RIGHT_SE, 90, 100) rescue nil
          # Add Item
          case @creation[0]
          when 0
            $game_party.gain_item(@creation[1], 1)
            item = $data_items[@creation[1]]
          when 1
            $game_party.gain_weapon(@creation[1], 1)
            item = $data_weapons[@creation[1]]
          when 2
            $game_party.gain_armor(@creation[1], 1)
            item = $data_armors[@creation[1]]
          end
          # Clear Varaibles
          @items_being_combined = []
          @showing_text_wait = 120
 
          #spielt die HIT animation ab
          @sprite.animation($data_animations[ALCHEMY::ALCHEMY_ANIMATION],true)
          timeOut = 16
          while timeOut > 0 do
            Graphics.update
            @sprite.update
            timeOut-=1
          end
 
          # Show text
          @combination = "Success! Looks like you made a(n) #{item.name}."
          @finished_item_window.update(item)
 
          #unsere endlosschleife für den exit
          loop do
            #alle wichtigen sachen / fenster etc. weiterhin updaten
            Graphics.update
            @sprite.update
            @combination_window.update(@combination)
            Input.update
            if Input.trigger?(Input::C)
              #back to map
              $scene = Scene_Map.new
              return
            end
          end
 
        else
          Audio.se_play("Audio/SE/"+ALCHEMY::WRONG_SE, 90, 100) rescue nil
          # Clear items being combined
          if ALCHEMY::PENALIZE
            @items_being_combined = []
            junk_id = ALCHEMY::JUNK_ITEM_ID
            $game_party.gain_item(junk_id, 1) if junk_id > 0
          end
          @showing_text_wait = 120
 
          #spielt die MISS animation ab
          @sprite.animation($data_animations[ALCHEMY::ALCHEMY_ANIMATION],false)
 
          # Show text
          @combination = "I don't think those go well together."
          @finished_item_window.update($data_items[ALCHEMY::JUNK_ITEM_ID])
        end
      end
      # Update item selection window
      @item_selection_window.refresh
      return
    end
  end
end
 
#===============================================================================
# ** Game_System
#===============================================================================
class Game_System
  attr_accessor :blue_prints
 
alias alchemy_init initialize
  def initialize
    alchemy_init
    @blue_prints = ALCHEMY::BLUE_PRINTS
    @recipes = ALCHEMY::ALCHEMY_RECIPES
  end
 
  def add_blue_prints(prints)
    if !@blue_prints.include?(prints) and prints < @recipes.size - 1
      @blue_prints << prints
    end
  end
end
 
#===============================================================================
# ** Alchemy Window
#===============================================================================
class Window_Alchemy < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(60, 200, 525, 80)   
    self.opacity = 160
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh([])
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh(items)
    @item_place = 0
    @item_anz = items.size
    self.contents.clear
    for item in items
      draw_item(item, @item_place)
      @item_place += 1
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def draw_item(item, place)
    return if item == nil
    #die 6 zentriert nochmal ein bischen mehr
    x = 0 + (place * 64) + ((525-(@item_anz*64))/2) -6
    y = 0
    bitmap = RPG::Cache.icon(item.icon_name)
    w = bitmap.width
    h = bitmap.height
    src_rect  = Rect.new(0, 0, w, h)
    dest_rect = Rect.new(x, y, w*2, h*2)
    self.contents.stretch_blt(dest_rect, bitmap, src_rect)
  end
end
 
#===============================================================================
# ** Item Selection Window
#===============================================================================
class Item_Selection_Window < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#-------------------------------------------------------------------------- 
  def initialize
    super(0, 290, 426, 191)   # x, y, width, height
    self.opacity = 160
    @column_max = 2
    refresh
    self.index = 0
  end
#--------------------------------------------------------------------------
# * Refresh
#-------------------------------------------------------------------------- 
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    # Add Items that can be combined
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0 and ALCHEMY::ALCHEMY_ITEMS.include?(i)
        @data.push($data_items[i])
      end
    end
    # Add Weapons that can be combined
    for i in 1...$data_weapons.size
      if $game_party.weapon_number(i) > 0 and ALCHEMY::ALCHEMY_WEAPONS.include?(i)
        @data.push($data_weapons[i])
      end
    end
    # Add Armors that can be combined
    for i in 1...$data_armors.size
      if $game_party.armor_number(i) > 0 and ALCHEMY::ALCHEMY_ARMORS.include?(i)
        @data.push($data_armors[i])
      end
    end
    # Make selection Window
    @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
#--------------------------------------------------------------------------
# * Item
#-------------------------------------------------------------------------- 
  def item
    return @data[self.index]
  end
#--------------------------------------------------------------------------
# * Item by index
#--------------------------------------------------------------------------
  def return_item(index)
    return @data[index]
  end
#--------------------------------------------------------------------------
# * Draw Item
#--------------------------------------------------------------------------
  def draw_item(index)
    # Load Item Data
    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
    self.contents.font.color = normal_color
    # Creat Selector
    x = 4 + index % 2 * ((self.width - 30) / 2)
    if index == 1
      y = 0
    else
      y = index / 2 * 32
    end
    rect = Rect.new(x, y, self.width / @column_max, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    # Create Item Icon
    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.font.size = 16
    if number > 1
      self.contents.draw_text(x, y + 8, 24, 32, number.to_s, 1)
    end
    # Draw Item name next to Icon
    self.contents.font.size = 16
    self.contents.draw_text(x+32, y, 130, 32, item.name)
  end
#-------------------------------------------------------------------------- 
# * Frame Update
#--------------------------------------------------------------------------
  def update
    # If cursor is movable
    if self.active and @item_max > 0 and @index >= 0
      # Move cursor down
      if Input.repeat?(Input::DOWN)
        if @index < @item_max - @column_max
          $game_system.se_play($data_system.cursor_se)
          @index = (@index + @column_max) % @item_max
        end
      end
      # Move cursor up
      if Input.repeat?(Input::UP)
        if @index >= @column_max
          $game_system.se_play($data_system.cursor_se)
          @index = (@index - @column_max + @item_max) % @item_max
        end
      end
      # Move cursor right
      if Input.repeat?(Input::RIGHT)
        if (@index % 3 < @item_max)
          if @index != @item_max - 1
            @index += 1
            $game_system.se_play($data_system.cursor_se)
          end
        end
      end
      # Move cursor left
      if Input.repeat?(Input::LEFT)
        if (@item_max > 0)
          @index -= 1
          $game_system.se_play($data_system.cursor_se)
        end
      end
    end
    # Update cursor rectangle
    update_cursor_rect
  end
#-------------------------------------------------------------------------- 
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
  def update_cursor_rect
    # If cursor position is less than 0
    if @index < 0
      self.cursor_rect.empty
      return
    end
    # Get current row
    row = @index / @column_max
    # If current row is before top row
    if row < self.top_row
      # Scroll so that current row becomes top row
      self.top_row = row
    end
    # If current row is more to back than back row
    if row > self.top_row + (self.page_row_max - 1)
      # Scroll so that current row becomes back row
      self.top_row = row - (self.page_row_max - 1)
    end
    # Calculate cursor width
    cursor_width = self.width / @column_max - 16
    # Calculate cursor coordinates
    x = @index % @column_max * (cursor_width + 4)
    y = @index / @column_max * 32 - self.oy
    # Update cursor rectangle
    self.cursor_rect.set(x, y, cursor_width, 32)
  end
end
 
#==============================================================================
# ** Alchemy_Help
#==============================================================================
class Alchemy_Help < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(426, 416, 214, 64)
    self.opacity = 160
    self.contents = Bitmap.new(width - 32, height - 32)
  end
  #--------------------------------------------------------------------------
  # * Set Text
  #--------------------------------------------------------------------------
  def set_text(text, align = 0)
    if text != @text or align != @align
      self.contents.clear
      self.contents.font.color = normal_color
      self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
      @text = text
      @align = align
      @actor = nil
    end
    self.visible = true
  end
end
 
#==============================================================================
# ** Combination_List_Window
#==============================================================================
class Combination_List_Window < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(426, 289, 214, 127)
    self.opacity = 190
    self.contents = Bitmap.new(width - 32, height - 32)
    update
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update(text="")
    self.contents.clear
    self.contents.font.size = 17
 
    e = wrap_long_string(text)
    if e.kind_of?(Array)
      for i in 0...e.size
        self.contents.draw_text(0, -6+(i*17), 640, 32, e[i].to_s)
      end
    else
      self.contents.draw_text(0, -6, 640, 32, e)
    end
 
  end
 
  #Credits für diese Methode gehen an das Internet
  def wrap_long_string(text,max_width = 26)
    return text.scan(/\S.{0,#{max_width}}\S(?=\s|$)|\S+/)
  end
 
end
 
#==============================================================================
# ** Finished_Item_Window
#==============================================================================
class Finished_Item_Window < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(276, 0, 96, 96)
    self.opacity = 0
    self.contents = Bitmap.new(width - 32, height - 32)
    update
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update(item=nil)
    self.contents.clear
    if item != nil
      bitmap = RPG::Cache.icon(item.icon_name)
      w = bitmap.width
      h = bitmap.height
      src_rect  = Rect.new(0, 0, w, h)
      dest_rect = Rect.new(0, 0, w*2, h*2)
      self.contents.stretch_blt(dest_rect, bitmap, src_rect)
    end
  end
end
zum Lesen den Text mit der Maus markieren


Doch hab noch lust drauf dir zu helfen XD
Also nachfragen kannst du immer XD
  • Info

    Code 4 Life

    Humorvoller bis leicht verrückter Coder mit einer Vorliebe zu Kawaiien Katzen.
    Neko FTW

    (sobald ich kreativere Ideen hierfür hab pack ich das hier rein)
  • Sprachen

    Programmiersprachen:
    - C, C++, C#, Java, Ruby, Lua

    Websprachen
    - JS, HTML, CSS, PHP

    (Zumindest von allem einen guten anteil, nix Perfekt)
  • Meep

    Do you like Cookies? Me too. *mapft kekse* :cookie3:

    Das Ziel eines Programmierers ist es, Software zu entwickeln die Bug-frei ist.
    Das Ziel des Universums ist, Menschen zu erschaffen die diese Software kaputt bekommen.
    Wäre es ein Wettrennen, würde das Universum gewinnen.

    Why wear Java developers glasses? Because they can't C#.
  • ITgenies aktuelle Arbeit

    Ich arbeite meist *etwas* chaotischer als andere. Das heißt bei mir:
    Projekt anfangen, Woche bis 2 Wochen arbeiten, Projekt vergessen, Wiederhole nach Monaten Vorgang

    - ICG / IngameCharsetGenerator Thread (v1.6 - Release)
    - Umsetzung eines eigenen Makers :3
    - Support bei den Skriptanfragen
  • ITgenies pausierten Projekte

    - Eigenes Jump n' Run (+ eigener Physik Engine)
    - Eigenes (umfangreiches) Strategie / Echtzeit Spiel
    - Eigene Website
    - Mit Acc System, Achievements, Leveln...
    - Remake Alter Games
    - N haufen Engines....
    - .... und anderen random Code '^' x3

Josey

Storyteller

  • »Josey« ist der Autor dieses Themas

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Nachricht senden

46

Freitag, 2. Juni 2017, 20:43

XD
Sieht aus, als wär ich jetzt endlich fertig! XD
Vielen Dank, ich meld mich nochmal im Threadt hier, falls mir noch etwas auffällt! :D

Falls jemand nochmal das ganze Dings haben will, mit allem, was bei mir jetzt drin ist:

Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
#===============================================================================
#                    Mr Wiggles Alchemy Script
#===============================================================================
# By Mr Wiggles
# Version 2.4
# 3-20-11
#-------------------------------------------------------------------------------
# Instructions:
#    Fill out the constants, And then call this script by using...
#    $scene = Alchemy.new
#===============================================================================
 
#-------------------------------------------------------------------------------
module ALCHEMY#/////////           *** EDIT AREA  ***                 /////////#
#-------------------------------------------------------------------------------
# Item IDs that can be used in Alchemy.
ALCHEMY_ITEMS   = [1,2,3,4,5]
#-------------------------------------------------------------------------------
# Item IDs that are not consumed when combined.
NON_CONSUME_ITEMS = [1,3]
#-------------------------------------------------------------------------------
# Weapon IDs that can be used in Alchemy.
ALCHEMY_WEAPONS = [1,2,3,4]
#-------------------------------------------------------------------------------
# Weapon IDs that are not consumed when combined.
NON_CONSUME_WEAPONS = [2,4]
#-------------------------------------------------------------------------------
# Armor IDs that can be used in Alchemy.
ALCHEMY_ARMORS  = [1,2,3,4]
#-------------------------------------------------------------------------------
# Armor IDs that are not consumed when combined.
NON_CONSUME_ARMORS = [2,3]
#-------------------------------------------------------------------------------
# Can combine more then the same type of item together, or just one of each.
COMBINE_DUPS = true
#-------------------------------------------------------------------------------
# Button that is used to check if the items being combined make anything.
CHECK_RECIPE_BUTTON = Input::A
#-------------------------------------------------------------------------------
# Sound to play if the recipe was successful. leave blank if none.
RIGHT_SE = "055-Right01"
#-------------------------------------------------------------------------------
# Sound to play if the recipe failed. leave blank if none.
WRONG_SE = "057-Wrong01"
#-------------------------------------------------------------------------------
# recipes to make items. Example of a recipe:
# [[A,B], [A,B], [A,B], [A,B]]
# A = Type of Item in the recipe, (0 = Item, 1 = Weapon, 2 = Armor)
# B = ID if Item
# if slot is not being used in recipe, use 0.
ALCHEMY_RECIPES = [
[[0,1], [0,1], [0,1], [0,1], [0,1], [0,1], [0,1], [0,1]], 
[[0,1], [[1,1],[1,2]], [0,1], [0,1], [0,1],   0  ,   0  ,   0  ], 
[[0,2], [0,2],   0  ,   0  ,   0  ,   0  ,   0  ,   0  ], 
[[1,2], [0,2], [2,3], [0,3],   0  ,   0  ,   0  ,   0  ],
[[1,2], [2,6], [0,4],   0  ,   0  ,   0  ,   0  ,   0  ],
[[1,2], [2,5], [0,5],   0  ,   0  ,   0  ,   0  ,   0  ],
[[1,2], [2,4], [0,6],   0  ,   0  ,   0  ,   0  ,   0  ],
[[2,2], [0,2], [1,7],   0  ,   0  ,   0  ,   0  ,   0  ],
[[0,1], [0,2], [0,1],   0  ,   0  ,   0  ,   0  ,   0  ],
 
#"kartofel brei rezpte"
[[0,2], [0,5] , 0, 0, 0, 0, 0, 0],  #guter
[[0,1], [0,4] , 0, 0, 0, 0, 0, 0],  #schlechter
 
[ [[0,1],[0,2],[0,3]] , [[0,4],[0,5]] , 0, 0, 0, 0, 0, 0 ] #mittel
 
#[[0,2], [0,4] , 0, 0, 0, 0, 0, 0],  #mittel /1
#[[0,1], [0,5] , 0, 0, 0, 0, 0, 0]  #mittel /2
 
]# needs to be here
#-------------------------------------------------------------------------------
# Out comes of the above recipes:
# [A, B]
# A = Type of Creation (0 = Item, 1 = Weapon, 2 = Armor)
# B = ID of Item
ALCHEMY_OUTCOMES = [
[1, 1], # 0 Makes Flame Fuel
[1, 1],  # 1 Makes Recurve Bow
[2, 5],  # 2 Makes Leather Boots
[1, 2],
[1, 3],
[1, 4],
[1, 5],
[0, 3],
[0, 3],
 
#kartoffelbreie
[0, 17],  #9.  Seed of Life     aka guter kartoffelbrei
[0, 18],  #10. Seed of Mana     aka schlechter kartoffelbrei
[0, 19]   #11. Seed of Strength aka normaler kartoffelbrei
#[0, 19]  #12. auch normaler Kartoffelbrei, wird für mittel /2 benötigt 
          #bei BLUEPRINTS fürs testen 12 hinzufügen damit es klappt
 
]# needs to be here
 
#Die Animations ID in der Datenbank die genutzt werden soll
ALCHEMY_ANIMATION = 100
ALCHEMY_ANIMATION_FAIL = 1
 
#-------------------------------------------------------------------------------
# Blue prints: the basic idea behind this is that the player can not create any
# items that they do not know how to create it. This can be done by using a
# script call command in an event that says:
# $game_system.add_blue_prints(Blue Print ID)
# the Blue print id refers to the location of the recipe in the
# ALCHEMY_RECIPES array, also remember that it starts counting at 0, this
# means that 1=0, 2=1, and so on.
#
# Bellow is the blue prints that the player already knows at the start of the
# game. [BP, BP, BP]  BP = Blue Print ID
BLUE_PRINTS = [0,1,2,4, 9,10,11]
#-------------------------------------------------------------------------------
# Remove the items being combined if the recipe is wrong.
PENALIZE = true
#-------------------------------------------------------------------------------
# Give the player a junk item if the mix was wrong. PENALIZE must be true for
# this. If you don't want to use this set the ID to 0.
JUNK_ITEM_ID = 33
#-------------------------------------------------------------------------------
end#/////////              *** END EDIT AREA  ***                     /////////#
#-------------------------------------------------------------------------------
 
 
#===============================================================================
# ** Alchemy
#===============================================================================
class Alchemy
  #----------------------------------------------------------------
  # * Main
  #----------------------------------------------------------------
  def main
 
    # Create Windows
    @alchemy_window = Window_Alchemy.new
    @item_selection_window = Item_Selection_Window.new
    @help_window = Alchemy_Help.new
#    @map_back    = Spriteset_Map.new
@background_sprite = Sprite.new           # Make Background
@background_sprite.bitmap = RPG::Cache.windowskin('Alchemy Back')
    @combination_window   = Combination_List_Window.new
    @finished_item_window = Finished_Item_Window.new
 
    @viewport1 = Viewport.new(0, 0, 640, 480)
    @sprite = RPG::Sprite.new(@viewport1)
    @sprite.x=320
    @sprite.y=80
 
    # change Z
    @alchemy_window.z = 210
    @item_selection_window.z = 210
    @finished_item_window.z = 210
    @combination_window.z = 210
    @help_window.z = 210
    # Make variables
    @items_being_combined = []
    @recipes = ALCHEMY::ALCHEMY_RECIPES
    @out_comes = ALCHEMY::ALCHEMY_OUTCOMES
    @creation = []
    @combination = ""
    @showing_text_wait = 0
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @alchemy_window.dispose
    @item_selection_window.dispose
    @help_window.dispose
#    @map_back.dispose
@background_sprite.dispose                # Dispose background
    @combination_window.dispose
    @finished_item_window.dispose
  end
  #----------------------------------------------------------------
  # * Update
  #----------------------------------------------------------------
  def update
    # Show the names of items being added
    @showing_text_wait -= 1 if @showing_text_wait != 0
    if @showing_text_wait == 0
      item_names = []
      for item in @items_being_combined
        return if item == nil
        item_names << item.name.to_s
      end
      @combination = item_names.join(" + ")
      @finished_item_window.update
    end
    # Update Windows
    @alchemy_window.refresh(@items_being_combined)
    @item_selection_window.update
    @combination_window.update(@combination)
    # update mains
    update_help
    update_commands
 
    @sprite.update
  end
  #----------------------------------------------------------------
  # * Update Help
  #----------------------------------------------------------------
  def update_help
    if @item_selection_window.item != nil
      @help_window.set_text(@item_selection_window.item.description)
    end
  end
  #----------------------------------------------------------------
  # * Update Commands
  #----------------------------------------------------------------
  def update_commands
    #--------------------------
    # If B button was pressed
    #--------------------------
    if Input.trigger?(Input::B)
      @showing_text_wait = 0
      if @items_being_combined.size > 0
        item = @items_being_combined[@items_being_combined.size - 1]
        case item
        when RPG::Item
          $game_party.gain_item(item.id, 1) if 
            !ALCHEMY::NON_CONSUME_ITEMS.include?(item.id)
        when RPG::Weapon
          $game_party.gain_weapon(item.id, 1) if 
            !ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id)
        when RPG::Armor
          $game_party.gain_armor(item.id, 1) if
            !ALCHEMY::NON_CONSUME_ARMORS.include?(item.id)
        end
        $game_system.se_play($data_system.cancel_se)
        @items_being_combined.delete_at(@items_being_combined.size - 1)
      else
        # Return to map
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Map.new
      end
      # Update item selection window
      @item_selection_window.refresh
      return
    end
    #--------------------------
    # If C button was pressed
    #--------------------------
    if Input.trigger?(Input::C)
      @showing_text_wait = 0
      item = @item_selection_window.item
      return if item == nil
      if @items_being_combined.size < 8
        if !@items_being_combined.include?(item) and
            ALCHEMY::COMBINE_DUPS == false
          $game_system.se_play($data_system.decision_se)
          @items_being_combined << item
          case item
          when RPG::Item
            $game_party.gain_item(item.id, -1) if 
              !ALCHEMY::NON_CONSUME_ITEMS.include?(item.id)
          when RPG::Weapon
            $game_party.gain_weapon(item.id, -1) if 
              !ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id)
          when RPG::Armor
            $game_party.gain_armor(item.id, -1) if
              !ALCHEMY::NON_CONSUME_ARMORS.include?(item.id)
          end
        elsif ALCHEMY::COMBINE_DUPS == true
#          $game_system.se_play($data_system.decision_se)
#          @items_being_combined << item
          case item
          when RPG::Item
            #prüft ob ein item vorhanden ist und Non-Concumable ist, wenn nicht dann fortfahren
            if !(@items_being_combined.include?(item) and ALCHEMY::NON_CONSUME_ITEMS.include?(item.id))
              $game_system.se_play($data_system.decision_se)
              @items_being_combined << item
              $game_party.gain_item(item.id, -1) if 
                !ALCHEMY::NON_CONSUME_ITEMS.include?(item.id)
            end
          when RPG::Weapon
            #prüft ob eine waffe vorhanden ist und Non-Concumable ist, wenn nicht dann fortfahren
            if !(@items_being_combined.include?(item) and ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id))
              $game_system.se_play($data_system.decision_se)
              @items_being_combined << item
              $game_party.gain_weapon(item.id, -1) if 
                !ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id)
            end
          when RPG::Armor
            #prüft ob eine rüstung vorhanden ist und Non-Concumable ist, wenn nicht dann fortfahren
            if !(@items_being_combined.include?(item) and ALCHEMY::NON_CONSUME_ARMORS.include?(item.id))
              $game_system.se_play($data_system.decision_se)
              @items_being_combined << item            
              $game_party.gain_armor(item.id, -1) if
                !ALCHEMY::NON_CONSUME_ARMORS.include?(item.id)
            end
          end
        else
          $game_system.se_play($data_system.buzzer_se)
        end
      else
        $game_system.se_play($data_system.buzzer_se)
      end
      # Update item selection window
      @item_selection_window.refresh
      return
    end
    #--------------------------
    # If Check button was pressed
    #--------------------------
    if Input.trigger?(ALCHEMY::CHECK_RECIPE_BUTTON)
      # check if the player was able to make anything
      @creation = []
      if @items_being_combined.size > 1
        for id in 0..@recipes.size - 1
          recipe = @recipes[id]
#          new_recipe = recipe.flatten
#          new_recipe.sort!
          # if player does not know recipe
          next unless $game_system.blue_prints.include?(id)
          # get created item
          @creation = @out_comes[id]
          # kill game to prevent syntax error
          if @creation == nil
            print ("There is no out come for the recipie, please add one.")
            $scene = nil
            return
          end
          # get items to be combine
          items_combined = []
          for i in 0..@items_being_combined.size - 1
            item = @items_being_combined[i]
            case item
            when RPG::Item
              type = 0
            when RPG::Weapon
              type = 1
            when RPG::Armor
              type = 2
            end
            item_array = [type, item.id]
            items_combined.push(item_array)
          end
          # fill empty slots with 0
          empty_slots = 8 - items_combined.size
          for i in 0..empty_slots
            items_combined << 0 if items_combined.size < 8
          end
#          items_combined.flatten!
#          items_combined.sort!
#          # see if the combination matches any recipes then
#          # returns the item that was created
#          break if items_combined == new_recipe
 
          #code zum clearen von elementen eines arrays
          #a ist das array
          #e ist das element
          def delElement(a,e)
            for i in 0...a.size
              if a[i] == e
                a[i] = nil
                return
              end
            end
          end
 
          success = false
          for i in 0...recipe.size
            #prüfe ob rezept element in eingabe items enthalten
            if items_combined.include?(recipe[i])
              #wenn ja dann lösche / cleare es im input
              delElement(items_combined, recipe[i])
 
            elsif recipe[i].kind_of?(Array) and recipe[i][0].kind_of?(Array)
              #sollte element nich im input enthalten sein aber das element ist 
              #ein array also eine oder anweisung dann:
 
              orElement = recipe[i] #unser ODER
              for j in 0...orElement.size
                if items_combined.include?(orElement[j])
                  #wenn eins der elemente in der ODER anweisung enthalten ist dann
                  delElement(items_combined, orElement[j])
                  break
                end
              end
 
            end
          end
 
          #entferne alle geclearten elemente aus dem array
          items_combined.delete(nil)
          #prüfe ob das array leer ist, also das rezept stimmt
          if items_combined.size == 0
            success = true
          end
 
          break if success == true
          @creation = []
        end
        # show result
 
        if @creation != []
          Audio.se_play("Audio/SE/"+ALCHEMY::RIGHT_SE, 90, 100) rescue nil
          # Add Item
          case @creation[0]
          when 0
            $game_party.gain_item(@creation[1], 1)
            item = $data_items[@creation[1]]
          when 1
            $game_party.gain_weapon(@creation[1], 1)
            item = $data_weapons[@creation[1]]
          when 2
            $game_party.gain_armor(@creation[1], 1)
            item = $data_armors[@creation[1]]
          end
          # Clear Varaibles
          @items_being_combined = []
#          @showing_text_wait = 150
 
          #spielt die HIT animation ab
          @sprite.animation($data_animations[ALCHEMY::ALCHEMY_ANIMATION],true)
timeOut = 60    #anzahl der Frames die gewartet werden soll, sollte nicht kleiner sein der Frame-Anzahl der Animation
while timeOut > 0 do
  Graphics.update
  @sprite.update
  timeOut-=1
end
 
                    # Show text
          @combination = "Success! Looks like you made a(n) #{item.name}."
          @finished_item_window.update(item)
 
 
          #unsere endlosschleife für den exit
          loop do
            #alle wichtigen sachen / fenster etc. weiterhin updaten
            Graphics.update
            @sprite.update
            @combination_window.update(@combination)
            Input.update
            if Input.trigger?(Input::C)
              #back to map
              $scene = Scene_Map.new
              return
            end
          end
 
 
        else
          Audio.se_play("Audio/SE/"+ALCHEMY::WRONG_SE, 90, 100) rescue nil
          # Clear items being combined
          if ALCHEMY::PENALIZE
            @items_being_combined = []
            junk_id = ALCHEMY::JUNK_ITEM_ID
            $game_party.gain_item(junk_id, 1) if junk_id > 0
          end
#          @showing_text_wait = 150
 
          #spielt die MISS animation ab
#          @sprite.animation($data_animations[ALCHEMY::ALCHEMY_ANIMATION],false)
@sprite.animation($data_animations[ALCHEMY::ALCHEMY_ANIMATION_FAIL],false)
 
timeOut = 30    #anzahl der Frames die gewartet werden soll, sollte nicht kleiner sein der Frame-Anzahl der Animation
while timeOut > 0 do
  Graphics.update
  @sprite.update
  timeOut-=1
end
 
 
          # Show text
          @combination = "I don't think those go well together."
@finished_item_window.update($data_items[ALCHEMY::JUNK_ITEM_ID])
        end
      end
 
          #unsere endlosschleife für den exit
          loop do
            #alle wichtigen sachen / fenster etc. weiterhin updaten
            Graphics.update
            @sprite.update
            @combination_window.update(@combination)
            Input.update
            if Input.trigger?(Input::C)
              #back to map
              $scene = Scene_Map.new
              return
            end
          end
 
 
      # Update item selection window
      @item_selection_window.refresh
      return
    end
  end
end
 
#===============================================================================
# ** Game_System
#===============================================================================
class Game_System
  attr_accessor :blue_prints
 
alias alchemy_init initialize
  def initialize
    alchemy_init
    @blue_prints = ALCHEMY::BLUE_PRINTS
    @recipes = ALCHEMY::ALCHEMY_RECIPES
  end
 
  def add_blue_prints(prints)
    if !@blue_prints.include?(prints) and prints < @recipes.size - 1
      @blue_prints << prints
    end
  end
end
 
#===============================================================================
# ** Alchemy Window
#===============================================================================
class Window_Alchemy < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(60, 200, 525, 80)   
    self.opacity = 160
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh([])
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh(items)
    @item_place = 0
    @item_anz = items.size
    self.contents.clear
    for item in items
      draw_item(item, @item_place)
      @item_place += 1
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def draw_item(item, place)
    return if item == nil
    #die 6 zentriert nochmal ein bischen mehr
    x = 0 + (place * 64) + ((525-(@item_anz*64))/2) -6
    y = 0
    bitmap = RPG::Cache.icon(item.icon_name)
    w = bitmap.width
    h = bitmap.height
    src_rect  = Rect.new(0, 0, w, h)
    dest_rect = Rect.new(x, y, w*2, h*2)
    self.contents.stretch_blt(dest_rect, bitmap, src_rect)
  end
end
 
#===============================================================================
# ** Item Selection Window
#===============================================================================
class Item_Selection_Window < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#-------------------------------------------------------------------------- 
  def initialize
    super(0, 290, 426, 191)   # x, y, width, height
    self.opacity = 160
    @column_max = 2
    refresh
    self.index = 0
  end
#--------------------------------------------------------------------------
# * Refresh
#-------------------------------------------------------------------------- 
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    # Add Items that can be combined
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0 and ALCHEMY::ALCHEMY_ITEMS.include?(i)
        @data.push($data_items[i])
      end
    end
    # Add Weapons that can be combined
    for i in 1...$data_weapons.size
      if $game_party.weapon_number(i) > 0 and ALCHEMY::ALCHEMY_WEAPONS.include?(i)
        @data.push($data_weapons[i])
      end
    end
    # Add Armors that can be combined
    for i in 1...$data_armors.size
      if $game_party.armor_number(i) > 0 and ALCHEMY::ALCHEMY_ARMORS.include?(i)
        @data.push($data_armors[i])
      end
    end
    # Make selection Window
    @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
#--------------------------------------------------------------------------
# * Item
#-------------------------------------------------------------------------- 
  def item
    return @data[self.index]
  end
#--------------------------------------------------------------------------
# * Item by index
#--------------------------------------------------------------------------
  def return_item(index)
    return @data[index]
  end
#--------------------------------------------------------------------------
# * Draw Item
#--------------------------------------------------------------------------
  def draw_item(index)
    # Load Item Data
    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
    self.contents.font.color = normal_color
    # Creat Selector
    x = 4 + index % 2 * ((self.width - 30) / 2)
    if index == 1
      y = 0
    else
      y = index / 2 * 32
    end
    rect = Rect.new(x, y, self.width / @column_max, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    # Create Item Icon
    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.font.size = 16
    if number > 1
      self.contents.draw_text(x, y + 8, 24, 32, number.to_s, 1)
    end
    # Draw Item name next to Icon
    self.contents.font.size = 16
    self.contents.draw_text(x+32, y, 130, 32, item.name)
  end
#-------------------------------------------------------------------------- 
# * Frame Update
#--------------------------------------------------------------------------
  def update
    # If cursor is movable
    if self.active and @item_max > 0 and @index >= 0
      # Move cursor down
      if Input.repeat?(Input::DOWN)
        if @index < @item_max - @column_max
          $game_system.se_play($data_system.cursor_se)
          @index = (@index + @column_max) % @item_max
        end
      end
      # Move cursor up
      if Input.repeat?(Input::UP)
        if @index >= @column_max
          $game_system.se_play($data_system.cursor_se)
          @index = (@index - @column_max + @item_max) % @item_max
        end
      end
      # Move cursor right
      if Input.repeat?(Input::RIGHT)
        if (@index % 3 < @item_max)
          if @index != @item_max - 1
            @index += 1
            $game_system.se_play($data_system.cursor_se)
          end
        end
      end
      # Move cursor left
      if Input.repeat?(Input::LEFT)
        if (@item_max > 0)
          @index -= 1
          $game_system.se_play($data_system.cursor_se)
        end
      end
    end
    # Update cursor rectangle
    update_cursor_rect
  end
#-------------------------------------------------------------------------- 
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
  def update_cursor_rect
    # If cursor position is less than 0
    if @index < 0
      self.cursor_rect.empty
      return
    end
    # Get current row
    row = @index / @column_max
    # If current row is before top row
    if row < self.top_row
      # Scroll so that current row becomes top row
      self.top_row = row
    end
    # If current row is more to back than back row
    if row > self.top_row + (self.page_row_max - 1)
      # Scroll so that current row becomes back row
      self.top_row = row - (self.page_row_max - 1)
    end
    # Calculate cursor width
    cursor_width = self.width / @column_max - 16
    # Calculate cursor coordinates
    x = @index % @column_max * (cursor_width + 4)
    y = @index / @column_max * 32 - self.oy
    # Update cursor rectangle
    self.cursor_rect.set(x, y, cursor_width, 32)
  end
end
 
#==============================================================================
# ** Alchemy_Help
#==============================================================================
class Alchemy_Help < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(426, 416, 214, 64)
    self.opacity = 160
    self.contents = Bitmap.new(width - 32, height - 32)
  end
  #--------------------------------------------------------------------------
  # * Set Text
  #--------------------------------------------------------------------------
  def set_text(text, align = 0)
    if text != @text or align != @align
      self.contents.clear
      self.contents.font.color = normal_color
      self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
      @text = text
      @align = align
      @actor = nil
    end
    self.visible = true
  end
end
 
#==============================================================================
# ** Combination_List_Window
#==============================================================================
class Combination_List_Window < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(426, 289, 214, 127)
    self.opacity = 190
    self.contents = Bitmap.new(width - 32, height - 32)
    update
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update(text="")
    self.contents.clear
    self.contents.font.size = 17
 
    e = wrap_long_string(text)
    if e.kind_of?(Array)
      for i in 0...e.size
        self.contents.draw_text(0, -6+(i*17), 640, 32, e[i].to_s)
      end
    else
      self.contents.draw_text(0, -6, 640, 32, e)
    end
 
  end
 
  #Credits für diese Methode gehen an das Internet
  def wrap_long_string(text,max_width = 26)
    return text.scan(/\S.{0,#{max_width}}\S(?=\s|$)|\S+/)
  end
 
end
 
#==============================================================================
# ** Finished_Item_Window
#==============================================================================
class Finished_Item_Window < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(276, 0, 96, 96)
    self.opacity = 0
    self.contents = Bitmap.new(width - 32, height - 32)
    update
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update(item=nil)
    self.contents.clear
    if item != nil
      bitmap = RPG::Cache.icon(item.icon_name)
      w = bitmap.width
      h = bitmap.height
      src_rect  = Rect.new(0, 0, w, h)
      dest_rect = Rect.new(0, 0, w*2, h*2)
      self.contents.stretch_blt(dest_rect, bitmap, src_rect)
    end
  end
end
zum Lesen den Text mit der Maus markieren


Vielen vielen Dank! :D
Das ist so super! XD
  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

47

Freitag, 2. Juni 2017, 20:49

Kein Problem hab gern geholfen xD
Durchwühle dann mal deine anderen Script Requests mal sehen ob ich da auch was gelöst bekomme xD
  • Info

    Code 4 Life

    Humorvoller bis leicht verrückter Coder mit einer Vorliebe zu Kawaiien Katzen.
    Neko FTW

    (sobald ich kreativere Ideen hierfür hab pack ich das hier rein)
  • Sprachen

    Programmiersprachen:
    - C, C++, C#, Java, Ruby, Lua

    Websprachen
    - JS, HTML, CSS, PHP

    (Zumindest von allem einen guten anteil, nix Perfekt)
  • Meep

    Do you like Cookies? Me too. *mapft kekse* :cookie3:

    Das Ziel eines Programmierers ist es, Software zu entwickeln die Bug-frei ist.
    Das Ziel des Universums ist, Menschen zu erschaffen die diese Software kaputt bekommen.
    Wäre es ein Wettrennen, würde das Universum gewinnen.

    Why wear Java developers glasses? Because they can't C#.
  • ITgenies aktuelle Arbeit

    Ich arbeite meist *etwas* chaotischer als andere. Das heißt bei mir:
    Projekt anfangen, Woche bis 2 Wochen arbeiten, Projekt vergessen, Wiederhole nach Monaten Vorgang

    - ICG / IngameCharsetGenerator Thread (v1.6 - Release)
    - Umsetzung eines eigenen Makers :3
    - Support bei den Skriptanfragen
  • ITgenies pausierten Projekte

    - Eigenes Jump n' Run (+ eigener Physik Engine)
    - Eigenes (umfangreiches) Strategie / Echtzeit Spiel
    - Eigene Website
    - Mit Acc System, Achievements, Leveln...
    - Remake Alter Games
    - N haufen Engines....
    - .... und anderen random Code '^' x3

Josey

Storyteller

  • »Josey« ist der Autor dieses Themas

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Nachricht senden

48

Freitag, 2. Juni 2017, 21:13

Danke dir :D
Das finde ich toll XD
  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

Josey

Storyteller

  • »Josey« ist der Autor dieses Themas

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Nachricht senden

49

Freitag, 1. September 2017, 19:41

Kurzer "Bugreport" (eben erst aufgefallen):
Zeilenumbruch funktioniert nicht bei "Success! Looks like you made a(n) #{item.name}." und manchmal verwindet vom letzten Buchstaben bei der Aufzählung der Itemnamen, manchmal verschwindet er nur teilweise (siehe Screen). Kann das jemand in Ordnung bringen? :D
»Josey« hat folgendes Bild angehängt:
  • Zeilenumbrüche.png
  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

50

Samstag, 2. September 2017, 13:16

Da muss einfach nur zeile 770 geändert werden:

Ruby Quellcode

1
def wrap_long_string(text,max_width = 26)

Das max_width beschreibt die maximale länge des Strings, also wieviele zeichen maximal in eine Zeile passen. Anscheinend habe ich damals den wert nicht ganz korrekt gesetzt, mit 24 sollte es aber wieder gehen. Ansonsten etwas rumbrobieren ^^

Mfg ITgenie98
  • Info

    Code 4 Life

    Humorvoller bis leicht verrückter Coder mit einer Vorliebe zu Kawaiien Katzen.
    Neko FTW

    (sobald ich kreativere Ideen hierfür hab pack ich das hier rein)
  • Sprachen

    Programmiersprachen:
    - C, C++, C#, Java, Ruby, Lua

    Websprachen
    - JS, HTML, CSS, PHP

    (Zumindest von allem einen guten anteil, nix Perfekt)
  • Meep

    Do you like Cookies? Me too. *mapft kekse* :cookie3:

    Das Ziel eines Programmierers ist es, Software zu entwickeln die Bug-frei ist.
    Das Ziel des Universums ist, Menschen zu erschaffen die diese Software kaputt bekommen.
    Wäre es ein Wettrennen, würde das Universum gewinnen.

    Why wear Java developers glasses? Because they can't C#.
  • ITgenies aktuelle Arbeit

    Ich arbeite meist *etwas* chaotischer als andere. Das heißt bei mir:
    Projekt anfangen, Woche bis 2 Wochen arbeiten, Projekt vergessen, Wiederhole nach Monaten Vorgang

    - ICG / IngameCharsetGenerator Thread (v1.6 - Release)
    - Umsetzung eines eigenen Makers :3
    - Support bei den Skriptanfragen
  • ITgenies pausierten Projekte

    - Eigenes Jump n' Run (+ eigener Physik Engine)
    - Eigenes (umfangreiches) Strategie / Echtzeit Spiel
    - Eigene Website
    - Mit Acc System, Achievements, Leveln...
    - Remake Alter Games
    - N haufen Engines....
    - .... und anderen random Code '^' x3

Josey

Storyteller

  • »Josey« ist der Autor dieses Themas

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Nachricht senden

51

Samstag, 2. September 2017, 15:41

Danke! Super, es klappt! :D
  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

52

Samstag, 2. September 2017, 23:30

Der Thread ist zwar gelöst... aber... man kann ja immernoch am Code rumspielen. :3

Deswegen zur wrap_long_string-Lösung noch was:
Die Anzahl der Zeichen ist zwar eine prima Heuristik, wenn die Methode schnell arbeiten soll, aber wenn man genug Rechenzeit/-kraft hat kann man auch Bitmap#text_size verwenden. Diese Methode berechnet wieviel Pixel der Text bei gegebenem Font wirklich braucht. Da Josey auf dem Bild ja keinen Monospacefont hat, wird der Name "Ilijilis Schwert" halt einen andere Breite als "Wommwummis Dolch" haben, obwohl beide Worte gleichviele 16 Buchstaben haben.

@ITgenie98: Könnte mir so eine Methode vorstellen:

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
# Zeichne soviele Wörter wie passen aus einem String
# und returne die übrigen Wörter, für die nächste Zeile
def draw_text_row( text, x, y, row_width )
  words = text.split("\s")
  text2draw = words.shift
  while( self.contents.text_size(text2draw + "\s" + words[0]).width <= row_width )
    text2draw = text2draw + "\s" + words.shift
  end
  self.contents.draw_text(x, y, row_width, 32, text2draw)
  return words.join("\s")
end

Was meinst Du?

53

Montag, 4. September 2017, 12:56

Ja das ist eine bessere lösung für no-monospace Fonts, ka weshalb ich damals nur auf basis der zeichenanzahl getrennt habe und nicht gleich pixelgenau xDD

Hab die methode mal eingebaut und auch abgeändert sodass sie im code funktioniert, hier das endresultat :3

Es muss einfach die methode Combination_List_Window.update mit folgenem ersetzt werden:

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  def update(text="")
    self.contents.clear
    self.contents.font.size = 17
 
    words = text.split("\s")
    i = -6
    while (words.size > 1)
      text2draw = words.shift
      while ( words[0] != nil and self.contents.text_size(text2draw + "\s" + words[0]).width <= contents.width )
        text2draw = text2draw + "\s" + words.shift
      end
      self.contents.draw_text(0, i, contents.width, 32, text2draw)
      i += 17
    end
 
  end
  • Info

    Code 4 Life

    Humorvoller bis leicht verrückter Coder mit einer Vorliebe zu Kawaiien Katzen.
    Neko FTW

    (sobald ich kreativere Ideen hierfür hab pack ich das hier rein)
  • Sprachen

    Programmiersprachen:
    - C, C++, C#, Java, Ruby, Lua

    Websprachen
    - JS, HTML, CSS, PHP

    (Zumindest von allem einen guten anteil, nix Perfekt)
  • Meep

    Do you like Cookies? Me too. *mapft kekse* :cookie3:

    Das Ziel eines Programmierers ist es, Software zu entwickeln die Bug-frei ist.
    Das Ziel des Universums ist, Menschen zu erschaffen die diese Software kaputt bekommen.
    Wäre es ein Wettrennen, würde das Universum gewinnen.

    Why wear Java developers glasses? Because they can't C#.
  • ITgenies aktuelle Arbeit

    Ich arbeite meist *etwas* chaotischer als andere. Das heißt bei mir:
    Projekt anfangen, Woche bis 2 Wochen arbeiten, Projekt vergessen, Wiederhole nach Monaten Vorgang

    - ICG / IngameCharsetGenerator Thread (v1.6 - Release)
    - Umsetzung eines eigenen Makers :3
    - Support bei den Skriptanfragen
  • ITgenies pausierten Projekte

    - Eigenes Jump n' Run (+ eigener Physik Engine)
    - Eigenes (umfangreiches) Strategie / Echtzeit Spiel
    - Eigene Website
    - Mit Acc System, Achievements, Leveln...
    - Remake Alter Games
    - N haufen Engines....
    - .... und anderen random Code '^' x3

Josey

Storyteller

  • »Josey« ist der Autor dieses Themas

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Nachricht senden

54

Montag, 4. September 2017, 13:59

Okay, ich habs eingebaut:

Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
#===============================================================================
#                    Mr Wiggles Alchemy Script
#===============================================================================
# By Mr Wiggles
# Version 2.4
# 3-20-11
#-------------------------------------------------------------------------------
# Instructions:
#    Fill out the constants, And then call this script by using...
#    $scene = Alchemy.new
#===============================================================================
 
#-------------------------------------------------------------------------------
module ALCHEMY#/////////           *** EDIT AREA  ***                 /////////#
#-------------------------------------------------------------------------------
# Item IDs that can be used in Alchemy.
ALCHEMY_ITEMS   = [1,2,3,4,5]
#-------------------------------------------------------------------------------
# Item IDs that are not consumed when combined.
NON_CONSUME_ITEMS = [1,3]
#-------------------------------------------------------------------------------
# Weapon IDs that can be used in Alchemy.
ALCHEMY_WEAPONS = [1,2,3,4]
#-------------------------------------------------------------------------------
# Weapon IDs that are not consumed when combined.
NON_CONSUME_WEAPONS = [2,4]
#-------------------------------------------------------------------------------
# Armor IDs that can be used in Alchemy.
ALCHEMY_ARMORS  = [1,2,3,4]
#-------------------------------------------------------------------------------
# Armor IDs that are not consumed when combined.
NON_CONSUME_ARMORS = [2,3]
#-------------------------------------------------------------------------------
# Can combine more then the same type of item together, or just one of each.
COMBINE_DUPS = true
#-------------------------------------------------------------------------------
# Button that is used to check if the items being combined make anything.
CHECK_RECIPE_BUTTON = Input::A
#-------------------------------------------------------------------------------
# Sound to play if the recipe was successful. leave blank if none.
RIGHT_SE = "055-Right01"
#-------------------------------------------------------------------------------
# Sound to play if the recipe failed. leave blank if none.
WRONG_SE = "057-Wrong01"
#-------------------------------------------------------------------------------
# recipes to make items. Example of a recipe:
# [[A,B], [A,B], [A,B], [A,B]]
# A = Type of Item in the recipe, (0 = Item, 1 = Weapon, 2 = Armor)
# B = ID if Item
# if slot is not being used in recipe, use 0.
ALCHEMY_RECIPES = [
[[0,1], [0,1], [0,1], [0,1], [0,1], [0,1], [0,1], [0,1]], 
[[0,1], [[1,1],[1,2]], [0,1], [0,1], [0,1],   0  ,   0  ,   0  ], 
[[0,2], [0,2],   0  ,   0  ,   0  ,   0  ,   0  ,   0  ], 
[[1,2], [0,2], [2,3], [0,3],   0  ,   0  ,   0  ,   0  ],
[[1,2], [2,6], [0,4],   0  ,   0  ,   0  ,   0  ,   0  ],
[[1,2], [2,5], [0,5],   0  ,   0  ,   0  ,   0  ,   0  ],
[[1,2], [2,4], [0,6],   0  ,   0  ,   0  ,   0  ,   0  ],
[[2,2], [0,2], [1,7],   0  ,   0  ,   0  ,   0  ,   0  ],
[[0,1], [0,2], [0,1],   0  ,   0  ,   0  ,   0  ,   0  ],
 
#"kartofel brei rezpte"
[[0,2], [0,5] , 0, 0, 0, 0, 0, 0],  #guter
[[0,1], [0,4] , 0, 0, 0, 0, 0, 0],  #schlechter
 
[ [[0,1],[0,2],[0,3]] , [[0,4],[0,5]] , 0, 0, 0, 0, 0, 0 ] #mittel
 
#[[0,2], [0,4] , 0, 0, 0, 0, 0, 0],  #mittel /1
#[[0,1], [0,5] , 0, 0, 0, 0, 0, 0]  #mittel /2
 
]# needs to be here
#-------------------------------------------------------------------------------
# Out comes of the above recipes:
# [A, B]
# A = Type of Creation (0 = Item, 1 = Weapon, 2 = Armor)
# B = ID of Item
ALCHEMY_OUTCOMES = [
[1, 1], # 0 Makes Flame Fuel
[1, 1],  # 1 Makes Recurve Bow
[2, 5],  # 2 Makes Leather Boots
[1, 2],
[1, 3],
[1, 4],
[1, 5],
[0, 3],
[0, 3],
 
#kartoffelbreie
[0, 17],  #9.  Seed of Life     aka guter kartoffelbrei
[0, 18],  #10. Seed of Mana     aka schlechter kartoffelbrei
[0, 19]   #11. Seed of Strength aka normaler kartoffelbrei
#[0, 19]  #12. auch normaler Kartoffelbrei, wird für mittel /2 benötigt 
          #bei BLUEPRINTS fürs testen 12 hinzufügen damit es klappt
 
]# needs to be here
 
#Die Animations ID in der Datenbank die genutzt werden soll
ALCHEMY_ANIMATION = 100
ALCHEMY_ANIMATION_FAIL = 1
 
#-------------------------------------------------------------------------------
# Blue prints: the basic idea behind this is that the player can not create any
# items that they do not know how to create it. This can be done by using a
# script call command in an event that says:
# $game_system.add_blue_prints(Blue Print ID)
# the Blue print id refers to the location of the recipe in the
# ALCHEMY_RECIPES array, also remember that it starts counting at 0, this
# means that 1=0, 2=1, and so on.
#
# Bellow is the blue prints that the player already knows at the start of the
# game. [BP, BP, BP]  BP = Blue Print ID
BLUE_PRINTS = [0,1,2,4, 9, 10, 11]
#-------------------------------------------------------------------------------
# Remove the items being combined if the recipe is wrong.
PENALIZE = true
#-------------------------------------------------------------------------------
# Give the player a junk item if the mix was wrong. PENALIZE must be true for
# this. If you don't want to use this set the ID to 0.
JUNK_ITEM_ID = 33
#-------------------------------------------------------------------------------
end#/////////              *** END EDIT AREA  ***                     /////////#
#-------------------------------------------------------------------------------
 
 
#===============================================================================
# ** Alchemy
#===============================================================================
class Alchemy
  #----------------------------------------------------------------
  # * Main
  #----------------------------------------------------------------
  def main
 
    # Create Windows
    @alchemy_window = Window_Alchemy.new
    @item_selection_window = Item_Selection_Window.new
    @help_window = Alchemy_Help.new
#    @map_back    = Spriteset_Map.new
@background_sprite = Sprite.new           # Make Background
@background_sprite.bitmap = RPG::Cache.windowskin('Alchemy Back')
    @combination_window   = Combination_List_Window.new
    @finished_item_window = Finished_Item_Window.new
 
    @viewport1 = Viewport.new(0, 0, 640, 480)
    @sprite = RPG::Sprite.new(@viewport1)
    @sprite.x=320
    @sprite.y=80
 
    # change Z
    @alchemy_window.z = 210
    @item_selection_window.z = 210
    @finished_item_window.z = 210
    @combination_window.z = 210
    @help_window.z = 210
    # Make variables
    @items_being_combined = []
    @recipes = ALCHEMY::ALCHEMY_RECIPES
    @out_comes = ALCHEMY::ALCHEMY_OUTCOMES
    @creation = []
    @combination = ""
    @showing_text_wait = 0
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @alchemy_window.dispose
    @item_selection_window.dispose
    @help_window.dispose
#    @map_back.dispose
@background_sprite.dispose                # Dispose background
    @combination_window.dispose
    @finished_item_window.dispose
  end
  #----------------------------------------------------------------
  # * Update
  #----------------------------------------------------------------
  def update
    # Show the names of items being added
    @showing_text_wait -= 1 if @showing_text_wait != 0
    if @showing_text_wait == 0
      item_names = []
      for item in @items_being_combined
        return if item == nil
        item_names << item.name.to_s
      end
      @combination = item_names.join(" + ")
      @finished_item_window.update
    end
    # Update Windows
    @alchemy_window.refresh(@items_being_combined)
    @item_selection_window.update
    @combination_window.update(@combination)
    # update mains
    update_help
    update_commands
 
    @sprite.update
  end
  #----------------------------------------------------------------
  # * Update Help
  #----------------------------------------------------------------
  def update_help
    if @item_selection_window.item != nil
      @help_window.set_text(@item_selection_window.item.description)
    end
  end
  #----------------------------------------------------------------
  # * Update Commands
  #----------------------------------------------------------------
  def update_commands
    #--------------------------
    # If B button was pressed
    #--------------------------
    if Input.trigger?(Input::B)
      @showing_text_wait = 0
      if @items_being_combined.size > 0
        item = @items_being_combined[@items_being_combined.size - 1]
        case item
        when RPG::Item
          $game_party.gain_item(item.id, 1) if 
            !ALCHEMY::NON_CONSUME_ITEMS.include?(item.id)
        when RPG::Weapon
          $game_party.gain_weapon(item.id, 1) if 
            !ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id)
        when RPG::Armor
          $game_party.gain_armor(item.id, 1) if
            !ALCHEMY::NON_CONSUME_ARMORS.include?(item.id)
        end
        $game_system.se_play($data_system.cancel_se)
        @items_being_combined.delete_at(@items_being_combined.size - 1)
      else
        # Return to map
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Map.new
      end
      # Update item selection window
      @item_selection_window.refresh
      return
    end
    #--------------------------
    # If C button was pressed
    #--------------------------
    if Input.trigger?(Input::C)
      @showing_text_wait = 0
      item = @item_selection_window.item
      return if item == nil
      if @items_being_combined.size < 8
        if !@items_being_combined.include?(item) and
            ALCHEMY::COMBINE_DUPS == false
          $game_system.se_play($data_system.decision_se)
          @items_being_combined << item
          case item
          when RPG::Item
            $game_party.gain_item(item.id, -1) if 
              !ALCHEMY::NON_CONSUME_ITEMS.include?(item.id)
          when RPG::Weapon
            $game_party.gain_weapon(item.id, -1) if 
              !ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id)
          when RPG::Armor
            $game_party.gain_armor(item.id, -1) if
              !ALCHEMY::NON_CONSUME_ARMORS.include?(item.id)
          end
        elsif ALCHEMY::COMBINE_DUPS == true
#          $game_system.se_play($data_system.decision_se)
#          @items_being_combined << item
          case item
          when RPG::Item
            #prüft ob ein item vorhanden ist und Non-Concumable ist, wenn nicht dann fortfahren
            if !(@items_being_combined.include?(item) and ALCHEMY::NON_CONSUME_ITEMS.include?(item.id))
              $game_system.se_play($data_system.decision_se)
              @items_being_combined << item
              $game_party.gain_item(item.id, -1) if 
                !ALCHEMY::NON_CONSUME_ITEMS.include?(item.id)
            end
          when RPG::Weapon
            #prüft ob eine waffe vorhanden ist und Non-Concumable ist, wenn nicht dann fortfahren
            if !(@items_being_combined.include?(item) and ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id))
              $game_system.se_play($data_system.decision_se)
              @items_being_combined << item
              $game_party.gain_weapon(item.id, -1) if 
                !ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id)
            end
          when RPG::Armor
            #prüft ob eine rüstung vorhanden ist und Non-Concumable ist, wenn nicht dann fortfahren
            if !(@items_being_combined.include?(item) and ALCHEMY::NON_CONSUME_ARMORS.include?(item.id))
              $game_system.se_play($data_system.decision_se)
              @items_being_combined << item            
              $game_party.gain_armor(item.id, -1) if
                !ALCHEMY::NON_CONSUME_ARMORS.include?(item.id)
            end
          end
        else
          $game_system.se_play($data_system.buzzer_se)
        end
      else
        $game_system.se_play($data_system.buzzer_se)
      end
      # Update item selection window
      @item_selection_window.refresh
      return
    end
    #--------------------------
    # If Check button was pressed
    #--------------------------
    if Input.trigger?(ALCHEMY::CHECK_RECIPE_BUTTON)
      # check if the player was able to make anything
      @creation = []
      if @items_being_combined.size > 1
        for id in 0..@recipes.size - 1
          recipe = @recipes[id]
#          new_recipe = recipe.flatten
#          new_recipe.sort!
          # if player does not know recipe
          next unless $game_system.blue_prints.include?(id)
          # get created item
          @creation = @out_comes[id]
          # kill game to prevent syntax error
          if @creation == nil
            print ("There is no out come for the recipie, please add one.")
            $scene = nil
            return
          end
          # get items to be combine
          items_combined = []
          for i in 0..@items_being_combined.size - 1
            item = @items_being_combined[i]
            case item
            when RPG::Item
              type = 0
            when RPG::Weapon
              type = 1
            when RPG::Armor
              type = 2
            end
            item_array = [type, item.id]
            items_combined.push(item_array)
          end
          # fill empty slots with 0
          empty_slots = 8 - items_combined.size
          for i in 0..empty_slots
            items_combined << 0 if items_combined.size < 8
          end
#          items_combined.flatten!
#          items_combined.sort!
#          # see if the combination matches any recipes then
#          # returns the item that was created
#          break if items_combined == new_recipe
 
          #code zum clearen von elementen eines arrays
          #a ist das array
          #e ist das element
          def delElement(a,e)
            for i in 0...a.size
              if a[i] == e
                a[i] = nil
                return
              end
            end
          end
 
          success = false
          for i in 0...recipe.size
            #prüfe ob rezept element in eingabe items enthalten
            if items_combined.include?(recipe[i])
              #wenn ja dann lösche / cleare es im input
              delElement(items_combined, recipe[i])
 
            elsif recipe[i].kind_of?(Array) and recipe[i][0].kind_of?(Array)
              #sollte element nich im input enthalten sein aber das element ist 
              #ein array also eine oder anweisung dann:
 
              orElement = recipe[i] #unser ODER
              for j in 0...orElement.size
                if items_combined.include?(orElement[j])
                  #wenn eins der elemente in der ODER anweisung enthalten ist dann
                  delElement(items_combined, orElement[j])
                  break
                end
              end
 
            end
          end
 
          #entferne alle geclearten elemente aus dem array
          items_combined.delete(nil)
          #prüfe ob das array leer ist, also das rezept stimmt
          if items_combined.size == 0
            success = true
          end
 
          break if success == true
          @creation = []
        end
        # show result
 
        if @creation != []
          Audio.se_play("Audio/SE/"+ALCHEMY::RIGHT_SE, 90, 100) rescue nil
          # Add Item
          case @creation[0]
          when 0
            $game_party.gain_item(@creation[1], 1)
            item = $data_items[@creation[1]]
          when 1
            $game_party.gain_weapon(@creation[1], 1)
            item = $data_weapons[@creation[1]]
          when 2
            $game_party.gain_armor(@creation[1], 1)
            item = $data_armors[@creation[1]]
          end
          # Clear Varaibles
          @items_being_combined = []
#          @showing_text_wait = 150
 
          #spielt die HIT animation ab
          @sprite.animation($data_animations[ALCHEMY::ALCHEMY_ANIMATION],true)
timeOut = 60    #anzahl der Frames die gewartet werden soll, sollte nicht kleiner sein der Frame-Anzahl der Animation
while timeOut > 0 do
  Graphics.update
  @sprite.update
  timeOut-=1
end
 
                    # Show text
          @combination = "Success! Looks like you made a(n) #{item.name}."
          @finished_item_window.update(item)
 
 
          #unsere endlosschleife für den exit
          loop do
            #alle wichtigen sachen / fenster etc. weiterhin updaten
            Graphics.update
            @sprite.update
            @combination_window.update(@combination)
            Input.update
            if Input.trigger?(Input::C)
              #back to map
              $scene = Scene_Map.new
              return
            end
          end
 
 
        else
          Audio.se_play("Audio/SE/"+ALCHEMY::WRONG_SE, 90, 100) rescue nil
          # Clear items being combined
          if ALCHEMY::PENALIZE
            @items_being_combined = []
            junk_id = ALCHEMY::JUNK_ITEM_ID
            $game_party.gain_item(junk_id, 1) if junk_id > 0
          end
#          @showing_text_wait = 150
 
          #spielt die MISS animation ab
#          @sprite.animation($data_animations[ALCHEMY::ALCHEMY_ANIMATION],false)
@sprite.animation($data_animations[ALCHEMY::ALCHEMY_ANIMATION_FAIL],false)
 
timeOut = 30    #anzahl der Frames die gewartet werden soll, sollte nicht kleiner sein der Frame-Anzahl der Animation
while timeOut > 0 do
  Graphics.update
  @sprite.update
  timeOut-=1
end
 
 
          # Show text
          @combination = "I don't think those go well together."
@finished_item_window.update($data_items[ALCHEMY::JUNK_ITEM_ID])
        end
      end
 
          #unsere endlosschleife für den exit
          loop do
            #alle wichtigen sachen / fenster etc. weiterhin updaten
            Graphics.update
            @sprite.update
            @combination_window.update(@combination)
            Input.update
            if Input.trigger?(Input::C)
              #back to map
              $scene = Scene_Map.new
              return
            end
          end
 
 
      # Update item selection window
      @item_selection_window.refresh
      return
    end
  end
end
 
#===============================================================================
# ** Game_System
#===============================================================================
class Game_System
  attr_accessor :blue_prints
 
alias alchemy_init initialize
  def initialize
    alchemy_init
    @blue_prints = ALCHEMY::BLUE_PRINTS
    @recipes = ALCHEMY::ALCHEMY_RECIPES
  end
 
  def add_blue_prints(prints)
    if !@blue_prints.include?(prints) and prints < @recipes.size - 1
      @blue_prints << prints
    end
  end
end
 
#===============================================================================
# ** Alchemy Window
#===============================================================================
class Window_Alchemy < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(60, 200, 525, 80)   
    self.opacity = 160
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh([])
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh(items)
    @item_place = 0
    @item_anz = items.size
    self.contents.clear
    for item in items
      draw_item(item, @item_place)
      @item_place += 1
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def draw_item(item, place)
    return if item == nil
    #die 6 zentriert nochmal ein bischen mehr
    x = 0 + (place * 64) + ((525-(@item_anz*64))/2) -6
    y = 0
    bitmap = RPG::Cache.icon(item.icon_name)
    w = bitmap.width
    h = bitmap.height
    src_rect  = Rect.new(0, 0, w, h)
    dest_rect = Rect.new(x, y, w*2, h*2)
    self.contents.stretch_blt(dest_rect, bitmap, src_rect)
  end
end
 
#===============================================================================
# ** Item Selection Window
#===============================================================================
class Item_Selection_Window < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#-------------------------------------------------------------------------- 
  def initialize
    super(0, 290, 426, 191)   # x, y, width, height
    self.opacity = 160
    @column_max = 2
    refresh
    self.index = 0
  end
#--------------------------------------------------------------------------
# * Refresh
#-------------------------------------------------------------------------- 
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    # Add Items that can be combined
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0 and ALCHEMY::ALCHEMY_ITEMS.include?(i)
        @data.push($data_items[i])
      end
    end
    # Add Weapons that can be combined
    for i in 1...$data_weapons.size
      if $game_party.weapon_number(i) > 0 and ALCHEMY::ALCHEMY_WEAPONS.include?(i)
        @data.push($data_weapons[i])
      end
    end
    # Add Armors that can be combined
    for i in 1...$data_armors.size
      if $game_party.armor_number(i) > 0 and ALCHEMY::ALCHEMY_ARMORS.include?(i)
        @data.push($data_armors[i])
      end
    end
    # Make selection Window
    @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
#--------------------------------------------------------------------------
# * Item
#-------------------------------------------------------------------------- 
  def item
    return @data[self.index]
  end
#--------------------------------------------------------------------------
# * Item by index
#--------------------------------------------------------------------------
  def return_item(index)
    return @data[index]
  end
#--------------------------------------------------------------------------
# * Draw Item
#--------------------------------------------------------------------------
  def draw_item(index)
    # Load Item Data
    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
    self.contents.font.color = normal_color
    # Creat Selector
    x = 4 + index % 2 * ((self.width - 30) / 2)
    if index == 1
      y = 0
    else
      y = index / 2 * 32
    end
    rect = Rect.new(x, y, self.width / @column_max, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    # Create Item Icon
    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.font.size = 16
    if number > 1
      self.contents.draw_text(x, y + 8, 24, 32, number.to_s, 1)
    end
    # Draw Item name next to Icon
    self.contents.font.size = 16
    self.contents.draw_text(x+32, y, 130, 32, item.name)
  end
#-------------------------------------------------------------------------- 
# * Frame Update
#--------------------------------------------------------------------------
  def update
    # If cursor is movable
    if self.active and @item_max > 0 and @index >= 0
      # Move cursor down
      if Input.repeat?(Input::DOWN)
        if @index < @item_max - @column_max
          $game_system.se_play($data_system.cursor_se)
          @index = (@index + @column_max) % @item_max
        end
      end
      # Move cursor up
      if Input.repeat?(Input::UP)
        if @index >= @column_max
          $game_system.se_play($data_system.cursor_se)
          @index = (@index - @column_max + @item_max) % @item_max
        end
      end
      # Move cursor right
      if Input.repeat?(Input::RIGHT)
        if (@index % 3 < @item_max)
          if @index != @item_max - 1
            @index += 1
            $game_system.se_play($data_system.cursor_se)
          end
        end
      end
      # Move cursor left
      if Input.repeat?(Input::LEFT)
        if (@item_max > 0)
          @index -= 1
          $game_system.se_play($data_system.cursor_se)
        end
      end
    end
    # Update cursor rectangle
    update_cursor_rect
  end
#-------------------------------------------------------------------------- 
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
  def update_cursor_rect
    # If cursor position is less than 0
    if @index < 0
      self.cursor_rect.empty
      return
    end
    # Get current row
    row = @index / @column_max
    # If current row is before top row
    if row < self.top_row
      # Scroll so that current row becomes top row
      self.top_row = row
    end
    # If current row is more to back than back row
    if row > self.top_row + (self.page_row_max - 1)
      # Scroll so that current row becomes back row
      self.top_row = row - (self.page_row_max - 1)
    end
    # Calculate cursor width
    cursor_width = self.width / @column_max - 16
    # Calculate cursor coordinates
    x = @index % @column_max * (cursor_width + 4)
    y = @index / @column_max * 32 - self.oy
    # Update cursor rectangle
    self.cursor_rect.set(x, y, cursor_width, 32)
  end
end
 
#==============================================================================
# ** Alchemy_Help
#==============================================================================
class Alchemy_Help < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(426, 416, 214, 64)
    self.opacity = 160
    self.contents = Bitmap.new(width - 32, height - 32)
  end
  #--------------------------------------------------------------------------
  # * Set Text
  #--------------------------------------------------------------------------
  def set_text(text, align = 0)
    if text != @text or align != @align
      self.contents.clear
      self.contents.font.color = normal_color
      self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
      @text = text
      @align = align
      @actor = nil
    end
    self.visible = true
  end
end
 
#==============================================================================
# ** Combination_List_Window
#==============================================================================
class Combination_List_Window < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(426, 289, 214, 127)
    self.opacity = 190
    self.contents = Bitmap.new(width - 32, height - 32)
    update
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update(text="")
    self.contents.clear
    self.contents.font.size = 17
 
    words = text.split("\s")
    i = -6
    while (words.size > 1)
      text2draw = words.shift
      while ( words[0] != nil and self.contents.text_size(text2draw + "\s" + words[0]).width <= contents.width )
        text2draw = text2draw + "\s" + words.shift
      end
      self.contents.draw_text(0, i, contents.width, 32, text2draw)
      i += 17
    end
 
  end
 
  #Credits für diese Methode gehen an das Internet
  def wrap_long_string(text,max_width = 26)
    return text.scan(/\S.{0,#{max_width}}\S(?=\s|$)|\S+/)
  end
 
end
 
#==============================================================================
# ** Finished_Item_Window
#==============================================================================
class Finished_Item_Window < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(276, 0, 96, 96)
    self.opacity = 0
    self.contents = Bitmap.new(width - 32, height - 32)
    update
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update(item=nil)
    self.contents.clear
    if item != nil
      bitmap = RPG::Cache.icon(item.icon_name)
      w = bitmap.width
      h = bitmap.height
      src_rect  = Rect.new(0, 0, w, h)
      dest_rect = Rect.new(0, 0, w*2, h*2)
      self.contents.stretch_blt(dest_rect, bitmap, src_rect)
    end
  end
end
zum Lesen den Text mit der Maus markieren

Der Zeilenumbruch passt jetzt perfekt :3
Aber ich hab folgende Probleme:
- Er zeigt jetzt das Wort "Kartoffelbrei" nie mehr an
- Wenn man Potion oder Perfume als erstes wählt, erscheint nur das Icon und der Text rechts nicht mehr o_o

Muss eigentlich

Ruby Quellcode

1
2
3
4
  #Credits für diese Methode gehen an das Internet
  def wrap_long_string(text,max_width = 26)
    return text.scan(/\S.{0,#{max_width}}\S(?=\s|$)|\S+/)
  end

raus, oder bleibt das drin? :3
»Josey« hat folgende Bilder angehängt:
  • Success.png
  • Potion.png
  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

55

Donnerstag, 7. September 2017, 19:41

Ja Josey die methode wrap_long_string kann weg ^^

So, hab das problem gefunden :o, ein kleines = fehlte xD
So hier nochmal die auch getestete Methode ^^

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  def update(text="")
    self.contents.clear
    self.contents.font.size = 17
 
    words = text.split("\s")
    i = -6
    while (words.size >= 1)
      text2draw = words.shift
      while ( words[0] != nil and self.contents.text_size(text2draw + "\s" + words[0]).width <= contents.width )
        text2draw = text2draw + "\s" + words.shift
      end
      self.contents.draw_text(0, i, contents.width, 32, text2draw)
      i += 17
    end
 
  end
  • Info

    Code 4 Life

    Humorvoller bis leicht verrückter Coder mit einer Vorliebe zu Kawaiien Katzen.
    Neko FTW

    (sobald ich kreativere Ideen hierfür hab pack ich das hier rein)
  • Sprachen

    Programmiersprachen:
    - C, C++, C#, Java, Ruby, Lua

    Websprachen
    - JS, HTML, CSS, PHP

    (Zumindest von allem einen guten anteil, nix Perfekt)
  • Meep

    Do you like Cookies? Me too. *mapft kekse* :cookie3:

    Das Ziel eines Programmierers ist es, Software zu entwickeln die Bug-frei ist.
    Das Ziel des Universums ist, Menschen zu erschaffen die diese Software kaputt bekommen.
    Wäre es ein Wettrennen, würde das Universum gewinnen.

    Why wear Java developers glasses? Because they can't C#.
  • ITgenies aktuelle Arbeit

    Ich arbeite meist *etwas* chaotischer als andere. Das heißt bei mir:
    Projekt anfangen, Woche bis 2 Wochen arbeiten, Projekt vergessen, Wiederhole nach Monaten Vorgang

    - ICG / IngameCharsetGenerator Thread (v1.6 - Release)
    - Umsetzung eines eigenen Makers :3
    - Support bei den Skriptanfragen
  • ITgenies pausierten Projekte

    - Eigenes Jump n' Run (+ eigener Physik Engine)
    - Eigenes (umfangreiches) Strategie / Echtzeit Spiel
    - Eigene Website
    - Mit Acc System, Achievements, Leveln...
    - Remake Alter Games
    - N haufen Engines....
    - .... und anderen random Code '^' x3

Josey

Storyteller

  • »Josey« ist der Autor dieses Themas

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Nachricht senden

56

Donnerstag, 7. September 2017, 20:30

Supi, vielen vielen Dank! :D
Es funktioniert jetzt! :D
Ich konnte nu keinen Bug mehr finden, ich meld mich, wenn sich das ändert XD
Danke! :D
  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

Josey

Storyteller

  • »Josey« ist der Autor dieses Themas

Motto: "Was du nicht willst, das man dir tu', füge keinem And'ren zu!"

  • Nachricht senden

57

Montag, 9. Oktober 2017, 22:37

Hallo! XD°
Als ich für Mitsch den Threadt durchsucht habe und alles, was ein Crafting-System können muss, nochmal rausgefischt habe, hab ich noch das hier entdeckt:

Zitat

Zusatzfrage: Kann man irgendwo eine Variable einbauen, die dafür sorgt, das manche Rezepte bei niedriger Variable ("Alchemielevel") manchmal nicht klappen? Prozentual? :3 So, dass man das bei jedem Rezept noch dahinterschreiben kann?
Das würde dann so aussehen:

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#-------------------------------------------------------------------------------
# recipes to make items. Example of a recipe:
# [[A,B], [A,B], [A,B], [A,B]], \v[x]=y
# A = Type of Item in the recipe, (0 = Item, 1 = Weapon, 2 = Armor)
# B = ID if Item
# if slot is not being used in recipe, use 0
# \v[x] = y ist deine Alchemielevel-Variable
# y ist der Wert, der 100%igen Erfolg entspricht, die Wahrscheinlichkeit sind exponentiell (können auch 
# fixe Werte sein,  wenn es sonst zu schwer auszurechnen wäre, wie 1 Level Unterschied 75%
# 2 Level Unterschied 50%, usw)
ALCHEMY_RECIPES = [
[[0,2], [0,5], [0,6],   0 , \v[1]=1], # 0 = 9 mm Rounds + Machine Gun Round + Bobby Pin
[[0,1], [1,1], [0,1], [0,1], \v[1]=4], # 1 = 3 Arrows + Recurve Bow
[[0,2], [0,2],   0  ,   0 , \v[1]=1], # 2 = 9 mm Rounds x2
[[1,2], [0,2], [2,3], [0,3], \v[1]=3],
[[1,2], [2,6], [0,4],   0, \v[1]=10 ],
[[1,2], [2,5], [0,5],   0, \v[1]=4 ],
[[1,2], [2,4], [0,6],   0, \v[1]=5 ],
[[2,2], [0,2], [1,7],   0, \v[1]=1  ],
[[0,1], [0,2], [0,1],   0, \v[1]=1  ]
]# needs to be here
#-------------------------------------------------------------------------------
# Out comes of the above recipes:
# [A, B]
# A = Type of Creation (0 = Item, 1 = Weapon, 2 = Armor)
# B = ID of Item
ALCHEMY_OUTCOMES = [
[0, 10], # 0 Makes Flame Fuel
[1, 1],  # 1 Makes Recurve Bow
[2, 5],  # 2 Makes Leather Boots
[1, 2],
[1, 3],
[1, 4],
[1, 5],
[0, 3],
[0, 3]
]# needs to be here

Je näher die Variable an der eingetragenen Zahl ist, desto höher ist die Chance, dass es klappt. Ist sie gleich oder größer klappts 100%.


Die Funktion fehlt mir noch im Script. In Endless Ending ist es eine der wichtigsten Eigenschaften des Hauptprotas, Items und Waffen zu erschaffen, dabei soll er immer besser werden. Deswegen bräuchte ich bitte noch ein Alchemie-Level. :3
  • Joseys Wuselei

    • Meine Story - Pausiert
      Lust auf Abenteuer?
      So richtig mit Selbstbestimmung?
      Und mit was Spannendem? Zum Spielen? Ohne Schokolade?
      "Eines, das mit dem leistungsstärksten Grafikchip der Welt läuft? Deiner Vorstellungskraft?"
      Hier die Antwort:
      Bild
      Bild
      Hier könnt ihr euren Lieblingschar wählen ;D
      Und hier findet ihr das Minigame, das ab und an den Würfel ersetzt.
    • Meine Arbeiten
      Einige Ressourcen, vor allem Baby-Tiere, aber auch alle Requests, die ich erfüllt habe.
      Bild

      Bild

      In unregelmäßigen Abständen fasse ich alles Neue, was so im Studio passiert ist, zusammen. -Pausiert-
      Bild
    • Meine Fähigkeiten
      Maker: :rmxp: XP
      :rainbow: Pixeln: :star: :star: :star: :star: :star-empty: :star-empty:
      :image: Mappen: :star: :star: :star: :star: :star: :star-empty:
      :wrench-screwdriver: Eventen: :star: :star: :star: :star: :star-empty: :star-empty:
      :puzzle: Scripten: :star: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
      :music: Komponieren: :star-half: :star-empty: :star-empty: :star-empty: :star-empty: :star-empty:
    • (Mein) Autismus
      Ich bin im autistischen Sprektrum-
      sollte ich mich komisch verhalten, oder unhöflich wirken
      (oder mich zu oft entschuldigen, unaufmerksam sein, unsicher wirken, zum zehnten Mal nachfragen, blablabla),
      ist das nicht beabsichtigt.


      Josey. Epicgarantie.
      Nehmt das bloß nicht ernst! D:
    • Meine Welt
      Mein Ehemann Kain! :heart_full: :*
      Freund und Helfer in der Not, immer da, steht er mir mit Rat und Tat zur Seite. Meine andere Hälfte! : D
      Er verdient einfach einen Platz ( :medal: ) in meiner Signatur! XD
      :heart-half:
    • Mein Support
      Der In-Game-Charset-Generator!
      Erstelle Random-NPCs mit Charsetteilen!

      Diese Spiele finde ich toll und brauchen viel mehr Aufmerksamkeit!
      Bastelt mal Banner! : D

    • Meine beendeten Contests
      [Pixelcontest] Rund um den Kürbis
      Bild
      Abstimmung
      Siegerehrung

      Das Wunder der Berge
      Bild
      Abstimmung
      Siegerehrung
    • Meine Contests
      Bild Ein Schreibcontest in Arbeit! : D Bild
  • Joseys Spiele

    • Endless Ending
      :rmxp: Endless Ending
      (Arbeitstitel, "ernstes Projekt")

      Bild

      Eine Reise durch die Wüste.
      Sieben mächtige Gegenstände.
      Unendlich viele Aufgaben.

      Und die Götter haben die Würfel.
    • Scripted Desaster
      :rmxp: Scripted Desaster
      ("nicht ganz so ernstes Projekt")

      Ein verfressener Idiot und ein sarkastischer Workaholic treffen in einem dunklen Wald auf einen weißes Kaninchen...
      Ein Auftragskiller jagt einem Meisterdieb hinterher, wobei nicht ersichtlich ist, wer eigentlich wen jagt...
      Und eine "Kristallhöhle", sowie einen "Wald ohne Wiederkehr" gibts auch.

      Das bedeutet doch Spaß...
    • Pokémon EV
      :rmxp: Pokemon EV
      ("Zeitvertreib nebenbei - Kreatief-Helfer")

      Ist nur ein Pokemonspiel mit üblicher Story und nicht so üblicher Story.
      Ist inzwischen alles schonmal dagewesen. XD
    • Lost Island
      :rmxp: Harvest Moon - Lost Island
      (Arbeitstitel, "Eventtechnik-Projekt")

      Ist momentan mein Hauptprojekt, weil bei EE die Scripts einfach fehlen :<
      Das Spiel ist ein Harvest Moon Abklatsch. XD
      Felder funktionieren, Tiere auch, Grafiken sehen schon gut aus, Maps sind fast fertig. Man kann in die Miene, man kann einkaufen. Auf dem Papier ist alles schon durchgeplant, einiges muss noch umgesetzt werden.
  • Joseys Fortschritt

    • Endless Ending
      :hourglass: Story: 60%
      :foaf: Charas: 20%
      :leaf: Maps: 01%
      :ruby: Zeichnungen: 05%
      :color: Grafiken: 30%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      ...ist nicht viel, huh? ^^°
    • Scripted Desaster
      :hourglass: Story: 10%
      :foaf: Charas: 60%
      :leaf: Maps: 30%
      :ruby: Zeichnungen: 01%
      :color: Grafiken: 60%
      :clipboard: Scripte: 70%
      :music-beam-16: Musik: 00%
      Gut Ding...
    • Pokemon EV
      :hourglass: Story: 60%
      :foaf: Charas: 10%
      :leaf: Maps: 00%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 80%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 70%
      Nicht ernstnehmen XD Das mache ich nur, wenn woanders nix mehr geht...
    • Lost Island
      :hourglass: Story: 100%
      :foaf: Charas: 10%
      :leaf: Maps: 90%
      :ruby: Zeichnungen: 00%
      :color: Grafiken: 60%
      :clipboard: Scripte: 90%
      :music-beam-16: Musik: 00%
      Das macht richtig Spaß XD
  • Huiii

    Bitte klicken Sie weiter. Hier gibt es nichts zu sehen. Nichts. Hören Sie? Nichts.

58

Samstag, 21. Oktober 2017, 16:53

*schiebt unauffällig den Patch hier rein* :3

Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
#===============================================================================
#                    Mr Wiggles Alchemy Script
#===============================================================================
# By Mr Wiggles
# Version 2.4
# 3-20-11
#-------------------------------------------------------------------------------
# Instructions:
#    Fill out the constants, And then call this script by using...
#    $scene = Alchemy.new
#===============================================================================
 
class Game_Player
  attr_accessor :alchemyLVL
 
  alias :alchemy_old_init :initialize unless $!
  def initialize
    alchemy_old_init
    @alchemyLVL = 1
  end
end
 
#-------------------------------------------------------------------------------
module ALCHEMY#/////////           *** EDIT AREA  ***                 /////////#
#-------------------------------------------------------------------------------
# Item IDs that can be used in Alchemy.
ALCHEMY_ITEMS   = [1,2,3,4,5]
#-------------------------------------------------------------------------------
# Item IDs that are not consumed when combined.
NON_CONSUME_ITEMS = [1,3]
#-------------------------------------------------------------------------------
# Weapon IDs that can be used in Alchemy.
ALCHEMY_WEAPONS = [1,2,3,4]
#-------------------------------------------------------------------------------
# Weapon IDs that are not consumed when combined.
NON_CONSUME_WEAPONS = [2,4]
#-------------------------------------------------------------------------------
# Armor IDs that can be used in Alchemy.
ALCHEMY_ARMORS  = [1,2,3,4]
#-------------------------------------------------------------------------------
# Armor IDs that are not consumed when combined.
NON_CONSUME_ARMORS = [2,3]
#-------------------------------------------------------------------------------
# Can combine more then the same type of item together, or just one of each.
COMBINE_DUPS = true
#-------------------------------------------------------------------------------
# Button that is used to check if the items being combined make anything.
CHECK_RECIPE_BUTTON = Input::A
#-------------------------------------------------------------------------------
# Sound to play if the recipe was successful. leave blank if none.
RIGHT_SE = "055-Right01"
#-------------------------------------------------------------------------------
# Sound to play if the recipe failed. leave blank if none.
WRONG_SE = "057-Wrong01"
#-------------------------------------------------------------------------------
# recipes to make items. Example of a recipe:
# [[A,B], [A,B], [A,B], [A,B]]
# A = Type of Item in the recipe, (0 = Item, 1 = Weapon, 2 = Armor)
# B = ID if Item
# if slot is not being used in recipe, use 0.
ALCHEMY_RECIPES = [
[[0,1], [0,1], [0,1], [0,1], [0,1], [0,1], [0,1], [0,1]], 
[[0,1], [[1,1],[1,2]], [0,1], [0,1], [0,1],   0  ,   0  ,   0  ], 
[[0,2], [0,2],   0  ,   0  ,   0  ,   0  ,   0  ,   0  ], 
[[1,2], [0,2], [2,3], [0,3],   0  ,   0  ,   0  ,   0  ],
[[1,2], [2,6], [0,4],   0  ,   0  ,   0  ,   0  ,   0  ],
[[1,2], [2,5], [0,5],   0  ,   0  ,   0  ,   0  ,   0  ],
[[1,2], [2,4], [0,6],   0  ,   0  ,   0  ,   0  ,   0  ],
[[2,2], [0,2], [1,7],   0  ,   0  ,   0  ,   0  ,   0  ],
[[0,1], [0,2], [0,1],   0  ,   0  ,   0  ,   0  ,   0  ],
 
#"kartofel brei rezpte"
[[0,2], [0,5] , 0, 0, 0, 0, 0, 0],  #guter
[[0,1], [0,4] , 0, 0, 0, 0, 0, 0],  #schlechter
 
[ [[0,1],[0,2]] , [[0,4],[0,5]] , 0, 0, 0, 0, 0, 0 ] #mittel
 
#[[0,2], [0,4] , 0, 0, 0, 0, 0, 0],  #mittel /1
#[[0,1], [0,5] , 0, 0, 0, 0, 0, 0]  #mittel /2
 
]# needs to be here
#-------------------------------------------------------------------------------
# Out comes of the above recipes:
# [A, B, C]
# A = Type of Creation (0 = Item, 1 = Weapon, 2 = Armor)
# B = ID of Item
# C = required lvl of 100% chance
ALCHEMY_OUTCOMES = [
[1, 1, 0], # 0 Makes Flame Fuel
[1, 1, 0],  # 1 Makes Recurve Bow
[2, 5, 2],  # 2 Makes Leather Boots
[1, 2, 0],
[1, 3, 0],
[1, 4, 0],
[1, 5, 0],
[0, 3, 0],
[0, 3, 0],
 
#kartoffelbreie
[0, 17],  #9.  Seed of Life     aka guter kartoffelbrei
[0, 18],  #10. Seed of Mana     aka schlechter kartoffelbrei
[0, 19]   #11. Seed of Strength aka normaler kartoffelbrei
#[0, 19]  #12. auch normaler Kartoffelbrei, wird für mittel /2 benötigt 
          #bei BLUEPRINTS fürs testen 12 hinzufügen damit es klappt
 
]# needs to be here
 
#Die Animations ID in der Datenbank die genutzt werden soll
ALCHEMY_ANIMATION = 1
 
#-------------------------------------------------------------------------------
# Blue prints: the basic idea behind this is that the player can not create any
# items that they do not know how to create it. This can be done by using a
# script call command in an event that says:
# $game_system.add_blue_prints(Blue Print ID)
# the Blue print id refers to the location of the recipe in the
# ALCHEMY_RECIPES array, also remember that it starts counting at 0, this
# means that 1=0, 2=1, and so on.
#
# Bellow is the blue prints that the player already knows at the start of the
# game. [BP, BP, BP]  BP = Blue Print ID
BLUE_PRINTS = [0,1,2,4, 9,10,11]
#-------------------------------------------------------------------------------
# Remove the items being combined if the recipe is wrong.
PENALIZE = true
#-------------------------------------------------------------------------------
# Give the player a junk item if the mix was wrong. PENALIZE must be true for
# this. If you don't want to use this set the ID to 0.
JUNK_ITEM_ID = 33
#-------------------------------------------------------------------------------
end#/////////              *** END EDIT AREA  ***                     /////////#
#-------------------------------------------------------------------------------
 
 
#===============================================================================
# ** Alchemy
#===============================================================================
class Alchemy
  #----------------------------------------------------------------
  # * Main
  #----------------------------------------------------------------
  def main
 
    # Create Windows
    @alchemy_window = Window_Alchemy.new
    @item_selection_window = Item_Selection_Window.new
    @help_window = Alchemy_Help.new
#    @map_back    = Spriteset_Map.new
    @background_sprite = Sprite.new           # Make Background
    @background_sprite.bitmap = RPG::Cache.windowskin('Alchemy Back')
    @combination_window   = Combination_List_Window.new
    @finished_item_window = Finished_Item_Window.new
 
    @viewport1 = Viewport.new(0, 0, 640, 480)
    @sprite = RPG::Sprite.new(@viewport1)
    @sprite.x=320
    @sprite.y=80
 
    # change Z
    @alchemy_window.z = 210
    @item_selection_window.z = 210
    @finished_item_window.z = 210
    @combination_window.z = 210
    @help_window.z = 210
    # Make variables
    @items_being_combined = []
    @recipes = ALCHEMY::ALCHEMY_RECIPES
    @out_comes = ALCHEMY::ALCHEMY_OUTCOMES
    @creation = []
    @combination = ""
    @showing_text_wait = 0
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @alchemy_window.dispose
    @item_selection_window.dispose
    @help_window.dispose
#    @map_back.dispose
    @background_sprite.dispose                # Dispose background
    @combination_window.dispose
    @finished_item_window.dispose
  end
  #----------------------------------------------------------------
  # * Update
  #----------------------------------------------------------------
  def update
    # Show the names of items being added
    @showing_text_wait -= 1 if @showing_text_wait != 0
    if @showing_text_wait == 0
      item_names = []
      for item in @items_being_combined
        return if item == nil
        item_names << item.name.to_s
      end
      @combination = item_names.join(" + ")
      @finished_item_window.update
    end
    # Update Windows
    @alchemy_window.refresh(@items_being_combined)
    @item_selection_window.update
    @combination_window.update(@combination)
    # update mains
    update_help
    update_commands
 
    @sprite.update
  end
  #----------------------------------------------------------------
  # * Update Help
  #----------------------------------------------------------------
  def update_help
    if @item_selection_window.item != nil
      @help_window.set_text(@item_selection_window.item.description)
    end
  end
  #----------------------------------------------------------------
  # * Update Commands
  #----------------------------------------------------------------
  def update_commands
    #--------------------------
    # If B button was pressed
    #--------------------------
    if Input.trigger?(Input::B)
      @showing_text_wait = 0
      if @items_being_combined.size > 0
        item = @items_being_combined[@items_being_combined.size - 1]
        case item
        when RPG::Item
          $game_party.gain_item(item.id, 1) if 
            !ALCHEMY::NON_CONSUME_ITEMS.include?(item.id)
        when RPG::Weapon
          $game_party.gain_weapon(item.id, 1) if 
            !ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id)
        when RPG::Armor
          $game_party.gain_armor(item.id, 1) if
            !ALCHEMY::NON_CONSUME_ARMORS.include?(item.id)
        end
        $game_system.se_play($data_system.cancel_se)
        @items_being_combined.delete_at(@items_being_combined.size - 1)
      else
        # Return to map
        $game_system.se_play($data_system.cancel_se)
        $scene = Scene_Map.new
      end
      # Update item selection window
      @item_selection_window.refresh
      return
    end
    #--------------------------
    # If C button was pressed
    #--------------------------
    if Input.trigger?(Input::C)
      @showing_text_wait = 0
      item = @item_selection_window.item
      return if item == nil
      if @items_being_combined.size < 8
        if !@items_being_combined.include?(item) and
            ALCHEMY::COMBINE_DUPS == false
          $game_system.se_play($data_system.decision_se)
          @items_being_combined << item
          case item
          when RPG::Item
            $game_party.gain_item(item.id, -1) if 
              !ALCHEMY::NON_CONSUME_ITEMS.include?(item.id)
          when RPG::Weapon
            $game_party.gain_weapon(item.id, -1) if 
              !ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id)
          when RPG::Armor
            $game_party.gain_armor(item.id, -1) if
              !ALCHEMY::NON_CONSUME_ARMORS.include?(item.id)
          end
        elsif ALCHEMY::COMBINE_DUPS == true
#          $game_system.se_play($data_system.decision_se)
#          @items_being_combined << item
          case item
          when RPG::Item
            #prüft ob ein item vorhanden ist und Non-Concumable ist, wenn nicht dann fortfahren
            if !(@items_being_combined.include?(item) and ALCHEMY::NON_CONSUME_ITEMS.include?(item.id))
              $game_system.se_play($data_system.decision_se)
              @items_being_combined << item
              $game_party.gain_item(item.id, -1) if 
                !ALCHEMY::NON_CONSUME_ITEMS.include?(item.id)
            end
          when RPG::Weapon
            #prüft ob eine waffe vorhanden ist und Non-Concumable ist, wenn nicht dann fortfahren
            if !(@items_being_combined.include?(item) and ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id))
              $game_system.se_play($data_system.decision_se)
              @items_being_combined << item
              $game_party.gain_weapon(item.id, -1) if 
                !ALCHEMY::NON_CONSUME_WEAPONS.include?(item.id)
            end
          when RPG::Armor
            #prüft ob eine rüstung vorhanden ist und Non-Concumable ist, wenn nicht dann fortfahren
            if !(@items_being_combined.include?(item) and ALCHEMY::NON_CONSUME_ARMORS.include?(item.id))
              $game_system.se_play($data_system.decision_se)
              @items_being_combined << item            
              $game_party.gain_armor(item.id, -1) if
                !ALCHEMY::NON_CONSUME_ARMORS.include?(item.id)
            end
          end
        else
          $game_system.se_play($data_system.buzzer_se)
        end
      else
        $game_system.se_play($data_system.buzzer_se)
      end
      # Update item selection window
      @item_selection_window.refresh
      return
    end
    #--------------------------
    # If Check button was pressed
    #--------------------------
    if Input.trigger?(ALCHEMY::CHECK_RECIPE_BUTTON)
      # check if the player was able to make anything
      @creation = []
      if @items_being_combined.size > 1
        for id in 0..@recipes.size - 1
          recipe = @recipes[id]
#          new_recipe = recipe.flatten
#          new_recipe.sort!
          # if player does not know recipe
          next unless $game_system.blue_prints.include?(id)
          # get created item
          @creation = @out_comes[id]
          # kill game to prevent syntax error
          if @creation == nil
            print ("There is no out come for the recipie, please add one.")
            $scene = nil
            return
          end
          # get items to be combine
          items_combined = []
          for i in 0..@items_being_combined.size - 1
            item = @items_being_combined[i]
            case item
            when RPG::Item
              type = 0
            when RPG::Weapon
              type = 1
            when RPG::Armor
              type = 2
            end
            item_array = [type, item.id]
            items_combined.push(item_array)
          end
          # fill empty slots with 0
          empty_slots = 8 - items_combined.size
          for i in 0..empty_slots
            items_combined << 0 if items_combined.size < 8
          end
#          items_combined.flatten!
#          items_combined.sort!
#          # see if the combination matches any recipes then
#          # returns the item that was created
#          break if items_combined == new_recipe
 
          #code zum clearen von elementen eines arrays
          #a ist das array
          #e ist das element
          def delElement(a,e)
            for i in 0...a.size
              if a[i] == e
                a[i] = nil
                return
              end
            end
          end
 
          success = false
          for i in 0...recipe.size
            #prüfe ob rezept element in eingabe items enthalten
            if items_combined.include?(recipe[i])
              #wenn ja dann lösche / cleare es im input
              delElement(items_combined, recipe[i])
 
            elsif recipe[i].kind_of?(Array) and recipe[i][0].kind_of?(Array)
              #sollte element nich im input enthalten sein aber das element ist 
              #ein array also eine oder anweisung dann:
 
              orElement = recipe[i] #unser ODER
              for j in 0...orElement.size
                if items_combined.include?(orElement[j])
                  #wenn eins der elemente in der ODER anweisung enthalten ist dann
                  delElement(items_combined, orElement[j])
                  break
                end
              end
 
            end
          end
 
          #entferne alle geclearten elemente aus dem array
          items_combined.delete(nil)
          #prüfe ob das array leer ist, also das rezept stimmt
          if items_combined.size == 0
            success = true
          end
 
          break if success == true
          @creation = []
        end
 
        #testen ob der spieler das item "craften" kann, bedingung: lvl
        if @creation != [] and ($game_player.alchemyLVL < @creation[2])
          #lvl ist kleiner als benötigt
          chance = $game_player.alchemyLVL * 100 / @creation[2]
          n = rand(2) * 100
          if n >= chance
            # nicht geschafft
            @creation = []
          end
        end
 
        # show result
        if @creation != []
          Audio.se_play("Audio/SE/"+ALCHEMY::RIGHT_SE, 90, 100) rescue nil
          # Add Item
          case @creation[0]
          when 0
            $game_party.gain_item(@creation[1], 1)
            item = $data_items[@creation[1]]
          when 1
            $game_party.gain_weapon(@creation[1], 1)
            item = $data_weapons[@creation[1]]
          when 2
            $game_party.gain_armor(@creation[1], 1)
            item = $data_armors[@creation[1]]
          end
          # Clear Varaibles
          @items_being_combined = []
          @showing_text_wait = 120
 
          #spielt die HIT animation ab
          @sprite.animation($data_animations[ALCHEMY::ALCHEMY_ANIMATION],true)
          timeOut = 16
          while timeOut > 0 do
            Graphics.update
            @sprite.update
            timeOut-=1
          end
 
          # Show text
          @combination = "Success! Looks like you made a(n) #{item.name}."
          @finished_item_window.update(item)
 
          #unsere endlosschleife für den exit
          loop do
            #alle wichtigen sachen / fenster etc. weiterhin updaten
            Graphics.update
            @sprite.update
            @combination_window.update(@combination)
            Input.update
            if Input.trigger?(Input::C)
              #back to map
              $scene = Scene_Map.new
              return
            end
          end
 
        else
          Audio.se_play("Audio/SE/"+ALCHEMY::WRONG_SE, 90, 100) rescue nil
          # Clear items being combined
          if ALCHEMY::PENALIZE
            @items_being_combined = []
            junk_id = ALCHEMY::JUNK_ITEM_ID
            $game_party.gain_item(junk_id, 1) if junk_id > 0
          end
          @showing_text_wait = 120
 
          #spielt die MISS animation ab
          @sprite.animation($data_animations[ALCHEMY::ALCHEMY_ANIMATION],false)
 
          # Show text
          @combination = "I don't think those go well together."
          @finished_item_window.update($data_items[ALCHEMY::JUNK_ITEM_ID])
        end
      end
      # Update item selection window
      @item_selection_window.refresh
      return
    end
  end
end
 
#===============================================================================
# ** Game_System
#===============================================================================
class Game_System
  attr_accessor :blue_prints
 
alias alchemy_init initialize
  def initialize
    alchemy_init
    @blue_prints = ALCHEMY::BLUE_PRINTS
    @recipes = ALCHEMY::ALCHEMY_RECIPES
  end
 
  def add_blue_prints(prints)
    if !@blue_prints.include?(prints) and prints < @recipes.size - 1
      @blue_prints << prints
    end
  end
end
 
#===============================================================================
# ** Alchemy Window
#===============================================================================
class Window_Alchemy < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(60, 200, 525, 80)   
    self.opacity = 160
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh([])
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh(items)
    @item_place = 0
    @item_anz = items.size
    self.contents.clear
    for item in items
      draw_item(item, @item_place)
      @item_place += 1
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def draw_item(item, place)
    return if item == nil
    #die 6 zentriert nochmal ein bischen mehr
    x = 0 + (place * 64) + ((525-(@item_anz*64))/2) -6
    y = 0
    bitmap = RPG::Cache.icon(item.icon_name)
    w = bitmap.width
    h = bitmap.height
    src_rect  = Rect.new(0, 0, w, h)
    dest_rect = Rect.new(x, y, w*2, h*2)
    self.contents.stretch_blt(dest_rect, bitmap, src_rect)
  end
end
 
#===============================================================================
# ** Item Selection Window
#===============================================================================
class Item_Selection_Window < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#-------------------------------------------------------------------------- 
  def initialize
    super(0, 290, 426, 191)   # x, y, width, height
    self.opacity = 160
    @column_max = 2
    refresh
    self.index = 0
  end
#--------------------------------------------------------------------------
# * Refresh
#-------------------------------------------------------------------------- 
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    # Add Items that can be combined
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0 and ALCHEMY::ALCHEMY_ITEMS.include?(i)
        @data.push($data_items[i])
      end
    end
    # Add Weapons that can be combined
    for i in 1...$data_weapons.size
      if $game_party.weapon_number(i) > 0 and ALCHEMY::ALCHEMY_WEAPONS.include?(i)
        @data.push($data_weapons[i])
      end
    end
    # Add Armors that can be combined
    for i in 1...$data_armors.size
      if $game_party.armor_number(i) > 0 and ALCHEMY::ALCHEMY_ARMORS.include?(i)
        @data.push($data_armors[i])
      end
    end
    # Make selection Window
    @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
#--------------------------------------------------------------------------
# * Item
#-------------------------------------------------------------------------- 
  def item
    return @data[self.index]
  end
#--------------------------------------------------------------------------
# * Item by index
#--------------------------------------------------------------------------
  def return_item(index)
    return @data[index]
  end
#--------------------------------------------------------------------------
# * Draw Item
#--------------------------------------------------------------------------
  def draw_item(index)
    # Load Item Data
    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
    self.contents.font.color = normal_color
    # Creat Selector
    x = 4 + index % 2 * ((self.width - 30) / 2)
    if index == 1
      y = 0
    else
      y = index / 2 * 32
    end
    rect = Rect.new(x, y, self.width / @column_max, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    # Create Item Icon
    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.font.size = 16
    if number > 1
      self.contents.draw_text(x, y + 8, 24, 32, number.to_s, 1)
    end
    # Draw Item name next to Icon
    self.contents.font.size = 16
    self.contents.draw_text(x+32, y, 130, 32, item.name)
  end
#-------------------------------------------------------------------------- 
# * Frame Update
#--------------------