Ergebnis 1 bis 20 von 157

Thema: Power Patch v0.3/0.4x

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Mit JEDER Version benutzbar?

    Naja, dann hast du, denk ich mal, ne riesige Ansammlung an RPG_RTs xD

    Von RPG2000 kenne/habe ich:
    1.05b(vielleicht noch), 1.07b, 1.07e, 1.07(J), 1.10 (von Rikku), 1.51 (Value J)

    Und RPG2003:
    1.03, 1.04(vielleicht), 1.05, (1.06), 1.07, 1.08, 1.09

    Also... so etwa 13, aber zwischen RPG2000 1.07J und 1.51 existieren ja auch noch ne Menge.

  2. #2
    Ich habe die API des DP zwar nur überflogen, muss aber sagen, dass sie ziemlich solide ist. Zwei Dinge stören mich am DP dennoch:

    1., dass man bei der Eingabe der Skripte auf das mikrige, hässliche, undynamische Kommentar-Fenster des Makers angewiesen ist. Daraus folgt, dass kein Syntax-Highlighting und keine automatische Indentation möglich sind.

    Und 2., dass keine richtige Programmiersprache zur Verfügung steht. Eine solide API ist ja schön und gut, aber wenn einem das Werkzeug für die eigentliche Programmierung fehlt, dann fehlt die Dynamik, zumndest meiner Meinung nach.

    Mach's besser.

  3. #3
    @MagicMaker: nein, ich selbst habe nur so ca. 8 RPG_RTs, aber nachdem es dem Patch egal ist, welche Version verwendet wird, weil ja alle in Delphi geschrieben sind und somit alle die Heronames, Switches und Variablen auf die selbe Art im RAM ablegen, behaupte ich, dass es mit jeder Version funktioniert (wenn auch nur mit 5 getestet).

    Der DP geht an die Sache ja komplett anders ran als der PP.

    mfG Cherry

  4. #4
    "In Delphi geschrieben"
    Hab ich auch mitbekommen, aber wie bekommt man eigentlich
    den Code? Das Zeug ist ja nur in "Zeichensalatform" vorhanden.

  5. #5
    gar nicht. sonst hätten wir schon längst Mode7 oder sonst was.

    du kannst ihn nur Disassemblieren. Dazu nimmst du z.B. den "PE Explorer" (obwohl da steht "30-day trial" geht der ewig - bei "1 day left" bleibt er stehen!).

    Dann hast du Assembler-Code.

    So haben ich und Bananen-Joe gearbeitet.#

    mfG Cherry

    Edit: Huh? Im Profiwissen-Thread postest du den Aufbau der LcfMapUnit usw. und hier weißt du nicht, wie man eine EXE disassembliert?!

  6. #6
    Zitat Zitat
    Edit: Huh? Im Profiwissen-Thread postest du den Aufbau der LcfMapUnit usw. und hier weißt du nicht, wie man eine EXE disassembliert?!
    Ich habe nicht gesagt "Ich weis nicht wie man disassembliert" sondern habe
    nur gefragt wie man den Code bekommt. Naja und darauf hast du auch
    geantwortet. Was anderes als "gar nicht" hab ich aber dann als ich den Post
    geschrieben hab nichmehr erwartet xD.

    LcfMapUnit:
    Vieles zur LMU betreffendes ist von sue445, diese Zeile muss ich wohl
    hervorheben. Ich hab mindestens 2mal "Credit to sue445" gepostet.

    .....

    So, hab ich mal gemacht, schau nochmal rein.

    EDIT:

    PE Explorer:
    Hab ich nicht direkt, zum LEICHTEN RPG_RT.exe-Bearbeiten hab ich WinHex
    vewendet xD. Ich hab ausserdem noch die schlankere Version von PE Explorer,
    nennt sich ResourceTuner, der is afaik im PE Explorer gleich mit drin.

    Zeug wie "Font wechseln" oder "Dateien umbenennen" funktioniert mit WinHex schon
    ganz gut, dass z.B. die Maps "MAP%.6d.lmu" (z.B. MAP000001.lmu) statt "MAP%.4d.lmu" (z.B. MAP0001.lmu) heissen, was meiner gepatchten RPG2000.exe
    gut entgegen kommt, wo ich 999999 Maps, Areas und Events eingestellt hab.

    Geändert von MagicMaker (31.01.2008 um 17:50 Uhr)

  7. #7
    Jo Cherry mach mal ruhig weiter. LUA is ja noch um einiges flexibler, soweit ich das beurteilen kann, als die Skriptsprache von Bananaboy.

    Womit du mich auf jeden Fall auf deiner Seite hättest, wäre etwas wie ein Batch Import. Also viele Dateien bzw ganze Ordnerinhalte direkt zu in den Maker zu importieren. Vielleciht lässt sich sowas ja einbauen, kenn mich mit "richitgem programmieren" nur seehr bedingt aus

  8. #8
    Jeder Patch der den Maker aufpeppt ist eine große Bereicherung für die Maker Szene.
    Der Satz sagt alles.

  9. #9
    Es ist egal was der DP kann, beachte den nicht weiter und mach
    den PP noch zuende.

    Das Zeug was ich im Wissenthread geschrieben habe, wo wirklich viel von
    sue445 ist (dem du auch nen Credit geben kannst), habe ich auch teilweise
    deswegen gemacht, um vielleicht deinem PP nochwas zu spendieren,
    soviel wie ich übersetzt hab, indem ich dir LMU, LMT und anderes Zeug zeige.

    Ein externes BatchImport-Tool wäre mir auch sehr willkommen wie Beril.
    Aber das sollte man eher seperat machen, weils mit einem PP nichts mehr
    zu tun hat.

  10. #10
    Gut aber in Verbindung mit dem PP würde das noch ein Trumpf gegenüber dem DP bedeuten

  11. #11
    Kann man mit dem PowerPatch ordentliche if vergleiche und Schleifen bauen?
    Beim DestinyPatch gibts ja nur son merkwürdigen Kram.

    Code:
    Logic.If(True,"bla","blubb")
    Wobei das irgendwie nur mit nem Switch zusammenhängt. (Also ich blick da nicht wirklich durch. :P)

    Ausserdem kommt immer nen Error, wenn ich das Spiel ausmache, keine Ahnung wieso.

  12. #12
    ja. siehe auch in der Demo (1. Post).

    Beachte "if" und "while". Ich denke, das ist es, was du meinst

    Code:
    -- Diese Datei wird wiederholt ausgeführt, solange der Patch aktiv ist.
    -- Hier werden die Anweisungen, die mit dem Maker interagieren, hineingeschrieben.
    
    Busy() -- Dem Maker mitteilen, dass der Patch beschäftigt ist (dort sollte mit einer
           -- Schleife auf das Ready-Signal gewartet werden)
    msg = GetMsg() -- "Nachricht" vom Maker holen (Standardmäßig in Variable 10)
    
    
    if msg == 1 then -- Nachrichten verarbeiten
    
     ExitGame() -- Spiel beenden
     
    elseif msg == 2 then
    
     MsgBox("Hello World!", "Test") -- Messagebox
     
    elseif msg == 3 then
    
     UpdateTime() -- Hiermit wird die aktuelle Zeit in die CurrentXXXX-Variablen geschrieben
     SetVar(21, CurrentHour) -- Stunden in Variable 21 und Minuten in Variablen 22 schreiben,
     SetVar(22, CurrentMinute) -- damit sie im Maker angezeigt werden können
    
    elseif msg == 4 then
    
     sx, sy = ScreenResolution() -- Bildschirmauflösung abfragen
     if sx <= 640 then -- Wenn die Auflösung kleiner/gleich ist als 640x?, dann
      SwitchFullscreen() -- Fenster-/Vollbildmodus wechseln
     end
     
    elseif msg == 5 then
    
     sx, sy = ScreenResolution() 
     if sx > 640 then -- Dasselbe wie oben, nur dass jetzt abgefragt wird ob Sie größer als
      SwitchFullscreen() -- 640x? ist
     end 
    
    elseif msg == 6 then
    
     SwitchFullscreen()
    
    elseif msg == 7 then
    
     -- Hier werden wir Tastatureingaben simulieren - nur zur Demonstration,
     -- das so einzusetzen wäre natürlich nicht so sinnvoll ^^
     action = GetVar(15) -- Wert aus Variable 15 holen
     Ready() -- Den Patch auf "bereit" setzen - damit kann der Maker Tastatureingaben empfangen 
     Wait(800) -- 0,8 Sekunden warten
     if action == 1 then -- Spieler hat beim Huhn "Item" gewählt
      SimulateKeyStroke(VK_RETURN) -- Hier werden Tastatureingaben simuliert
     elseif action == 2 then -- Spieler hat beim Huhn "Skill" gewählt
      SimulateKeyStroke(VK_DOWN)
      Wait(100)
      SimulateKeyStroke(VK_RETURN)
      Wait(50)
      SimulateKeyStroke(VK_RETURN)
     elseif action == 3 then -- Spieler hat beim Huhn "Ausrüstung" gewählt
      SimulateKeyStroke(VK_DOWN)
      Wait(100)
      SimulateKeyStroke(VK_DOWN)
      Wait(100)
      SimulateKeyStroke(VK_RETURN)
      Wait(50)
      SimulateKeyStroke(VK_RETURN)
     end
     while KeyPressed(VK_ESCAPE) == false do -- Darauf warten, dass der Spieler ESC drückt
      Wait(25)
     end
     Wait(250)
     SimulateKeyStroke(VK_ESCAPE) -- Dann nochmal ESC simulieren
     Busy() -- Patch wieder auf "beschäftigt" stellen
     
    elseif msg == 8 then
    
     ResizeGameWindow(640, 480) -- Fenstergröße auf 640x480 ändern
    
    elseif msg == 9 then
    
     ResizeGameWindow(500, 400) -- Fenstergröße auf 500x400 ändern
    
    elseif msg == 10 then
    
     SaveVars("test.sav", 30, 35) -- Variablen 30 bis 35 in Datei "test.sav" ändern
    
    elseif msg == 11 then
    
     if FileExisting("test.sav") == false then -- Wenn die Datei "test.sav" nicht vorhanden, dann
      SetVar(36, 0) -- in Variable 36 Null schreiben,
     else
      SetVar(36, 1) -- sonst eins, sowie
      FileDateTime("test.sav") -- Datum/Zeit von "Test.sav" abfragen (wird in FileXXXX gespeichert)
      SetVar(39, FileHour) -- Stunden in Variable 39 und
      SetVar(40, FileMinute) -- Minuten in Variable 40 speichern,
      LoadVars("test.sav", 37, 38) -- sowie die ersten beiden gespeicherten Variablen, also
                                   -- ursprünglich 30 bis 31, in 37 bis 38 speichern, damit
                                   -- sie bei der Vorschau angezeigt werden können
     end
    
    elseif msg == 12 then
    
     LoadVars("test.sav", 30, 35) -- Variablen 30 bis 35 aus "Test.sav" an Originalposition laden.
    
    elseif msg == 13 then
    
     if FileExisting("test.sav") == false then -- Dasselbe wie oben
      SetVar(36, 0)
     else
      SetVar(36, 1)
      EraseFile("test.sav") -- Datei löschen
     end
     
    elseif msg == 14 then
     
     MP_Paint()
     
    elseif msg == 15 then
    
     BlockKey(VK_F12)
     BlockKey(VK_H)
     BlockKey(VK_J)
     BlockKey(VK_K)
     BlockKey(VK_L)
     
    elseif msg == 16 then
    
     ReleaseKey(VK_F12)
     ReleaseKey(VK_H)
     ReleaseKey(VK_J)
     ReleaseKey(VK_K)
     ReleaseKey(VK_L)
     
    end
    
    -- Tasten verarbeiten
    
    if KeyPressed(VK_F3) then
     MsgBox("Du hast F3 gedrückt!", "F3-Freak")
    end
    
    if KeyPressed(VK_A) then
     SetVar(18, 1)
    else
     SetVar(18, 0)
    end
    
    if KeyPressed(VK_D) then
     SetVar(19, 1)
     MP_ShowPic(100, "Test1.bmp", 100, 100, 100, 100, 0)
    else
     SetVar(19, 0)
    end
    
    if KeyPressed(VK_LBUTTON) then -- Linke Maustaste
     SetVar(20, 1)
     MP_ShowPic(101, "Test2.bmp", 200, 200, 100, 100, 0)
    else
     SetVar(20, 0)
    end
    
    -- Mausposition in Variablen 24 und 25 speichern
    
    mx, my = GetMouse()
    SetVar(24, mx)
    SetVar(25, my)
    
    Ready() -- Dem Maker mitteilen, dass der Patch fertig ist
    mfG Cherry

    Edit: Die mit "MP_" beginnenden Befehle sowie "BlockKey" und "ReleaseKey" nicht beachten. Die sind in der Demo nicht dabei.

    Geändert von Cherry (04.02.2008 um 14:47 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •