A więc:
Jeżeli chcemy zmienić pozycje gracza pierw musimy ją pobrać czyli:
new origin[3] get_user_origin(id_gracza,origin)
następnie otrzymujemy:
origin[0] = oś X origin[1] = oś Y origin[2] = oś ZNie wiem czy można to nazywać osią no ale cóż, jeżeli nie to poprawcie mnie.
Za jaki kierunek odpowiada dana oś ?
Z-góra i dół.
Y-przód i tył.
X-prawo i lewo.
Z+ - jeżeli będziemy chcieli zmienić pozycje(Z) czyli w tym przypadku Z+ musimy do origin[0] dodać jakąś wartość która jest większa od zera np. 50,1,4.
Z- - jeżeli będziemy chcieli zmienić pozycje(Z) czyli w tym przypadku Z- musimy od origin[0] odjąć jakąś wartość która jest mniejsza od zera np. -60,-2,-5.
Pozostałe czyli : Y-,Y-,Z+,Z- są prawie takie same lecz zmieniają pozycje w innym kierunku.
Zmiana pozycji:
new origin[3] get_user_origin(id_gracza,origin)//pobieranie pozycji origin[0]+=50 //zmieniamy pozycje X o +50 czyli do góry. origin[0]=origin[0]+50 //<<LUB(działa tak samo). Zmieniamy pozycje X o +50 czyli do góry. set_user_origin(id_gracza,origin)
Lub(fakameta):
new Float:origin[3];pev(id_gracza, pev_origin, origin )origin[0]+=50.0 //zmieniamy pozycje Z o +50 czyli do góry.origin[0]=origin[0]+50.0 //<<LUB(działa tak samo). Zmieniamy pozycje Z o +50 czyli do góry.set_pev(id_gracza, pev_origin, origin );Po wykonaniu takiej czynności nasza postać przesunie się nieco w prawo
Dodaje jeszcze stock(nie mojego autorstwa) który zwraca true jeżeli jesteśmy "uwięzieni" czyli np. "wkopani" w ziemie:
stock bool:is_player_stuck(id) { static Float:fOrigin[3]; pev(id, pev_origin, fOrigin); engfunc(EngFunc_TraceHull, fOrigin, fOrigin, 0, (pev(id, pev_flags) & FL_DUCKING) ? HULL_HEAD : HULL_HUMAN, id, 0); if(get_tr2(0, TR_StartSolid) || get_tr2(0, TR_AllSolid) || !get_tr2(0, TR_InOpen)) return true; return false; }