Advertisement
cesar_google

Survival Minijuego [BETA]

Feb 25th, 2013
446
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 13.64 KB | None | 0 0
  1. /*
  2.  
  3.                     -=[ Minijuego Survival ]=-
  4.                     -=[  By: Cesar_Google  ]=-
  5.                        -=[ Version: 1.5 ]=-
  6.                       -=[ Beta No Estable ]=-
  7. Plagio:
  8. Es una infracción al derecho de autor acerca de una obra artística o intelectual de cualquier tipo,
  9. en la que se incurre cuando se presenta una obra ajena como propia u original.
  10.  ________         ___________
  11. |  ______|       |  _________|
  12. | |              | |
  13. | |              | |   ______
  14. | |              | |  |  __  |
  15. | |              | |  |_|  | |
  16. | |______        | |_______| |
  17. |________|       |___________|
  18.            =====
  19. */
  20. #include <a_samp>
  21. #include <zcmd>
  22. #tryinclude <foreach>
  23. #if !defined _FOREACH_LOCAL_VERSION
  24.    #define foreach(%0: Player)    \
  25.            for(new %0, m = GetMaxPlayers(); %0 < m; %0++)if(IsPlayerConnected(%0) && !IsPlayerNPC(%0))
  26. #endif
  27. #pragma tabsize 0
  28. #define Publico:%0(%1)                                      forward %0(%1); public %0(%1)
  29. #define Creditos "-=[ Minijuego Survival By: Cesar_Google ]=-"
  30. #define SURVIVAL_OPCION "EQUIPO 1 Nombre: %s\nEQUIPO 1 Nombre: %s\nEQUIPO 1 Nombre: %s\nEQUIPO 2 Nombre: %s\nEQUIPO 2 Nombre: %s\nEQUIPO 2 Nombre: %s\nComenzar Minijuego"
  31. #define MAX_ROUND               (2)
  32. #define MAXIMO                  (3)
  33. #define Dialog_Load             (12000)
  34. #define Dialog_Electo           (12001)
  35. enum Info
  36. {
  37. Player_A,
  38. Player_B,
  39. Player_C,
  40. Player_D,
  41. Player_E,
  42. Player_F,
  43. Start,
  44. Round,
  45. Punto_A,
  46. Punto_B,
  47. Score_A,
  48. Score_B,
  49. EnMinigame,
  50. Spectando
  51.  
  52. }
  53.  
  54. new SurvivalInfo[Info];
  55. new PlayerSurvival[MAX_PLAYERS][Info];
  56. new Cadena[256];
  57. new Text:Contenido;
  58. new Stats[128];
  59. new Float:Sangre[6];
  60. new Float:Vida_A;
  61. new Float:Vida_B;
  62. new EnCadena[256];
  63. new Float:Chaleco[6];
  64.  
  65. public OnFilterScriptInit()
  66. {
  67.     print("||======================================||");
  68.     print("||"Creditos"||");
  69.     print("||======================================||");
  70.  
  71.     SurvivalInfo[Player_A] = -1;
  72.     SurvivalInfo[Player_B] = -1;
  73.     SurvivalInfo[Player_C] = -1;
  74.     SurvivalInfo[Player_D] = -1;
  75.     SurvivalInfo[Player_E] = -1;
  76.     SurvivalInfo[Player_F] = -1;
  77.     SurvivalInfo[Score_A]  = 0;
  78.     SurvivalInfo[Score_B]  = 0;
  79.     SurvivalInfo[Round]    = MAX_ROUND;
  80.     SurvivalInfo[Start]    = 0;
  81.  
  82.     Contenido = TextDrawCreate(204.000000, 52.000000, "Vida Team A: 600    10/10    Vida Team B: 600");
  83.     TextDrawBackgroundColor(Contenido, 255);
  84.     TextDrawFont(Contenido, 1);
  85.     TextDrawLetterSize(Contenido, 0.260000, 1.600000);
  86.     TextDrawColor(Contenido, -1027423542);
  87.     TextDrawSetOutline(Contenido, 1);
  88.     TextDrawSetProportional(Contenido, 1);
  89.  
  90.     return 1;
  91. }
  92.  
  93. public OnPlayerConnect(playerid)
  94. {
  95.     PlayerSurvival[playerid][EnMinigame] = 0;
  96.     PlayerSurvival[playerid][Spectando]  = 0;
  97.     return 1;
  98. }
  99.  
  100. public OnPlayerDisconnect(playerid,reason)
  101. {
  102.     if( PlayerSurvival[playerid][EnMinigame] == 1 )
  103.     {
  104.     SurvivalInfo[Player_A] = -1;
  105.     SurvivalInfo[Player_B] = -1;
  106.     SurvivalInfo[Player_C] = -1;
  107.     SurvivalInfo[Player_D] = -1;
  108.     SurvivalInfo[Player_E] = -1;
  109.     SurvivalInfo[Player_F] = -1;
  110.     SurvivalInfo[Start]    = 0;
  111.     SurvivalInfo[Round]    = 0;
  112.     SurvivalInfo[Punto_A]  = 0;
  113.     SurvivalInfo[Punto_B]  = 0;
  114.     SurvivalInfo[Score_A]  = 0;
  115.     SurvivalInfo[Score_B]  = 0;
  116.     foreach(new i:Player)
  117.     {
  118.     if( PlayerSurvival[i][EnMinigame] == 1 )
  119.     {
  120.     PlayerSurvival[i][EnMinigame] = 0;
  121.     PlayerSurvival[i][Spectando] = 0;
  122.     SpawnPlayer(i);
  123.     }
  124.     }
  125.     SendClientMessageToAll(-1, "Se cancela el Minijuego puesto que uno de los jugadores abandono el servidor..!");
  126.     }
  127.     return 1;
  128. }
  129.  
  130. public OnPlayerSpawn(playerid)
  131. {
  132.     if( PlayerSurvival[playerid][EnMinigame] == 1 && PlayerSurvival[playerid][Spectando] == 0)
  133.     {
  134.     Posicion(SurvivalInfo[Player_A], 136.6301,-86.7180,1.4297, 0, 10);
  135.     Posicion(SurvivalInfo[Player_B], 132.7864,-86.8496,1.4297, 0, 10);
  136.     Posicion(SurvivalInfo[Player_C], 128.6443,-86.8047,1.4297, 0, 10);
  137.     Posicion(SurvivalInfo[Player_D], 127.9004,-132.3238,1.4297, 0, 10);
  138.     Posicion(SurvivalInfo[Player_E], 132.6352,-132.2935,1.4297, 0, 10);
  139.     Posicion(SurvivalInfo[Player_F], 137.6153,-132.2618,1.4283, 0, 10);
  140.     return 1;
  141.     }
  142.     return 1;
  143. }
  144.  
  145.  
  146. public OnPlayerDeath(playerid, killerid, reason)
  147. {
  148.  
  149.    if(PlayerSurvival[playerid][EnMinigame] == 1)
  150.    {
  151.    if( SurvivalInfo[Player_A] == killerid || SurvivalInfo[Player_B] == killerid || SurvivalInfo[Player_C] == killerid )
  152.    {
  153.         SurvivalInfo[Punto_A]++;
  154.         if(SurvivalInfo[Punto_A] == MAXIMO)
  155.         {
  156.         SurvivalInfo[Score_A]++;
  157.         SurvivalInfo[Punto_A] = 0;
  158.         if(SurvivalInfo[Score_A] == SurvivalInfo[Round])
  159.         {
  160.         SurvivalInfo[Score_A] = 0;
  161.         format(EnCadena, sizeof(EnCadena), "Minijuego Finalizado: El Equipo A le gano al Equipo B con %d De vida, Con %d derrotas y %d Victorias", floatround(Vida_A), SurvivalInfo[Score_B], SurvivalInfo[Score_A]);
  162.         SendClientMessageToAll(-1, EnCadena);
  163.         EndMinigame();
  164.         }
  165.         }
  166.     }
  167.     if( SurvivalInfo[Player_D] == killerid || SurvivalInfo[Player_E] == killerid || SurvivalInfo[Player_F] == killerid )
  168.     {
  169.         SurvivalInfo[Punto_B]++;
  170.         if(SurvivalInfo[Punto_B] == MAXIMO)
  171.         {
  172.         SurvivalInfo[Score_B]++;
  173.         SurvivalInfo[Punto_B] = 0;
  174.         if(SurvivalInfo[Score_B] == SurvivalInfo[Round])
  175.         {
  176.         SurvivalInfo[Score_B] = 0;
  177.         format(EnCadena, sizeof(EnCadena), "Minijuego Finalizado: El Equipo B le gano al Equipo A con %d De vida, Con %d derrotas y %d Victorias", floatround(Vida_B), SurvivalInfo[Score_A], SurvivalInfo[Score_B]);
  178.         SendClientMessageToAll(-1, EnCadena);
  179.         EndMinigame();
  180.         }
  181.         }
  182.     }
  183.     }
  184.     if(PlayerSurvival[playerid][EnMinigame] == 1)
  185.     {
  186.     TogglePlayerSpectating(playerid, true);
  187.     PlayerSpectatePlayer(playerid, killerid);
  188.     PlayerSurvival[playerid][Spectando] = 1;
  189.     }
  190.     ActualizarContenido();
  191.     return 1;
  192. }
  193.  
  194. stock Nombre(playerid)
  195. {
  196.     new Name[MAX_PLAYER_NAME];
  197.     GetPlayerName(playerid, Name, sizeof(Name));
  198.     return Name;
  199. }
  200.  
  201. Publico: ElectorName(playerid)
  202. {
  203.     SurvivalInfo[Player_A] = playerid;
  204.     format(Cadena, sizeof(Cadena), SURVIVAL_OPCION,
  205.     Nombre(SurvivalInfo[Player_A]),
  206.     Nombre(SurvivalInfo[Player_B]),
  207.     Nombre(SurvivalInfo[Player_C]),
  208.     Nombre(SurvivalInfo[Player_D]),
  209.     Nombre(SurvivalInfo[Player_E]),
  210.     Nombre(SurvivalInfo[Player_F]));
  211.     ShowPlayerDialog(playerid, Dialog_Load, DIALOG_STYLE_LIST, Creditos, Cadena, "Aceptar", "Cancelar");
  212.     return 1;
  213. }
  214.  
  215. Publico: Posicion(playerid, Float:x, Float:y, Float:z, Interiorid, Worldid)
  216. {
  217.     SetPlayerPos(playerid, Float:x, Float:y, Float:z);
  218.     SetPlayerInterior(playerid, Interiorid);
  219.     SetPlayerVirtualWorld(playerid, Worldid);
  220.     return 1;
  221. }
  222.  
  223. stock VidaArmadura( playerid, Valor)
  224. {
  225.     GetPlayerHealth(playerid,Sangre[Valor]);
  226.     GetPlayerArmour(playerid,Chaleco[Valor]);
  227.     new Cantidad = floatround(Sangre[Valor]) + floatround(Chaleco[Valor]);
  228.     return Cantidad;
  229. }
  230.  
  231. Publico: EndMinigame( )
  232. {
  233.     foreach(new i:Player)
  234.     {
  235.     if( PlayerSurvival[i][EnMinigame] == 1 )
  236.     {
  237.     SurvivalInfo[Player_A] = -1;
  238.     SurvivalInfo[Player_B] = -1;
  239.     SurvivalInfo[Player_C] = -1;
  240.     SurvivalInfo[Player_D] = -1;
  241.     SurvivalInfo[Player_E] = -1;
  242.     SurvivalInfo[Player_F] = -1;
  243.     SurvivalInfo[Start]    = 0;
  244.     SurvivalInfo[Round]    = 0;
  245.     SurvivalInfo[Punto_A]  = 0;
  246.     SurvivalInfo[Punto_B]  = 0;
  247.     SurvivalInfo[Score_A]  = 0;
  248.     SurvivalInfo[Score_B]  = 0;
  249.     PlayerSurvival[i][EnMinigame] = 0;
  250.     PlayerSurvival[i][Spectando] = 0;
  251.     SpawnPlayer(i);
  252.     }
  253.     }
  254. }
  255.  
  256. Publico: SpawnAll()
  257. {
  258.     foreach(new playerid:Player)
  259.     {
  260.         if(PlayerSurvival[playerid][EnMinigame] == 1)
  261.         {
  262.         SpawnPlayer( playerid );
  263.         TogglePlayerSpectating(playerid, false);
  264.         PlayerSurvival[playerid][Spectando] = 0;
  265.         }
  266.     }
  267. }
  268.  
  269. public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
  270. {
  271.     ActualizarContenido();
  272.     return 1;
  273. }
  274.  
  275. Publico: ActualizarContenido()
  276. {
  277.     Vida_A =
  278.     VidaArmadura( SurvivalInfo[Player_A], 0) +
  279.     VidaArmadura( SurvivalInfo[Player_B], 1) +
  280.     VidaArmadura( SurvivalInfo[Player_C], 2);
  281.  
  282.     Vida_B =
  283.     VidaArmadura( SurvivalInfo[Player_D], 3) +
  284.     VidaArmadura( SurvivalInfo[Player_E], 4) +
  285.     VidaArmadura( SurvivalInfo[Player_F], 5);
  286.    
  287.     format(Stats, sizeof(Stats), "Vida Team A: %d    %d/%d    Vida Team B: %d", floatround(Vida_A),SurvivalInfo[Score_A],SurvivalInfo[Score_B], floatround(Vida_B));
  288.     TextDrawSetString(Contenido, Stats);
  289.  
  290.     foreach(new playerid:Player)
  291.     {
  292.         if(PlayerSurvival[playerid][EnMinigame] == 1)
  293.         {
  294.         TextDrawShowForPlayer(playerid, Contenido);
  295.         }
  296.     }
  297.     return 1;
  298. }
  299.  
  300. Publico: Start_MiniGame()
  301. {
  302.     PlayerSurvival[SurvivalInfo[Player_A]][EnMinigame] = 1;
  303.     PlayerSurvival[SurvivalInfo[Player_B]][EnMinigame] = 1;
  304.     PlayerSurvival[SurvivalInfo[Player_C]][EnMinigame] = 1;
  305.     PlayerSurvival[SurvivalInfo[Player_D]][EnMinigame] = 1;
  306.     PlayerSurvival[SurvivalInfo[Player_E]][EnMinigame] = 1;
  307.     PlayerSurvival[SurvivalInfo[Player_F]][EnMinigame] = 1;
  308.     Posicion(SurvivalInfo[Player_A], 136.6301,-86.7180,1.4297, 0, 10);
  309.     Posicion(SurvivalInfo[Player_B], 132.7864,-86.8496,1.4297, 0, 10);
  310.     Posicion(SurvivalInfo[Player_C], 128.6443,-86.8047,1.4297, 0, 10);
  311.     Posicion(SurvivalInfo[Player_D], 127.9004,-132.3238,1.4297, 0, 10);
  312.     Posicion(SurvivalInfo[Player_E], 132.6352,-132.2935,1.4297, 0, 10);
  313.     Posicion(SurvivalInfo[Player_F], 137.6153,-132.2618,1.4283, 0, 10);
  314.     SurvivalInfo[Start] = 1;
  315.     SurvivalInfo[Round] = 1;
  316.     ActualizarContenido();
  317.     return 1;
  318. }
  319.  
  320. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  321. {
  322.     if(dialogid == Dialog_Load)
  323.     {
  324.         if(!response)
  325.         {
  326.         SurvivalInfo[Player_A] = -1;
  327.         SurvivalInfo[Player_B] = -1;
  328.         SurvivalInfo[Player_C] = -1;
  329.         SurvivalInfo[Player_D] = -1;
  330.         SurvivalInfo[Player_E] = -1;
  331.         SurvivalInfo[Player_F] = -1;
  332.         SurvivalInfo[Score_A]  = 0;
  333.         SurvivalInfo[Score_B]  = 0;
  334.         SurvivalInfo[Start]    = 0;
  335.         SendClientMessage(playerid, -1, "Has Cancelado el minijuego...!");
  336.         return 1;
  337.         }
  338.  
  339.         if(response)
  340.         {
  341.             if(SurvivalInfo[Start] == 1)
  342.             {
  343.             SendClientMessage(playerid, -1, "Ya hay un minijuego en progreso...!");
  344.             return 1;
  345.             }
  346.                 switch (listitem)
  347.                 {
  348.                 case 0:{SurvivalInfo[Player_A] = playerid; ElectorName(playerid);}
  349.                 case 1:{ShowPlayerDialog(playerid, Dialog_Electo, DIALOG_STYLE_INPUT, Creditos, "Escribe el ID del jugador que participara", "Aceptar", "Atras");}
  350.                 case 2:{ShowPlayerDialog(playerid, Dialog_Electo+1, DIALOG_STYLE_INPUT, Creditos, "Escribe el ID del jugador que participara", "Aceptar", "Atras");}
  351.                 case 3:{ShowPlayerDialog(playerid, Dialog_Electo+2, DIALOG_STYLE_INPUT, Creditos, "Escribe el ID del jugador que participara", "Aceptar", "Atras");}
  352.                 case 4:{ShowPlayerDialog(playerid, Dialog_Electo+3, DIALOG_STYLE_INPUT, Creditos, "Escribe el ID del jugador que participara", "Aceptar", "Atras");}
  353.                 case 5:{ShowPlayerDialog(playerid, Dialog_Electo+4, DIALOG_STYLE_INPUT, Creditos, "Escribe el ID del jugador que participara", "Aceptar", "Atras");}
  354.                 case 6:{
  355.                         if(SurvivalInfo[Player_A] == -1 ||SurvivalInfo[Player_B] == -1 ||SurvivalInfo[Player_C] == -1 ||SurvivalInfo[Player_D] == -1 ||SurvivalInfo[Player_E] == -1 ||SurvivalInfo[Player_F] == -1)
  356.                         {
  357.                         SendClientMessage(playerid, -1, "Para empesar este minijuego es necesario tener todos los participantes...!");
  358.                         ElectorName(playerid);
  359.                         return 1;
  360.                         }
  361.                         Start_MiniGame();
  362.                         }
  363.             }
  364.         }
  365.  
  366.     }
  367.    
  368.     if(dialogid == Dialog_Electo+1)
  369.     {
  370.         new Acount = strval(inputtext);
  371.         if(!response){ElectorName(playerid);}
  372.         if(response)
  373.         {
  374.         if( IsPlayerConnected(Acount) && Acount ==  SurvivalInfo[Player_A] && Acount ==  SurvivalInfo[Player_C] && Acount ==  SurvivalInfo[Player_D] && Acount ==  SurvivalInfo[Player_E] && Acount ==  SurvivalInfo[Player_F]) return ElectorName(playerid);
  375.         SurvivalInfo[Player_B] = Acount;
  376.         ElectorName(playerid);
  377.         return 1;
  378.         }
  379.     }
  380.    
  381.     if(dialogid == Dialog_Electo+2)
  382.     {
  383.         new Acount = strval(inputtext);
  384.         if(!response){ElectorName(playerid);}
  385.         if(response)
  386.         {
  387.         if( IsPlayerConnected(Acount) && Acount ==  SurvivalInfo[Player_A] && Acount ==  SurvivalInfo[Player_B] && Acount ==  SurvivalInfo[Player_D] && Acount ==  SurvivalInfo[Player_E] && Acount ==  SurvivalInfo[Player_F]) return ElectorName(playerid);
  388.         SurvivalInfo[Player_C] = Acount;
  389.         ElectorName(playerid);
  390.         return 1;
  391.         }
  392.     }
  393.    
  394.     if(dialogid == Dialog_Electo+3)
  395.     {
  396.         new Acount = strval(inputtext);
  397.         if(!response){ElectorName(playerid);}
  398.         if(response)
  399.         {
  400.         if( IsPlayerConnected(Acount) && Acount ==  SurvivalInfo[Player_A] && Acount ==  SurvivalInfo[Player_B] && Acount ==  SurvivalInfo[Player_C] && Acount ==  SurvivalInfo[Player_E] && Acount ==  SurvivalInfo[Player_F]) return ElectorName(playerid);
  401.         SurvivalInfo[Player_D] = Acount;
  402.         ElectorName(playerid);
  403.         return 1;
  404.         }
  405.     }
  406.    
  407.     if(dialogid == Dialog_Electo+4)
  408.     {
  409.         new Acount = strval(inputtext);
  410.         if(!response){ElectorName(playerid);}
  411.         if(response)
  412.         {
  413.         if( IsPlayerConnected(Acount) && Acount ==  SurvivalInfo[Player_A] && Acount ==  SurvivalInfo[Player_B] && Acount ==  SurvivalInfo[Player_C] && Acount ==  SurvivalInfo[Player_D] && Acount ==  SurvivalInfo[Player_F]) return ElectorName(playerid);
  414.         SurvivalInfo[Player_E] = Acount;
  415.         ElectorName(playerid);
  416.         return 1;
  417.         }
  418.     }
  419.    
  420.     if(dialogid == Dialog_Electo+5)
  421.     {
  422.         new Acount = strval(inputtext);
  423.         if(!response){ElectorName(playerid);}
  424.         if(response)
  425.         {
  426.         if( IsPlayerConnected(Acount) && Acount ==  SurvivalInfo[Player_A] && Acount ==  SurvivalInfo[Player_B] && Acount ==  SurvivalInfo[Player_C] && Acount ==  SurvivalInfo[Player_D] && Acount ==  SurvivalInfo[Player_E]) return ElectorName(playerid);
  427.         SurvivalInfo[Player_F] = Acount;
  428.         ElectorName(playerid);
  429.         return 1;
  430.         }
  431.     }
  432.    
  433.     return 1;
  434. }
  435.  
  436. public OnPlayerCommandReceived(playerid, cmdtext[] )
  437. {
  438.     if( PlayerSurvival[playerid][EnMinigame] == 1 ){SendClientMessage(playerid, -1, "No puedes usar comandos en este minijuego...!"); return false;}
  439.     return 1;
  440. }
  441.  
  442. CMD:survival(playerid, params[])
  443. {
  444.     return ElectorName(playerid);
  445. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement