Ergebnis 1 bis 14 von 14

Thema: Problem existiert eine Art Linked List?

  1. #1

    Problem existiert eine Art Linked List?

    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.

  2. #2
    Zitat Zitat von Dasix
    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)
    Zitat Zitat
    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
    Zitat Zitat
    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
    Zitat Zitat
    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)
    Zitat Zitat
    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 ^^

  3. #3
    @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...

  4. #4
    Zitat Zitat von Dasix
    Der rm2k besitzt einen Quellcode der im Pad auch dargestellt wird.
    Bitte was? Wo kommst Du an den Sourcecode?
    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.

    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.

  5. #5
    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.

    Geändert von Dasix (09.06.2006 um 17:29 Uhr)

  6. #6
    Zitat Zitat
    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.

    Zitat Zitat
    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.

    Zitat Zitat
    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.

  7. #7
    *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:

    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:
    Code:
    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:

    Code:
    ;-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:

    Code:
    ;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

    Geändert von Dasix (09.06.2006 um 19:12 Uhr)

  8. #8
    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

  9. #9
    @ 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 .

    Geändert von Dasix (09.06.2006 um 19:15 Uhr)

  10. #10
    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.

    Geändert von DR_Zeph (10.06.2006 um 13:58 Uhr)

  11. #11
    @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.

  12. #12
    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.

  13. #13
    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

    Geändert von Dasix (13.06.2006 um 20:57 Uhr)

  14. #14
    ich meinte ja auch als *.script.wav Datei über den KeyPatch die unterschiedlichen Bilder erzeugen zu lassen.

Berechtigungen

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