#define Pos_x 2178.4922// estas son las posiciones
#define Pos_y 1285.8121
#define Pos_z 42.2499
#define Pos_angle 270.0764
#define camara_x 2961.4202
#define camara_y -1875.7118
#define camara_z 9.7813
#define Velocidad 50//esta la velocidad de la camara, recomiendo dejarala asi
forward SetupPlayerForClassSelection(playerid);//los forwards
forward MoverCamara(playerid);
enum pInfo //y los enum que vamos a usar
{
Float:SpawnAngle,
bool:SpawnRotate,
SpawnTimer,
};
new PlayerInfo[MAX_PLAYERS][pInfo];
// En OnPlayerRequestClass
SetupPlayerForClassSelection(playerid);// para que le digamos al sistema que al conectarse el jugador escoga los skins
// En OnPlayerConnect Agregas
PlayerInfo[playerid][SpawnRotate] = true;// le decimos al sistema que al conectarse el jugador empieze a rotar la camara alrededor de el
public OnPlayerDisconnect(playerid, reason)
{
KillTimer(PlayerInfo[playerid][SpawnTimer]);// y esto en OnPlayerDisconnect
return 1;
}
//esto es lo que ira en la callback SetupPlayerForClassSelection
public SetupPlayerForClassSelection(playerid)
{
SetPlayerPos(playerid, Pos_x,Pos_y,Pos_z);//aqui estan las posiciones en donde la camara se movera alrededor las pueden cambiar en los defines o simplemente colocar sus posiciones y eliminar los defines
SetPlayerCameraPos(playerid, camara_x,camara_y,camara_z);//aqui la posicion donde la camara se va a fijar tambien se puede cambiar la posicion igual que en lo primero que dije
SetPlayerCameraLookAt(playerid, Pos_x,Pos_y,Pos_z);//aqui se coloca como la camara se posiciona sobre el jugador
if (PlayerInfo[playerid][SpawnRotate]) PlayerInfo[playerid][SpawnTimer] = SetTimerEx("MoverCamara", Velocidad, true, "i", playerid);//y aqui le decimos al sistema la funcion que queremos hacer que es llamar a la callback que forwdeamos anteriormente para que empieze a mover la camara
PlayerInfo[playerid][SpawnRotate] = false;
return 1;
}
public MoverCamara(playerid)
{
SetPlayerCameraPos(playerid, Pos_x - 2 * floatsin(-PlayerInfo[playerid][SpawnAngle], degrees), Pos_y - 10 *
floatcos(-PlayerInfo[playerid][SpawnAngle], degrees), Pos_z + 3);//lo unico que hacemos aqui es aumentar los valores para que la camara rote
SetPlayerCameraLookAt(playerid, Pos_x, Pos_y, Pos_z + 0.5);// hacemos la misma funcion que arriba pero en la posicion en la que va a mirar la camara
PlayerInfo[playerid][SpawnAngle] += 0.5;// y el angulo en que se posicionara la camara, esto se puede cambiar
if (PlayerInfo[playerid][SpawnAngle] >= 360.0)
PlayerInfo[playerid][SpawnAngle] = 0.0;// los angulos donde colocamos la sentencia que si el angulo llegue a 360 grados se repita el movimiento de nuevo
return 1;
}
// y en OnPlayerSpawn se agrega
PlayerInfo[playerid][SpawnAngle] = 0.0;
KillTimer(PlayerInfo[playerid][SpawnTimer]);
SetCameraBehindPlayer(playerid);
PD: Espero que les sirva y recuerden que los valores de las posiciones y los angulos varian e la posicion en la que se encuentra el jugador |
PD: Los creditos no son mios simplemente quiero explicar como funciona y para lo que no lo encuentran facilmente, solo quiero ayudar y nada mas , si ya esta posteado perdon no lo sabia este codigo lo encontre en pawnscript es solo una ayuda para quien lo necesita |
їCrйditos? Ya esta posteado en la secciуn inglesa creo mmm
EDIT: El de la inglesa no encontrй, encontrй acб uno: post. Pero en la inglesa habнa un cуdigo similar ( no se si era igual ). |
C:\Users\Usuario\Downloads\samp03dsvr_RC6_win32\ga memodes\lvdm.pwn(380) : error 010: invalid function or declaration Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 1 Error. |
enum Info //y los enum que vamos a usar
{
Float:SpawnAngle,
bool:SpawnRotate,
SpawnTimer,
};
new PlayerInfo[MAX_PLAYERS][Info];