Samp Mods
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Tutorial | Crear puertas por automaticas o por comando.

Ir abajo

Tutorial | Crear puertas por automaticas o por comando. Empty Tutorial | Crear puertas por automaticas o por comando.

Mensaje  Opa. Mar Abr 24, 2012 7:37 pm

Ya sea para crear una puerta automatica o por comando debemos definir la variable que contendra la puerta:

Código:
new Puerta;

Una vez definida la variable debemos crear nuestra puerta y asignarla a la variable anteriormente creada:

Código:
//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);

Bien ya tenemos nuestra puerta creada y asignada a nuestra variable.

Puerta Por Comandos

Código:
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;
}

y de este modo ya tendriamos nuestra puerta con comandos.


Puerta Automatica

Para la puerta automatica vamos a usar timers:

Código:
//Si es unGameMode
public OnGameModeInit()
{
  SetTimer("PuertaCheck", 1000, 1);
}

//Si por el contrario es un FilterScript
public OnFilterScriptInit()
{
  SetTimer("PuertaCheck", 1000, 1);
}

Ahora que ya tenemos nuestro timer, debemos crearle su respectivo forward y luego decirle que hacer al timer:

Código:
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
      }
    }

  }
}

Y de este modo ya tenemos nuestra puerta automatica.

Código:
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.

Espero que sirva, mis amores. albino
Opa.
Opa.
Ayudante de script
Ayudante de script

Mensajes : 87
Fecha de inscripción : 22/04/2012
Edad : 33
Localización : Idlewood
*Soy : Walter_Chilavert

https://www.facebook.com/luqitasdc

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.