nandoy

FS: Ano novo

Dec 22nd, 2017
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 11.24 KB | None | 0 0
  1. /*                      **********************************************************
  2.                         **********************************************************
  3.                         **                                                      **
  4.                         **   $$$$$$$$$$$$$$$                                    **
  5.                         **   $$$$$$$$$$$$$$$                                    **
  6.                         **        $$$$       $$$$$$$    $$$$$$$$    $$$$$$$     **
  7.                         **        $$$$      $$$$$$$$$  $$$$$$$$$$  $$$$$$$$$    **
  8.                         **        $$$$      $$$        $$$         $$$   $$$    **
  9.                         **        $$$$      $$$$$$$$   $$$$$$$$$   $$$$$$$$$    **
  10.                         **        $$$$       $$$$$$$$   $$$$$$$$$  $$$$$$$$$    **
  11.                         **        $$$$            $$$         $$$  $$$   $$$    **
  12.                         **        $$$$       $$$$$$$$   $$$$$$$$$  $$$   $$$    **
  13.                         **        $$$$        $$$$$$     $$$$$$$   $$$   $$$    **
  14.                         **                                                      **
  15.                         **                         ~ RPG Cidade Virtual TSSA  ~ **
  16.                         **********************************************************
  17.                                 Desenvolvido por Fernando Miranda (connork)
  18.                         **********************************************************
  19.                         **********************************************************
  20. */
  21. #include <a_samp>
  22. #include <mapandreas>
  23. #include <streamer>
  24. #include <dof2_e>
  25.  
  26. enum cSub {
  27.     bool:cItem,
  28.     cDono[64],
  29.     cObject[2],
  30.     cArea,
  31.     Float:cX,
  32.     Float:cY,
  33.     Float:cZ
  34. }
  35. #define TOTAL_CAIXAS 250
  36. #define TOTAL_PRESENTES 50
  37. #define MIN 3000
  38. #define MAX 10000
  39. /*
  40. X: > -10000 < -3000 || > 3000 < 10000
  41. Y: > -10000 < -3000 || > 3000 < 10000
  42. */
  43. new eCaixa[TOTAL_CAIXAS][cSub];
  44. new ObjectID[4][1] = { {19055}, {19056}, {19057}, {19058} };
  45. new Timer;
  46.  
  47. public OnFilterScriptInit()
  48. {
  49.     new Float:cPos[3], temp, ok;
  50.     for(new I = 0; I < TOTAL_CAIXAS; I++) {
  51.         cPos[2] = 99.9;
  52.         while(!IsWaterPosition(cPos[2])) {
  53.             if(random(10) >= 5) {
  54.                 cPos[0] = random(MAX - MIN) + MIN;
  55.                 if(random(10) <= 5) cPos[1] = (random(10000)) * -1;
  56.                 else cPos[1] = (random(10000));
  57.             }
  58.             else {
  59.                 cPos[0] = (random(MAX - MIN) + MIN) * -1;
  60.                 if(random(10) >= 5) cPos[1] = (random(10000)) * -1;
  61.                 else cPos[1] = (random(10000));
  62.             }
  63.             MapAndreas_FindZ_For2DCoord(cPos[0], cPos[1], cPos[2]);
  64.         }
  65.         eCaixa[I][cObject][0] = CreateDynamicObject(19360, cPos[0], cPos[1], cPos[2]+0.5, 0.0, 90.0, 0, -1, -1, -1, 300, 300);
  66.         eCaixa[I][cObject][1] = CreateDynamicObject(ObjectID[random(sizeof(ObjectID))][0], cPos[0], cPos[1], cPos[2]+1.1, 0, 0, 0, -1, -1, -1, 300, 300);
  67.         eCaixa[I][cArea] = CreateDynamicCircle(cPos[0], cPos[1], 1.5);
  68.         AttachDynamicAreaToObject(eCaixa[I][cArea], eCaixa[I][cObject][1]);
  69.         if(250 >= random(500) <= 300 && temp <= TOTAL_PRESENTES) {
  70.             eCaixa[I][cItem] = true;
  71.             temp++;
  72.         }
  73.         if(!ZN_FileExists(eFile(I))) {
  74.             ZN_CreateFile(eFile(I));
  75.             ZN_SetBool(eFile(I), "cItem", eCaixa[I][cItem]);
  76.             ZN_SetString(eFile(I), "Dono", "Ninguem");
  77.         }
  78.         else {
  79.             eCaixa[I][cItem] = ZN_GetBool(eFile(I), "cItem");
  80.         }
  81.         ZN_SaveFile();
  82.         if(eCaixa[I][cItem] == true) ok++;
  83.         //SetPlayerPos(I, cPos[0], cPos[1], cPos[2]+0.5);
  84.     }
  85.     Timer = SetTimer("UpdateMoviments", 5000, false);
  86.     //
  87.     /*SendClientMessageToAll(0xFFFFFFAA, " ");
  88.     SendClientMessageToAll(0xFF5E35FF, "~~~~~~~~~~~~~~~~~~~~~~~ Evento de Ano Novo ~~~~~~~~~~~~~~~~~~~~~~~");
  89.     SendClientMessageToAll(0xFFFFFFAA, "* O evento de Ano Novo do server Cidade Virtual acaba de iniciar!");
  90.     SendClientMessageToAll(0xFFFFFFAA, "* Para saber mais informações sobre o mesmo, digite: /AjudaAnoNovo");
  91.     SendClientMessageToAll(0xFF5E35FF, "~~~~~~~~~~~~~~~~~~~~~~~ Evento de Ano Novo ~~~~~~~~~~~~~~~~~~~~~~~");
  92.     SendClientMessageToAll(0xFFFFFFAA, " ");*/
  93.     for(new I = 0; I <= MAX_PLAYERS; I ++) if(IsPlayerConnected(I)) PlayerPlaySound(I, 1057, 0, 0, 0);
  94.     printf("[DEBUG] Há %d presentes disponíveis.", ok);
  95.     //
  96.     return 1;
  97. }
  98.  
  99. stock eFile(id)
  100. {
  101.     new str[64];
  102.     format(str, sizeof(str), "AN/CaixaFlutuante%d.ini", id);
  103.     return str;
  104. }
  105.  
  106. forward UpdateMoviments();
  107. public UpdateMoviments()
  108. {
  109.     new Float:Z, Float:Y, Float:X;
  110.     new Float:cPos[3];
  111.     for(new I = 0; I < TOTAL_CAIXAS; I++) {
  112.         Z = 99.9;
  113.         if(random(10) >= 5) {
  114.             cPos[0] = random(MAX - MIN) + MIN;
  115.             if(random(10) <= 5) cPos[1] = (random(10000)) * -1;
  116.             else cPos[1] = (random(10000));
  117.         }
  118.         else {
  119.             cPos[0] = (random(MAX - MIN) + MIN) * -1;
  120.             if(random(10) >= 5) cPos[1] = (random(10000)) * -1;
  121.             else cPos[1] = (random(10000));
  122.         }
  123.         MapAndreas_FindZ_For2DCoord(cPos[0], cPos[1], Z);
  124.         if(IsWaterPosition(Z)) {
  125.             GetDynamicObjectPos(eCaixa[I][cObject][0], X, Y, cPos[2]);
  126.             MoveDynamicObject(eCaixa[I][cObject][0], cPos[0], cPos[1], cPos[2], 1.0);
  127.             //
  128.             GetDynamicObjectPos(eCaixa[I][cObject][1], X, Y, cPos[2]);
  129.             MoveDynamicObject(eCaixa[I][cObject][1], cPos[0], cPos[1], cPos[2], 1.0);
  130.         }
  131.     }
  132.     Timer = SetTimer("UpdateMoviments", 300000, false);
  133.     SendClientMessageToAll(0xFFFFFFAA, " ");
  134.     SendClientMessageToAll(0xFF5E35FF, "~~~~~~~~~~~~~~~~~~~~~~~ Evento de Ano Novo ~~~~~~~~~~~~~~~~~~~~~~~");
  135.     SendClientMessageToAll(0xFFFFFFAA, "* O evento de Ano Novo do server Cidade Virtual acaba de iniciar!");
  136.     SendClientMessageToAll(0xFFFFFFAA, "* Para saber mais informações sobre o mesmo, digite: /AjudaAnoNovo");
  137.     SendClientMessageToAll(0xFF5E35FF, "~~~~~~~~~~~~~~~~~~~~~~~ Evento de Ano Novo ~~~~~~~~~~~~~~~~~~~~~~~");
  138.     SendClientMessageToAll(0xFFFFFFAA, " ");
  139.     return 1;
  140. }
  141.  
  142. public OnPlayerEnterDynamicArea(playerid, areaid)
  143. {
  144.     if(!IsValidDynamicArea(areaid)) return 1;
  145.     new Float:X, Float:Y, Float:Z;
  146.     for(new I = 0; I < TOTAL_CAIXAS; I++) {
  147.         GetDynamicObjectPos(eCaixa[I][cObject][0], X, Y, Z);
  148.         if(areaid == eCaixa[I][cArea] && IsPlayerInRangeOfPoint(playerid, 10.0, X, Y, Z)) {
  149.             if(eCaixa[I][cItem] == true) {
  150.                 eCaixa[I][cItem] = false;
  151.                 ZN_SetInt(eFile(I), "cItem", eCaixa[I][cItem]);
  152.                 ZN_SetString(eFile(I), "Dono", PlayerName(playerid));
  153.                 ZN_SaveFile();
  154.                 new S[128];
  155.                 format(S, sizeof(S), "| ANO-NOVO | O(A) jogador(a) %s(%d) encontrou um dos presentes do evento!", PlayerName(playerid), playerid);
  156.                 SendClientMessageToAll(0xC8E1FFAA, S);
  157.                 print(S);
  158.                 format(S, sizeof(S), "| ANO-NOVO | Parabéns %s! Agora tire um print desta mensagem pressionando F8 e crie um tópico no Fórum (forum.tssabrasil.com.br).", PlayerName(playerid));
  159.                 SendClientMessage(playerid, 0xC8E1FFAA, S);
  160.                 SetPlayerPos(playerid, 1247.5353, -1760.1205, 13.6269);
  161.             }
  162.             else {
  163.                 new S[128];
  164.                 format(S, sizeof(S), "| ANO-NOVO | O(A) jogador(a) %s(%d) NÃO encontrou um dos presentes e foi explodido na queima de fogos, haha!", PlayerName(playerid), playerid);
  165.                 SendClientMessageToAll(0xC8E1FFAA, S);
  166.                 new Float:pp[3];
  167.                 GetPlayerPos(playerid, pp[0], pp[1], pp[2]);
  168.                 CreateExplosion(pp[0], pp[1], pp[2], 10, 1);
  169.                 CreateExplosion(pp[0], pp[1], pp[2], 7, 1);
  170.                 if(!IsPlayerAdmin(playerid)) SetPlayerHealth(playerid, 0);
  171.             }
  172.             break;
  173.         }
  174.     }
  175.     return 1;
  176. }
  177.  
  178. public OnFilterScriptExit()
  179. {
  180.     for(new I = 0; I < TOTAL_CAIXAS; I++) {
  181.         DestroyDynamicArea(eCaixa[I][cArea]);
  182.         DestroyDynamicObject(eCaixa[I][cObject][1]);
  183.         DestroyDynamicObject(eCaixa[I][cObject][0]);
  184.     }
  185.     KillTimer(Timer);
  186.     return 1;
  187. }
  188.  
  189. public OnPlayerConnect(playerid)
  190. {
  191.     return 1;
  192. }
  193.  
  194. public OnPlayerDisconnect(playerid, reason)
  195. {
  196.     return 1;
  197. }
  198.  
  199. public OnPlayerSpawn(playerid)
  200. {
  201.     return 1;
  202. }
  203.  
  204. public OnPlayerDeath(playerid, killerid, reason)
  205. {
  206.     return 1;
  207. }
  208.  
  209. public OnVehicleSpawn(vehicleid)
  210. {
  211.     return 1;
  212. }
  213.  
  214. public OnVehicleDeath(vehicleid, killerid)
  215. {
  216.     return 1;
  217. }
  218.  
  219. public OnPlayerText(playerid, text[])
  220. {
  221.     return 1;
  222. }
  223.  
  224. public OnPlayerCommandText(playerid, cmdtext[])
  225. {
  226.     if(strcmp(cmdtext, "/AjudaAnoNovo", true) == 0)
  227.     {
  228.         SendClientMessage(playerid, 0xFF5E35FF, "~~~~~~~~~~~~~~~~~~~~~ Evento de Ano Novo ~~~~~~~~~~~~~~~~~~~~~");
  229.         SendClientMessage(playerid, 0xFFFFFFAA, "* Há um total de 250 caixas espalhadas pelo mar de San Andreas e apenas 20 com presentes.");
  230.         SendClientMessage(playerid, 0xFFFFFFAA, "* Para capturar um presente, suba na plataforma e fique próximo a caixa do presente!");
  231.         SendClientMessage(playerid, 0xFFFFFFAA, "* Todos os presentes apenas estão no MAR, então você deve conseguir um barco para encontrá-los.");
  232.         SendClientMessage(playerid, 0xFFFFFFAA, "* Os presentes serão itens do ShopTSSA (level, saldo, SET, VIP, etc).");
  233.         SendClientMessage(playerid, 0xFF5E35FF, "~~~~~~~~~~~~~~~~~~~~~ Evento de Ano Novo ~~~~~~~~~~~~~~~~~~~~~");
  234.         return 1;
  235.     }
  236.     return 0;
  237. }
  238.  
  239. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  240. {
  241.     return 1;
  242. }
  243.  
  244. public OnPlayerExitVehicle(playerid, vehicleid)
  245. {
  246.     return 1;
  247. }
  248.  
  249. stock IsVehicleAirVehicle(vehid)
  250. {
  251.     switch(vehid)
  252.     {
  253.         case 592, 577, 511, 512, 593, 520, 553, 476, 519, 460, 513, 548, 425, 417, 488, 498, 563, 447, 469: return true;
  254.     }
  255.     return false;
  256. }
  257.  
  258. public OnPlayerStateChange(playerid, newstate, oldstate)
  259. {
  260.     /*if(newstate == PLAYER_STATE_DRIVER && !IsPlayerAdmin(playerid)) {
  261.         if(IsVehicleAirVehicle(GetVehicleModel(GetPlayerVehicleID(playerid)))) {
  262.             SendClientMessage(playerid, 0xFF5E35FF, "| ERRO | Infelizmente devido ao evento de ano novo os veículos aéreos estão desativados.");
  263.             RemovePlayerFromVehicle(playerid);
  264.         }
  265.     }*/
  266.     return 1;
  267. }
  268.  
  269. public OnPlayerEnterCheckpoint(playerid)
  270. {
  271.     return 1;
  272. }
  273.  
  274. public OnPlayerLeaveCheckpoint(playerid)
  275. {
  276.     return 1;
  277. }
  278.  
  279. public OnPlayerEnterRaceCheckpoint(playerid)
  280. {
  281.     return 1;
  282. }
  283.  
  284. public OnPlayerLeaveRaceCheckpoint(playerid)
  285. {
  286.     return 1;
  287. }
  288.  
  289. public OnRconCommand(cmd[])
  290. {
  291.     return 1;
  292. }
  293.  
  294. public OnPlayerRequestSpawn(playerid)
  295. {
  296.     return 1;
  297. }
  298.  
  299. public OnObjectMoved(objectid)
  300. {
  301.     return 1;
  302. }
  303.  
  304. public OnPlayerObjectMoved(playerid, objectid)
  305. {
  306.     return 1;
  307. }
  308.  
  309. public OnPlayerPickUpPickup(playerid, pickupid)
  310. {
  311.     return 1;
  312. }
  313.  
  314. public OnVehicleMod(playerid, vehicleid, componentid)
  315. {
  316.     return 1;
  317. }
  318.  
  319. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  320. {
  321.     return 1;
  322. }
  323.  
  324. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  325. {
  326.     return 1;
  327. }
  328.  
  329. public OnPlayerSelectedMenuRow(playerid, row)
  330. {
  331.     return 1;
  332. }
  333.  
  334. public OnPlayerExitedMenu(playerid)
  335. {
  336.     return 1;
  337. }
  338.  
  339. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  340. {
  341.     return 1;
  342. }
  343.  
  344. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  345. {
  346.     return 1;
  347. }
  348.  
  349. public OnRconLoginAttempt(ip[], password[], success)
  350. {
  351.     return 1;
  352. }
  353.  
  354. public OnPlayerUpdate(playerid)
  355. {
  356.     return 1;
  357. }
  358.  
  359. public OnPlayerStreamIn(playerid, forplayerid)
  360. {
  361.     return 1;
  362. }
  363.  
  364. public OnPlayerStreamOut(playerid, forplayerid)
  365. {
  366.     return 1;
  367. }
  368.  
  369. public OnVehicleStreamIn(vehicleid, forplayerid)
  370. {
  371.     return 1;
  372. }
  373.  
  374. public OnVehicleStreamOut(vehicleid, forplayerid)
  375. {
  376.     return 1;
  377. }
  378.  
  379. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  380. {
  381.     return 1;
  382. }
  383.  
  384. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  385. {
  386.     return 1;
  387. }
  388.  
  389. stock PlayerName(playerid)
  390. {
  391.     new name[MAX_PLAYER_NAME];
  392.     GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  393.     return name;
  394. }
  395.  
  396. stock IsWaterPosition(Float:Z)
  397. {
  398.     if(Z < 0.7) return 1;
  399.     return 0;
  400. }
Add Comment
Please, Sign In to add comment