#include <a_samp>
#define MAX_TELES 100
#define DIALOG_TELE 24
new strmem[1024];
new TelesCriados=-1;
enum pTele
{
NomeTele[64],
Float:xo,
Float:yo,
Float:zo,
InteriorID,
TeleporteID
};
new TeleporteSystem[MAX_TELES][pTele];
public OnFilterScriptInit()
{
AddTeleport("Aero San Fiero",-1448.325, -325.1149, 15,0);
AddTeleport("Aero Los Santos",1546.908, -2313.5, 15,0);
AddTeleport("Aero Las Venturas",1677.544, 1426.837, 15,0);
printf("\n\n\n\n System of Teleports Loaded | %d/%d teleports total \n\n\n\n",TelesCriados,MAX_TELES);
return true;
}
stock AddTeleport(nomete[], Float:xob, Float:yob, Float:zob,interior)
{
TelesCriados++;
format(TeleporteSystem[TelesCriados][NomeTele],64,"%s",nomete);
TeleporteSystem[TelesCriados][xo] = xob;
TeleporteSystem[TelesCriados][yo] = yob;
TeleporteSystem[TelesCriados][zo] = zob;
TeleporteSystem[TelesCriados][InteriorID] = interior;
TeleporteSystem[TelesCriados][TeleporteID] = TelesCriados;
return ;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new item = listitem;
if(item == TeleporteSystem[item][TeleporteID])
{
if(!response) return SendClientMessage(playerid, 0xFFFFFFFF, "You Cancel Teleport");
new message[128];
format(message, sizeof(message), "You is transported for %s wait", TeleporteSystem[item][NomeTele]);
SendClientMessage(playerid, 0xFFFFFFFF, message);
new name[24], string[128];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "** %s go to in teleport %s [/teles].",name,TeleporteSystem[item][NomeTele]);
SendClientMessageToAll(0xFFFF00AA, string);
if(IsPlayerInAnyVehicle(playerid))
{
SetVehiclePos(GetPlayerVehicleID(playerid),TeleporteSystem[item][xo],TeleporteSystem[item][yo],TeleporteSystem[item][zo]+1);
}
if(!IsPlayerInAnyVehicle(playerid))
{
SetPlayerPos(playerid,TeleporteSystem[item][xo],TeleporteSystem[item][yo],TeleporteSystem[item][zo]+1);
}
TogglePlayerControllable(playerid,0);
SetTimerEx("DescongelarPlayer",1500,false,"i",playerid);
return 1;
}
return 0;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/teles", true))
{
format(strmem, 1024, "");
for(new mem=0;mem<TelesCriados;mem++)
{
format(strmem,1024, "%s%s\n",strmem,TeleporteSystem[mem][NomeTele]);
}
ShowPlayerDialog(playerid,DIALOG_TELE,DIALOG_STYLE_LIST, "List of Teles:",strmem,"Tele", "Exit");
}
return 0;
}
forward DescongelarPlayer(playerid);
public DescongelarPlayer(playerid)
{
TogglePlayerControllable(playerid,1);
return true;
}
Here is an idea, make it with like add an extra parameter to AddTeleport like, WaitTime, so it freezes the player for an amount of time then unfreeze him, and if it is set to 0, then it won't eve freeze.
Because there are teleports on objects, and they make you fall through. Good job anyway ![]() |
#include <a_samp>
#define MAX_TELES 100
#define DIALOG_TELE 24
new strmem[1024];
new TelesCriados=-1;
enum pTele
{
NomeTele[64],
Float:xo,
Float:yo,
Float:zo,
InteriorID,
TeleporteID,
Tempo
};
new TeleporteSystem[MAX_TELES][pTele];
public OnFilterScriptInit()
{
AddTeleport("Aero San Fiero",-1448.325, -325.1149, 15,0,4000);
AddTeleport("Aero Los Santos",1546.908, -2313.5, 15,0,4000);
AddTeleport("Aero Las Venturas",1677.544, 1426.837, 15,0,4000);
printf("\n\n\n\n System of Teleports Loaded | %d/%d teleports total \n\n\n\n",TelesCriados,MAX_TELES);
return true;
}
stock AddTeleport(nomete[], Float:xob, Float:yob, Float:zob,interior,temp)
{
TelesCriados++;
format(TeleporteSystem[TelesCriados][NomeTele],64,"%s",nomete);
TeleporteSystem[TelesCriados][xo] = xob;
TeleporteSystem[TelesCriados][yo] = yob;
TeleporteSystem[TelesCriados][zo] = zob;
TeleporteSystem[TelesCriados][InteriorID] = interior;
TeleporteSystem[TelesCriados][TeleporteID] = TelesCriados;
TeleporteSystem[TelesCriados][Tempo] = temp;
return ;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new item = listitem;
if(item == TeleporteSystem[item][TeleporteID])
{
if(!response) return SendClientMessage(playerid, 0xFFFFFFFF, "You Cancel Teleport");
new message[128];
format(message, sizeof(message), "You is transported for %s wait", TeleporteSystem[item][NomeTele]);
SendClientMessage(playerid, 0xFFFFFFFF, message);
new name[24], string[128];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "** %s go to in teleport %s [/teles].",name,TeleporteSystem[item][NomeTele]);
SendClientMessageToAll(0xFFFF00AA, string);
if(IsPlayerInAnyVehicle(playerid))
{
SetVehiclePos(GetPlayerVehicleID(playerid),TeleporteSystem[item][xo],TeleporteSystem[item][yo],TeleporteSystem[item][zo]+1);
}
if(!IsPlayerInAnyVehicle(playerid))
{
SetPlayerPos(playerid,TeleporteSystem[item][xo],TeleporteSystem[item][yo],TeleporteSystem[item][zo]+1);
}
TogglePlayerControllable(playerid,0);
SetTimerEx("DescongelarPlayer",TeleporteSystem[item][Tempo],false,"i",playerid);
return 1;
}
return 0;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/teles", true))
{
format(strmem, 1024, "");
for(new mem=0;mem<TelesCriados;mem++)
{
format(strmem,1024, "%s%s\n",strmem,TeleporteSystem[mem][NomeTele]);
}
ShowPlayerDialog(playerid,DIALOG_TELE,DIALOG_STYLE_LIST, "List of Teles:",strmem,"Tele", "Exit");
}
return 0;
}
forward DescongelarPlayer(playerid);
public DescongelarPlayer(playerid)
{
TogglePlayerControllable(playerid,1);
return true;
}