Wo bist du denn?

Posted By: hopfel

Wo bist du denn? - 03/12/10 12:57

Hi, ich bin am Proggen eines kleinen MMORPG's popeligen unwichtigen miniatur-online-rollenspiel (<.<) und da hat sich ein kleines Problem aufgetan:
Ich habe versucht, um den Transfer zu reduzieren, nur die Position und den Winkel der Playerentity zu senden. Jedenfalls habe ich diesen Code geschrieben:

Click to reveal..
Code:
#include <acknex.h>
#include <default.c>


function send_pos(my)
{
while(1)
{
if (my.client_id == dplay_id)  
send_skill(my.skill1,SEND_VEC);
send_skill(my.skill4,0);
wait(10);
if (connection & CONNECT_SERVER)
send_skill(my.skill1,SEND_ALL + SEND_VEC);
send_skill(my.skill4,SEND_ALL);
wait(10);
}}

function blop()
{
VECTOR ziel;
var boden=0;
wait(-2);
my.emask |= ENABLE_DISCONNECT;
my.smask |= NOSEND; 
set(my,FLAG2);
vec_set(my.scale_x,vector(0.3,0.3,0.3));
send_pos(my);
while(1)
{

if (my.client_id == dplay_id)  
{
my.pan +=6*(key_cul-key_cur)*time_step;
my.skill4=my.pan;
c_move(my,vector((key_cuu-key_cud)*3*time_step,0,0),nullvector,GLIDE + IGNORE_MODELS);
boden = c_trace(vector(my.x,my.z,my.z+10),vector(my.x,my.z,my.z-1000),IGNORE_MODELS + IGNORE_ME);
if(boden>11)
my.z-=5*time_step;
else
if(boden<9)
my.z+=5*time_step;

vec_set(camera.x,vector(-200*my.scale_x,0,40*my.scale_x));
vec_rotate(camera.x,my.pan);
vec_add(camera.x,my.x);
vec_set(camera.pan,nullvector);
ang_add(camera.pan,my.pan);
vec_set(my.skill1,my.x);
}
else
{vec_set(ziel,my.skill1);	
vec_sub(ziel,my.x);
vec_to_angle(vector(my.pan,0,0),ziel);
my.z=my.skill3;
if(vec_dist(my.x,my.skill1)>2)
c_move(my,vector(3*time_step,0,0),nullvector,GLIDE + IGNORE_MODELS);
else
my.pan=my.skill4;
}


wait(1);
}}





function main()
{
do { wait(1); }
while (dplay_status < 2);
  
max_entities = 99999;
var brx=400;
var bry=400;
wait(3);
d3d_alpharef=1;
fps_max = 100;
video_set(brx,bry,0,2);
video_window(nullvector,vector(brx,bry,0),0,"Cyborgfight");
vec_set(sky_color,vector(100,100,100));

dplay_entrate = -1;  
dplay_smooth = 0;   
dplay_localfunction = 2;
level_load("testlevel.wmb");
vec_set(camera.x, vector (-600, 0, 100)); 

if (connection & CONNECT_SERVER) { 
video_window(0,0,0,"Server");} else { 
video_window(0,0,0,player_name);}

ent_create("blop.mdl",nullvector,blop);

}



Wenn ich nun den Server und zwei Clients starte, wird nun auf dem ersten Client die Playerentity vom zweiten Client nicht mehr erstellt. Ist irgent ein trivialer Fehler aber ich sehe ihn nicht smirk
Vielen Dank für die, die einem armen Noob wie mir helfen laugh
Lg, Hopfel
Posted By: Superku

Re: Wo bist du denn? - 03/12/10 15:12

Quote:
Hi, ich bin am Proggen eines kleinen MMORPG's

Ist nicht böse gemeint, aber ich hoffe, du meinst das nicht ernst?
Posted By: achaziel

Re: Wo bist du denn? - 03/12/10 15:44

Originally Posted By: Superku
Quote:
Hi, ich bin am Proggen eines kleinen MMORPG's

Ist nicht böse gemeint, aber ich hoffe, du meinst das nicht ernst?


der running gag dieses forums. gotta love it.
Posted By: hopfel

Re: Wo bist du denn? - 03/12/10 15:45

@oben: Machen wir doch ein Topic auf; Die besten Zitate aus dem GS-Forum, mit meinem Post als Spitzenreiter -.-

Gut dann halt ORPG, mit der Grösse von ein paar herumlaufenden Charaktern welche allerhöchstens noch ne Waffe tragen können, vllcht noch mit wählbarer Farbe sollte das doch mehr oder weniger zu schaffen sein. Ein vollständiges, grosses Online-rollenspiel habe ich selbstverständlich nicht gemeint...
Wie schon gesagt bin ich ein Noob und habe mich wohl falsch ausgedrückt.
Posted By: muffel

Re: Wo bist du denn? - 03/12/10 16:03

Aufklärung:
MMORPG :Multi Massiv Online Role Play Game


Was du machst ist eher ein sehr kleines ORPG
Man könnte dies vielleicht als VLORPG abkürzen
VLORPG :Very Small Online Role Play Game

Und ist somit glaube ich im realisierbaren Bereich

muffel
Posted By: hopfel

Re: Wo bist du denn? - 03/12/10 16:13

Ja danke, ich werde das nächste mal Google fragen wenn ich eine Abkürzung benutze... >.>
Aber das Thema dieses Threads war eig die Eliminierung meiner Unfähigkeit ein Onlinespiel zu kreiiren, und nicht meiner Dummheit zum Thema Abkürzungen im Onlinespielebereich. ^^
Posted By: jane

Re: Wo bist du denn? - 03/12/10 16:40

Sollte die send_pos nicht in einer Schleife, oder wenigstens in
kurzen Abständen gesendet werden um die position auf den Clients
ständig zu aktualisieren?
Posted By: hopfel

Re: Wo bist du denn? - 03/12/10 16:46

Da ist doch eine Schleife:

function send_pos(my)
{
while(1)
{
if (my.client_id == dplay_id)
send_skill(my.skill1,SEND_VEC);
send_skill(my.skill4,0);
wait(10);
if (connection & CONNECT_SERVER)
send_skill(my.skill1,SEND_ALL + SEND_VEC);
send_skill(my.skill4,SEND_ALL);
wait(10);
}}
Posted By: SchokoKeks

Re: Wo bist du denn? - 03/12/10 16:51

@jane: die send_pos hat selber eine schleife drinn, muss also nur einmal aufgerufen werden.

@hopfel: dein ent_create wird nur einmal ausgeführt, nämlich auf den server. es gibt also nur eine entity, die vermutlich von beiden spielern gesteuert wird, ohne das sie beide sehen das der andere diese steuert (liegt am NOSEND flag).
das ganze konzept klappt so nicht, denk nochmal drüber nach wie du dafür sorgen kannst das für jeden client eine entity (also sein spieler) erstellt wird.
Posted By: hopfel

Re: Wo bist du denn? - 03/12/10 17:14

Ok, es klappt jetzt laugh
Ich habe einfach
my.smask |= NOSEND
durch
my.smask |= NOSEND_ANGLES;
my.smask |= NOSEND_ORIGIN;
my.smask |= NOSEND_FRAME;
ersetzt und alles tut wies soll ^.^
Vielen Dank ^^
Posted By: SchokoKeks

Re: Wo bist du denn? - 03/12/10 17:30

hm, ich hab deinen quelltext tatsächlich falsch gelesen, du solltest definitiv mal nach einrückungen machen mit TAB.

aber gut das dus trotzdem hinbekommen hast, bei NOSEND wird die existenz der entity anscheind nicht mehr an neu verbundene clienten übertragen.
© 2024 lite-C Forums