BASIC

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - S. P. Gardebiter

Pages: [1] 2 3 ... 17
1
Danke, jetzt müsste es funktionieren.

2
Gibts schon irgendwas neues?
Solange ich das nicht hinkriege, liegt mein Projekt auf Eis. :/

Code: GLBasic [Select]
// --------------------------------- //
// Project: BesEngine
// Start: Tuesday, September 20, 2011
// IDE Version: 10.113

        GLOBAL DebugMode% = TRUE
        GLOBAL EditMode% = TRUE
        GLOBAL NetMode% = TRUE
        GLOBAL ScreenW% = 640
        GLOBAL ScreenH% = 480
        GLOBAL Zoom% = 1
        GLOBAL Fullscreen% = FALSE
        GLOBAL FPS% = 60
        GLOBAL GameTime%


        SETSCREEN ScreenW, ScreenH, Fullscreen // Setup Screen
        SYSTEMPOINTER TRUE // Disable Mousepointer
        LIMITFPS FPS // Limit FPS
        AUTOPAUSE FALSE


        GLOBAL NetSocket%
        GLOBAL NetSocket_Listen%
        GLOBAL NetPort% = 49152
        GLOBAL NetMessage$
        GLOBAL NetLength% = 256
        GLOBAL NetRecieve%
        GLOBAL NetError$
        GLOBAL NetIP%


        IF NetMode% = TRUE
                IF SOCK_INIT() = FALSE
                        END
                ELSE
                        NetSocket_Listen% = SOCK_TCPLISTEN(NetPort%)
                        IF NetSocket_Listen% = -1 THEN END
                ENDIF
        ENDIF


        WHILE TRUE
       
                NetSocket% = SOCK_TCPACCEPT(NetSocket_Listen%, NetIP%)
               
                IF NetSocket% <> -1

                        NetRecieve% = SOCK_RECV(NetSocket%, NetMessage$, NetLength%)

                        PRINT NetSocket_Listen%, 16, 16
                        PRINT NetMessage$, 16, 32
                        PRINT NetRecieve%, 16, 48
                       
                ENDIF
               
                IF NetSocket% = -1 THEN NetError$ = NETGETLASTERROR$()
               
                PRINT NetError$, 16, 64
                PRINT NetSocket%, 16, 80
       
                SHOWSCREEN

        WEND

        IF NetMode% = TRUE
                SOCK_CLOSE(NetSocket%)
                SOCK_SHUTDOWN
        ENDIF

        END

Wieso gibt SOCK_TCPACCEPT immer nur -1 raus und nie was anderes und das obwohl VB.NET mir sagt, es konnte sich verbinden? :S

3
hast Du das denn schon gelöst? Dies erscheint mir schwieriger als die IPC über TCP/IP...

Du machst wohl Witze O:

Code: GLBasic [Select]
        Dim MyGame As New Process

        ' Prozessinformationen
        With MyGame.StartInfo
            .FileName = "D:\GLBasic\Games\MyGame\MyGame.exe"
            .UseShellExecute = True
            .Verb = "open"
        End With

        ' Starte Prozess
        MyGame.Start()
        MyGame.WaitForInputIdle()

        ' Programm in das Panel des Splitcontainers einbetten
        SetParent(MyGame.MainWindowHandle, sct_main.Panel2.Handle)

        ' Fenster Maximieren
        SendMessage(MyGame.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0)

Voher noch in einem Modul folgendes importieren:

Code: GLBasic [Select]
    ' Api Funktionen
    Public Const WM_SYSCOMMAND As Integer = 274
    Public Const SC_MAXIMIZE As Integer = 61488
    Declare Auto Function SetParent Lib "user32.dll" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As Integer
    Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer

Und fertig ist die Kiste :) Kinderleicht das ganze.

Wenn ich nachher eine Lösung habe, sage ich bescheid... Verspreche aber nichts. ;)

Das ist nett, danke :)

4
Habs versucht und bin gescheitert - Fehler 10057.
Ich weiß nichtmal wie ich das ganze anstellen soll, die Hilfe ist da eher verwirrend für mich, überall werden irgendwelche Sockets wiedergegeben für irgendwas und ich habe keine Ahnung worum es überhaupt geht. Zuerst mach ich ein SOCK_INIT, danach ein SOCK_TCPLISTEN - funktioniert nicht.

Mit VB.NET hab ich da weniger Probleme, da kann mein Programm sich zumindest verbinden :x (Da hab ich nur einen Client mit Stream und sende alles über einen Streamwriter)

Wieso zeichnest du deine GUI nicht erstmal in deinem VB.Net Programm und schreibst erst beim exportieren den GLB-Code dafür?

Ich habe ein fertiges VB.NET Programm und ein fertiges GLBasic Programm. Das VB.NET Programm bietet die GUI und bindet das GLBasic Programm in ein Panel ein. Die Programme sollen dann miteinander kommunizieren können, damit das VB.NET Programm dem GLBasic Programm sagen kann, was es zutun hat.

5
Ich kann ja notfalls eine DLL über Inline C importieren.
Ich bin mir sicher, dass die NetBIOS Version in VB.NET auch nicht ohne externe DLL funktioniert ;)

In den Prozess einklinken?

Wie jetzt?

Sollen beide programme von dir sein?

Ja.

Edit: Es gibt doch NetBIOS Befehle in VB.NET, nagut, dann aber die anderen Sachen nicht :P

6
1. mach einen Port auf localhost auf und kommuniziere über TCP/IP.

Daran hatte ich auch schon gedacht. Allerdings ist das für mich wesentlich komplizierter als z.B. einen Weg über eine DLL zu gehen oder mit Shared Memory zu arbeiten. Ich kenne mich mit Sockets z.B. überhaupt nicht aus und verstehe von Netzwerk Programmierung noch nicht soviel. In VB.NET hatte ich schonmal etwas einfaches gemacht aber mit GLBasic noch nie. (Ausser mit den NET Befehlen)

Gibts vielleicht noch eine andere Möglichkeit? D:

2. Mach AUTOPAUSE FALSE

Ah, danke. Das hatte ich völlig vergessen o:

7
Hallo.
Ich arbeite momentan an einer Engine. Da es mit GLBasic schwierig ist und lange dauert, gute, saubere GUIs zu programmieren, möchte ich den entsprechenden Editor mit VB.NET schreiben und dann für Graphik das entsprechende GLBasic Programm einbinden. Der Editor und die Engine in Kombination müssen nur auf Windows lauffähig sein. (Anders sieht aus, wenns ums Spielen geht, dass sollte auch auf Linux und Mac möglich sein)

Jedenfalls habe ich momentan 2 Probleme:

1. Wie kann ich ein VB.NET Programm und GLBasic Programm kommunizieren lassen? (Shared Memory?)
2. Mit GLBasic kompilierte Programme sind nicht unbedingt für den Fenstermodus geeignet z.B. wird der Bildschirm komplett weiß, wenn das Fenster keinen Fokus hat. Und wenn man das Fenster wieder fokusiert, dauert es einige Zeit, bis das ganze lädt und wieder flüssig rendert. Der Cursor springt, wenn man auf das Programm in der Taskleiste klickt, etc. etc. Gibts da eine Möglichkeit, das ganze für den Fenstermodus etwas zu optimieren?

8
Mit Version 10 funktioniert alles super, musste nichtmal was in meinem Spiel ändern.
Vielen dank Gernot :)

Allerdings sind exe Dateien in Version 10 auch über 100 kb größer O:
Mein Programm mit 460 Befehlen ist bereits über 1,3 MB groß. Naja, 'seis drum.

9
Hi.
Sorry für die späte Antwort, die letzten beiden Wochen waren extrem stressig.

Bei mir funktioniert das leider garnicht :/ Der nimmt garkeinen Tastendruck von mir an, zumindest solange da eine For/Next Schleife drin ist.

Wenn ich die Schleife rausnehme, nimmt der komischerweise immernoch nicht alle Anschläge an sondern verschluckt viele einfach ganz :/ Sogar wenn ich Sleep auf 1 setze.

Edit: Irgendwas stimmt mit Inkey$ nicht, wenn ich meine (schlechte) selbstgeschriebene "Nachahmungsfunktion" benutze, funktioniert alles bestens.

10
Nein, genau das gleiche wie eben auch O:

Edit: So, hab mal meine Funktion "getuned", hier ist das Ergebnis:

(zur besseren Übersicht entfernt)

Korrekt müsste es heißen: "Hallo, ich bin S. P. Gardebiter"
Manchmal verschluckt er auch noch mehr.
Wahrscheinlich hatte Schranzor recht, ich schaffe bestimmt keine 2 Zeichen pro Frame. Aber dennoch verschluckt er einiges. Wie lange brauch er denn um den Buffer zu leeren?


Edit edit: Vergesst es, ich bin dumm. Der Buffer von INKEY$ funktioniert nicht korrekt, INKEY$ gibt immer nur eine Taste raus und das kann ich auch beweisen:
Ich habe mir gerade eine schrottige Funktion geschrieben die ähnlich wie INKEY$ funktioniert: Sie überprüft ob eine Taste gedrückt worden ist und gibt dann die jeweiligen Buchstaben zurück.
Hier war es genau das gleiche Problem wie bei INKEY$, es wurden Tastaturanschläge verschluckt, also dachte ich mir, anstatt die Buchstaben gleich zurück zu geben, speichere ich sie nacheinander in eine Variable und gebe sie dann aus.
Ergebnis war folgendes:

http://tile44.org/files/Console.log

Ok, beim ersten Satz ein paar Tippfehler sonst aber völlig okay, was jetzt schon auffällt ist aber: Ich schaffe es tatächlich manchmal 2 Buchstaben pro Frame zu schreiben. Auch sind teilweise die Abstände zwischen 2 Buchstaben nur 2 Frames groß.

Nun wird es aber interessant:

"SPG~0: viel zu shcnell"

Nein, diesmal kein Tippfehler. Ich überprüfe die "h" Taste vor der "c" Taste und da ich beide in einem Frame geschrieben habe wird das h einfach vor das c gesetzt wegen des Codes.

"SPG~0: ich tipe zu schnell"

Da, wieder, kein Tippfehler. Das "p" ist nur einmal da und da ich keinen Buffer bei der Funktion benutzt habe, weiß ich nicht wie oft das "p" in einem Frame benutzt wurde. Daher wird auch nur eins angefügt.

"SPG~0: viel zu schnel"

Das gleiche, nur diesmal mit dem "l".
Das erklärt auch die auffallend hohe Fehlerquote bei Wörten die zwei gleiche Buchstaben nebeneinander haben: Hier kann ich viel schneller reagieren und es durchaus in einem Frame schaffen zwei Buchstaben hintereinander zu schreiben. Bei den anderen Dingen war es halt mehr oder weniger Glück wenn ich es geschafft habe, d.h.: Der Buffer von INKEY$ ist verbuggt.

11
Ah, okay, mit dem neuen Code funktioniert es schonmal viel besser, allerdings noch nicht perfekt. Wenn das nächste Update draußen ist, werden wir es ja sehen :)
Danke für eure Hilfe.

Edit: Ich bin mir nicht mehr so sicher ob das überhaupt etwas verändert hat. Ich habe mir eine Funktion geschrieben, mit der ich überprüfen kann wie oft er die Schleife durchläuft. Wenn ich zähle wie oft er durchläuft komme ich oft nur auf "1", selten mal auf "2". Habe auch überprüft ob die Schleife jeden Frame durchläuft und das tut sie. Sicher, dass der Buffer oder irgendwas ähnliches nicht verbuggt ist? o: Wenn ich zwei Tasten gleichzeitig drücke wird nur einer der beiden Buchstaben auf den Bildschirm geschrieben.

12
Ich kann mir nur vorstellen, das dein Code ab und an mal das Schreiben überspringt?

Das halte ich zu 100% für ausgeschlossen. o:
Dann könnte es nämlich nur an meiner KeyHit Funktion liegen und wenn die rumspinnt, würde er die Eingabe automatisch bestätigen.

Spiel doch mal mit den FPS rum, LIMITFPS -1 und teste es nochmal, oder ich liege falsch und du musst mit den FPS runter?!

Ich komme leider nicht über 72 FPS, obwohl ich es eigentlich müsste. (Früher gings ja auch) Mein Spiel läuft standardmäßig auf 60 FPS. Wenn ich die FPS erhöhe müsste sich aber eigentlich auch der INKEY$ Buffer schneller leeren, also beweist das nicht unbedingt irgendwas.

Edit: Bei mir ist die länge von INKEY$ auch immer nur 1, höchstens, mehr als einen Char scheint er nicht raus zu geben o:
Warum funktioniert eigentlich "^" so komisch mit INKEY$? Er gibt nur ein "^" raus wenn ich zweimal auf die Taste drücke und wenn ich einmal draufdrücke und dann auf eine andere z.B. auf die 1, dann gibt er anstatt "^1", garnichts raus.

13
IDE/Syntax / Re: Loadfont limit
« on: 2011-May-30 »
Uh but the problem is I tend to stay on the "safe side" so to say. I can sell programs created with GLBasic itself because I bought it and therefor Gernot grants me that right. But when it comes to the modificated version of the libary Moru is the author and that's why he owns the rights, aslong as he didn't released it as PD (or something simular) or handling the rights over to Gernot. Same for PeeJay. Means: If I'm ever going change my mind and sell my game I either have to ask all the owners of the 3rd party libaries and make some kind of contract or I don't use any libaries from the beginning O:

14
Das ist ja ledeglich die Durchschnittsgeschwindigkeit und hat nichts mit einzellnen "Spitzenleistungen" zutun o:
Falls du aber recht hast und es nicht am Buffer liegt, dann muss es zwangsläufig was anderes sein, denn bei anderen Programmen habe ich dieses Problem nicht, ebenso nicht bei der originalen INPUT Funktion und mein Code scheint ja auch in Ordnung zu sein O:
Ich denke es wäre zumindest einen Versuch Wert, mal zu prüfen ob es am Buffer liegt.

15
IDE/Syntax / Re: Loadfont limit
« on: 2011-May-30 »
@Gernot: Really? o: It says "LOADFONT datei$, num# // num#: 0 - 7" in the GUI. Or is the "7"  a mistake? o: In the helpfile it says "LOADFONT bmp$, num%" btw.

@Schranzor: I know but writing an own function for this stuff seems to be kind of an hassle when I only need two or three colors more than 8. Or is there an easy to do it? O:

@Moru: Thanks. I kind of stay away from libaries that aren't official though because of copyright/licensing stuff, sorry D:

Pages: [1] 2 3 ... 17