RPGVX.net

  RPGVX.net => RPGVX.net Service => Archiv => Thema gestartet von: Dainreth am Juli 29, 2008, 13:52:38

Titel: Variablenproblem
Beitrag von: Dainreth am Juli 29, 2008, 13:52:38
Hallo Leute,
ich habe ein Problem, habe schon einzeln ein paar Leute gefragt, die mir aber auch nicht weitehelfen konnten, jetzt mach ich's halt allgemein.
Ich habe vier Variablen, die einen zufälligen Wert innerhalb eines Intervalls annehmen. Soweit so gut, allerdings darf kein Wert dieser Variablen
einem der anderen Variablen gleichen. Beispiel: Jede Variable nimmt einen Wert (random) zwischen 1 und 10 an. Variable eins hat nun den Wert 3 und zugleich auch die Variable 4 hat den Wert drei. Dies darf aber nicht passieren. Ich habe bereits eine Möglichkeit gefunden, die allerdings viel zu viele Conditional Branches benötigt und zu erheblichem Lag führt, warum auch immer. Per RGSS2 hab ich leider auch keine Lösung gefunden, daher erhoffe ich mir mal, dass ich irgendetwas einfaches übersehen habe, bei dem mir einer von euch weiterhelfen kann. Danke im Voraus :)
Titel: Re: Variablenproblem
Beitrag von: Evil95 am Juli 29, 2008, 14:14:23
das ist doch ganz einfach, glaube ich. ich probiere es mal schnell und wenn ichs habe poste ich es :)
Titel: Re: Variablenproblem
Beitrag von: KeksX am Juli 29, 2008, 14:19:34
Hierfür würde ich Labels verwenden....
Hab dir mal ein Bild gemacht:

(http://i37.tinypic.com/2hp696o.png)

P.S: Ich warte noch auf eine PN von dir ;).
Titel: Re: Variablenproblem
Beitrag von: Evil95 am Juli 29, 2008, 14:24:10
(http://img292.imageshack.us/img292/5189/unbenanntgf3.png)
so würde ich es machen. so haben alle Variablen zu 100% unterschiedliche Werte.
Titel: Re: Variablenproblem
Beitrag von: Dainreth am Juli 29, 2008, 14:31:09
@KeksX
Schicke ich sofort los, bin gerade am Mail/PN beantworten, mach ich dann gleich. Danke nochmal.

@KeksX & Evil95
Hm, das mit den Labels hatte ich auch schon probiert, nur wollte es nicht hinhauen. Ich probiere jetzt dennoch beide Sachen nochmal aus, vielleicht hatte ich 'nen Fehler drin, danke euch schonmal ich editierts dann hier rein!
Titel: Re: Variablenproblem
Beitrag von: Onkel Hell am Juli 29, 2008, 15:28:10
soll ich ma gucken ;)
wie genau isn dein intervall, dann code ich dir das direkt rein ansonsten is das ziemlich easy
Titel: Re: Variablenproblem
Beitrag von: Dainreth am Juli 29, 2008, 15:36:28
@KeksX
Funktioniert weiterhin nicht, allerdings habe ich dafür keine Erklärung.

@Evil
OK, hab mir deins mal genauer angesehen und es kann nicht gehen, habs dann auch nochmal getestet und nach dem 4 Test waren schon gleiche Zahlen. Es wird schließlich nur einmal durchgegangen, sollte es beispielsweise zu Beginn zwei gleiche Werte sein, so kann während des Conditional Branches nocheinmal der Wert rauskommen und das wird dannach nicht mehr abgefragt. Trotzdem danke!

@hM
Wäre klasse, wenn du das hinbekommen würdest, das genaue Intervall beträgt [1...6]
Titel: Re: Variablenproblem
Beitrag von: KeksX am Juli 29, 2008, 15:37:36
Also ich weiß nicht was du hast. Ich habe jetzt 30x oder so getestet und jede Variable war verschieden O_o'....

Naja sry dass es nicht geklappt hat!
Titel: Re: Variablenproblem
Beitrag von: Onkel Hell am Juli 29, 2008, 15:40:18
in welche ingame variablen willsten das zeug reingeschrieben bekommen ? also die 4 randomwerte
Titel: Re: Variablenproblem
Beitrag von: Dainreth am Juli 29, 2008, 15:41:48
Die Idee war auch meine anfängliche und rein theoretisch muss es so funktionieren. Ich habe gerade den Verdacht, dass ein anderes Event irgendwie falsch läuft, daher probier ich deine Möglichkeit nochmal in 'nem neuen Projekt, wenn du sagst, dass es bei dir geht.

@hM Spielt keine Rolle, am besten die ersten vier ;)
Titel: Re: Variablenproblem
Beitrag von: Evil95 am Juli 29, 2008, 15:47:49
meins funktioniert aber. ich habe es ca. 10 mal probiert und immer andere werte gehabt. hast du auch den Variable Fix drin?
Titel: Re: Variablenproblem
Beitrag von: Dainreth am Juli 29, 2008, 15:55:26
@Evil:
Ja, du hast schon recht, es funktioniert, aber nicht 100% aus der oben genannten Begründung. Die Wahrscheinlichkeit ist nicht sehr hoch, dass Zahlen doppelt vorkommen, aber die Möglichkeit besteht, ich habe ca. 50 Durchläufe gemacht und einmal doppelte bekommen.
Titel: Re: Variablenproblem
Beitrag von: Onkel Hell am Juli 29, 2008, 16:17:13
so is fertig
da diese dumme codebox nur rumspackt und zu klein is hab ich das in die game_interpreter gebaut
du fügst das hier als neues script ein
im event machst du einfach script und schreibst -> randomize <- rein
das ding kannste auch für andere min oder max werte bzw andere variablen nutzen, die standardwerte sind jetz die die du mir gegeben hast
wenn du andere haben willst kanns du die 6 parameter angeben
randomize(var1,var2,var3,var4,min_random,max_random)
class Game_Interpreter
 
  def randomize(var1=1,var2=2,var3=3,var4=4,min=1,max=6)
    loop do
    $game_variables[var1] = min+rand(max)
    $game_variables[var2] = min+rand(max)
    $game_variables[var3] = min+rand(max)
    $game_variables[var4] = min+rand(max)
    break if $game_variables[var1] != $game_variables[var2] and
             $game_variables[var1] != $game_variables[var3] and
             $game_variables[var1] != $game_variables[var4] and
             $game_variables[var2] != $game_variables[var3] and
             $game_variables[var2] != $game_variables[var4] and
             $game_variables[var3] != $game_variables[var4]
   end
  end
 
end
Titel: Re: Variablenproblem
Beitrag von: Dainreth am Juli 29, 2008, 16:24:54
Das klappt hervorragend, hM! Vielen vielen Dank!

@KeksX
Konnte leider keinen Fehler ausmachen, trotzdem nochmal vielen Danke an dich und Evil für die Hilfe!
Titel: Re: Variablenproblem
Beitrag von: Onkel Hell am Juli 29, 2008, 16:29:47
@evil bei dir is der fehler das du zwar abfragst ob es die gleiche zahl is und dann neu randomized aber der random kann wieder die gleiche zahl ergeben was du nicht abfragst
Titel: Re: Variablenproblem
Beitrag von: Evil95 am Juli 29, 2008, 16:48:59
joa stimmt wah. naja wenn man bedenkt das ich das in zwei Minuten gemacht habe, dann is das doch schon mal ein anfang. ich könnte es auch per event so machen wie du per rgss2. ich bräuchte nur ein bissel mehr zeit :)
Titel: Re: Variablenproblem
Beitrag von: eugene222 am Juli 29, 2008, 18:32:35
Hast du auch das Skript für Variablen Fix drauf? Weil ich hatte auch öfters Probleme mit Variablen, aber als ich es drauf hatte ging alles wunderbar. Auserdem hab ich auch Game_Interprer gefixt, denn das hat auch einige Fehler beim Maker erzeugt. Naja, war ja klar EB. Die können noch nichtmal Bugfreie Skripts rausbringen...
Titel: Re: Variablenproblem
Beitrag von: Dainreth am Juli 29, 2008, 23:19:22
Nja imo geht's jetzt sowieso, aber ich wäre mal interessiert, was für ein Variablen Fix sowie Game_Interpreter Fix du verwendest.
Titel: Re: Variablenproblem
Beitrag von: Evil95 am Juli 29, 2008, 23:26:05
er meint sicher diesen Variable Fix: (einfach als neuen code über main einfügen)
#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
#  An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================

class Game_Interpreter
  #--------------------------------------------------------------------------
  # * Control Variables
  #--------------------------------------------------------------------------
  def command_122
    value = 0
    case @params[3]  # Operand
    when 0  # Constant
      value = @params[4]
    when 1  # Variable
      value = $game_variables[@params[4]]
    when 2  # Random
      value = @params[4] + rand(@params[5] - @params[4] + 1)
    when 3  # Item
      value = $game_party.item_number($data_items[@params[4]])
    when 4  # Actor
      actor = $game_actors[@params[4]]
      if actor != nil
        case @params[5]
        when 0  # Level
          value = actor.level
        when 1  # Experience
          value = actor.exp
        when 2  # HP
          value = actor.hp
        when 3  # MP
          value = actor.mp
        when 4  # Maximum HP
          value = actor.maxhp
        when 5  # Maximum MP
          value = actor.maxmp
        when 6  # Attack
          value = actor.atk
        when 7  # Defense
          value = actor.def
        when 8  # Spirit
          value = actor.spi
        when 9  # Agility
          value = actor.agi
        end
      end
    when 5  # Enemy
      enemy = $game_troop.members[@params[4]]
      if enemy != nil
        case @params[5]
        when 0  # HP
          value = enemy.hp
        when 1  # MP
          value = enemy.mp
        when 2  # Maximum HP
          value = enemy.maxhp
        when 3  # Maximum MP
          value = enemy.maxmp
        when 4  # Attack
          value = enemy.atk
        when 5  # Defense
          value = enemy.def
        when 6  # Spirit
          value = enemy.spi
        when 7  # Agility
          value = enemy.agi
        end
      end
    when 6  # Character
      character = get_character(@params[4])
      if character != nil
        case @params[5]
        when 0  # x-coordinate
          value = character.x
        when 1  # y-coordinate
          value = character.y
        when 2  # direction
          value = character.direction
        when 3  # screen x-coordinate
          value = character.screen_x
        when 4  # screen y-coordinate
          value = character.screen_y
        end
      end
    when 7  # Other
      case @params[4]
      when 0  # map ID
        value = $game_map.map_id
      when 1  # number of party members
        value = $game_party.members.size
      when 2  # gold
        value = $game_party.gold
      when 3  # steps
        value = $game_party.steps
      when 4  # play time
        value = Graphics.frame_count / Graphics.frame_rate
      when 5  # timer
        value = $game_system.timer / Graphics.frame_rate
      when 6  # save count
        value = $game_system.save_count
      end
    end
    for i in @params[0] .. @params[1]   # Batch control
      case @params[2]  # Operation
      when 0  # Set
        $game_variables[i] = value
      when 1  # Add
        $game_variables[i] += value
      when 2  # Sub
        $game_variables[i] -= value
      when 3  # Mul
        $game_variables[i] *= value
      when 4  # Div
        $game_variables[i] /= value if value != 0
      when 5  # Mod
        $game_variables[i] %= value if value != 0
      end
      if $game_variables[i] > 99999999    # Maximum limit check
        $game_variables[i] = 99999999
      end
      if $game_variables[i] < -99999999   # Minimum limit check
        $game_variables[i] = -99999999
      end
    end
    $game_map.need_refresh = true
    return true
  end
end

Was er mit Game_Interpreter Fix meint weiß ich nicht. Das würde ich aber gerne wissen :)
Titel: Re: Variablenproblem
Beitrag von: eugene222 am Juli 29, 2008, 23:31:33
Also genau das mein ich mit Variblen Fix und Game_Interper wurde so verbessert.. Das heißt man muss das alte Game_interprer überschreiben...

[gelöscht durch Administrator]
Titel: Re: Variablenproblem
Beitrag von: Evil95 am Juli 29, 2008, 23:43:18
Häh? wie jetzt...? o_O Du hast einfach den Variable-Fix in den Game_Interpreter integriert?
Titel: Re: Variablenproblem
Beitrag von: Hanmac am Juli 30, 2008, 12:39:43
nutze das für die werte:

(0..10).to_a.sort_by{rand()}[0..4] #=> das sind 5 elemente aus einer liste von 0 bis 10
Titel: Re: Variablenproblem
Beitrag von: Dainreth am Juli 30, 2008, 23:42:43
OK, den Variablen Fix kannte ich, aber das mit den Game_Interpreter ist mir neu, danke.

@Hanmac
Aus deinem Post werde ich nicht wirklich schlau, was willst du damit sagen?
Titel: Re: Variablenproblem
Beitrag von: Hanmac am Juli 31, 2008, 07:10:18
der array der bei mir herauskommt sind 5 zufällige zahlen von 0 bis 10 (so wie es der Thead ersteller wolte) er müsste sie nurt noch zu weisen
SimplePortal 2.3.3 © 2008-2010, SimplePortal