Advertisement
NicK_PB

Code

Aug 26th, 2015
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.02 KB | None | 0 0
  1. //Então Nick!
  2. //É o seguinte, fiz este comando: /derby
  3. //Ao digitar, um dialog com 4 opções de carros aparece, e você escolhe um deles
  4. //Então voce teleporta pro cenario com veiculo, tudo certo!
  5. //Objeto: bater até explodir sem possibilidade de reparar o carro.. em fim
  6. //Funciona tudo certo! O problema é o seguinte:
  7. //Quando o player aperta F ele é elimado e o carro some.. ok!
  8. //Só que, se o carro pegar fogo, e o cara não sair do carro, ou seja, esperar explodir
  9. //Todos os outros que estão no /derby perdem o veículo..
  10. //Eu to olhando os cods e sei que o erro é ali, pois quando aperta F ninguem perde o carro
  11. //(Pelo menos até agora ninguem perdeu o carro ao apertar F, só o cara que apertou)
  12. //Já tentei de tudo, por mais que seja simples, não sei arrumar..
  13. //Se puderes me dar uma força eu agradeço muito!
  14. //Abraço, obrigado por atender.
  15.  
  16. //Botei só o principal..
  17. new VeiculoDERBY[MAX_PLAYERS];
  18. new IsInDerby[MAX_PLAYERS];
  19.  
  20. //Este aqui funciona perfeitamente ---------------------------------------------
  21. public OnPlayerExitVehicle(playerid, vehicleid)
  22. {
  23.     if(IsInDerby[playerid] == 1)
  24.     {
  25.         Spawnado[playerid] = 0;
  26.         SetPlayerHealth(playerid, 0);
  27.         VeiculoDERBY[playerid] = 0;
  28.     DestroyVehicle(vehicleid);
  29.         scm(playerid, -1, "{FF0000}Você saiu do carro no Derby e foi retirado da Arena.");
  30.     }
  31.     return 1;
  32. }
  33. //Este aqui não ----------------------------------------------------------------
  34. //Pelo menos eu acho que o problema é aqui..
  35. public OnVehicleDeath(vehicleid, killerid)
  36. {
  37.     for(new playerid; playerid <MAX_PLAYERS; playerid++)
  38.     {
  39.         if(IsInDerby[playerid] == 1)
  40.         {
  41.                     VeiculoDERBY[playerid] = 0;
  42.             DestroyVehicle(vehicleid);
  43.         }
  44.     }
  45.     return 1;
  46. }
  47. //Comando ----------------------------------------------------------------------
  48. CMD:derby(playerid, params[])
  49. {
  50.     if(NoPuteiroSF[playerid] == 1) return scm(playerid, -1, "{FF0000}Proibido este comando dentro do puteiro.");
  51.     if(Spawnado[playerid] == 0) return scm(playerid, -1, "{FF0000}Você ainda não spawnou.");
  52.     if(BloqueioDerby[playerid] == 1) return scm(playerid, -1, "{FF0000}Proibido o uso deste comando neste teleporte.");
  53.     if(BloqueioArena[playerid] == 1) return scm(playerid, -1, "{FF0000}Você não pode usar este comando neste teleporte.");
  54.     if(IsPlayerInAnyVehicle(playerid)) return scm(playerid, -1, "{FF0000}Saia do veículo para usar este comando.");
  55.     ShowPlayerDialog(playerid, DerbyD, DIALOG_STYLE_LIST, "{FFF000}Escolha seu veículo", "{FF0000}Monster \n{FF0000}Glendale Shit \n{FF0000}Sadler Shit \n{FF0000}Bloodring Banger", "Selecionar", "Cancelar");
  56.     return 1;
  57. }
  58. //Dialog -----------------------------------------------------------------------
  59. if(dialogid == DerbyD)
  60.     {
  61.         if(response)
  62.         {
  63.             switch(listitem)
  64.             {
  65.                 case 0:
  66.                 {
  67.                     new RandomDr = random(sizeof(Derby));
  68.                     VeiculoDERBY[playerid] = CreateVehicle(444, Derby[RandomDr][0], Derby[RandomDr][1], Derby[RandomDr][2], Angle, -1, -1, -1);
  69.                     PutPlayerInVehicle(playerid, VeiculoDERBY[playerid], 0);
  70.                     LinkVehicleToInterior(VeiculoDERBY[playerid], 15);
  71.                     SetVehicleZAngle(VeiculoDERBY[playerid], 179.0);
  72.                     SetPlayerInterior(playerid, 15);
  73.                     SetVehicleParamsEx(VeiculoDERBY[playerid], 1, 1, alarm, doors, bonnet, boot, objective);
  74.                     scm(playerid, -1, "{FFF000}Você não pode sair do carro neste teleporte, se sair, será eliminado.");
  75.                     format(string, sizeof(string), "{FFF000}Jogador {FFFFFF}%s {FFF000}foi para o {FFFFFF}Derby {FFF000}de Monster. {FFFFFF}( /derby )", Pname);
  76.                     scmall(-1, string);
  77.                     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  78.                     ResetPlayerWeapons(playerid);
  79.                     IsInDerby[playerid] = 1;
  80.                     BloqueioDerby[playerid] = 1;
  81.                     BloqueioArena[playerid] = 1;
  82.                     BloqueioArena2[playerid] = 1;
  83.                     BloquearDesbugar[playerid] = 1;
  84.                 }
  85.                 case 1:
  86.                 {
  87.                     new RandomDr = random(sizeof(Derby));
  88.                     VeiculoDERBY[playerid] = CreateVehicle(604, Derby[RandomDr][0], Derby[RandomDr][1], Derby[RandomDr][2], Angle, -1, -1, -1);
  89.                     PutPlayerInVehicle(playerid, VeiculoDERBY[playerid], 0);
  90.                     LinkVehicleToInterior(VeiculoDERBY[playerid], 15);
  91.                     SetVehicleZAngle(VeiculoDERBY[playerid], 179.0);
  92.                     SetPlayerInterior(playerid, 15);
  93.                     SetVehicleParamsEx(VeiculoDERBY[playerid], 1, lights, alarm, doors, bonnet, boot, objective);
  94.                     scm(playerid, -1, "{FFF000}Você não pode sair do carro neste teleporte, se sair, será eliminado.");
  95.                     format(string, sizeof(string), "{FFF000}Jogador {FFFFFF}%s {FFF000}foi para o {FFFFFF}Derby {FFF000}de Glendale. {FFFFFF}( /derby )", Pname);
  96.                     scmall(-1, string);
  97.                     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  98.                     ResetPlayerWeapons(playerid);
  99.                     IsInDerby[playerid] = 1;
  100.                     BloqueioDerby[playerid] = 1;
  101.                     BloqueioArena[playerid] = 1;
  102.                     BloqueioArena2[playerid] = 1;
  103.                     BloquearDesbugar[playerid] = 1;
  104.                 }
  105.                 case 2:
  106.                 {
  107.                     new RandomDr = random(sizeof(Derby));
  108.                     VeiculoDERBY[playerid] = CreateVehicle(605, Derby[RandomDr][0], Derby[RandomDr][1], Derby[RandomDr][2], Angle, -1, -1, -1);
  109.                     PutPlayerInVehicle(playerid, VeiculoDERBY[playerid], 0);
  110.                     LinkVehicleToInterior(VeiculoDERBY[playerid], 15);
  111.                     SetVehicleZAngle(VeiculoDERBY[playerid], 179.0);
  112.                     SetPlayerInterior(playerid, 15);
  113.                     SetVehicleParamsEx(VeiculoDERBY[playerid], 1, lights, alarm, doors, bonnet, boot, objective);
  114.                     scm(playerid, -1, "{FFF000}Você não pode sair do carro neste teleporte, se sair, será eliminado.");
  115.                     format(string, sizeof(string), "{FFF000}Jogador {FFFFFF}%s {FFF000}foi para o {FFFFFF}Derby {FFF000}de Sadler . {FFFFFF}( /derby )", Pname);
  116.                     scmall(-1, string);
  117.                     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  118.                     ResetPlayerWeapons(playerid);
  119.                     IsInDerby[playerid] = 1;
  120.                     BloqueioDerby[playerid] = 1;
  121.                     BloqueioArena[playerid] = 1;
  122.                     BloqueioArena2[playerid] = 1;
  123.                     BloquearDesbugar[playerid] = 1;
  124.                 }
  125.                 case 3:
  126.                 {
  127.                     new RandomDr = random(sizeof(Derby));
  128.                     VeiculoDERBY[playerid] = CreateVehicle(504, Derby[RandomDr][0], Derby[RandomDr][1], Derby[RandomDr][2], Angle, -1, -1, -1);
  129.                     PutPlayerInVehicle(playerid, VeiculoDERBY[playerid], 0);
  130.                     LinkVehicleToInterior(VeiculoDERBY[playerid], 15);
  131.                     SetVehicleZAngle(VeiculoDERBY[playerid], 179.0);
  132.                     SetPlayerInterior(playerid, 15);
  133.                     SetVehicleParamsEx(VeiculoDERBY[playerid], 1, lights, alarm, doors, bonnet, boot, objective);
  134.                     scm(playerid, -1, "{FFF000}Você não pode sair do carro neste teleporte, se sair, será eliminado.");
  135.                     format(string, sizeof(string), "{FFF000}Jogador {FFFFFF}%s {FFF000}foi para o {FFFFFF}Derby {FFF000}de Bloodring. {FFFFFF}( /derby )", Pname);
  136.                     scmall(-1, string);
  137.                     PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  138.                     ResetPlayerWeapons(playerid);
  139.                     IsInDerby[playerid] = 1;
  140.                     BloqueioDerby[playerid] = 1;
  141.                     BloqueioArena[playerid] = 1;
  142.                     BloqueioArena2[playerid] = 1;
  143.                     BloquearDesbugar[playerid] = 1;
  144.                 }
  145.             }
  146.         }
  147.     }
  148.     return 1;
  149. }
  150.  
  151. // Adicionei esta callback. Isto irá detectar melhor se o jogador alterou o status (no caso, saiu do veiculo)
  152. public OnPlayerStateChange(playerid, newstate, oldstate) {
  153.     if((newstate = PLAYER_STATE_NONE) && ((oldstate == PLAYER_STATE_DRIVER) || (oldstate == PLAYER_STATE_PASSENGER)) && ((IsInDerby[playerid] == 1) && (VeiculoDERBY[playerid] != 0))) { // Caso estivesse de motorista ou passageiro
  154.         Spawnado[playerid] = 0;
  155.         SetPlayerHealth(playerid, 0);
  156.     DestroyVehicle(VeiculoDERBY[playerid]);
  157.         VeiculoDERBY[playerid] = 0;
  158.         scm(playerid, -1, "{FF0000}Você saiu do carro no Derby e foi retirado da Arena.");
  159.     }
  160.     return 1;
  161. }
  162.  
  163. /*
  164.     Seu script está muito bom, parabéns. Mas, você pode optmizar isto. Bom é claro que isso requer mais prática, então
  165.     Continue praticando, que seu script funcionará melhor e mais rápido.
  166.  
  167.     Ah, troquei algumas partes incorretas de seu script. AddStaticVehicleEx é apenas pro inicio do Scripting.
  168.    
  169.     Qualquer coisa, dê um alô. Abraços.
  170. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement