Advertisement
garfield

[FS]: Anti-Drive By

Oct 8th, 2012
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.82 KB | None | 0 0
  1. #include a_samp
  2.  
  3.  
  4. // Criamos as variáveis & Arrays
  5. new    
  6.  
  7.     // Array flutuante que armazena a posição do player.
  8.     Float:PlayerOldPosition[MAX_PLAYERS][3],
  9.    
  10.     // Array/Borleana que armazena se o player foi detido.
  11.     bool:PlayerDetido[MAX_PLAYERS char],
  12.    
  13.     // Variável para criação de menu.
  14.     Menu: MenuEscolhe
  15. ;
  16.  
  17.  
  18. public OnFilterScriptInit(){
  19.  
  20.     // Crio o menu na posição definida
  21.     MenuEscolhe = CreateMenu("Morte Proposital",  1, 50.0, 180.0, 200.0, 200.0);
  22.    
  23.     // Adicionamos Itens no menu.
  24.     AddMenuItem(MenuEscolhe, 0, "Sim");
  25.     AddMenuItem(MenuEscolhe, 0, "Nao");
  26.    
  27.     return true;
  28. }
  29.  
  30. // Public é chamada quando ocorre a morte do player.
  31. public OnPlayerDeath(playerid, killerid, reason){
  32.     // caso o player estiver conectado, para evitar crashs.
  33.     if(IsPlayerConnected(killerid)){       
  34.    
  35.         // verificar se o player está em um veiculo
  36.         if(IsPlayerInAnyVehicle(killerid)){
  37.        
  38.             // Armazenamos a posição do player para depois devolve-lo a cena do cime.
  39.             GetPlayerPos(killerid, PlayerOldPosition[killerid][0],PlayerOldPosition[killerid][1],PlayerOldPosition[killerid][2]);
  40.            
  41.             // Motramos o menu para o player.
  42.             ShowMenuForPlayer(MenuEscolhe, killerid);
  43.            
  44.             // Congelamos o player.
  45.             TogglePlayerControllable(playerid, false);
  46.             return false;
  47.         }
  48.     }
  49.     return true;
  50. }
  51.  
  52.  
  53. // Public responsável pelos comandos.
  54. public OnPlayerCommandText(playerid, cmdtext[]){
  55.  
  56.     // Caso o player estiver preso, não poder usar comandos.
  57.     if(PlayerDetido{playerid})
  58.         return SendClientMessage(playerid, -1, "Players presos não podem utilizar comandos."), false;
  59.        
  60.        
  61.     return false;
  62. }
  63.  
  64.  
  65.  
  66. // Esta public é chamada quando o player seleciona uma das opções do menu acima.
  67. public OnPlayerSelectedMenuRow(playerid, row){
  68.  
  69.     // Verificamos qual menu estamos trabalhando
  70.     if(GetPlayerMenu(playerid) == MenuEscolhe){
  71.    
  72.         // Verificamos também qual opção (item) ele selecionou...
  73.         switch(row){
  74.        
  75.             // Caso for "SIM", ele faz as seguintes operações:
  76.             case 0:{
  77.                    
  78.                     // Seta a Array/Boorlena que o player não está detido.
  79.                     PlayerDetido{playerid} = false;
  80.                    
  81.                     // Chamamos a public "JailPlayer" com os parâmetros "playerID" e o "PlayerDetido".
  82.                     CallLocalFunction(#JailPlayer, "ii", playerid, PlayerDetido{playerid});
  83.             }
  84.            
  85.             // Caso o player escolheu "NÃO", ele manda a simples mensagem:
  86.             case 1:{
  87.                     // Manda a mensagem para o player.
  88.                     SendClientMessage(playerid, -1, "que não se cometa mais isto.");
  89.             }
  90.         }
  91.     }
  92.     return 1;
  93. }
  94.  
  95. // Quando o player fecha o menu, esta public é chamada.
  96. public OnPlayerExitedMenu(playerid){
  97.  
  98.     // Descongelamos o player..
  99.     TogglePlayerControllable(playerid,true);
  100.     return true;
  101. }
  102.  
  103.  
  104. // Public Criada por min,  ela é chamada quando player é mandado para cadeia.
  105. forward JailPlayer(pid, bool:Detido); public JailPlayer(pid, bool:Detido){
  106.  
  107.     // Caso ele não estiver detido ele faz a seguintes operações..
  108.     if(Detido == false){
  109.    
  110.         // Manda a mensagem dizendo que será solto só quando completar 25 Minutos de cadeia.
  111.         SendClientMessage(pid, -1,"Você foi preso 25 minutos por Drive By");
  112.        
  113.         // Seta a posição do player(de uma cadeia)
  114.         SetPlayerPos(pid,            -221.059051,1408.984008,27.773437);
  115.        
  116.         // Seta o Interior do player..
  117.         SetPlayerInterior(pid,      0);
  118.        
  119.         // Setamos a Boorleana "PlayerDetido" para true;
  120.         PlayerDetido{pid} = true;
  121.        
  122.        
  123.         // Chamamos novamente a public "JailPlayer" daqui a 25 minutos.
  124.         SetTimerEx("JailPlayer",  1500000, false, "ii", pid, PlayerDetido{pid});
  125.     }
  126.    
  127.    
  128.     // Caso o player estiver detido.
  129.     if(Detido == true){
  130.    
  131.         // Coloca o player na posição que estava quando matou a vitima..
  132.         SetPlayerPos(pid, PlayerOldPosition[pid][0],PlayerOldPosition[pid][1],PlayerOldPosition[pid][2]);
  133.        
  134.         // Manda a mensagem.
  135.         SendClientMessage(pid, -1,"Você foi solto.");
  136.     }
  137.     return true;
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement