ola, est tutorial lo ago a pticion de denys15, es lo mismo q hacer un porton normal sino q sin comando....
1. Creamos el porton, va a ser con un timer para q c cierre, entoncs qdaria asi ej:
al principio de tdo
Código:
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_RED 0xFF6347AA
new porton;
forward portont(playerid);
en OnGameModeInit creamos el porton y lo definimos
Código:
porton = CreateObject(980, 1590.098145, -1638.104614, 15.224251, 0.000000, 0.000000, 0.000000);//
2.vamos al callback OnPlayerKeyStateChange
Código:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
3. definimos la tecla con la q vamos a abrir el porton, en est caso la letra H:
Código:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_CROUCH)
{
- el KEY_CROUCH significa la letra H so kieren saber las id de las otras teclas vayan al wiki samp....
4. ahora comenzamos a crear el porton, si lo keremos hacerdesde una alguna posicion hacemos a lgo cmo esto:
Código:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_CROUCH)
{
if (PlayerToPoint(30, playerid,1580.8282,-1629.1621,13.3828))
{
Nota: si no tienen la funcion definida aka la djo:
Spoiler:
forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);//esto va al principio
public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
if(IsPlayerConnected(playerid))
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
//printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
}
return 0;
}
5. seguimos, ahora si vamos acrear el porton
Código:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_CROUCH)
{
if (PlayerToPoint(30, playerid,1580.8282,-1629.1621,13.3828))
{
SetTimer("portont", 12000, 0);
MoveObject(porton, 1590.098145, -1638.104614, 9, 3.0);
SendClientMessage(playerid, COLOR_RED,"Las Rejas estas abiertas y se serraran en 7 segundos");
}
else
{
SendClientMessage(playerid, COLOR_GREY,"Estas demasiado lejos para abrir la puerta.");
}
return 1;
}
return 1;
}
ahora les explixo el moveobject al lado idce porton, porton es la puerta q definimos, asi la puede mover, la puerta se va a mover acia abajo porq cambiamos la coordenada Z q es el umero 9 ants era -15.224251 el 3.0 de lo ultimo es la velocidad a la q c va a mover el porton, el settimer es el tiempo q ahy q esperar para q c cierre el porton, uds puedn modificarlo...
6. ahora a definir el timer de la puerta
Código:
public portont(playerid)
{
MoveObject(porton,1590.098145, -1638.104614, 15.224251, 2.5);
return 1;
}
ahy las coordenadas son la posicion original de la puerta...
tutorial echo por mi...
y listo creo q eso es tdo, si ahy algun error o falta algo solo avisenme....
aka djo un FS d prueba, la puerta esta en lspd:
http://www.megaupload.com/?d=CMU06C11Última edición por Trenico el 17 May 2010, 20:57, editado 3 veces en total