Guest User

Evento Flecha DM 1.2

a guest
Oct 12th, 2010
407
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 11.17 KB | None | 0 0
  1. // filescript de Evento Flecha (v1.2). By Chanfa
  2. //
  3. //  si desean encontrarme en el foro busquenme como 'cocolabush' en la seccion Español.
  4. //                                          ___________
  5. //      ____________________________________|||||||||||____________________________________
  6. //      ____________________________________INFORMACION____________________________________
  7. //                                          |||||||||||
  8. // 09/10/2010                               ¯¯¯¯¯¯¯¯¯¯¯
  9. //   Sistema de creación de flecha sobre determinado jugador
  10. //   Sistema de cambio portador al asesino
  11. //   Sistema de restriccion para la iniciación (solo los admins estan autorizados)
  12. //   Sistema simplificado para cambiar opciones visuales (offset y obj_flecha)
  13. //
  14. // 11/10/2010
  15. //   Corregido el "bug 3": El error consistia en que solo parte de los usuarios veian la flecha
  16. //   Sistema de cambio de color al iniciar y de restauracion del color anterior al finalizar el evento
  17. //   Agregado texto del evento
  18. //
  19. // 12/10/2010 (v1.1) [no fue publicado]
  20. //   Agregados nuevos "define" para hacer mas facil la modificacion
  21. //   Agregados textdraws especificos del evento
  22. //
  23. // 12/10/2010 (v1.2)
  24. //   Sistema de recuperacion de colores al azar tras cierre de Filescript o la finalisacion del evento
  25. //
  26. // NOTA: Es recomendado utilizar este filescript solo en DM o FR por razones obvias.
  27. //       Se recomienda tener un comando /color en el GameMode ya que al finalizar el evento se
  28. //       selecciona uno al azar.
  29. //
  30. #include <a_samp>
  31. #define offset 2                    // Cambiar por la altura buscada sobre el jugador portador
  32. #define obj_flecha 1318             // Cambiar por el ID del objeto que se quira hacer aparecer en la cabeza del portador (recomendado: 1318)
  33. #define color_Portador 0xFF4040FF   // Cambiar por el color que lleve el Portador (predeterminado: 0xFF4040FF)
  34. #define color_Resto 0xFFFF4055      // Cambiar por el color que lleve el Resto (predeterminado: 0xFFFF4055)
  35. #define color_Titulos 0xFA8072FF    // Cambiar por el color que lleven los titulos
  36. #define color_Textos 0xFAFAD2FF     // Cambiar por el color que lleven los textos (IMPORTANTE: No son los colores de los textdraws sino de la info de la consola)
  37. forward Suplantar();
  38. new Flecha;
  39. new Portador;
  40. new Empezado = 0;
  41. new Suplente;
  42. new Text:TEvento;
  43. new Text:TPoseedor;
  44. new StringPortador[MAX_PLAYER_NAME + 10];
  45. new Colores[] = {
  46.     0xFF8C13FF,0x20B2AAFF,0xDC143CFF,0x6495EDFF,0xf0e68cFF,0x778899FF,0xFF1493FF,0xF4A460FF,0xEEDC2DFF,
  47.     0xEE82EEFF,0xFFD720FF,0x8b4513FF,0x4949A0FF,0x148b8bFF,0x14ff7fFF,0x556b2fFF,0x0FD9FAFF,0x10DC29FF,
  48.     0x534081FF,0x0495CDFF,0xEF6CE8FF,0xBD34DAFF,0x247C1BFF,0x0C8E5DFF,0x635B03FF,0xCB7ED3FF,0x65ADEBFF,
  49.     0x5C1ACCFF,0xF2F853FF,0x11F891FF,0x7B39AAFF,0x53EB10FF,0x54137DFF,0x275222FF,0xF09F5BFF,0x3D0A4FFF,
  50.     0x22F767FF,0xD63034FF,0x9A6980FF,0xDFB935FF,0x3793FAFF,0x90239DFF,0xE9AB2FFF,0xAF2FF3FF,0x057F94FF,
  51.     0xB98519FF,0x388EEAFF,0x028151FF,0xA55043FF,0x0DE018FF,0x93AB1CFF,0x95BAF0FF,0x369976FF,0x18F71FFF,
  52.     0x4B8987FF,0x491B9EFF,0x829DC7FF,0xBCE635FF,0xCEA6DFFF,0x20D4ADFF,0x2D74FDFF,0x3C1C0DFF,0x12D6D4FF,
  53.     0x48C000FF,0x2A51E2FF,0xE3AC12FF,0xFC42A8FF,0x2FC827FF,0x1A30BFFF,0xB740C2FF,0x42ACF5FF,0x2FD9DEFF,
  54.     0xFAFB71FF,0x05D1CDFF,0xC471BDFF,0x94436EFF,0xC1F7ECFF,0xCE79EEFF,0xBD1EF2FF,0x93B7E4FF,0x3214AAFF,
  55.     0x184D3BFF,0xAE4B99FF,0x7E49D7FF,0x4C436EFF,0xFA24CCFF,0xCE76BEFF,0xA04E0AFF,0x9F945CFF,0xDCDE3DFF,
  56.     0x10C9C5FF,0x70524DFF,0x0BE472FF,0x8A2CD7FF,0x6152C2FF,0xCF72A9FF,0xE59338FF,0xEEDC2DFF,0xD8C762FF,
  57.     0xD8C762FF,0xFF8C13FF,0xC715FFFF,0x20B2AAFF,0xDC143CFF,0x6495EDFF,0xf0e68cFF,0x778899FF,0xFF1493FF,
  58.     0xF4A460FF,0xEE82EEFF,0xFFD720FF,0x8b4513FF,0x4949A0FF,0x148b8bFF,0x14ff7fFF,0x556b2fFF,0x0FD9FAFF,
  59.     0x10DC29FF,0x534081FF,0x0495CDFF,0xEF6CE8FF,0xBD34DAFF,0x247C1BFF,0x0C8E5DFF,0x635B03FF,0xCB7ED3FF,
  60.     0x65ADEBFF,0x5C1ACCFF,0xF2F853FF,0x11F891FF,0x7B39AAFF,0x53EB10FF,0x54137DFF,0x275222FF,0xF09F5BFF,
  61.     0x3D0A4FFF,0x22F767FF,0xD63034FF,0x9A6980FF,0xDFB935FF,0x3793FAFF,0x90239DFF,0xE9AB2FFF,0xAF2FF3FF,
  62.     0x057F94FF,0xB98519FF,0x388EEAFF,0x028151FF,0xA55043FF,0x0DE018FF,0x93AB1CFF,0x95BAF0FF,0x369976FF,
  63.     0x18F71FFF,0x4B8987FF,0x491B9EFF,0x829DC7FF,0xBCE635FF,0xCEA6DFFF,0x20D4ADFF,0x2D74FDFF,0x3C1C0DFF,
  64.     0x12D6D4FF,0x48C000FF,0x2A51E2FF,0xE3AC12FF,0xFC42A8FF,0x2FC827FF,0x1A30BFFF,0xB740C2FF,0x42ACF5FF,
  65.     0x2FD9DEFF,0xFAFB71FF,0x05D1CDFF,0xC471BDFF,0x94436EFF,0xC1F7ECFF,0xCE79EEFF,0xBD1EF2FF,0x93B7E4FF,
  66.     0x3214AAFF,0x184D3BFF,0xAE4B99FF,0x7E49D7FF,0x4C436EFF,0xFA24CCFF,0xCE76BEFF,0xA04E0AFF,0x9F945CFF,
  67.     0xDCDE3DFF,0x10C9C5FF,0x70524DFF,0x0BE472FF,0x8A2CD7FF,0x6152C2FF,0xCF72A9FF,0xE59338FF
  68. };
  69. public OnFilterScriptInit()
  70. {
  71.     print("\n--------------------------------------");
  72.     print(" Evento Flecha [DM] v1.2\n |By Chanfa|");
  73.     print("--------------------------------------\n");
  74.     for(new i=0; i<MAX_PLAYERS; i++)
  75.     {
  76.         if(IsPlayerAdmin(i))
  77.         {
  78.             SendClientMessage(i, color_Titulos, "Evento disponible: Flecha");
  79.             SendClientMessage(i, color_Textos, "utiliza /Empezar");
  80.         }
  81.     }
  82.     TEvento = TextDrawCreate(421.000000, 407.000000, "Evento Flecha Iniciado ..."); // en el caso de querer modificar
  83.     TextDrawBackgroundColor(TEvento, 255);                                          // algo de los textdraws modifique
  84.     TextDrawFont(TEvento, 0);                                                       // cualquier cosa menos el string
  85.     TextDrawLetterSize(TEvento, 0.739999, 3.399998);                                // de TPoseedor
  86.     TextDrawColor(TEvento, -16776961);
  87.     TextDrawSetOutline(TEvento, 0);
  88.     TextDrawSetProportional(TEvento, 1);
  89.     TextDrawSetShadow(TEvento, 1);
  90.     TPoseedor = TextDrawCreate(9.000000, 432.000000, "Portador: ...");
  91.     TextDrawBackgroundColor(TPoseedor, 255);
  92.     TextDrawFont(TPoseedor, 1);
  93.     TextDrawLetterSize(TPoseedor, 0.500000, 1.000000);
  94.     TextDrawColor(TPoseedor, -65281);
  95.     TextDrawSetOutline(TPoseedor, 0);
  96.     TextDrawSetProportional(TPoseedor, 1);
  97.     TextDrawSetShadow(TPoseedor, 1);
  98.     return 1;
  99. }
  100. stock Suplantar()
  101. {
  102.     Atras:
  103.     Suplente = random(MAX_PLAYERS);
  104.     if(!IsPlayerConnected(Suplente)) { goto Atras; }
  105.     if(IsPlayerNPC(Suplente)) { goto Atras; }
  106.     AttachObjectToPlayer(Flecha, Suplente, 0, 0, offset, 0, 0, 0);
  107.     Portador = Suplente;
  108.     SetPlayerColor(Suplente, color_Portador);
  109.     new Nombre[MAX_PLAYER_NAME];
  110.     GetPlayerName(Suplente, Nombre, sizeof(Nombre));
  111.     format(StringPortador, sizeof(StringPortador), "Portador: %s", Nombre);
  112.     TextDrawSetString(TPoseedor, StringPortador);
  113.     TextDrawShowForAll(TPoseedor);
  114.     return 1;
  115. }
  116. public OnPlayerDeath(playerid, killerid, reason)
  117. {
  118.     if(Empezado == 1)
  119.     {
  120.         if(killerid != INVALID_PLAYER_ID && playerid == Portador)
  121.         {
  122.             AttachObjectToPlayer(Flecha, killerid, 0, 0, offset, 0, 0, 0);
  123.             Portador = killerid;
  124.             new Nombre[MAX_PLAYER_NAME];
  125.             GetPlayerName(killerid, Nombre, sizeof(Nombre));
  126.             format(StringPortador, sizeof(StringPortador), "Portador: %s", Nombre);
  127.             TextDrawSetString(TPoseedor, StringPortador);
  128.             TextDrawShowForAll(TPoseedor);
  129.             SetPlayerColor(playerid, color_Resto);
  130.             SetPlayerColor(killerid, color_Portador);
  131.         }
  132.         else if(killerid == INVALID_PLAYER_ID && playerid == Portador)
  133.         {
  134.             SetPlayerColor(Portador, color_Resto);
  135.             Suplantar();
  136.         }
  137.     }
  138.     return 1;
  139. }
  140. public OnPlayerCommandText(playerid, cmdtext[])
  141. {
  142.     if (strcmp("/Empezar", cmdtext, true, 10) == 0 && IsPlayerAdmin(playerid))
  143.     {
  144.         if(Empezado == 0)
  145.         {
  146.             Flecha = CreateObject(obj_flecha, 0, 0, -100, 0.0, 0.0, 0);
  147.             AttachObjectToPlayer(Flecha, playerid, 0, 0, offset, 0, 0, 0);
  148.             SendClientMessageToAll(color_Titulos, "Empieza la matanza!");
  149.             SendClientMessageToAll(color_Textos, "Aniquila al jugador que tiene la flecha.");
  150.             Portador = playerid;
  151.             new Nombre[MAX_PLAYER_NAME];
  152.             GetPlayerName(playerid, Nombre, sizeof(Nombre));
  153.             format(StringPortador, sizeof(StringPortador), "Portador: %s", Nombre);
  154.             TextDrawSetString(TPoseedor, StringPortador);
  155.             TextDrawShowForAll(TPoseedor);
  156.             TextDrawShowForAll(TEvento);
  157.             for(new i=0; i<MAX_PLAYERS; i++)
  158.             {
  159.                 if(IsPlayerConnected(i))
  160.                 {
  161.                     SetPlayerColor(i, color_Resto);
  162.                     if(IsPlayerAdmin(i))
  163.                     {
  164.                         SendClientMessage(i, color_Textos, "Para terminar: /Finalizar o /Terminar");
  165.                     }
  166.                 }
  167.             }
  168.             SetPlayerColor(Portador, color_Portador);
  169.             Empezado = 1;
  170.         }
  171.         else
  172.         {
  173.             SendClientMessage(playerid, color_Textos, "El evento ya comenzo.");
  174.         }
  175.         return 1;
  176.     }
  177.     if ((strcmp("/Finalizar", cmdtext, true, 10) == 0 || strcmp("/Terminar", cmdtext, true, 10) == 0) && IsPlayerAdmin(playerid))
  178.     {
  179.         if(Empezado == 1)
  180.         {
  181.             DestroyObject(Flecha);
  182.             format(StringPortador, sizeof(StringPortador), "Portador: ...");
  183.             TextDrawSetString(TPoseedor, StringPortador);
  184.             TextDrawHideForAll(TPoseedor);
  185.             TextDrawHideForAll(TEvento);
  186.             SendClientMessageToAll(color_Titulos, "Evento finalizado");
  187.             Empezado = 0;
  188.             for(new i=0; i<MAX_PLAYERS; i++)
  189.             {
  190.                 SetPlayerColor(i, Colores[random(sizeof(Colores))]);
  191.             }
  192.         }
  193.         else
  194.         {
  195.             SendClientMessage(playerid, color_Textos, "El evento no esta en progreso.");
  196.         }
  197.         return 1;
  198.     }
  199.     return 0;
  200. }
  201. public OnPlayerSpawn(playerid)
  202. {
  203.     if(Empezado == 1)
  204.     {
  205.         if(playerid == Portador)
  206.         {
  207.             AttachObjectToPlayer(Flecha, playerid, 0, 0, offset, 0, 0, 0);
  208.             SetPlayerColor(Portador, color_Portador);
  209.         }
  210.         else { SetPlayerColor(Portador, color_Resto); }
  211.         TextDrawShowForPlayer(playerid, TPoseedor);
  212.         TextDrawShowForPlayer(playerid, TEvento);
  213.     }
  214.     return 1;
  215. }
  216. public OnPlayerDisconnect(playerid, reason)
  217. {
  218.     if(Empezado == 1 && playerid == Portador)
  219.     {
  220.         SetPlayerColor(Portador, color_Resto);
  221.         Suplantar();
  222.     }
  223. }
  224. public OnPlayerStreamIn(playerid, forplayerid)
  225. {
  226.     if(playerid == Portador)
  227.     {
  228.         new Float:x, Float:y, Float:z;
  229.         GetPlayerPos(forplayerid, x, y, z);
  230.         MoveObject(Flecha, x, y, z, 1000000);
  231.         AttachObjectToPlayer(Flecha, playerid, 0, 0, offset, 0, 0, 0);
  232.         TextDrawShowForPlayer(playerid, TPoseedor);
  233.         TextDrawShowForPlayer(playerid, TEvento);
  234.     }
  235.     return 1;
  236. }
  237. public OnPlayerConnect(playerid)
  238. {
  239.     if(Empezado == 1)
  240.     {
  241.         if(playerid == Portador)
  242.         {
  243.             SetPlayerColor(playerid, color_Portador);
  244.             AttachObjectToPlayer(Flecha, playerid, 0, 0, offset, 0, 0, 0);
  245.         }
  246.         else SetPlayerColor(playerid, color_Resto);
  247.         TextDrawShowForPlayer(playerid, TPoseedor);
  248.         TextDrawShowForPlayer(playerid, TEvento);
  249.     }
  250.     return 1;
  251. }
  252. public OnFilterScriptExit()
  253. {
  254.     DestroyObject(Flecha);
  255.     format(StringPortador, sizeof(StringPortador), "Portador: ...");
  256.     TextDrawSetString(TPoseedor, StringPortador);
  257.     TextDrawHideForAll(TPoseedor);
  258.     TextDrawHideForAll(TEvento);
  259.     SendClientMessageToAll(color_Titulos, "Evento finalizado");
  260.     Empezado = 0;
  261.     for(new i=0; i<MAX_PLAYERS; i++)
  262.     {
  263.         SetPlayerColor(i, Colores[random(sizeof(Colores))]);
  264.     }
  265. }
Advertisement
Add Comment
Please, Sign In to add comment