[GSTNet] Events

Posted By: Hawk

[GSTNet] Events - 10/03/07 20:27

Hallo, ich experimentiere jetzt auch im Multiplayer mit GSTNet herum. Ich frage mich aber wie ich das connect event auf dem Server aufrufen kann wenn ein Client verbindet. Ich habe es mit GSTNet_Events(4,clientJoined) in der main() ausprobiert und die Funktion "clientJoined" erhöht dann numberClients+=1, aber nichts tut sich.
Was mache ich falsch bzw. wie mache ichs richtig?

übrigens:
ich habe auch Probleme mit GSTNet_Connection() bei der Überprüfung des Verbindungsmodus. Mit "connection" von 3dgs funktioniert die Überprüfung wunderbar, zB:
Code:

if(connection==3) //client + server
{
numberClients=1;
ent_createlocal(str_thunder,vector(900,0,0),move_thunder);
}


aber bei folgendem tut sich nichts:
Code:

if(GSTNet_Connection()==3) //client + server
{
numberClients=1;
ent_createlocal(str_thunder,vector(900,0,0),move_thunder);
}



Ich habe keine Errors, GSTNet.dll ist in acknex_plugins und die wdl im Script included.
Wer will mir helfen?
Posted By: nfs42

Re: [GSTNet] Events - 10/03/07 21:14

Code:

GSTNet_Events(4,clientJoined)



müßte so aussehen

Code:

GSTNet_Events(4,"clientJoined")



Quote:


if(GSTNet_Connection()==3) //client + server
{
numberClients=1;
ent_createlocal(str_thunder,vector(900,0,0),move_thunder);
}





builtin mp und GSTNet NICHT mischen.

GSTNet läuft völlig unabhängig, server und clients müssen/können per funktionsaufruf gestartet werden.

z.B. ein user script als basis


ich muß die demo auf den aktuellen plugin stand bringen


Posted By: Hawk

Re: [GSTNet] Events - 10/10/07 19:45

also das mit GSTNet_Connection() funktioniert jetzt. Aber GSTNet_Events(4,"clientJoined") bringe ich noch immer nicht zum laufen.

Ich möchte haben, dass eine Variable um 1 erhöht wird wenn ein Client verbindet.
Momentan sieht das bei mir so aus:
Code:
var numberClients=0;

function main()
{
level_load(str_game);
sleep(.5);


ifdef srv;
GSTNet_StartServer(2301,-0.1);
GSTNet_Events(4,"clientJoined");
endif;

GSTNet_StartClient("localhost",2301,-0.1);
...
}
function clientJoined()
{
numberClients+=1;
}



was mache ich falsch bzw. wie wende ich GSTNet_Events(4,"") richtig an?
Posted By: Dark_samurai

Re: [GSTNet] Events - 10/10/07 19:54

Das Event wird nicht automatisch aufgerufen. Das musst du per GSTNet_ClientSend(4," "); clientseitig tun, sobald sich dieser mit dem Server verbunden hat.

Achja, es ist außerdem unnötig eine Variable zu machen, die die aktuelle Clientanzahl speichert, denn GSTNet_ClientsConnected() gibt dir die anzahl der eingeloggten Clients zurück. Aber ich denke das du das nur gemacht hast, um die Events mal auszuprobieren

Dark_Samurai
Posted By: Hawk

Re: [GSTNet] Events - 10/10/07 20:12

wow danke das war ja ne schnelle antwort!
Es klappt jetzt mit GSTNet_ClientSend(0,4,"");
Die Anzahl schießt zwar aufgrund einer while-Schleife sofort auf 99 Spieler hinauf obwohl es nur ein Client ist, aber vom Prinzip her funktionierts jetzt

edit: jetzt bin ich sogar auch Junior Member geworden *g
Posted By: nfs42

[GSTNet] fixed: Events - 10/10/07 20:50

this is a bug > fixed in next release 0.5.16

workaround

definiere stattdessen einen standard server event:
Code:

GSTNet_Events(GSTNet_EventServer, "evServer");



und werte den eventtype in dieser event function aus:
Code:


//----------------------------------------------------------------------------------------
// function: evServer
// purpose: this function is called by GSTNet,
// when an incoming message for the client occurs
// this event has to be registered with
// GSTNet_Events(GSTNet_EventServer,"evServer");
// input: vTyp : var any type of event, that are not registered
// input: sMsg : string data
//------------------------------------------------------------------
function evServer(vType, sData, vSender, vReceiver)
{
var id;
diag("\nReceive server event:");
if (vType == GSTNet_EvTypeConnect ) {
diag("\nNew client connected. ClientId:");
diag(sData);
}
// if (vType == GSTNet_EvTypeDisconnect ) {
// diag("\nClient has disconnected. ClientId:");
// diag(sData);
// id = str_to_num(sData); // remove all global entities created by this client
// you = ent_next(null);
// while(you!=null){
// temp = you;
// if (GSTNet_CreatorId(you)==id){ GSTNet_ent_remove(you);}
// you = ent_next(temp);
// }
// }
return(0);
}


Posted By: Dark_samurai

Re: [GSTNet] fixed: Events - 10/11/07 09:16

Wann wird denn die nächste Version veröffentlicht?
Wird eigentlich irgend wann dieses ClientJoined-Event mal automatisch aktiviert, oder bleibt das so, dass man es per Hand aufrufen muss?

Dark_Samurai
Posted By: nfs42

Re: [GSTNet] fixed: Events - 10/11/07 10:03

der event wird ja schon automatisch abgearbeitet, wenn eine zentrale eventfunktion 1 oder 2 definiert sind.
Code:

GSTNet_Events(GSTNet_EventServer, "evServer");



über if-abfragen können die events bereits jetzt unterschieden werden. es ist lediglich überischtlicher, wenn du für verschiedene events eigene funktionen definieren kannst.
Posted By: Dark_samurai

Re: [GSTNet] fixed: Events - 10/14/07 17:34

Wenn ich die Engine im Client+Servermode laufen lasse, und diese Zeile: GSTNet_Events(GSTNet_EventServer, "evServer"); benutze, so crashed die Engine beim Ausführen von ClientPoll...
Kann ich dieses Event nur verwenden, wenn die Engine im Servermode läuft?

Dark_Samurai
Posted By: nfs42

Re: [GSTNet] fixed: Events - 10/14/07 18:50

sollte nicht sein.
hast du einen client event definiert ?

Code:

GSTNet_Events(GSTNet_EventClient, "evClient");


Posted By: Dark_samurai

Re: [GSTNet] fixed: Events - 10/18/07 09:15

Ja hab ich...
wieder ein crash bei ClientPoll. Darf ich eigentlich ClientPoll und ServerPoll im gleichen Frame ausführen? Oder kann das ein grund für den crash sein?

Mfg Dark_Samurai
Posted By: AlexDeloy

Re: [GSTNet] fixed: Events - 11/25/07 18:45

Bei mir crasht die Engine ebenfalls sobald ich ClientPoll oder ServerPoll ausführen. Könnte es am .c Format des lite-c Scripts liegen ? Die .wdl Beispiele klappen einwandfrei.
Posted By: nfs42

Re: [GSTNet] fixed: Events - 11/25/07 18:56

hast du die funktions deklarationen angepaßt/geändert ?
wie rufst die GSTNet_???Init funktionen auf ?
Posted By: AlexDeloy

Re: [GSTNet] fixed: Events - 11/25/07 22:13

Das hier geht

Code:

function GSTNet_StartServer(port) {
GSTNet_ServerInit(port);
while(GSTNet_Connection()==0) {wait(1);}
wait(-1);
scroll_text("Server gestartet");
// while(1) {
// GSTNet_ServerPoll(GSTNetServerType, GSTNetServerData);
// wait(1);
// }
}



und sobald ich die Kommentare rausmache und ServerPoll (oder in der Client Funktion ClientPoll) hinzukommt schmiert das ganze ab.
Posted By: WretchedSid

Re: [GSTNet] fixed: Events - 11/25/07 22:26

Scheint der selbe fehler wie bei ent_create zu sein. Probier es mal so:
Code:
 ...
while(1) {
sType = str_create("");
sData = str_create ("");
GSTNet_ServerPoll(sType, sData);
wait(1);
...



Zumindest geht es so bei mir.
Posted By: AlexDeloy

Re: [GSTNet] fixed: Events - 11/25/07 22:30

Perfekt. Das war die Lösung. Vielen Dank !
Geht auch noch wenn ich die Strings aus der Schleife auslagere... wundere mich nur warum er das vorher nich mochte.
© 2024 lite-C Forums