/* bspikes.inc Gonçalo "BlueX" Rebelo (c) [iPs]TeaM (c) Funções: native CreateSpike(playerid,playername[]) = playerid ID do jogador. = playername Nome do jogador. native OnSpikeCreated(playerid,playername,spikeid,Float:spikex,Float:spikey,Float:spikez); = playerid ID do jogador = spikeid ID do tapete de pregos = Float:X,Float:Y,Float:z Coordenadas do tapte de pregos. native IsPlayerInSpike(playerid,bool:engine,bool:fire,maxspeed,dfiretime); = playerid ID do jogador = bool:engine Condição usada para desligar o motor. = bool:fire Condição usada para criar fogo. = maxspeed Valor da velocidade necessária para criar o fogo e/ou desligar o motor. = dfiretime Variavel usada para criar o tempo para eleminar o veiculo. native DestroySpike(playerid); = playerid ID do jogador. native TeleportToSpike(playerid,spikeid); = playerid ID do jogador. = spikeid ID do tapete de pregos native TurnEngineOff(playerid); = playerid ID do jogador native TurnEngineOn(playerid); = playerid ID do jogador native SetVehicleOnFire(playerid,bool:fire,firetime); = playerid ID do jogador = bool:fire Condição usada para colocar fogo no veiculo e para eleminar o fogo do veiculo. = firetime Variavel usada para criar o tempo para eleminar o veiculo. native OnPlayerPassedSpike(playerid,bool:fire,bool:engine); = playerid ID do jogador = bool:fire Condição usada para verificar se quando passar pelo tapete de pregos cria fogo. = bool:engine Condição usada para verificar se quando passar pelo tapete de pregos desliga o motor. native GetPlayerSpeed(playerid,maxspeed,dfiretime,bool:engine,bool:fire); = playerid ID do jogador = maxspeed Valor da velocidade necessária para criar o fogo e/ou desligar o motor = dfiretime Variavel usada para criar o tempo para eleminar o veiculo. = bool:engine Condição usada para desligar motor. = bool:fire Condição usada para criar fogo. */ #if defined _bspikes_included #endinput #endif #define _bspikes_included #include const C_MAX_SPIKES = 20; enum E_SPIKES_INFO { spikes_ID, spikes_PID, spikes_Creator[MAX_PLAYER_NAME], spikes_Created, Float:spikes_x, Float:spikes_y, Float:spikes_z }; new gSpikesInfo[C_MAX_SPIKES][E_SPIKES_INFO], id,gBug[MAX_PLAYERS] = 0, gVehicleEngine[MAX_VEHICLES], gVehicleOnFire[MAX_VEHICLES], gSpeed[MAX_PLAYERS], gVehicleInSpike[MAX_VEHICLES], gVehicleID[MAX_PLAYERS]; forward CreateSpike(playerid,playername[]); forward OnSpikeCreated(playerid,playername,spikeid,Float:spikex,Float:spikey,Float:spikez); forward IsPlayerInSpike(playerid,bool:engine,bool:fire,dfiretime,maxspeed); forward DestroySpike(playerid); forward TeleportToSpike(playerid,spikeid); forward TurnEngineOff(playerid); forward TurnEngineOn(playerid); forward SetVehicleOnFire(playerid,bool:fire,firetime); forward OnPlayerPassedSpike(playerid,bool:fire,bool:engine); forward GetPlayerSpeed(playerid,maxspeed,dfiretime,bool:engine,bool:fire); public GetPlayerSpeed(playerid,maxspeed,dfiretime,bool:engine,bool:fire){ if(GetSpeed(playerid) > maxspeed){ if(fire && engine){ SetVehicleOnFire(playerid,true,dfiretime),TurnEngineOff(playerid); } else if(fire && !engine){ SetVehicleOnFire(playerid,true,dfiretime); } else if(!fire && engine){ TurnEngineOff(playerid); } if(gVehicleInSpike[GetPlayerVehicleID(playerid)] == 1){ KillTimer(gSpeed[playerid]); gVehicleInSpike[GetPlayerVehicleID(playerid)] = 0; if(funcidx("OnPlayerPassedSpike")) CallLocalFunction("OnPlayerPassedSpike","ddd",playerid,fire,engine); } } return 1; } public CreateSpike(playerid,playername[]){ if(id == C_MAX_SPIKES) return SendClientMessage(playerid,-1,"Voce atingiu o limite maximo de tapetes de pregos."); new Float:fSpikes[4]; GetPlayerPos(playerid,fSpikes[0],fSpikes[1],fSpikes[2]); GetPlayerFacingAngle(playerid,fSpikes[3]); strmid(gSpikesInfo[id][spikes_Creator],playername,0,24,24); gSpikesInfo[id][spikes_x] = fSpikes[0],gSpikesInfo[id][spikes_y] = fSpikes[1],gSpikesInfo[id][spikes_z] = fSpikes[2]; gSpikesInfo[id][spikes_Created] = 1; gSpikesInfo[id][spikes_ID] = CreateObject(2892,fSpikes[0],fSpikes[1],fSpikes[2]-1,0.0,0.0,fSpikes[3]); CallLocalFunction("OnSpikeCreated","dsdfff",playerid,playername,id,fSpikes[0],fSpikes[1],fSpikes[2]); id++; return 1; } public IsPlayerInSpike(playerid,bool:engine,bool:fire,dfiretime,maxspeed){ new panels,doors,lights,tires; if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == 2){ for(new i; i