Flyff Resourcen

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Flyff Resourcen

      Hallo Liebe Mcore Community,
      in diesem Threade werde ich euch das Arbeiten mit den Resourcen näher bringen. Ich werde versuchen diesen Guide ständig zu erweitern:

      Kapitel 1:

      • Grundlagen:

      [SPOILER2]
      Inhaltsverzeichnis.
      1. Welche Ressourcen gibt es und was machen sie.

      1.1. Masquerade.prj
      1.2. Models
      1.3. Items
      1.4. Quests
      1.5. Applikationen
      1.6. Welten
      1.7. LUA
      1.8. Events
      1.9. Exchange Script
      1.10. Monster
      1.11. Der ganze Rest

      2. Wie gehe ich mit den Ressourcen um, wie arbeite ich mit ihnen
      3. Möglichkeiten
      4. Der „Beast“ und die Ressourcen
      5. Ressourcen Client / Server
      6. Arbeiten mit dem Quellcode
      7. Schluss


      So nun da vermehrt gewünscht wurde, dass ich das ganze hier in den Thread schreibe, schreibe ich das Tutorial ein wenig um und schreibe es hier rein.

      1. Welche Ressourcen gibt es und was machen sie.



      Ohne groß um den heißen Brei herum zu reden, werde ich hier eine Liste der wichtigsten Flyff Ressourcen und ihrer Funktion schreiben


      1.1. Masquerade.prj

      Funktion: Die Masquerade.prj ist eine Art Hilfsdatei für den Client/WorldServer um einige Ressourcen zu laden, in ihr werden einige(nicht alle) Ressourcen aufgelistet, welche später vom Client/WorldServer eingelesen werden. Bsp.:

      Quellcode

      1. textClient "textClient.inc" – Die Funktion OpenProject sucht nach dem String „textclient“ und liest den darauffolgenden String „textclient.inc“ und wendet die Lesefunktion für die Datei textclient.inc an.

      Diese Datei wird auch vom Beast Worldeditor verwendet, um die wichtigsten Ressourcen einzulesen. Diese Datei wurde schon seit dem Beginn von Flyff genutzt.

      1.2 Models
      Alle Model-Dateien werden in zwei Dateien definiert:

      mdlDyna.inc & mdlObj.inc

      Die Datei mdlDyna beinhaltet die Models von: Controls, SFX, Items, NPCs, Regionen und Ships

      Die Datei mdlObj hingegen beinhaltet nur die Models von den Worldobjekten. Der Grobe aufbau sieht folgendermaßen aus:

      Quellcode

      1. „Datei Prefix“ Nummer
      2. {
      3. „Modelname“ Modelparameter
      4. }
      5. --> Datiname bei „ctrl“ 2 { „"MaSuPrBigDoor" “ … : Ctrl_MaSuPrBigDoor.*


      1.3 Items
      Nun kommen wir zu den wahrscheinlich meist behandelten Dateien, den Item Dateien. Folgende Dateien werden zum korrekten eintragen von einem Item benötigt:

      - defineitem.h (Eintrag für die Itemid)

      - propitem.txt (Genaue Definition der Itemparameter)

      - propitem.txt.txt (Itembeschreibung [Name und Beschreibung])

      - mdldyna.inc (Itemmodel)

      Diese Dateien werden benötigt, um ein grundlegend einzutragen. Es gibt noch einige weitere Dateien, die das Item genauer beschreiben, z.B.
      - accessory.inc <--Ist ein Item mit den Parametern IK1_GENERAL IK2_JEWELRY in der propitem/defineitem vorhanden, so kann man sie hier eintragen und somit ist das Item für das Accessory Upgrade verfügbar.

      - propitemETC.inc/.txt.txt <-- Hier können mehrere Items zu einem Set zusammengefügt werden, also sind die hier definierten Items alle angezogen, so erhält man einen definierten Effekt.

      - propGiftbox.inc <-- Ist hier ein Item definiert, so kann man aus einem Item mit den Parametern IK1_SYSTEM IK2_SYSTEM eine Giftbox erstellen, aus der man zufallsbestimmt Items erhalten kann

      1.4. Quests
      Um einen Quest vollständig verwenden kann muss man folgende Dateien beschrieben haben:

      - definequest.h <-- Eintrag der QuestID

      - Propquest.inc/.txt <-- Definition des Quests(Auftrag, Texte, Einstellungen )

      - (propquest-dungeonandpk.inc/.txt.txt)

      - (propQuest-Scenario.inc/.txt.txt)

      - (propQuest-RequestBox.inc/.txt.txt)

      - (propQuest-RequestBox2.inc/.txt.txt)

      Die eingeklammerten Datein sind “optional” und ich werde nicht weiter auf sie eingehen.

      1.5. Applikationen
      Unter Apps oder Applikationen in Flyff versteht man die Fenster, die im Spiel verwendet werden, z.B. Das Inventar oder das Statusfenster. Es reicht nicht aus, einfach ein Fenster zu entwerfen, sondern es muss in die Source eingebaut werden( Funktionen, etc. ). Folgende Dateien sind wichtig:

      - ResData.h <-- Definition des Applets

      - Resdata.inc <-- Position der einzelnen Controls und Eigenschaften des Apps

      - ResData.txt.txt <-- Titel Strings des Applets

      Den meisten Files beigelegt, findet man ein Tool names „Daisy“. Dieses ist dazu da mithilfe eines GUI solche Applets zu erstellen.

      1.7. LUA
      Definition:

      Lua ist eine imperative und erweiterbare Skriptsprache zum Einbinden in Programme, um diese leichter weiterentwickeln und warten zu können.

      LUA wird ausschließlich von World- /DatabaseServer genutzt. Folgende Systeme werden durch lua eingebunden:

      - Mentoren System --> Campus.lua

      - Events --> Event.lua

      - 1 on 1 Guildwar --> GuildCombat1TO1.lua

      - Upgrade System --> ItemUpgrade.lua

      - Monsterskills --> Monsterskill.lua

      - Instance Dungeons --> PartyDungeon.lua

      - Quiz Event --> QuizEvent.lua

      - Rainbowrace --> RainbowRace.lua

      - Secret Room --> SecretRoom.lua

      - Steuer System --> Tax.lua

      Weitere Verwendung:

      - CreateMonster.lua --> Diese Datei wird verwendet, um durch ein bestimmtes Item Monster zu spawnen.

      - EventMonster.lua --> Monster Spawnen

      - ItemScript.lua --> ??

      - PCBang.lua --> Ein Event System

      Fast jede LUA-Datei in den Flyff Ressourcen wird durch eine Funktionsdatei ergänzt, welche sich im Ordner /LuaFunc/ befindet.

      1.8. Events
      Es gibt mehrere verschiedene Arten von Events:

      - Normale Events --> Definiert in der Datei Event.lua

      - DropEvents --> PropDropEvent.inc

      Normale Events werden wie schon gesagt in der Datei Event.lua definiert. Folgende Events sind Möglich:

      - Exp/Drop/Penyadrop Events

      - Attackpower/Defense Events

      - Levelup Geschenke

      - Cheer Exp Faktor

      - Verbindungsdauer Events

      - Rain/Snow Events

      Bei den Drop Events ist es möglich für ein Item den Level Bereich der Monster einzustellen, in welchem das Item gedropt werden kann.


      1.9. Exchange Skript

      Der Exchange Skript ermöglicht es Items gegen Items auszutauschen (z.B. Silver Heart Event )

      Auf den Exchange Skript werde ich vorerst nicht genau eingehen, da dieser im Bezug auf ein anderes System sehr interessant ist.

      1.10. NPC's
      Die NPCs werden grundsätzlich in zwei Kategorien aufgeteilt (aktive (Monster) und passive (Stadtnpcs) ). Und beide werden in den Ressourcen verschieden behandelt. Die aktiven und passiven NPC's werden zunächst in die Ressourcen eingetragen, in folgende Datein:

      - defineObj.h
      - mdlDyna.inc (Model und Animation)
      - propmover.txt / .txt.txt

      So, sind nun die grundzüge des NPC's eingetragen, kann man verschieden mit ihnen weiter machen.
      Passive NPC's können weiter behandelt werden, in dem man ihnen in der character.inc/.txt.txt genau definierte Funktionen gibt(Menüitems, Handelsfenster, uvm. ). Bevor dies jedoch geschehen kann muss das Model einem NPC Namen zugeteilt werden (definiert in der character.inc). Dies geschiet in den Weltdatein.
      Um einen NPC genauer zu definieren trägt man den gewünschten Namen in die Character.inc ein und definiert ihn, die Grundstruktur sieht folgendermaßen aus:

      Quellcode

      1. NamenID
      2. {
      3. setting
      4. {
      5. AddMenu( MMI_DIALOG );
      6. SetImage
      7. (
      8. Name der Bilddatei, definiert in der character.txt.txt
      9. );
      10. m_szDialog= "Dialogdatei";
      11. }
      12. SetName
      13. (
      14. Name des NPC's, in der character.txt.txt definiert.
      15. );
      16. }
      Alles anzeigen

      Um einem passiven NPC einen Quest zu geben muss man in der Datein propQuest.inc diesen Character als StarNpc angeben.

      Quellcode

      1. SetCharacter( "MaDa_Lorein" );


      Um einen aktiven NPC weiter zu definieren, kann man ihn in die Datei
      PropMoverEx.inc eintragen. Dort lassen sich Sachen wie Drops oder Verhalten eintragen.


      1.11. Der ganze Rest

      Nun, was ist noch möglich in den Ressourcen einzustellen:

      - NPC Eigenschaften <-- character.inc/.txt.txt

      - Raten <-- Constant.inc

      - Collector <-- collecting.inc

      - Couple Raten/Items <-- couple.inc

      - Bodentexturen <-- Terrain.inc

      - Honor Titel <-- Honorlist.txt/.txt.txt

      - LordSkills <-- lordskill.txt/.txt.txt

      - Skills <-- Propskill.txt/.txt.txt ; PropSkillAdd.csv
      die Datei PropSkillAdd ist dazu da, um die Parameter der jeweiligen Skillstufe zu bestimmen.

      - Accessorie Upgrade/Collector Upgrade/Collectorfeld <-- s.txt

      2. Wie gehe ich mit den Ressourcen um, wie arbeite ich mit ihnen.



      Das arbeiten mit den Ressourcen liegen von meiner Seite aus 3 Regeln zugrunde:

      - Einen Code Editor verwenden, der ein paar Extra Funktionen, wie Syntax Highlighting, Zeilenangaben enthält (Notepad++)

      - Backups anlegen: Damit auch bei kleinen Fehlern keine großen Probleme entstehen --> immer Backups anlegen( Eine Kopie des Ressourcen Ordner anlegen )

      - Wissen, was man machen will: wenn man völlig planlos an die Arbeit geht kommt man schnell aus dem Konzept oder vergisst wichtige Einträge !

      Wenn man nun die Grundlagen der Ressourcen beherrscht und die Regeln eingehalten werden, dann kann eigentlich nichts mehr passieren. Wichtig ist: Üben, üben, üben.

      3. Möglichkeiten


      Die Möglichkeiten, die man mit guten Kenntnissen der Ressourcen hat sind mannigfaltig. Zum einen lassen sich so gut wie alle Inhalte Ingame bearbeiten und teilweise auch viele neue hinzufügen (Quests, Exchange Skripte, Events, etc. etc. ). Die Grundkenntnisse der Ressourcen gehören auch dazu einen Server zu leiten, also werden in dieser Hinsicht auch einige Türen geöffnet.

      4. Der „Beast“ und die Ressourcen



      Dieses Thema ist ein kleines Anhängsel, welches das Thema Ressourcen und Welt Bearbeitung anschneiden soll. Zum einen geht es darum, welche Systeme im Bezug auf die Spielwelten verwendet werden und zum anderen, wie man den Beast effizienter nutzen kann.

      Welche Ressourcen werden denn von Beast genutzt. Die Antwort ist sehr einfach und überschaubar. Der Beast nutzt alle Dateien, die in der Masquerade.prj angegeben werden (Naja, nahezu alle Dateien), d.h. folgende Möglichkeiten ergeben sich mit dem Beast:

      - Objekte spawnen (PropObj.inc)

      - Boden Texturen verändern (Terrain.inc)

      - Models (in jeder Form) spawnen (mdlobj.inc/mdldyna.inc)

      - Monster spawnen (propmover.txt)

      5. Ressourcen Client / Server


      Grundsätzlich gibt es zu diesem Thema nicht viel zu sagen, nur dass die Ressourcen aufgeteilt werden, in Ressourcen nur für den Server und Ressourcen für Server und Client. Folgende Ressourcen werden vom Client und vom Server genutzt:
      Spoiler anzeigen

      Quellcode

      1. "Constant.inc"
      2. "ContinentDef.h"
      3. "credit.txt"
      4. "define.h"
      5. "defineAttribute.h"
      6. "defineEvent.h"
      7. "defineItem.h"
      8. "defineItemkind.h"
      9. "defineNeuz.h"
      10. "defineObj.h"
      11. "defineSkill.h"
      12. "defineSound.h"
      13. "defineText.h"
      14. "defineWorld.h"
      15. "defineJob.h"
      16. "definequest.h"
      17. "expTable.inc"
      18. "defineHonor.h"
      19. "honorList.txt"
      20. "honorList.txt.txt"
      21. "jobItem.inc"
      22. "lang.h"
      23. "Masquerade.prj"
      24. "propCtrl.txt"
      25. "propGuildQuest.inc"
      26. "propMover.txt"
      27. "propSkill.txt"
      28. "propTroupeSkill.txt"
      29. "propSkillAdd.csv"
      30. "propMoverEx.inc"
      31. "propMotion.txt"
      32. "ResData.h"
      33. "Terrain.inc"
      34. "WndStyle.h"
      35. "wordToolTip.inc"
      36. "propEnchant.inc"
      37. "World.inc"
      38. "mdlObj.inc"
      39. "mdlDyna.inc"
      40. "textEmotion.txt"
      41. "propKarma.txt"
      42. "propItemEtc.inc"
      43. "propEvent.inc"
      44. "propCtrl.txt.txt"
      45. "propMover.txt.txt"
      46. "propSkill.txt.txt"
      47. "propTroupeSkill.txt.txt"
      48. "textEmotion.txt.txt"
      49. "propKarma.txt.txt"
      50. "propItemEtc.txt.txt"
      51. "world.txt.txt"
      52. "propLang.txt"
      53. "PKSetting.inc"
      54. "Exchange_Script.txt"
      55. "Ultimate_GemAbility.txt"
      56. "pet.inc"
      57. "collecting.inc"
      58. "accessory.inc"
      59. "QuestDestination.txt.txt"
      60. "PatrolDestination.txt.txt"
      61. "InvalidName.inc"
      62. "etc.inc"
      63. "propJob.inc"
      64. "resdata.inc"
      65. "textClient.inc"
      66. "etc.txt.txt"
      67. "etc.txt.txt"
      68. "resData.txt.txt"
      69. "textClient.txt.txt"
      70. "definelordskill.h"
      71. "lordskill.txt"
      72. "lordskill.txt.txt"
      73. "lordevent.inc"
      74. "couple.inc"
      75. "ticket.inc"
      76. "layer.inc"
      77. "propQuest.txt.txt"
      78. "propQuest.inc"
      79. "character.txt.txt"
      80. "character.inc"
      81. "propItem.txt"
      82. "propItem.txt.txt"
      83. "except.txt"
      Alles anzeigen


      UNd folgende Ressourcen werden ausschließlich vom Server genutzt;
      Spoiler anzeigen

      Quellcode

      1. "Constant.inc"
      2. "DiePenalty.inc"
      3. "election.inc"
      4. "propDropEvent.inc"
      5. "propgiftbox.inc"
      6. "proppackitem.inc"
      7. "randommoverevent.inc"
      8. "randomoption.inc"
      9. "transformitem.inc"
      10. "treehelp.inc"
      11. "Alle Lua Datein"
      12. "AI_SCript.txt"
      13. "CreateMonster.txt"
      14. "EnvironmentEffect.txt"
      15. "GuildCombat.txt"
      16. "PiercingSize.txt"
      17. "s.txt"
      18. "school.txt"
      19. "Ultimate_UltimateWeapon.txt"
      20. "WordDialog.txt"
      Alles anzeigen

      Ein paar Datein sind jetzt hier nicht aufgeführt, das kommt daher, dass sie keinen besonderen Nutzen haben.

      6. Arbeiten mit dem Quellcode


      Das nächste und letzte Thema, was ich hier in diesem Tutorial bearbeiten möchte ist: Wie arbeite ich effizienter, wenn ich den Quellcode verwende.
      Dank einem glücklichen Umstand steht uns Flyffern der Quellcode der Serverfiles und der Neuz zur Verfügung. Diesen Umstand sollten Resource Developer nutzen, um Wissenslücken zu schließen. Denn es heißt: "Jeder Fehler der Zustande kommt wird in der Source definiert", d.h. Wenn man nun seinen Fehler nicht findet, ist es ratsam im Quellcode nach dem Fehler zu suchen und seine Ursache zu ergründen. Aber nicht nur um Fehler zu vermeiden ist das Arbeiten mit dem Quellcode ratsam, sondern auch um zukünftige Fehler zu unterbinden. Wenn einem Dev das nötige Wissen fehlt, um z.B. ein Schmuckstück richtig in das Upgrade einzubinden, schaut er sich in der Source die richtige Stelle an und weiß, was an welcher Stelle stehen muss. Nach diesem Prinzip lassen sich somit alle Datein ergründen.

      7. Schluss


      So nun ist meiner erstes Tutorial der Flyff Ressourcen Reihe fertig. Ich hoffe ich konnte einigen Neulingen helfen die Ressourcen ein bisschen besser zu verstehen. Als nächstes kommt ein Tutorial, welches auf die Funktion der einzelnen Datein eingehen wird und mit vielen Einzeltutorials das arbeiten mit den Ressourcen näher bringt.

      [/SPOILER2]

      Kapitel 2:

      • Ins Detail: s.txt:

      [SPOILER2]Wie bereits oben erwähnt findet man in der Datei s.txt, welche nur vom Server geladen wird, die Schmuckupgraderaten(1), Collector Upgrade(2), Items im Collectorfeld(3), Pet-Levelup(4), den Teil Pet_AddLifeProbability lasse ich außen vor.
      (1) Es müssen insgesamt 20 Einträge zwischen den geschweiften Klammern von Accessory_Probability sein, die Einträge werden absteigend eingelesen, sprich es fämgt an mit der Wahrscheinlichkeit von 1-2; und hört auf mit 19-20.
      Um auf eine "einlesbare" Wahrscheinlichkeit zu kommen müsst ihr folgendes rechnen: (x in %) * 100 ; Beispiel: 80(%) * 100 = 8000

      (2)Siehe oben nur: 5 Einträge und Rechnung: (x in %) * 10 ; Bsp: 50(%) * 10 = 500

      (3)So nun komme ich zu den Items im Collectorfeld, welche bei Collecting_Item eingestellt werden können, neue Items könnt ihr zwischen den Geschweiften Klammern eintragen( " { } "). Der aufbau sieht folgendermaßen aus:
      Itemid Wahrscheinlichkeit
      Die Wahrscheinlichkeit sollte folgendermaßen berechnet werden(Umständliche Version):
      ((x in %) / 100 ) * 1000000000
      Beispiel: (14.257(%) / 100) * 1000000000 = 142570000

      (4) Aufbau
      mmo-core.de/attachment/3684/?s…97fb41cb72d9ea286b8df2163
      So sieht das ganze grob aus.
      Die Reihen, also zB.

      Quellcode

      1. 10000 0 0 0 0 0 0 0 0

      stehen für die Level die das Pet erreichen kann, sprich:
      10000 :: Level 1
      0 :: Level 2
      0 :: Level 3
      etc pp
      die einzelnen Zahlen stehen für Wahrscheinlichkeiten, sprich es handelt sich hierbei um eine Art Matrix.
      Erklräung
      Es gibt insegsamt 5 Reihen, die erste steht für die Petstufe 'D', die zweite für 'C' usw. Wenn ein Pet beim Pet Tamer o.Ä. geupgraded wird, dann wird aus der betroffenen Reihe also bei Stufe B die dritte Reihe per Zufall(Wahrscheinlichkeiten) ein Wert rausgenommen und dieser wird dem Pet zugeordnet. 10000 = 100% ; 0 = 0%
      Um euch noch ein bisschen was zu geben:
      Der Script für ein perfektes Pet wäre

      Quellcode

      1. 0 0 0 0 0 0 0 0 10000
      2. 0 0 0 0 0 0 0 0 10000
      3. 0 0 0 0 0 0 0 0 10000
      4. 0 0 0 0 0 0 0 0 10000
      5. 0 0 0 0 0 0 0 0 10000

      [/SPOILER2]

      • Ins Detail: Mdl*.inc:


      [SPOILER2]Im Folgenden werde ich euch den grundsätzlichen Aufbau der mdlObj bzw. der mdlDyna erklären. Im Endeffekt gibt es keinen Unterschied zwischen den beiden Datei, nur dass die mdlObj.inc World Objects beinhaltet und die mdlDyna.inc Ctrl, Sfx, Items, Mover(Mit Animationen), regions, Ship und Path Models entählt. Sprich man könnte entweder beide Datein zusammenfügen oder in weitere Datein untergliedern(Um mehr Übersicht zu schaffen). So wie ihr im Grundlagentutorial sehen könnt gibt es bestimmte Parameter, die das Model nochmal genauer beschreiben:

      Quellcode

      1. "MiniDoor01" MI_NPC_MINIDOOR01 MODELTYPE_ANIMATED_MESH "" 0 MD_MID 0 1.0f 0 0 ATEX_NONE 1

      "MiniDoor01" = Name des Models
      MI_NPC_MINIDOOR01 = ID des movers(propMover.txt/defineObj.inc)
      MODELTYPE_ANIMATED_MESH = Modeltyp (Es gibt: MODELTYPE_NONE, MODELTYPE_MESH(Nicht Animiert)(verw. bei Items, Region,Ship), MODELTYPE_ANIMATED_MESH(Animiert)(verw. bei Items), MODELTYPE_BILLBOARD(verw. bei rain/snow), MODELTYPE_SFX, MODELTYPE_ASE(Keine Verw. gefunden))
      "" = Part, es ist (glaube ich) damit möglich z.B. eine Musikdatei an ein SFX o.Ä. zu binden oder an einen Umhang eine geschlechtsspezifische Texture
      0 = Fliegendes Objeckt(0=Nein, 1=Ja)
      MD_MID = Model Distant
      0=Pick(?)
      1.0f = Scale
      0=Trans(?)
      0=Shadow
      ATEX_NONE=TextureEx(ich glaube eine Art Erweiterung für die Texture
      1=Render Flag(?)
      -------------------------------------------------------------------------------
      So weiter geht es zu den Animationen:
      Ich gehe jetzt nur auf die Animationen von den Movern ein:
      Bsp:
      MI_Toadrin01
      zwischen den geschweiften Klammern:

      Quellcode

      1. "stand" MTI_STAND
      2. "walk" MTI_WALK
      3. "idle1" MTI_IDLE1
      4. "idle1" MTI_IDLE2
      5. "dmg1" MTI_DMG1
      6. "dmg2" MTI_DMG2
      7. "dmgFly" MTI_DMGFLY
      8. "dmgDie" MTI_DMGDIE
      9. "dmgLive" MTI_DMGLIVE
      10. "die1" MTI_DIE1
      11. "atk1" MTI_ATK1
      12. "atk2" MTI_ATK2
      13. "atk2" MTI_ATK3
      14. "groggy" MTI_GROGGY
      15. //extra
      16. "walk" MTI_JUMP1
      17. "walk" MTI_JUMP2
      18. "walk" MTI_JUMP3
      19. "walk" MTI_JUMP4
      20. "walk" MTI_RUN
      Alles anzeigen

      z.B. "die1" MTI_DIE1
      "die1" beschreibt den Pfad, also nicht falsch verstehen es beschreibt das Suffix der *.ani Datei, sprich in unserem Fall:
      "mvr_Toadrin_die1.ani"
      MTI_DIE1 weist der ani der richtigen Stelle im Client zu, sprich wenn man anstatt MTI_DIE1 ein MTI_ATK1 einsetzen würde, dann würde beim attackieren die Sterbeanimation kommen.
      [/SPOILER2]


      Copyrigth © 2013 - Tex0
      Bilder
      • guide.png

        4,45 kB, 346×178, 304 mal angesehen
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Würde dann wahrscheinlich etwas nützen, wenn du genauer erklärst, wie man Dropps allgemein einstellt bzw. Greens von Bossmonster (like Ancient Dungen), Erweckungen bearbeiten (an sich nicht wirklich schwer) oder allgemein die randomoption.inc durchgehst.
      Ich hab deinen Text gerade nur überflogen...