BlueX

[PAWN]:bspikes.inc

Aug 6th, 2012
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 10.56 KB | None | 0 0
  1. /*
  2.            bspikes.inc      
  3.            
  4.     Gonçalo "BlueX" Rebelo (c)    
  5.        
  6.        
  7.         [iPs]TeaM (c)
  8.  
  9.     Funções:
  10.    
  11.     native CreateSpike(playerid,playername[])    
  12.  
  13.         = playerid        
  14.             ID do jogador.            
  15.  
  16.         = playername        
  17.             Nome do jogador.
  18.  
  19.     native OnSpikeCreated(playerid,playername,spikeid,Float:spikex,Float:spikey,Float:spikez);    
  20.  
  21.         = playerid        
  22.             ID do jogador            
  23.                
  24.         = spikeid        
  25.             ID do tapete de pregos            
  26.  
  27.         = Float:X,Float:Y,Float:z        
  28.             Coordenadas do tapte de pregos.
  29.  
  30.  
  31.        
  32.     native IsPlayerInSpike(playerid,bool:engine,bool:fire,maxspeed,dfiretime);    
  33.  
  34.         = playerid        
  35.             ID do jogador            
  36.  
  37.         = bool:engine        
  38.             Condição usada para desligar o motor.            
  39.  
  40.         = bool:fire        
  41.             Condição usada para criar fogo.            
  42.  
  43.  
  44.         = maxspeed        
  45.             Valor da velocidade necessária para criar o fogo e/ou desligar o motor.            
  46.  
  47.         = dfiretime        
  48.             Variavel usada para criar o tempo para eleminar o veiculo.
  49.  
  50.     native DestroySpike(playerid);    
  51.                  
  52.         = playerid        
  53.             ID do jogador.            
  54.  
  55.  
  56.     native TeleportToSpike(playerid,spikeid);    
  57.         = playerid        
  58.             ID do jogador.            
  59.  
  60.         = spikeid        
  61.             ID do tapete de pregos            
  62.  
  63.  
  64.     native TurnEngineOff(playerid);    
  65.         = playerid        
  66.             ID do jogador            
  67.  
  68.  
  69.     native TurnEngineOn(playerid);    
  70.         = playerid        
  71.             ID do jogador            
  72.  
  73.  
  74.     native SetVehicleOnFire(playerid,bool:fire,firetime);    
  75.         = playerid        
  76.             ID do jogador            
  77.  
  78.         = bool:fire        
  79.             Condição usada para colocar fogo no veiculo e para eleminar o fogo do veiculo.            
  80.  
  81.         = firetime        
  82.             Variavel usada para criar o tempo para eleminar o veiculo.            
  83.  
  84.     native OnPlayerPassedSpike(playerid,bool:fire,bool:engine);    
  85.         = playerid        
  86.             ID do jogador            
  87.  
  88.         = bool:fire        
  89.             Condição usada para verificar se quando passar pelo tapete de pregos cria fogo.            
  90.  
  91.         = bool:engine        
  92.             Condição usada para verificar se quando passar pelo tapete de pregos desliga o motor.
  93.              
  94.     native GetPlayerSpeed(playerid,maxspeed,dfiretime,bool:engine,bool:fire);
  95.        
  96.         = playerid
  97.             ID do jogador
  98.            
  99.         = maxspeed        
  100.             Valor da velocidade necessária para criar o fogo e/ou desligar o motor
  101.        
  102.         = dfiretime        
  103.             Variavel usada para criar o tempo para eleminar o veiculo.
  104.        
  105.         = bool:engine
  106.             Condição usada para desligar motor.
  107.        
  108.         = bool:fire
  109.             Condição usada para criar fogo.
  110.                  
  111.  
  112. */
  113.  
  114. #if defined _bspikes_included
  115.     #endinput
  116. #endif
  117. #define _bspikes_included
  118.  
  119. #include <a_samp>
  120.  
  121. const                                      
  122.     C_MAX_SPIKES = 20;
  123.  
  124. enum E_SPIKES_INFO {
  125.     spikes_ID,    
  126.     spikes_PID,
  127.     spikes_Creator[MAX_PLAYER_NAME],    
  128.     spikes_Created,    
  129.        
  130.     Float:spikes_x,    
  131.     Float:spikes_y,    
  132.     Float:spikes_z
  133. };
  134.  
  135. new
  136.     gSpikesInfo[C_MAX_SPIKES][E_SPIKES_INFO],    
  137.     id,gBug[MAX_PLAYERS] = 0,  
  138.     gVehicleEngine[MAX_VEHICLES],    
  139.     gVehicleOnFire[MAX_VEHICLES],    
  140.     gSpeed[MAX_PLAYERS],
  141.     gVehicleInSpike[MAX_VEHICLES],
  142.     gVehicleID[MAX_PLAYERS];    
  143.  
  144. forward CreateSpike(playerid,playername[]);
  145. forward OnSpikeCreated(playerid,playername,spikeid,Float:spikex,Float:spikey,Float:spikez);
  146. forward IsPlayerInSpike(playerid,bool:engine,bool:fire,dfiretime,maxspeed);
  147. forward DestroySpike(playerid);
  148. forward TeleportToSpike(playerid,spikeid);
  149. forward TurnEngineOff(playerid);
  150. forward TurnEngineOn(playerid);
  151. forward SetVehicleOnFire(playerid,bool:fire,firetime);
  152. forward OnPlayerPassedSpike(playerid,bool:fire,bool:engine);
  153. forward GetPlayerSpeed(playerid,maxspeed,dfiretime,bool:engine,bool:fire);
  154.  
  155. public GetPlayerSpeed(playerid,maxspeed,dfiretime,bool:engine,bool:fire){
  156.     if(GetSpeed(playerid) > maxspeed){
  157.         if(fire && engine){
  158.             SetVehicleOnFire(playerid,true,dfiretime),TurnEngineOff(playerid);                
  159.         }
  160.         else if(fire && !engine){                
  161.             SetVehicleOnFire(playerid,true,dfiretime);
  162.         }                
  163.         else if(!fire && engine){                
  164.             TurnEngineOff(playerid);
  165.         }        
  166.         if(gVehicleInSpike[GetPlayerVehicleID(playerid)] == 1){
  167.             KillTimer(gSpeed[playerid]);        
  168.             gVehicleInSpike[GetPlayerVehicleID(playerid)] = 0;
  169.             if(funcidx("OnPlayerPassedSpike"))
  170.                     CallLocalFunction("OnPlayerPassedSpike","ddd",playerid,fire,engine);            
  171.         }      
  172.     }    
  173.     return 1;
  174. }
  175.  
  176. public CreateSpike(playerid,playername[]){    
  177.  
  178.     if(id == C_MAX_SPIKES)    
  179.         return SendClientMessage(playerid,-1,"Voce atingiu o limite maximo de tapetes de pregos.");        
  180.  
  181.     new Float:fSpikes[4];  
  182.        
  183.     GetPlayerPos(playerid,fSpikes[0],fSpikes[1],fSpikes[2]);
  184.     GetPlayerFacingAngle(playerid,fSpikes[3]);    
  185.        
  186.     strmid(gSpikesInfo[id][spikes_Creator],playername,0,24,24);
  187.    
  188.     gSpikesInfo[id][spikes_x] = fSpikes[0],gSpikesInfo[id][spikes_y] = fSpikes[1],gSpikesInfo[id][spikes_z] = fSpikes[2];
  189.     gSpikesInfo[id][spikes_Created] = 1;  
  190.  
  191.     gSpikesInfo[id][spikes_ID] = CreateObject(2892,fSpikes[0],fSpikes[1],fSpikes[2]-1,0.0,0.0,fSpikes[3]);    
  192.     CallLocalFunction("OnSpikeCreated","dsdfff",playerid,playername,id,fSpikes[0],fSpikes[1],fSpikes[2]);
  193.     id++;    
  194.     return 1;
  195. }
  196.  
  197. public IsPlayerInSpike(playerid,bool:engine,bool:fire,dfiretime,maxspeed){
  198.     new panels,doors,lights,tires;
  199.     if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == 2){
  200.         for(new i; i<C_MAX_SPIKES; i++){    
  201.             if(IsPlayerInRangeOfPoint(playerid,10.0,gSpikesInfo[i][spikes_x],gSpikesInfo[i][spikes_y],gSpikesInfo[i][spikes_z]) && gSpikesInfo[i][spikes_Created] == 1 && gBug[playerid] == 0){        
  202.                 GetVehicleDamageStatus(GetPlayerVehicleID(playerid), panels, doors, lights, tires);
  203.                 UpdateVehicleDamageStatus(GetPlayerVehicleID(playerid), panels, doors, lights, 15);            
  204.                 if(fire && engine){
  205.                     gSpeed[playerid] = SetTimerEx("GetPlayerSpeed",500,true,"ddddd",playerid,dfiretime,maxspeed,true,true);
  206.                     gVehicleInSpike[GetPlayerVehicleID(playerid)] = 1;                
  207.                 }
  208.                 else if(fire && !engine){              
  209.                     gSpeed[playerid] = SetTimerEx("GetPlayerSpeed",500,true,"ddddd",playerid,dfiretime,maxspeed,true,false);                    
  210.                     gVehicleInSpike[GetPlayerVehicleID(playerid)] = 1;
  211.                 }                
  212.                 else if(!fire && engine){              
  213.                     gSpeed[playerid] = SetTimerEx("GetPlayerSpeed",500,true,"ddddd",playerid,dfiretime,maxspeed,false,true);
  214.                     gVehicleInSpike[GetPlayerVehicleID(playerid)] = 1;                    
  215.                 }                    
  216.                 gBug[playerid] ++;
  217.             }
  218.         }
  219.     }    
  220.     return 1;
  221. }
  222.  
  223. public TurnEngineOff(playerid){
  224.     new engine,lights,alarm,doors,bonnet,boot,objective,car;
  225.     car = GetPlayerVehicleID(playerid);
  226.     GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
  227.     SetVehicleParamsEx(car,0,lights,alarm,doors,bonnet,boot,objective);    
  228.     gVehicleEngine[car] = 0;    
  229.     return 1;
  230. }
  231.  
  232. public DestroySpike(playerid){
  233.     for(new i; i<C_MAX_SPIKES; i++){    
  234.         if(IsPlayerInRangeOfPoint(playerid,10.0,gSpikesInfo[i][spikes_x],gSpikesInfo[i][spikes_y],gSpikesInfo[i][spikes_z]) && gSpikesInfo[i][spikes_Created] == 1){        
  235.             DestroyObject(gSpikesInfo[i][spikes_ID]);
  236.             gSpikesInfo[i][spikes_Created] = 0;            
  237.             id --;            
  238.         }
  239.     }    
  240.     return 1;
  241. }
  242.  
  243. public TeleportToSpike(playerid,spikeid){
  244.     if(gSpikesInfo[spikeid][spikes_Created] == 0)    
  245.         return SendClientMessage(playerid,0xFF0000AA,"[ERRO]:{FFFFFF} ID invalido.");
  246.     static sTele[128];
  247.     format(sTele,sizeof sTele,"[{FFFF00}AVISO{808080}]: {FFFFFF}Voce teleportou-se para o tapte de pregos {808080}%d{FFFFFF}.",spikeid);    
  248.     SendClientMessage(playerid,0x808080AA,sTele);
  249.    
  250.     SendClientMessage(playerid,0x808080AA,"Informações sobre este tapete de pregos:");    
  251.  
  252.     format(sTele,sizeof sTele,"Criador: {FFFFFF}%s{808080} | ID: {FFFFFF}%d",gSpikesInfo[spikeid][spikes_Creator],IsPlayerConnected(gSpikesInfo[spikeid][spikes_PID]) ? (gSpikesInfo[spikeid][spikes_PID]) : (INVALID_PLAYER_ID));    
  253.     SendClientMessage(playerid,0x808080AA,sTele);      
  254.  
  255.     SetPlayerPos(playerid,gSpikesInfo[spikeid][spikes_x],gSpikesInfo[spikeid][spikes_y],gSpikesInfo[spikeid][spikes_z]);    
  256.     return 1;
  257. }
  258.  
  259. public TurnEngineOn(playerid){
  260.     new engine,lights,alarm,doors,bonnet,boot,objective,car;
  261.     car = GetPlayerVehicleID(playerid);
  262.     GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
  263.     SetVehicleParamsEx(car,1,lights,alarm,doors,bonnet,boot,objective);    
  264.     gVehicleEngine[car] = 1;    
  265.     return 1;
  266. }
  267.  
  268. public SetVehicleOnFire(playerid,bool:fire,firetime){
  269.     if(fire){
  270.         gVehicleID[playerid] = GetPlayerVehicleID(playerid);
  271.         gVehicleOnFire[gVehicleID[playerid]] = CreateObject( 18689,0,0,0,0,0,0,80 );
  272.         AttachObjectToVehicle( gVehicleOnFire[gVehicleID[playerid]], gVehicleID[playerid], 1.100000, 1.600000, -2.300000, 0.000000, 0.000000, 0.000000 );
  273.         SetTimerEx("SetVehicleOnFire",firetime,false,"ddd",playerid,false,0);      
  274.     }
  275.     else    
  276.         DestroyObject(gVehicleOnFire[gVehicleID[playerid]]),gBug[playerid] = 0;
  277.     return 1;
  278. }
  279.  
  280. GetSpeed ( playerid , mode = 1 )
  281. {
  282.     static Float:poskm [3];
  283.     GetVehicleVelocity ( GetPlayerVehicleID ( playerid ) , poskm [ 0 ] , poskm [ 1 ] , poskm [ 2 ] ) ;
  284.     return IsPlayerInAnyVehicle ( playerid ) ? floatround ( ( ( floatsqroot ( ( ( poskm [ 0 ] * poskm [ 0 ] ) + ( poskm [ 1 ] * poskm [ 1 ] ) + ( poskm [ 2 ] * poskm [ 2 ] ) ) ) * ( !mode ? 105.0 : 170.0 ) ) ) * 1 ) : 0;
  285. }
Advertisement
Add Comment
Please, Sign In to add comment