PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem existiert eine Art Linked List?



Dasix
08.06.2006, 19:23
Hi, erstma.

Ich benutze den Rm2k jetzt seit 2 jahren und sah das am Anfang als ganz guten Einstieg.

So weit so gut.

Ich wollte mal den RM2k etwas schwereres rechnen lassen.
Es kam ein A-ks zu stande, eine Tag-nacht-Wetter_randomblitz Demo
und ein Echtzeitstrategiespiel raus, leider wurde das meiste von einem Vierusangriff gelöscht... .

Bei den Projekten hatte ich folgende Probs.:
A-Ks:
-Es war lästig die Variablen jedes einzelnen Gegners zu verarbeiten und bei mehr als 15 Gegnern fing es an zu ruckeln.
-nur kästchenpositionenberechnung(map=(mapx+Ausdehnung)/Tilegroesse,(mapy+Ausdehnung)/Tilegroesse)

Tag-nacht-Wetter_randomblitzGfxdemo
-man kann keine Blitze random mäsig erzeugen, sondern muss auf vorgefertigte Anims zurückgreiffen.
-begränzte Anzahl an Sprites

RealtimebasedStrategy:
-Keine LinkedLists, jeden Unit deklarieren
-Tilegröße ist nicht veränderbar

Ich weiss ja, dass der Rm2k ein Tool zum Erstellen von RPGs ist, jedoch wollte ich diese Elemente alle in mein RPG einfliessen lassen.
(Projeckt mit PB fortgesetzt)

Frage:
existiert bei dem neuen XPmaker eine Art Linked List oder hat jemand einen Tool zum Erstellen von Linkedlists auf dem rm2k?
nä. Frage, gibt es einen Tool, dass man die Befehle direkt in den Editor eingeben kann, so dass das lästige knöpfedrücken erspart wird?
Darf man den Rm2k umschreiben, eigener Mapeditor usw. also isser open source oder freeware?
Wo könnte ich mich melden um an zu fragen ob mir das Umschreiben gestattet ist, solange ich keine Rechte brech?

Zusatz<----
Darf man neue Befehle(Procedures) hinzu fügen?

Danke fürs Interresse, der kleine Progger Dasix.

Dhan
08.06.2006, 19:58
Tag-nacht-Wetter_randomblitzGfxdemo
-man kann keine Blitze random mäsig erzeugen, sondern muss auf vorgefertigte Anims zurückgreiffen.
Uh es geht. Allerdings brauchst du dafür ein Zusatzproggi von dem du höchstwahrscheinlich noch nichts gehört hast... such mal äh ich glaub innen Mission Sarabäa-Threads wirds irgendwo erwähnt
Das Programm erzeugt auf Aufruf einen Screenshot im Pictures Ordner, wenn du das so änderst, dasses Panorama ist und immer ein einzelnes Partikel mehr zum Blitz machst, geht es (joa umständlich ich weiß und langsam)


Frage:
existiert bei dem neuen XPmaker eine Art Linked List oder hat jemand einen Tool zum Erstellen von Linkedlists auf dem rm2k?
Der XP hat Ruby und öh Ruby is glaubich sogar ne echte Sprache (in Verwendung mim XP wird sie trotzdem interpretiert ^^) und müsste etwas ädequates besitzen, ich mein, Klassen wirds ham und die brauchst ja wohl


nä. Frage, gibt es einen Tool, dass man die Befehle direkt in den Editor eingeben kann, so dass das lästige knöpfedrücken erspart wird?
So wie ich das verstehe, speichert es die Knopfnummer und die Attribute und nicht wirklichen Scriptcode, also nein


Darf man den Rm2k umschreiben, eigener Mapeditor usw. also isser open source oder freeware?
Wo könnte ich mich melden um an zu fragen ob mir das Umschreiben gestattet ist, solange ich keine Rechte brech?
Die Rechte hat ASCII. Eigentlich ist der Maker übrigens kostenpflichtig, von daher... also Open Source isses net. Aber kannst ja mal die von ASCII fragen, ob sies dir erlauben (ich schätze nein)


Zusatz<----
Darf man neue Befehle(Procedures) hinzu fügen?
Im XP ja. Im 2k/2k3 nein.


Der Maker hat nicht soo viel drauf wie du siehst ^^

Dasix
08.06.2006, 20:12
@Dhan
Thx für die Antwort.

Ich weiss das der rm2k nich viel drauf hat, deswegen würde ich ihn halt gerne umschreiben xD.

Der rm2k besitzt einen Quellcode der im Pad auch dargestellt wird.

Thema Kostenpflichtig.
Wusst ich nich, ich ladete ihn mir zu den Freewarezeiten runter...

Erlich gesagt will ich mir nich noch nen Gamemaker zulegen, XP(kosten...)
da ich mir mehrere Programmiersprachen kaufte, meine eigenen Mapeditoren usw. geproggt habe dachte ich mir halt, vielleicht könnte ich den rm2k aufmotzen, so dass das Proggen von kleinen 2d, bzw. Iso games leichter wird.
Ich werde mich wohl erst auf Tools beschränken...

Maisaffe
08.06.2006, 21:47
Der rm2k besitzt einen Quellcode der im Pad auch dargestellt wird.
Bitte was? Wo kommst Du an den Sourcecode? :eek:
Du hast nicht reinzfällig die Ausführende Datei mit Notepad/ Wordpad geöffnet?
Falls ja: Das wird kaum ein sinvoll veränderbarer Code sein. :D

Wieso willst Du eigentlich den 2k aufmotzen, falls überhaupt sinvoll machbar (auser den momentanen Tasten und Maus- Patches und dem lustigen Mission Sarabäa Programm), wenn Du nen eigenen Mapeditor hast? Versuch Dich doch mal lieber an einem kleinen, aber feinen (und für die praktisch einsetzbaren - da nach deinen Wünschen gebastelten) rm2k- Klon. ;)

Dasix
09.06.2006, 00:11
eeerm...
ein rm2k klon dauert zu lange!!!!!

Für meine Games, welche ich in PB, C, C++ schreibe, benötige ich Mapeditoren, welche ich in den jeweiligen Sprachen schreibe.

Ich brauche keinen Gamemaker für meine Games, iss viel bequemer sie glei ganz zu Proggen.

Der Maincode des Tutoreals (Hauptsourcecode liegt bei der Freewarever. bei xD )

Ich habe den Quellcode in C geöffnet, pad bedeudet nichts anderes als Dass die Codes in einem Editor sichtbar sind(sie sind durchaus verwendbar, da sie nicht zureichend verschlüsselt, gepackt oder überhaubt nicht verändert wurden sind).

den rm2k würde ich gerne aufmotzen, da es für jeden einfacher werden würde komplexere Games zu schreiben ohne eine Programmiersprache zu lehrnen(siehe Red vs Blue, wie lange dass wohl gedauert hat???).
werde eine e-Mail an Ascii schreiben(Ascii, wie Eronisch) in der ich bitte das ding zu modifizieren.
Ach, kennt vielleicht jemand die e-mail adresse, denn der Asciicode ist leider bekannter als die Firma ^^.

An einem Gamemaker sitze ich zur Zeit, ist nur ein längeres Unterfangen, zu dem ich keine Zeit habe.

Frage, wie willst du eigendlich den rm2k azufmotzen?
gaaaaanz einfach, ich würde Sachen hinzufügen, welche das "Coden" vereinfachen.


Vielen Dank für die Interresse, Dasix.

Der Drake
09.06.2006, 14:33
Ich brauche keinen Gamemaker für meine Games, iss viel bequemer sie glei ganz zu Proggen.
Also für Engine und Spiellogik sicherlich, aber sobald es an den Inhalt geht sind grafische Editoren praktisch Pflicht, imo.
Oder zumindest ne Skriptsprache... du willst doch nicht ernsthaft ein komplettes Spiel mit hunderten und tausenden verschiedener Ereignisse von Hand in C(++) schreiben, oder? Du würdest vermutlich nie fertig werden.


Der XP hat Ruby und öh Ruby is glaubich sogar ne echte Sprache (in Verwendung mim XP wird sie trotzdem interpretiert ^^) und müsste etwas ädequates besitzen, ich mein, Klassen wirds ham und die brauchst ja wohl
Ruby ist eine interpretierte Skriptsprache, die ist nicht nur im XP interpretiert.
Und was ne linked list angeht: nein, ruby hat keine native Implementierung. Die Standard Array Klasse ist allerdings sehr versatil und vor allendingen dynamisch. Einen Ruby Array kann man als Vector, Stack, Queue, Set, oder sonstwas benutzen, die Klasse kann so ziemlich alles und ich zumindest hatte noch nie wirklich eine linked list gebraucht.
wenn wirklich kein Weg dran vorbeiführt kann man das immer noch selbst implementieren, ist eine Sache von 5 Minuten.


Thema Kostenpflichtig.
Wusst ich nich, ich ladete ihn mir zu den Freewarezeiten runter...
Nein, diese Freewarezeiten gab es nicht. Btw. die Firma heißt nun Enterbrain, google dannach wenn du interesse hast, die findet man relativ flott.

Dasix
09.06.2006, 16:42
*lol*
als ich mir das ding downloadete stand Freeware drüber...(seltsam/fake?)



@Der Drake
"Also für Engine und Spiellogik sicherlich, aber sobald es an den Inhalt geht sind grafische Editoren praktisch Pflicht, imo.
Oder zumindest ne Skriptsprache... du willst doch nicht ernsthaft ein komplettes Spiel mit hunderten und tausenden verschiedener Ereignisse von Hand in C(++) schreiben, oder? Du würdest vermutlich nie fertig werden."

sind nicht pflicht, jedoch schreibe ich zu jedem Game einen eigenen Mapeditor oder modifiziere einen älteren, Ereignisse werden mit dem Mapeditor gesetzt und in mehrere Dimensionierten arrays gespeichert und durch Procedures/funktionen ausgefürt, es ist NICHT notwendig jedes Ereigniss einzeln zu schreiben, schwer zu erklären, hier ein kleiner PB_Code:


;Dx, bzw Dy bestimmt die Breite/länge der map
;map wird erstellt, alle mit dem Tile 0

Structure Held
x.w
y.w
Image.w
HP.w
LP.w
EndStructure
NewList Held.Held()
Global Held

Procedure Heldplazieren()
For x=0 To Dx
For y=0 To Dy
If map(x,y)=1
AddElement(Held())
Held()\x =x*Tileg+Tx
Held()\y =y*Tileg+Ty
EndIF
Next
Next
Held()\Image =#Hero
Held()\HP =100
Held()\LP =50
EndProcedure


tile=1

Dim map.b(Dx,Dy)
For x=0 To Dx
For y=0 To Dy
map(x,y)=0
Next
Next

Repeat

;Wenn Maus an Position auf der Map gedrückt entspricht das Tile der Variable tile, also 1.

If MouseButton(1) And MouseX() < ((Dx+1)*Tileg) And MouseY() < ((Dy+1)*Tileg)
map(Int((MTx/Tileg)),Int((MTy/Tileg)))=tile
EndIf

Heldplazieren()

If KeyboardPushed(#PB_Key_LeftAlt) And KeyboardPushed(#PB_Key_Escape)
End
EndIf
ForEver
So in vereinfachter Form kann man Ereignisse auf der Map plazieren, also kann ich so viele Helden, wie ich will plazieren und muss das nur einmal schreiben, normal, oder?

Erm, wer die Sprache kann kann sich hir mal einen unfertigen Code eines Mapeditores von mir ansehen (älteres teil)

Sprache PureBasic

Load,Clippingroutine:

If Tset=1
anzahl=28

LoadSprite(0,"Gfx\Tileset1\Tileset1.bmp",0)
LoadSprite(29,"Gfx\Tileset1\Wasser.bmp",0)
LoadSprite(30,"Gfx\Tileset1\Unitb.bmp",0)
LoadSprite(31,"Gfx\Tileset1\Unitb2.bmp",0)
LoadSprite(32,"Gfx\Tileset1\infantrie1.bmp",0)
LoadSprite(33,"Gfx\Tileset1\Infantrie2.bmp",0)
TransparentSpriteColor(30,RGB(255,0,255))
TransparentSpriteColor(31,RGB(255,0,255))
TransparentSpriteColor(32,RGB(255,0,255))
TransparentSpriteColor(33,RGB(255,0,255))


For x=1 To anzahl
If LoadSprite(x,"Gfx\Tileset1\Tileset1.bmp",0)=0
MessageRequester("Fehler","Bild!\-1-/!",0)
EndIf
Next
ClipSprite(1,0,0,32,32)
EndIf

For x=1 To anzahl
ClipSprite(x+1,x*32,0,32,32)
Next

LoadSprite(99,"Gfx\Pfeil.bmp",0)

Die Initialisation:


;-Initialisation--------------------------------------

If InitSprite() = 0
MessageRequester("Fehler", "Kann Grafik nicht Initialisieren..(DirectX7 oder höher notwendig!)", 0)
End
EndIf

If InitSprite3D() =0
MessageRequester("Fehler", "3DKarte unterstützt Sp3D nicht oder DX ist nicht instaliert", 0)
End
EndIf

If InitKeyboard() = 0
MessageRequester("Fehler", "Kann Keyboard nicht Initialisieren..(DirectX7 oder höher notwendig!)", 0)
End
EndIf

If InitSound() = 0
MessageRequester("Fehler", "Kann Sound nicht Initialisieren..(DirectX7 oder höher notwendig, Soundkarte notwendig!)", 0)
End
EndIf

If InitMouse() = 0
MessageRequester("Fehler", "Kann Maus nicht Initialisieren..", 0)
End
EndIf

If InitMovie() = 0
MessageRequester("Fehler", "Kann Film nicht Initialisieren..", 0)
End
EndIf

OpenScreen(800,600,32,"Mapeditor(Ix entertainment)") ; Vollbildmodus, 800*600 Pixel,

Maincode:


;Author: Oliver Riehle (Ix entertainment)
;Date: Uninterresant
;Version : 0.9
;Name: Welteneditor, Freeware zu dem dazugehörigen Spiel
MessageRequester("Welteneditor v.1.0","WeltenEditor Beta1 von OliverRiehle",0)
utile=Val(InputRequester("Unterstes Tile", "Unterstes Tile12=Gras", ""))
Dx=Val(InputRequester("Map größe", "Ausdehnung(x/y)", ""))+1
Dy=Dx
Tset=Val(InputRequester("Zu verwendendes Tileset", "TilesetNR:", ""));je nach dem werden Sprites geladen
;unitsetload
IncludeFile"Sources/Initsystem.pb"

Enumeration
#SaveFile
EndEnumeration

Dim map.b(Dx,Dy)
For y=0 To Dy
For x=0 To Dx
map(x,y)=utile ;utile ist Tile=$
Next
Next
Dim mapebene2.b(Dx,Dy)
For y=0 To Dy
For x=0 To Dx
mapebene2(x,y)=1
Next
Next

framedelay.l=335
frametimer.l=0
frame.l=0
frames.l=2
Timer.l = ElapsedMilliseconds()
WieLange.l = 1000
Bild.l = 1

IncludeFile"Sources/Load.pb"

Dim felder.b(anzahl+1)
For x=1 To anzahl+1
felder(x)=x
Next

#Screenshot=80
tile=1
Tileg=32 ;Tilegröße

Repeat


ClearScreen(RGB(0,0,0))
ExamineKeyboard()

If pushed=0
If KeyboardPushed(#PB_Key_L)
load=1
pushed=1
EndIf
If load=1
CloseScreen()
Mapname$ =OpenFileRequester("Zu ladende Map","","dat | *.*",0)
ReadFile(#SaveFile,Mapname$)
utile=ReadByte(#SaveFile)
Tset=ReadByte(#SaveFile)
Dx=ReadByte(#SaveFile)
Dy=ReadByte(#SaveFile)
numer=ReadByte(#SaveFile)
Dim map.b(Dx,Dy);über datei
For y=0 To Dy
For x=0 To Dx
map(x,y)=ReadByte(#SaveFile)
Next
Next
Dim mapebene2.b(Dx,Dy)
For y=0 To Dy
For x=0 To Dx
mapebene2(x,y)=ReadByte(#SaveFile)
Next
Next
CloseFile(#SaveFile)
load=0
OpenScreen(800,600,32,"Mapeditor(Ix entertainment)")
IncludeFile"Sources/Load.pb"
EndIf
EndIf
If KeyboardReleased(#PB_Key_L)
pushed=0
EndIf

If KeyboardPushed(#PB_Key_LeftControl)
If KeyboardPushed(#PB_Key_S)
save=1
EndIf
EndIf
If save=1
CloseScreen()
Mapname$ =SaveFileRequester("Zu speichernde Map","","dat | *.*",0)
CreateFile(#SaveFile,Mapname$)
WriteByte(#SaveFile,utile)
WriteByte(#SaveFile,Tset)
WriteByte(#SaveFile,Dx)
WriteByte(#SaveFile,Dy)
WriteByte(#SaveFile,numer)
For y=0 To Dy
For x=0 To Dx
WriteByte(#SaveFile,map(x,y))
Next
Next
For y=0 To Dy
For x=0 To Dy
WriteByte(#SaveFile,mapebene2(x,y))
Next
Next
CloseFile(#SaveFile)
OpenScreen(800,600,32,"Mapeditor(Ix entertainment)")
IncludeFile"Sources/Load.pb"
save=0
EndIf

If pushed=0

If KeyboardPushed(#PB_Key_2)
pushed=1
If tile < (anzahl+1)
tile+1
EndIf
EndIf

If KeyboardPushed(#PB_Key_1)
pushed=1
If tile>1
tile-1
EndIf
EndIf
If KeyboardPushed(#PB_Key_3) Or MouseWheel() > 0
pushed=1
scroll+32
EndIf

If KeyboardPushed(#PB_Key_4) Or MouseWheel() < 0
pushed=1
scroll-32
EndIf
EndIf

If KeyboardReleased(#PB_Key_2)
pushed=0
EndIf
If KeyboardReleased(#PB_Key_1)
pushed=0
EndIf
If KeyboardReleased(#PB_Key_3)
pushed=0
EndIf
If KeyboardReleased(#PB_Key_4)
pushed=0
EndIf

If KeyboardPushed(#PB_Key_S)
tile=72
ebene=1
EndIf

ExamineMouse()
If MouseButton(0)
pushed=0
EndIf
If ebene=0
If MouseButton(1) And MouseX() < ((Dx+1)*Tileg) And MouseY() < ((Dy+1)*Tileg)
map(Int((MTx/Tileg)),Int((MTy/Tileg)))=tile
EndIf
If MouseButton(2) And MouseX() < ((Dx+1)*Tileg) And MouseY() < ((Dy+1)*Tileg)
tile=map(Int((MTx/Tileg)),Int((MTy/Tileg)))
EndIf
EndIf

If ebene=1
If MouseButton(1) And MouseX() < ((Dx+1)*Tileg) And MouseY() < ((Dy+1)*Tileg)
mapebene2(Int((MTx/Tileg)),Int((MTy/Tileg)))=tile
EndIf
EndIf

If MouseX() > 800-64
If MouseButton(2)
tile=felder(Int((MouseY()-scroll)/Tileg))
EndIf
EndIf



If ebene=1
If MouseButton(2) And MouseX() < ((Dx+1)*Tileg) And MouseY() < ((Dy+1)*Tileg)
tile=mapebene2(Int((Mtx/Tileg)),Int((MTy/Tileg)))
EndIf
EndIf
If laden=1
laden=0
IncludeFile"Sources/Load.pb"
EndIf

For x=0 To Dx ;wird die Breite bestimmen
For y=0 To Dy ;wird die Höhe bestimmen
If x*Tileg+Tx <= 800+32 And x*Tileg+Tx >= 0-32
If y*Tileg+Ty <= 600+32 And y*Tileg+Ty >= 0-32
DisplaySprite(map(x,y),x*Tileg+Tx,y*Tileg+Ty)
EndIf
EndIf
Next
Next

For x=0 To Dx
For y=0 To Dy
If x*Tileg+Tx <= 800+32 And x*Tileg+Tx >= 0-32
If y*Tileg+Ty <= 600+32 And y*Tileg+Ty >= 0-32
DisplayTransparentSprite(mapebene2(x,y),x*Tileg+Tx,y*Tileg+Ty)
EndIf
EndIf
Next
Next

If Qpressed=#False
If KeyboardPushed(#PB_Key_Q) ;Gebäude anzeigen
Qpressed=#True
If gebaudeanz=#True
gebaudeanz=#False
Else
gebaudeanz=#True
EndIf
EndIf
EndIf
If KeyboardReleased(#PB_Key_Q)
Qpressed=#False
EndIf

If gebaudeanz=#True
For x=0 To Dx
For y=0 To Dy
If x*Tileg+Tx <= 800+32 And x*Tileg+Tx >= 0-32
If y*Tileg+Ty <= 600+32 And y*Tileg+Ty >= 0-32
If mapebene2(x,y)=27
DisplayTransparentSprite(30,x*Tileg+Tx,y*Tileg+Ty)
EndIf
If mapebene2(x,y)=28
DisplayTransparentSprite(31,x*Tileg+Tx,y*Tileg+Ty)
EndIf
If mapebene2(x,y)=23
DisplayTransparentSprite(33,x*Tileg+Tx,y*Tileg+Ty)
EndIf
If mapebene2(x,y)=24
DisplayTransparentSprite(32,x*Tileg+Tx,y*Tileg+Ty)
EndIf
EndIf
EndIf
Next
Next
EndIf

For x=1 To anzahl+1
DisplaySprite(felder(x),800-32,x*Tileg+scroll)
Next

;minimap
StartDrawing(ScreenOutput())
Box((sichtx-1)*3,((sichty-1)+50)*3,27*3,21*3,RGB(0,0,255))
Box(sichtx*3,(sichty+50)*3,25*3,19*3,RGB(255,0,0))
For x=0 To Dx
For y=0 To Dy
FrontColor(RGB(map(x,y)*3,map(x,y)*3,map(x,y)*3))
Plot(x*3+1,(y+50)*3+1)
Plot(x*3+1,(y+50)*3+2)
Plot(x*3+2,(y+50)*3+1)
Plot(x*3+2,(y+50)*3+2)
Next
Next
StopDrawing()



;{ Ladeengine

;{ Wasser

If ElapsedMilliseconds() - frametimer > framedelay
frametimer=ElapsedMilliseconds()
If frame >= frames
frameup=1
EndIf
If frame <= 0
frameup=0
EndIf
If frameup=0
frame+1
Else
frame-1
EndIf
EndIf

If ElapsedMilliseconds() - Timer > WieLange.l
Timer = ElapsedMilliseconds()
WieLange = 1000
EndIf


If frame=0
ClipSprite(29,0,0,32,32)
Else : If frame=1
ClipSprite(29,32,0,32,32)
Else : If frame=2
ClipSprite(29,64,0,32,32)
EndIf
EndIf
EndIf

;}

;}


If KeyboardPushed(#PB_Key_Left) ;Or MouseX<=0
Tx+16
sichtxteiler-1
EndIf

If KeyboardPushed(#PB_Key_Up) ;Or MouseY<=0
Ty+16
sichtyteiler-1
EndIf

If KeyboardPushed(#PB_Key_Right) ;Or MouseX>=800
Tx-16
sichtxteiler+1
EndIf

If KeyboardPushed(#PB_Key_Down) ;Or MouseY>=600
Ty-16
sichtyteiler+1
EndIf

If sichtxteiler >= 2
sichtxteiler=0
sichtx+1
Else
If sichtxteiler <= -2
sichtxteiler=0
sichtx-1
EndIf
EndIf

If sichtyteiler >= 2
sichtyteiler=0
sichty+1
Else
If sichtyteiler <= -2
sichtyteiler=0
sichty-1
EndIf
EndIf

If KeyboardPushed(#PB_Key_D) ;Or MouseY>=600
ebene=0
EndIf

If KeyboardPushed(#PB_Key_U) ;Or MouseY>=600
ebene=1
EndIf

Max=MouseX()
May=MouseY()
MTx=MouseX()-Tx
MTy=MouseY()-Ty
DisplaySprite(tile,Max+5,May+5)
DisplayTransparentSprite(99,Max,May)

StartDrawing(ScreenOutput())
DrawingMode(1)
DrawText(0,0,"L=laden/Esc=ende/Str+S=Speichern/D oder U=Ebene S=SpecialTile")
DrawText(0,15,"X="+Str(MouseX()-Tx)+"/Y="+Str(MouseY()-Ty)+"/Ebene="+Str(ebene)+"pushed"+Str(pushed))
DrawText(0,30,"Tx= "+Str(Int(((MouseX()-Tx)/Tileg))) + " " + "Ty= "+Str(Int(((MouseY()-Ty)/Tileg))));für special, wie Wegpunkte
StopDrawing()

FlipBuffers()

If KeyboardPushed(#PB_Key_Escape)
End
EndIf
ForEver

;Executableformat Windows
;EOF

DR_Zeph
09.06.2006, 17:10
Du willst also den RPG Maker aufmotzen und patche entwickeln? Anhand des von dir geposteten Codes geh ich mal drauf ein und nehme an, das du Áhnung hast, von dem was du schreibst. Falls es dir an Ideen Mangeln sollte, wie man den Maker intelligent um ein paar Features erweitern könnte und sich dabei nichtmal unbedingt strafbar macht, schreib mir ne PM oder adde mich im Messanger.

dr-zeph@hotmail.de
347008025 ICQ

Dasix
09.06.2006, 18:04
@ DR_Zeph
Danke erstmal für das Angebot.
Wenn du weisst, wie man legal Patche für den rm2k entwickeln kann, wäre ich nicht abgeneigt näheres zu erfahren, da ich mich gerade über die Rechtslage informiere.

Bis ich jedoch damit anfange Patche zu entwickeln will ich mich noch näher mit dem Maker befassen, also über die Funktionalität, wie er aufgebaut ist usw.

Was ich zur Zeit herausgefunden habe (eher theorie nur zum Teil bestätigt):
Die Projeckte werden als Datei abgelegt, welche über die Rheienfolge der ausgeführten Procedures bestimmt und die Variablen deklariert, um also neue Procedures/Funktionen zu adden müsste ich diese lediglich in den Quellcode schreiben, (evtl die Execudable hacken) und sie in den Compiler (sofern vorhanden) schreiben und natürlich ein neuen Button in das Listgadget einfügen...

Die Eventlocalisationen usw selbst sind in der Map eingespeichert.

Hab mir grad Inelukis Doku angeschaut und au die anderen Dokumente gelesen, Interresant, so könnte man natürlich au neue Befehle reinbringen könn...

hört sich nach Arbeit an :) .

DR_Zeph
09.06.2006, 20:19
eines Vorweg, bevor du anfängst. Besorg dir den 2k3 Version 1.04 und bau auf diesem alles aus. Das ist soweit, wie ich es einschätzen kann, der beste Maker, da 40 Pictures und Tastenpatch gleichzeitig funktionieren, eine eigenschaft, die bisher kein anderer Maker schafte.
Meine Ideen schreibe ich entweder heute abend noch, oder morgen, da ich gleich noch ne Fahrstunde hab =0

edit:

So, da ich mir einige Gedanken zum Thema 2k/2k3 und auch viel mit den Maker gearbeitet habe, sind mir einige Sachen ein-/aufgefallen, die mich stöhren und gleich dazu, wie man sie ändern könnte. Aber fang ich einfach mal an,

Mitlerweile gibt es den sog. "Auto Enter Patch" den Miroku auf einer Idee von mir entwickelte. Er drückt im Endeffekt den Titelbildschirm weg sodas man sich sein eigenes Titelbild basteln kann. Die Funktion des Spiel laden ist durch den KeyPatch leucht nutzbar. Der Trick hinter der Sache ist, das Miroku hingeht und bei Spielstart drücke auf die EnterTaste simuliert, wodurch automatisch die Option des Spielstarten gewählt wird und man direkt auf die Startmap kommt. Das Aufrufen des Ladenmenü ist ebenfalls über dieses Simulieren von Tastendrücken aufrufbar.

Ich hätte diesen Patch gerne noch erweitert undzwar das Automatisch ein Spielstand geladen wird und Automatisch gespeichert wird, wenn man eine bestimmte Datei über den KeyPatch und seine exec programm Funktion aufruft. Da keine Exe geändert wird, o.ä. bleibt das ganze eigentlich völlig legal.

Kommen wir aber zur nächsten Idee. Er wurde bereits von Dhan angesprochen, der ScreenshotPatch. Über den KeyPatch wird eine Datei aufgerufen, die ein Bild vom aktuellen Bildschirm macht und dieses im Makerformat im Maker abspeichert. Indem man dieses Bild nun im Maker benutzt kann man nun dynamische KS übergänge einbaun o.ä.. Das ganze was mich daran stöhrt, ist das ich gerne nur bestimmte Bereiche des Bildes gescreenshootet haben will, da es z.B. in einem eigenem Menü sehr sehr vorteilhaft ist, und man sich so einige Bildlabel sparen könnte. Zudem sollte man den exakten Dateinamen angeben können, unter dem das Bild nacher gespeichert wird, nun ist es nur "Template".

Kommen wir zur nächsten Idee. Über den KeyPatch soll ein Prog aufgerufen werden, dieses geht hin und liest je nach Parameter o.ä. eine Textdatei aus und schreibt den Inhalt in ein Picture und speichert dieses im Makerformat. Dadurch sollte sich relativ leicht ein eigenes Message system aufbaun, ohne großartig Ressourcen zu verschwenden.

Dasix
12.06.2006, 00:47
@DR_Zeph
"Kommen wir zur nächsten Idee. Über den KeyPatch soll ein Prog aufgerufen werden, dieses geht hin und liest je nach Parameter o.ä. eine Textdatei aus und schreibt den Inhalt in ein Picture und speichert dieses im Makerformat. Dadurch sollte sich relativ leicht ein eigenes Message system aufbaun, ohne großartig Ressourcen zu verschwenden."

Das würde ich kurz nach meinen mündl. Prüfungen in Angriff nehmen(oder schon davor).
Ich schrieb schon ein ähnl. prog und es ist bestimmt nicht schwer es als pic.
ab zu legen. meinst du:

1.das Prog. agiert neben dem Prog und fertigt die Pics während dem Game an(könnte laggen/ruckeln)?

2. als Tool?(seperat)

wie ich es verstanden habe:
wärend dem Game wird ein Prog. ausgeführt, welches aus .txt pics anfertigt, diese im Game anzeigt und wieder löscht.

DR_Zeph
12.06.2006, 18:44
nope, es sollte während des Spieles passieren, damit man im Pictureordner ein Bild erhält, welches sich z.B. "Message" nennt. Durch nutzen dieses Bild im Maker zeigen wir dieses Bild an. Durch Callen des Programmes soll nun eine Textdatei ausgelesen werden und dieses Bild ersetzen. Der Vorteil an dieser Methode, man haut das Game nicht mit unnötigen Bildern voll, da eine die Textdatein im Endeffekt um einiges kleiner sind und man kann die Texte leichter ändern.

Dasix
13.06.2006, 21:36
Beispiel:
zusammenfassung so wie es umgesetzt werden soll.:

-Externes Prog. wird mit Projekt gestartet
-wenn pic.Message in Rm2kgame verwendet
-Textdatei mittels Clippingengine als Bild an Biliebige Stelle auf den Bildschirm malen


es währe einfacher, wenn man eine .wav anstadt eines pics verwenden würde, da es so einfacher ist ein Befehl an das Unterprogramm zu senden.
der Name der .wav würde der selbe sein, wie der Name der .txt dat.

Müsste mittels WindowedScreen() machbar sein, allerdings müsste ich dann eine Textbox mit anzeigen lassen, da es bei dem Befehl keine transparente farbe gibt(würde schwarz werden)

P.S.:suche noch nach Alternatieve für WindowedScreen()

Edit.: Werde das Prog bald fertig ham. habe einen Weg gefunden Textdaten direkt auf den Screen zu übertragen.
Jetzt muss ich noch die Befehlseingabe mit den .wav daten hinbekommen(hab ich noch nie gemacht) dann ist es fertig.
Gruß Dasix

DR_Zeph
13.06.2006, 22:51
ich meinte ja auch als *.script.wav Datei über den KeyPatch die unterschiedlichen Bilder erzeugen zu lassen.