1 registered members (TipmyPip),
18,633
guests, and 5
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
GSTNET
#350231
12/14/10 18:37
12/14/10 18:37
|
Joined: Dec 2010
Posts: 63
Ceryni
OP
Junior Member
|
OP
Junior Member
Joined: Dec 2010
Posts: 63
|
hi i want to connect to a server but i dont get a ClientId server:
#include <acknex.h>
#include <default.c>
#include "GSTNet.h"
#include <windows.h>
function GSTNet_StartServer(var port, var intervall) {
GSTNet_ServerInit(port);
while(1)
{
draw_text("Server online",20,20,vector(0,100,0));
GSTNet_ServerPoll();
wait(intervall);
}
}
function main()
{
GSTNet_StartServer(2030,1);
}
Client:
#include <acknex.h>
#include <default.c>
#include "GSTNet.h"
#include <windows.h>
function connect_client(var ip, var port, var intervall) {
GSTNet_ClientInit(ip,port);
while (GSTNet_ClientId() <= 0)
{
GSTNet_ClientPoll();
wait(1);
}
GSTNetId = GSTNet_ClientId();
GSTNet_Synchronize(GSTNet_SyncEntities);
str_for_num(sGSTNetTemp, GSTNet_ClientId());
while(1) {
draw_text(sGSTNetTemp,60,20,vector(0,100,0));
GSTNet_ClientPoll();
wait(intervall);
}
}
function main()
{
connect_client(_str("127.0.0.1"),2030,1);
}
The server starts but the client doesnt connect.
|
|
|
Re: GSTNET
[Re: Ceryni]
#350267
12/14/10 22:07
12/14/10 22:07
|
Joined: Jun 2001
Posts: 1,004 Dossenbach
nfs42
Serious User
|
Serious User
Joined: Jun 2001
Posts: 1,004
Dossenbach
|
function connect_client(STRING* ip, var port, var intervall)
should work
Andreas GSTools - Home of GSTScript 0.9.8: lua scripting for A6/7/8 GSTNet 0.7.9.20: network plugin for A6/7/8 GSTsqlite 1.3.7: sql database plugin for A6/7/8 3DGS Codebase: 57 snippets || 3DGS Downloads: 248 files
|
|
|
Re: GSTNET
[Re: Ceryni]
#350367
12/15/10 17:44
12/15/10 17:44
|
Joined: Dec 2010
Posts: 63
Ceryni
OP
Junior Member
|
OP
Junior Member
Joined: Dec 2010
Posts: 63
|
thx now i have a new problem with the client i see the server but as the client/server i dont see the client client/server
#include <acknex.h>
#include <default.c>
#include <windows.h>
#include "kotu_net.c"
#include "GSTNet.h"
#include <ackphysx.h>
VECTOR temp;
VECTOR* startpos1 = vector(-15,-3081,435);
VECTOR* startpos2 = vector(-3,2439,100);
var startpos1pan = 90;
var startpos2pan = 270;
var Schusslochdauer = -3;
var movement_speed_fb = 12;
var movement_speed_rl = 6;
var run = 1;
var waffe = 1;
var waffereloadtime = 500000;
var waffereloading = 0;
var waffeready = 1;
var mouse_intens = 4.5;
var vergangeneZeit = 500000;
var PlayerinderLuft = 1;
var anziehung = 0;
var gravitiy = 1;
ENTITY* phys1=0;
BMAP* pistole_pcx = "media/Pics/Pistole.pcx";
PANEL* first_pan =
{
pos_x = 460;
pos_y = 220;
layer = 1;
bmap = pistole_pcx;
flags = OVERLAY | SHOW;
}
ENTITY* spieler;
function Schussloch ()
{
you = player;
if(you!=NULL){ent_remove(me);return;} //Kein Schussloch auf beweglichen Objekten
set(my,TRANSLUCENT);
my.alpha=80;
set(my,PASSABLE);
vec_to_angle(my.pan,normal);
c_move(me,vector(0.2,0,0),nullvector,NULL);
my.roll = random(360);
my.scale_x=0.2;
my.scale_y=0.2;
my.scale_z=0.2;
my.pan += 0.01;
my.tilt+= 0.01;
my.roll+= 0.01;
wait(Schusslochdauer);
while(my.alpha>0)
{
my.alpha-=0.2;
wait(1);
}
ent_remove(me);
}
function follow(ENTITY* ent)
{
my.pan = camera.pan;
vec_set(camera.x,ent.x);
}
function Pistole_Schiessen()
{
temp.x = (screen_size.x / 2) + (random(5))-2; //Zielpunkt mit leichter Ungenauigkeit
temp.y = (screen_size.y / 2) + (random(5))-2;
temp.z = 100000;
vec_for_screen(temp,camera);
you = player;
c_trace(camera.x,temp,USE_POLYGON + IGNORE_YOU + IGNORE_ME + GET_HITVERTEX + ACTIVATE_SHOOT + IGNORE_PASSABLE );
if(you!=NULL)
{
}
else
{
ent_create("media/Pics/schussloch.tga",target,Schussloch);
return; //Die Funktion würde sich jetzt auch selbst beenden
}
}
function Bewegen()
{
VECTOR vFeet;
vec_for_min(vFeet,me);
//laufen, schleichen oder gehen?
if(key_shift)
{
run = 1.5;
}
else
{
if(key_ctrl)
{
run = 0.5;
}
else
{
run = 1;
}
}
//ende laufen,schleichen oder gehen
// //bewegen
// if(key_w)
// {
// var distance = movement_speed_fb * time_step * run;
// c_move(me,vector(distance,0,0),nullvector,GLIDE + IGNORE_SPRITES + ACTIVATE_PUSH);
// }
// if(key_s)
// {
// var distance = movement_speed_fb * time_step /2 * run;
// c_move(me,vector(-1*(distance),0,0),nullvector,GLIDE + IGNORE_SPRITES + ACTIVATE_PUSH);
// }
// if(key_d)
// {
// var distance = movement_speed_rl * time_step * run;
// c_move(me,vector(0,-1*(distance),0),nullvector,GLIDE + IGNORE_SPRITES + ACTIVATE_PUSH);
// }
// if(key_a)
// {
// var distance = movement_speed_rl * time_step * run;
// c_move(me,vector(0,distance,0),nullvector,GLIDE + IGNORE_SPRITES + ACTIVATE_PUSH);
// }
// if(key_space)
// {
// c_move(me,vector(0,0,10),nullvector,GLIDE + IGNORE_SPRITES + ACTIVATE_PUSH);
// }
//
// //bewegen ende
// //füße auf den boden setzen
// c_trace(my.x,vector(my.x,my.y,my.z-1000),IGNORE_ME | IGNORE_PASSABLE);
// my.z = hit.z - vFeet.z + 15;
// //füße auf den boden setzen ende
VECTOR* mov = vector(0,0,0);
if(key_w)mov.x=movement_speed_fb * run*time_step;
if(key_s)mov.x=movement_speed_fb/2 *-1*run*time_step;
if(key_a)mov.y=movement_speed_rl * run*time_step;
if(key_d)mov.y=movement_speed_rl *-1*run*time_step;
// ANGLE* nothing = camera.pan;
// nothing.tilt=0;
if(c_trace(my.x,vector(my.x,my.y,my.z-40),IGNORE_ME | IGNORE_PASSABLE)){
anziehung=0;
PlayerinderLuft=0;
// c_trace(my.x,vector(my.x,my.y,my.z-1000),IGNORE_ME | IGNORE_PASSABLE);
// my.z = hit.z - vFeet.z + 15;
}else
{
anziehung=anziehung+gravitiy;
PlayerinderLuft=1;
}
vec_rotate(mov,camera.pan);
if(key_space && PlayerinderLuft==0){
mov.z=5*time_step;
anziehung=-30;
PlayerinderLuft=1;
mov.z=-1*anziehung*time_step;
}else{
mov.z=-1*anziehung*time_step; // must be set, because vec_rotate sets mov.z when the camera looks up/down.
}
pXent_movechar(me, mov, camera.pan, 0);
}
function ExplosivGeschoss(){temp.x = (screen_size.x / 2) + (random(5))-2; //Zielpunkt mit leichter Ungenauigkeit
temp.y = (screen_size.y / 2) + (random(5))-2;
temp.z = 100000;
vec_for_screen(temp,camera);
you = player;
c_trace(camera.x,temp,USE_POLYGON + IGNORE_YOU + IGNORE_ME + GET_HITVERTEX + ACTIVATE_SHOOT + IGNORE_PASSABLE );
if(you!=NULL)
{
}
else
{
pXent_addexplosion( phys1, target, 10,1);// das hier ist die funk die die explosion erzeugt
ent_create("media/Pics/schussloch.tga",target,Schussloch);
return; //Die Funktion würde sich jetzt auch selbst beenden
}
}
function Schuss()
{
if(waffeready==1)
{
waffeready=0;
ExplosivGeschoss();//Pistole_Schiessen();
}
}
function Player_Action()
{
spieler = me;
set(my,SHADOW);
c_setminmax(me);
GSTNet_TrackEntity(me, 1+2);
while(1)
{
timer();
if(waffeready == 0){
waffereloading+=waffereloading+timer();
if (waffereloading>=waffereloadtime){
waffereloading=0;
waffeready=1;
}
}
if(mouse_left)
{
Schuss();
}
Bewegen();
follow(me);
GSTNet_Synchronize(GSTNet_SyncEntities);
GSTNet_TrackEntity(me, 1+2);
wait(1);
}
}
function PhysikIntialise()
{
physX_open();// für Physik !
pX_setgravity(vector(0,0,-9));
}
function main()
{
_StartServer(80,1);
_StartClient(_str("127.0.0.1"),80,1);
wait(-1);
PhysikIntialise();
random_seed(0);
fps_max = 60;
mouse_mode = 0;
video_mode = 8;
//video_screen = 1;
level_load("media/levels/shooter.wmb");
var team = random(2);
if(team <=1)
{
ENTITY* phys=GSTNet_ent_create(_str("media/models/earth.mdl"),vector(-3,2439,100),_str("Player_Action")); // die variable wird nur für die folgenden physikeinstellungen gebraucht
pXent_settype(phys, PH_CHAR, PH_SPHERE);
pXent_setfriction (phys,0);
pXent_setmass( phys, 2 );
}
else if(team >1)
{
ENTITY* phys=GSTNet_ent_create(_str("media/models/earth.mdl"),vector(-3,2439,100),_str("Player_Action")); // die variable wird nur für die folgenden physikeinstellungen gebraucht
pXent_settype(phys, PH_CHAR, PH_SPHERE);
pXent_setfriction (phys,0);
pXent_setmass( phys, 2 );
}
phys1=ent_create("media/models/earth.mdl",vector(-3,2439,100),0); // die variable wird nur für die folgenden physikeinstellungen gebraucht
pXent_settype(phys1, PH_RIGID, PH_SPHERE);
pXent_setfriction (phys1,60);
pXent_setmass( phys1, 2 );
while(1) {
mouse_pos.x = mouse_cursor.x;
mouse_pos.y = mouse_cursor.y;
camera.pan -= mouse_intens*mouse_force.x;
camera.tilt += mouse_intens*mouse_force.y;
if(camera.tilt > 90 )
{
camera.tilt = 90;
}
if(camera.tilt < -90)
{
camera.tilt = -90;
}
wait (1);
}
}
Client:
#include <acknex.h>
#include <default.c>
#include <windows.h>
#include "kotu_net.c"
#include "GSTNet.h"
#include <ackphysx.h>
VECTOR temp;
VECTOR* startpos1 = vector(-15,-3081,435);
VECTOR* startpos2 = vector(-3,2439,100);
var startpos1pan = 90;
var startpos2pan = 270;
var Schusslochdauer = -3;
var movement_speed_fb = 12;
var movement_speed_rl = 6;
var run = 1;
var waffe = 1;
var waffereloadtime = 500000;
var waffereloading = 0;
var waffeready = 1;
var mouse_intens = 4.5;
var vergangeneZeit = 500000;
var PlayerinderLuft = 1;
var anziehung = 0;
var gravitiy = 1;
ENTITY* phys1=0;
BMAP* pistole_pcx = "media/Pics/Pistole.pcx";
PANEL* first_pan =
{
pos_x = 460;
pos_y = 220;
layer = 1;
bmap = pistole_pcx;
flags = OVERLAY | SHOW;
}
ENTITY* spieler;
function Schussloch ()
{
you = player;
if(you!=NULL){ent_remove(me);return;} //Kein Schussloch auf beweglichen Objekten
set(my,TRANSLUCENT);
my.alpha=80;
set(my,PASSABLE);
vec_to_angle(my.pan,normal);
c_move(me,vector(0.2,0,0),nullvector,NULL);
my.roll = random(360);
my.scale_x=0.2;
my.scale_y=0.2;
my.scale_z=0.2;
my.pan += 0.01;
my.tilt+= 0.01;
my.roll+= 0.01;
wait(Schusslochdauer);
while(my.alpha>0)
{
my.alpha-=0.2;
wait(1);
}
ent_remove(me);
}
function follow(ENTITY* ent)
{
my.pan = camera.pan;
vec_set(camera.x,ent.x);
}
function Pistole_Schiessen()
{
temp.x = (screen_size.x / 2) + (random(5))-2; //Zielpunkt mit leichter Ungenauigkeit
temp.y = (screen_size.y / 2) + (random(5))-2;
temp.z = 100000;
vec_for_screen(temp,camera);
you = player;
c_trace(camera.x,temp,USE_POLYGON + IGNORE_YOU + IGNORE_ME + GET_HITVERTEX + ACTIVATE_SHOOT + IGNORE_PASSABLE );
if(you!=NULL)
{
}
else
{
ent_create("media/Pics/schussloch.tga",target,Schussloch);
return; //Die Funktion würde sich jetzt auch selbst beenden
}
}
function Bewegen()
{
VECTOR vFeet;
vec_for_min(vFeet,me);
//laufen, schleichen oder gehen?
if(key_shift)
{
run = 1.5;
}
else
{
if(key_ctrl)
{
run = 0.5;
}
else
{
run = 1;
}
}
//ende laufen,schleichen oder gehen
// //bewegen
// if(key_w)
// {
// var distance = movement_speed_fb * time_step * run;
// c_move(me,vector(distance,0,0),nullvector,GLIDE + IGNORE_SPRITES + ACTIVATE_PUSH);
// }
// if(key_s)
// {
// var distance = movement_speed_fb * time_step /2 * run;
// c_move(me,vector(-1*(distance),0,0),nullvector,GLIDE + IGNORE_SPRITES + ACTIVATE_PUSH);
// }
// if(key_d)
// {
// var distance = movement_speed_rl * time_step * run;
// c_move(me,vector(0,-1*(distance),0),nullvector,GLIDE + IGNORE_SPRITES + ACTIVATE_PUSH);
// }
// if(key_a)
// {
// var distance = movement_speed_rl * time_step * run;
// c_move(me,vector(0,distance,0),nullvector,GLIDE + IGNORE_SPRITES + ACTIVATE_PUSH);
// }
// if(key_space)
// {
// c_move(me,vector(0,0,10),nullvector,GLIDE + IGNORE_SPRITES + ACTIVATE_PUSH);
// }
//
// //bewegen ende
// //füße auf den boden setzen
// c_trace(my.x,vector(my.x,my.y,my.z-1000),IGNORE_ME | IGNORE_PASSABLE);
// my.z = hit.z - vFeet.z + 15;
// //füße auf den boden setzen ende
VECTOR* mov = vector(0,0,0);
if(key_w)mov.x=movement_speed_fb * run*time_step;
if(key_s)mov.x=movement_speed_fb/2 *-1*run*time_step;
if(key_a)mov.y=movement_speed_rl * run*time_step;
if(key_d)mov.y=movement_speed_rl *-1*run*time_step;
// ANGLE* nothing = camera.pan;
// nothing.tilt=0;
if(c_trace(my.x,vector(my.x,my.y,my.z-40),IGNORE_ME | IGNORE_PASSABLE)){
anziehung=0;
PlayerinderLuft=0;
// c_trace(my.x,vector(my.x,my.y,my.z-1000),IGNORE_ME | IGNORE_PASSABLE);
// my.z = hit.z - vFeet.z + 15;
}else
{
anziehung=anziehung+gravitiy;
PlayerinderLuft=1;
}
vec_rotate(mov,camera.pan);
if(key_space && PlayerinderLuft==0){
mov.z=5*time_step;
anziehung=-30;
PlayerinderLuft=1;
mov.z=-1*anziehung*time_step;
}else{
mov.z=-1*anziehung*time_step; // must be set, because vec_rotate sets mov.z when the camera looks up/down.
}
pXent_movechar(me, mov, camera.pan, 0);
}
function ExplosivGeschoss(){temp.x = (screen_size.x / 2) + (random(5))-2; //Zielpunkt mit leichter Ungenauigkeit
temp.y = (screen_size.y / 2) + (random(5))-2;
temp.z = 100000;
vec_for_screen(temp,camera);
you = player;
c_trace(camera.x,temp,USE_POLYGON + IGNORE_YOU + IGNORE_ME + GET_HITVERTEX + ACTIVATE_SHOOT + IGNORE_PASSABLE );
if(you!=NULL)
{
}
else
{
pXent_addexplosion( phys1, target, 10,1);// das hier ist die funk die die explosion erzeugt
ent_create("media/Pics/schussloch.tga",target,Schussloch);
return; //Die Funktion würde sich jetzt auch selbst beenden
}
}
function Schuss()
{
if(waffeready==1)
{
waffeready=0;
ExplosivGeschoss();//Pistole_Schiessen();
}
}
function Player_Action()
{
spieler = me;
set(my,SHADOW);
c_setminmax(me);
while(1)
{
timer();
if(waffeready == 0){
waffereloading+=waffereloading+timer();
if (waffereloading>=waffereloadtime){
waffereloading=0;
waffeready=1;
}
}
if(mouse_left)
{
Schuss();
}
Bewegen();
follow(me);
GSTNet_Synchronize(GSTNet_SyncEntities);
GSTNet_TrackEntity(me, 1+2);
wait(1);
}
}
function PhysikIntialise()
{
physX_open();// für Physik !
pX_setgravity(vector(0,0,-9));
}
function main()
{
_StartClient(_str("127.0.0.1"),80,1);
wait(-1);
PhysikIntialise();
random_seed(0);
fps_max = 60;
mouse_mode = 0;
video_mode = 8;
//video_screen = 1;
level_load("media/levels/shooter.wmb");
var team = random(2);
if(team <=1)
{
ENTITY* phys=GSTNet_ent_create(_str("media/models/earth.mdl"),vector(-3,2439,100),_str("Player_Action")); // die variable wird nur für die folgenden physikeinstellungen gebraucht
pXent_settype(phys, PH_CHAR, PH_SPHERE);
pXent_setfriction (phys,0);
pXent_setmass( phys, 2 );
}
else if(team >1)
{
ENTITY* phys=GSTNet_ent_create(_str("media/models/earth.mdl"),vector(-3,2439,100),_str("Player_Action")); // die variable wird nur für die folgenden physikeinstellungen gebraucht
pXent_settype(phys, PH_CHAR, PH_SPHERE);
pXent_setfriction (phys,0);
pXent_setmass( phys, 2 );
}
phys1=ent_create("media/models/earth.mdl",vector(-3,2439,100),0); // die variable wird nur für die folgenden physikeinstellungen gebraucht
pXent_settype(phys1, PH_RIGID, PH_SPHERE);
pXent_setfriction (phys1,60);
pXent_setmass( phys1, 2 );
while(1) {
mouse_pos.x = mouse_cursor.x;
mouse_pos.y = mouse_cursor.y;
camera.pan -= mouse_intens*mouse_force.x;
camera.tilt += mouse_intens*mouse_force.y;
if(camera.tilt > 90 )
{
camera.tilt = 90;
}
if(camera.tilt < -90)
{
camera.tilt = -90;
}
wait (1);
}
}
the _startclient and _startserver functions:
#include <acknex.h>
#include <default.c>
#include "GSTNet.h"
#include <windows.h>
function _StartServer(var port, var intervall) {
GSTNet_ServerInit(port);
while(1)
{
GSTNet_ServerPoll();
wait(intervall);
}
}
function _StartClient(STRING* ip, var port, var intervall) {
GSTNet_ClientInit(ip,port);
while (GSTNet_ClientId() <= 0)
{
GSTNet_ClientPoll();
wait(1);
}
GSTNetId = GSTNet_ClientId();
GSTNet_Synchronize(GSTNet_SyncEntities);
str_for_num(sGSTNetTemp, GSTNet_ClientId());
while(1) {
GSTNet_ClientPoll();
wait(intervall);
}
}
any idea?
|
|
|
Re: GSTNET
[Re: Ceryni]
#350391
12/15/10 19:43
12/15/10 19:43
|
Joined: Jun 2001
Posts: 1,004 Dossenbach
nfs42
Serious User
|
Serious User
Joined: Jun 2001
Posts: 1,004
Dossenbach
|
client & server:
function Player_Action()
{
while(GSTNet_Handle(my)==0) {wait(1);} you have to wait for acknowledge from server, must be added in the manual
spieler = me;
set(my,SHADOW);
c_setminmax(me);
while(1)
{
timer();
if(waffeready == 0){
waffereloading+=waffereloading+timer();
if (waffereloading>=waffereloadtime){
waffereloading=0;
waffeready=1;
}
}
if(mouse_left)
{
Schuss();
}
Bewegen();
follow(me);
//GSTNet_Synchronize(GSTNet_SyncEntities); only one call in startclient to add or remove global enities
// GSTNet_TrackEntity(me, 1+2); used out of the main loop, GSTNet sends data if changed.
GSTNet_SendEntity(me, 1+2); //use in main loop
wait(1);
}
}
if this doesn't help, add GSTNet_Debug(100) in your server main() start with -diag and post your acklog.txt or send me your project
Andreas GSTools - Home of GSTScript 0.9.8: lua scripting for A6/7/8 GSTNet 0.7.9.20: network plugin for A6/7/8 GSTsqlite 1.3.7: sql database plugin for A6/7/8 3DGS Codebase: 57 snippets || 3DGS Downloads: 248 files
|
|
|
|