HEY !!
Der Multiplayer mal wieder.
Ist mir immer noch ein Rätsel, was ich nicht verstehe.
Schaut euch mal bitte den Code an.
Was muss geändert werden, damit die Player richtig synchronisiert werden?
typedef struct PLAYER
{
var Handle;
var X;
var Y;
var Z;
var Pan;
} PLAYER;
////////////////////////////////////////////////////////////////////////////////////
void ManipulateMovement(PLAYER* Player)
{
Player.X += (key_w - key_s);
Player.Y += (key_a - key_d);
Player.Pan += (key_q - key_e);
send_data_to(NULL,Player,sizeof(PLAYER));
}
////////////////////////////////////////////////////////////////////////////////////
void MakeMovement(PLAYER* Player)
{
c_move((ptr_for_handle(Player.Handle)),(vector(Player.X,Player.Y,Player.Z)),nullvector,NULL);
Player.X = 0;
Player.Y = 0;
Player.Z = 0;
p4Euler = ptr_for_handle(Player.Handle);
p4Euler.pan = Player.Pan;
p4Euler = 0;
}
////////////////////////////////////////////////////////////////////////////////////
void InitiatePlayer(PLAYER* Player,ENTITY* pPlayer)
{
Player.Handle = handle(pPlayer);
Player.X = 0;
Player.Y = 0;
Player.Z = 0;
Player.Pan = 0;
send_data_to(NULL,Player,sizeof(PLAYER));
while(1)
{
ManipulateMovement(Player);
MakeMovement(Player);
wait(1);
}
}
////////////////////////////////////////////////////////////////////////////////////
void main()
{
...
PLAYER* MyPlayer = malloc(sizeof(PLAYER));
my = ent_create("player_1.mdl",vector(0,0,130),NULL);
wait(1);
InitiatePlayer(MyPlayer,my);
...
}
Ich glaub, der erste Fehler ist schon, das die structs lokal erzeugt werden, oder?
Des weiteren, fehlt dem Player-Entity die eigene Funktion, was bestimmt wichtig wäre.
Übergebe ich der Player-Entity eine Funktion beim erzeugen, kennt diese dann den struct-Zeiger 'Player' nicht mehr. Somit wäre ich wieder bei dem lokal erzeugtem struct Problem.
EDIT:Das Ziel ist also, einen struct zu benutzen, für mehrere verschiedenen Player.
Ein Player wird erzeugt, bekommt einen struct und alle Werte die sich nun für den Player ändern, sind auf seinen struct zurück zuführen.
Beispiel:
Anstatt die my.Skill Werte der jeweiligen Entity zu verändern, um diese dann z.B. für die Bewegung zu benutzen, möchte ich stattdessen Werte in einem struct verändern.
Anders gesagt, soll sogut wie jedes Objekt, in der 3D-Welt, dann später auf einem struct Objekt basieren.
Wie ich die Skill's von Entitys synchronisieren weiss ich, aber mit den struct klappts nicht wirklich.
Mir fehlt da noch etwas die Vorstellung dafür.
Vielleicht kann mir da jemand mit einem einfachen Beispiel helfen.