27.01.2010, 18:00
(
Последний раз редактировалось TheChaoz; 05.08.2012 в 22:42.
Причина: Adding [Tutorial] tag
)
Bueno este es un tutorial muy simple para crear puertas por comando o automaticas:
Ya sea para crear una puerta automatica o por comando debemos definir la variable que contendra la puerta:
Una vez definida la variable debemos crear nuestra puerta y asignarla a la variable anteriormente creada:
Bien ya tenemos nuestra puerta creada y asignada a nuestra variable.
Puerta Por Comandos
y de este modo ya tendriamos nuestra puerta con comandos.
Puerta Automatica
Para la puerta automatica vamos a usar timers:
Ahora que ya tenemos nuestro timer, debemos crearle su respectivo forward y luego decirle que hacer al timer:
Y de este modo ya tenemos nuestra puerta automatica.
Explicacion de las Funciones Utilizadas
Espero que les sirva
Ya sea para crear una puerta automatica o por comando debemos definir la variable que contendra la puerta:
pawn Код:
new Puerta;
pawn Код:
//Si van a crear la puerta en un GameMode, en OnGameModeInit() agregamos
Puerta = CreateObject(modelodepuerta, coordenadaX, coordenadaY, coordenadaZ, rotacionX, rotacionY, rotacionZ);
//Si por el contrario la van a crear en un FilterScript, en OnFilterScriptInit() agregamos
Puerta = CreateObject(modelodepuerta, coordenadaX, coordenadaY, coordenadaZ, rotacionX, rotacionY, rotacionZ);
Puerta Por Comandos
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/abrir", cmdtext, true) == 0) //para abrir la puerta
{
if(IsPlayerInRangeOfPoint(playerid, 15.0, coordenadaX, coordenadaY, coordenadaZ)){ //si el jugador no esta en un radio de 15.0 a la puerta no lo dejara usar el comando. (Reemplazar las coordenadas por las coordenadas de nuestra puerta (CERRADA))
MoveObject(Puerta, coordenadaX, coordenadaY, coordenadaZ, 3.0); //mueve nuestra puerta hasta las coordenadas de la puerta abierta. (Reemplazar las coordenadas por las coordenadas de nuestra puerta (ABIERTA))
return SendClientMessage(playerid, 0x28F943FF, "Server: Has abierto la puerta");
}else return SendClientMessage(playerid, 0xFF0000FF, "ERROR: Debes estar cerca de la puerta para usar este comando");
}
if (strcmp("/cerrar", cmdtext, true) == 0) //cerrar
{
if(IsPlayerInRangeOfPoint(playerid, 15.0, coordenadaX, coordenadaY, coordenadaZ)){ //si el jugador no esta en un radio de 15.0 a la puerta no lo dejara usar el comando. (Reemplazar las coordenadas por las coordenadas de nuestra puerta (CERRADA))
MoveObject(Puerta, coordenadaX, coordenadaY, coordenadaZ, 3.0); //mueve nuestra puerta hasta las coordenadas de la puerta abierta. (Reemplazar las coordenadas por las coordenadas de nuestra puerta (CERRADA))
return SendClientMessage(playerid, 0x28F943FF, "Server: Has cerrado la puerta");
}else return SendClientMessage(playerid, 0xFF0000FF, "ERROR: Debes estar cerca de la puerta para usar este comando");
}
return 0;
}
Puerta Automatica
Para la puerta automatica vamos a usar timers:
pawn Код:
//Si es unGameMode
public OnGameModeInit()
{
SetTimer("PuertaCheck", 1000, 1);
}
//Si por el contrario es un FilterScript
public OnFilterScriptInit()
{
SetTimer("PuertaCheck", 1000, 1);
}
pawn Код:
forward PuertaCheck();
public PuertaCheck()
{
for(new i=0; i<MAX_PLAYERS; i++){ //Creamos una variable i con cada valor de los jugadores,(seria un reemplazo de playerid)
if(IsPlayerConnected(i)){ //si nuestro jugador (i) esta conectado entonces...
if(IsPlayerInRangeOfPoint(i, 15.0, coordenadaX, coordenadaY, coordenadaZ)){ /si el jugador i esta dentro del rango de 15 a la puerta entonces...
MoveObject(Puerta, coordenadaX, coordenadaY, coordenadaZ, 3.0); //abre la puerta
//Reemplazar las coordenadas por las de la puerta abierta
}
else{ //si no esta en un rango de 15 a la puerta...
MoveObject(Puerta, coordenadaX, coordenadaY, coordenadaZ, 3.0); //cierra la puerta
//Reemplazar las coordenadas por las de la puerta cerrada
}
}
}
}
Explicacion de las Funciones Utilizadas
pawn Код:
CreateObject(objecto, coordenadaX, coordenadaY, coordenadaZ, rotacionX, rotacionY, rotacionZ);
IsPlayerInRangeOfPoint(jugador, radio, coordenadaX, coordenadaY, coordenadaZ);
MoveObject(ojecto, coordenadaX, coordenadaY, coordenadaZ, velocidad);
SendClientMessage(jugador, color, "mensaje");
SetTimer("NombredelTimer", tiempo, 0/1) // para que no se repita 0, para que se repita 1.
//Nota: el tiempo va en milisegundos (1 segundo = 1000 milisegundos).
IsPlayerConnected(jugador); //retorna el valor 1 si el jugador esta conectado y 0 si no lo esta.