14.07.2016, 14:09
Peguei um sistema de setar veнculos aqui no fуrum: Sistema de veнculo prуprio - Set modifiquei umas coisas e nгo to conseguindo fazer com que ele respawne "x" minuto depois de sair do veiculo, ele continua parado no mesmo canto.
PHP код:
// --------[ Includes ]-----------
#include <a_samp>
#include <sscanf2>
#include <zcmd>
#include <DOF2>
// --------[ Defines ] -----------
#define MAX_CARROS 200
#define DIALOG_CMDSET 101
#define AMARELO 0xE8E800AA
#define VERDE_CLARO 0x00FF00AA
#define VERMELHO_ESCURO 0xFC0000FF
#if defined MAX_PLAYERS
#undef MAX_PLAYERS
#define MAX_PLAYERS 100
#endif
// --------[ New's ] ------------
new
SetProprio = 0,
Set[MAX_CARROS],
Text3D:Textcarro[MAX_CARROS]
;
new NomeCarro[212][] =
{
"Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel", "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana",
"Infernus", "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam", "Esperanto", "Taxi", "Washington", "Bobcat",
"Whoopee", "BF Injection", "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus", "Rhino", "Barracks", "Hotknife",
"Trailer 1", "Previon", "Coach", "Cabbie", "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral", "Squalo",
"Seasparrow", "Pizzaboy", "Tram", "Trailer 2", "Turismo", "Speeder", "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair",
"Berkley's RC Van", "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale", "Oceanic", "Sanchez", "Sparrow",
"Patriot", "Quad", "Coastguard", "Dinghy", "Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX", "Burrito",
"Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper", "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring",
"Sandking", "Blista Compact", "Police Maverick", "Boxville", "Benson", "Mesa", "RC Goblin", "Hotring Racer A", "Hotring Racer B",
"Bloodring Banger", "Rancher", "Super GT", "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster","Stunt", "Tanker",
"Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra", "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune",
"Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer", "Remington", "Slamvan", "Blade", "Freight", "Streak",
"Vortex", "Vincent", "Bullet", "Clover", "Sadler", "Firetruck LA", "Hustler", "Intruder", "Primo", "Cargobob", "Tampa", "Sunrise", "Merit",
"Utility", "Nevada", "Yosemite", "Windsor", "Monster A", "Monster B", "Uranus", "Jester", "Sultan", "Stratum", "Elegy", "Raindance",
"RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito", "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper", "Broadway",
"Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400", "News Van", "Tug", "Trailer 3", "Emperor", "Wayfarer", "Euros", "Hotdog",
"Club", "Freight Carriage", "Trailer 4", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car (LSPD)", "Police Car (SFPD)",
"Police Car (LVPD)", "Police Ranger", "Picador", "S.W.A.T", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage Trailer A",
"Luggage Trailer B", "Stairs", "BoxVille", "Tiller", "Utility Trailer"
};
// ---------[ Publics ] -----------
public OnFilterScriptInit()
{
// Contagem dos Sets
new
iSetsCount
;
for(new car = 0; car < MAX_CARROS; car++)
{
new
string[80],
strings[80]
;
format(string,sizeof(string),"Carros/carro%d.ini",car);
if(DOF2_FileExists(string))
{
Set[car] = AddStaticVehicleEx(DOF2_GetInt(string,"Modelo"),DOF2_GetInt(string,"CarroX"),DOF2_GetInt(string,"CarroY"),DOF2_GetInt(string,"CarroZ"), DOF2_GetInt(string,"CarroR"),DOF2_GetInt(string,"Cor1"),DOF2_GetInt(string,"Cor2"), 60000);
format(strings,sizeof(strings),"%s", DOF2_GetString(string,"Mensagem"));
SetVehicleNumberPlate(Set[car], DOF2_GetString(string, "Placa"));
iSetsCount ++;
SetProprio = iSetsCount;
}
}
return 1;
}
public OnFilterScriptExit()
{
DOF2_Exit();
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
new
vid,
Float:X,
Float:Y,
Float:Z,
msg[80],
string[80]
;
vid = GetPlayerVehicleID(playerid);
GetPlayerPos(playerid, X, Y, Z);
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
for(new car = 0; car < MAX_CARROS; car++)
{
if(vid == Set[car])
{
format(string,sizeof(string),"Carros/carro%d.ini",car);
if(strcmp(DOF2_GetString(string,"Dono"),Nome(playerid), true) == 0)
{
format(msg,sizeof(msg),"» %s Seja bem vindo ao seu veнculo prуprio ( Modelo: %s )",Nome(playerid) ,NomeCarro[GetVehicleModel(vid)-400]);
SendClientMessage(playerid, AMARELO,msg);
}
else
{
PlayerPlaySound(playerid, 1147, X, Y, Z);
SendClientMessage(playerid, VERMELHO_ESCURO,"» {FFFFFF}Vocк nгo й dono(a) deste veнculo.");
format(msg,sizeof(msg), "• Dono: {FFFFFF}%s", DOF2_GetString(string,"Dono"));
SendClientMessage(playerid, VERMELHO_ESCURO ,msg);
format(msg,sizeof(msg), "• Modelo: {FFFFFF}%s", NomeCarro[GetVehicleModel(vid)-400]);
SendClientMessage(playerid, VERMELHO_ESCURO ,msg);
RemovePlayerFromVehicle(playerid);
}
}
}
}
return 1;
}
// ---------- [ Comandos ] ----------
CMD:setcar(playerid, params[])
{
new
msg[126],
msg2[126],
string[80],
strings[80],
giverid,
Modeloset,
Cor1,
Cor2
;
if(IsPlayerAdmin(playerid))
{
if(sscanf(params, "uiii", giverid, Modeloset, Cor1, Cor2)) return SendClientMessage(playerid, VERMELHO_ESCURO, "| x | Uso: /setcar [ ID ] [ Modelo ] [ Cor 1 ] [ Cor 2 ]");
if(giverid == INVALID_PLAYER_ID) return SendClientMessage(playerid, VERMELHO_ESCURO, "| x | ID Invбlido.");
if(!IsPlayerConnected(giverid)) return SendClientMessage(playerid, VERMELHO_ESCURO, "| x | Jogador nгo estб conectado.");
if(Modeloset < 400 || Modeloset > 611 ) return SendClientMessage(playerid, VERMELHO_ESCURO, "| x | Modelos apenas de 400 a 611");
if(Cor1 < 0|| Cor1 > 255) return SendClientMessage(playerid, VERMELHO_ESCURO, "| x | Primeira cor entre 0 e 255");
if(Cor2 < 0|| Cor2 > 255) return SendClientMessage(playerid, VERMELHO_ESCURO, "| x | Segunda cor entre 0 e 255");
new
Float:PlayerX,
Float:PlayerY,
Float:PlayerZ,
Float:PlayerR
;
GetPlayerPos(playerid,PlayerX,PlayerY,PlayerZ);
GetPlayerFacingAngle(playerid,PlayerR);
for(new car = 0; car < MAX_CARROS; car++)
{
format(string,sizeof(string),"Carros/carro%d.ini",car);
if(!DOF2_FileExists(string))
{
DOF2_CreateFile(string);
DOF2_SetString(string,"Dono", Nome(giverid));
DOF2_SetString(string,"Mensagem", Nome(giverid));
DOF2_SetInt(string,"Modelo",Modeloset);
DOF2_SetInt(string,"Cor1", Cor1);
DOF2_SetInt(string,"Cor2", Cor2);
DOF2_SetString(string, "Placa", "SemPlaca");
DOF2_SetFloat(string,"CarroX",PlayerX);
DOF2_SetFloat(string,"CarroY",PlayerY);
DOF2_SetFloat(string,"CarroZ",PlayerZ);
DOF2_SetFloat(string,"CarroR",PlayerR);
format(strings,sizeof(strings), "%s", Nome(giverid));
Delete3DTextLabel(Textcarro[car]);
Set[car] = AddStaticVehicleEx(Modeloset,PlayerX,PlayerY,PlayerZ,PlayerR,Cor1,Cor2,60000 );
GameTextForPlayer(giverid, "~g~SET PROPRIO ~n~~r~SETADO", 5000, 0);
PlayerPlaySound(giverid, 1057, 0.0, 0.0, 10.0);
format( msg, sizeof( msg ),"[ Servidor ] Carro prуprio setado com sucesso para o jogador %s ( Modelo: %s )", Nome(giverid), NomeCarro[Modeloset -400]);
SendClientMessage(playerid, VERDE_CLARO, msg);
format( msg2, sizeof( msg2 ), "[ Servidor ] O Administrador(a) %s setou um carro prуprio para vocк ( Modelo: %s )", Nome(playerid), NomeCarro[Modeloset -400]);
SendClientMessage(giverid, AMARELO, msg2);
SetVehicleNumberPlate(Set[car], "SemPlaca");
SetProprio ++;
DOF2_SaveFile();
break;
}
}
}
else
{
SendClientMessage(playerid, VERMELHO_ESCURO, "| x | Comando extremamente reservado!");
}
return 1;
}
// ---------------------------------------- //
//
// Caso tenha um comando para Deletar
// veнculos em seu servidor, adcione
// esse cуdigo abaixo no comando para nгo
// deletar Set's e bugar seus veнculos !
CMD:dv(playerid)
{
new
vid = GetPlayerVehicleID(playerid)
;
for(new car = 0; car < MAX_CARROS; car++)
{
if(vid == Set[car])
{
SendClientMessage(playerid, VERMELHO_ESCURO, "| x | Vocк nгo pode deletar um veнculo prуprio !");
return 1;
}
}
return 1;
}
// ------------ [ Stock's ] -----------
stock Nome(playerid)
{
new GetNome[MAX_PLAYER_NAME];
GetPlayerName(playerid, GetNome, sizeof(GetNome));
return GetNome;
}
stock IsVehicleOccupied(vid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(GetPlayerState(i) == PLAYER_STATE_DRIVER || GetPlayerState(i) == PLAYER_STATE_PASSENGER)
{
if(GetPlayerVehicleID(i) == vid)
{
return 1;
}
}
}
}
return 0;
}
stock GetarAreaVeiculo(car)
{
new str[126];
format(str,sizeof(str),"%s",Zones[GetarZonaVeiculo(car)][zone_name]);
return str;
}
stock GetarZonaVeiculo(car)
{
new
Float:x,
Float:y,
Float:z
;
GetVehiclePos(car,x,y,z);
for(new i = 0; i <sizeof(Zones); i++)
{
if(x > Zones[i][zone_minx] && y > Zones[i][zone_miny] && z > Zones[i][zone_minz] && x < Zones[i][zone_maxx] && y < Zones[i][zone_maxy] && z < Zones[i][zone_maxz])
return i;
}
return 0;
}
stock GetarDistanciaVeiculo(playerid, car)
{
new
Float:x1,
Float:y1,
Float:z1,
Float:x2,
Float:y2,
Float:z2,
Float:dis
;
GetPlayerPos(playerid,x1,y1,z1);
GetVehiclePos(Set[car],x2,y2,z2);
dis = floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
return floatround(dis);
}
/* ------------------------[ FIM DO SISTEMA ] --------------------------------*/