Teria jeito de fazer isso?
Pensei em que se o jogador chegar perto do objeto, ele se move. Mas nгo sei em qual public colocar isso! OnPlayerUpdate nгo daria certo, e fazendo um timer, acho que tambйm nгo. Porque ele iria mandar a mensagem quando o jogador chegasse perto: "O portгo foi aberto!" E quando ele saisse do range: "O portгo foi fechado!" Mas se colocar no OnPlayerUpdate vai dar um flood danado! Aluguйm tem ideia de como fazer isso? Valeu! |
new Portao1; public OnGameModeInit() { Portao1 = CreateObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:DrawDistance); // TROQUE PELAS COORDENADAS DO PORTГO FECHADO SetTimer("AbirPortao1", 1000, true); return 1; } forward AbrirPortao1(playerid); public AbrirPortao1(playerid) { if(IsPlayerInRangeOfPoint(playerid, Float:range, Float:X, Float:Y, Float:Z))) // TROQUE PELAS COORDENADAS DO PORTГO FECHADO { MoveObject(Portao1, Float:X, Float:Y, Float:Z, Float:Speed, Float:RotX, Float:RotY, Float:RotZ); // TROQUE PELAS COORDENADAS DO PORTГO ABERTO SendClientMessage(playerid, -1, "Portгo 1 Aberto !"); SetTimer("FecharPortao1", 3000, false); } return 1; } forward FecharPortao1(playerid); public FecharPortao1(playerid) { if(!IsPlayerInRangeOfPoint(playerid, Float:range, Float:X, Float:Y, Float:Z)) // TROQUE PELAS COORDENADAS DO PORTГO FECHADO { MoveObject(Portao1, Float:X, Float:Y, Float:Z, Float:Speed, Float:RotX, Float:RotY, Float:RotZ); // TROQUE PELAS COORDENADAS DO PORTГO FECHADO SendClientMessage(playerid, -1, "Portгo 1 Fechado !"); } else { SetTimer("FecharPortao1", 3000, false); } return 1; }
Sim, mas a mensagem vai ficar floodando!
Eu jб havia pensado nisso. |
new Portao1; new bool:Avisado[MAX_PLAYERS]; public OnGameModeInit() { Portao1 = CreateObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:DrawDistance); // TROQUE PELAS COORDENADAS DO PORTГO FECHADO SetTimer("AbirPortao1", 1000, true); return 1; } forward AbrirPortao1(playerid); public AbrirPortao1(playerid) { if(IsPlayerInRangeOfPoint(playerid, Float:range, Float:X, Float:Y, Float:Z))) // TROQUE PELAS COORDENADAS DO PORTГO FECHADO { if(Avisado[playerid] = false) { SendClientMessage(playerid, -1, "Portгo 1 Aberto !"); Avisado[playerid] = true; } MoveObject(Portao1, Float:X, Float:Y, Float:Z, Float:Speed, Float:RotX, Float:RotY, Float:RotZ); // TROQUE PELAS COORDENADAS DO PORTГO ABERTO SetTimer("FecharPortao1", 3000, false); } return 1; } forward FecharPortao1(playerid); public FecharPortao1(playerid) { if(!IsPlayerInRangeOfPoint(playerid, Float:range, Float:X, Float:Y, Float:Z)) // TROQUE PELAS COORDENADAS DO PORTГO FECHADO { MoveObject(Portao1, Float:X, Float:Y, Float:Z, Float:Speed, Float:RotX, Float:RotY, Float:RotZ); // TROQUE PELAS COORDENADAS DO PORTГO FECHADO if(Avisado[playerid] = true) { SendClientMessage(playerid, -1, "Portгo 1 Fechado !"); Avisado[playerid] = false; } } else { SetTimer("FecharPortao1", 3000, false); } return 1; }
#include a_samp
//******************************************************************************
main(){}
//******************************************************************************
new Teste;
new PortaoAbrindo[MAX_PLAYERS];
//******************************************************************************
forward FecharPortao(playerid);
forward VerificarLocal(playerid);
//******************************************************************************
public OnGameModeInit(){
SetTimer("VerificarLocal",3000,1);
Teste = CreateObject(modelid,Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:DrawDistance);//Fechado
return 1;
}
//******************************************************************************
public OnGameModeExit(){
return 1;
}
//******************************************************************************
public VerificarLocal(playerid){
if(IsPlayerInRangeOfPoint(playerid, Float:range, Float:X, Float:Y, Float:Z) && PortaoAbrindo[playerid] == 0){
PortaoAbrindo[playerid] = 1;
MoveObject(Teste,Float:X, Float:Y, Float:Z, Float:Speed, Float:RotX, Float:RotY, Float:RotZ);//Abrindo Portгo
SetTimer("FecharPortao",3000,false);
}
return 1;
}
//******************************************************************************
public FecharPortao(playerid){
if(IsPlayerInRangeOfPoint(playerid, Float:range, Float:X, Float:Y, Float:Z)) {
PortaoAbrindo[playerid] = 0;
MoveObject(Teste, Float:X, Float:Y, Float:Z, Float:Speed, Float:RotX, Float:RotY, Float:RotZ);//Fechando Portгo
}
return 1;
}