Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* **********************************************************
- **********************************************************
- ** **
- ** $$$$$$$$$$$$$$$ **
- ** $$$$$$$$$$$$$$$ **
- ** $$$$ $$$$$$$ $$$$$$$$ $$$$$$$ **
- ** $$$$ $$$$$$$$$ $$$$$$$$$$ $$$$$$$$$ **
- ** $$$$ $$$ $$$ $$$ $$$ **
- ** $$$$ $$$$$$$$ $$$$$$$$$ $$$$$$$$$ **
- ** $$$$ $$$$$$$$ $$$$$$$$$ $$$$$$$$$ **
- ** $$$$ $$$ $$$ $$$ $$$ **
- ** $$$$ $$$$$$$$ $$$$$$$$$ $$$ $$$ **
- ** $$$$ $$$$$$ $$$$$$$ $$$ $$$ **
- ** **
- ** ~ RPG Cidade Virtual TSSA ~ **
- **********************************************************
- Desenvolvido por Fernando Miranda (connork)
- **********************************************************
- **********************************************************
- */
- #include <a_samp>
- #include <mapandreas>
- #include <streamer>
- #include <dof2_e>
- enum cSub {
- bool:cItem,
- cDono[64],
- cObject[2],
- cArea,
- Float:cX,
- Float:cY,
- Float:cZ
- }
- #define TOTAL_CAIXAS 250
- #define TOTAL_PRESENTES 50
- #define MIN 3000
- #define MAX 10000
- /*
- X: > -10000 < -3000 || > 3000 < 10000
- Y: > -10000 < -3000 || > 3000 < 10000
- */
- new eCaixa[TOTAL_CAIXAS][cSub];
- new ObjectID[4][1] = { {19055}, {19056}, {19057}, {19058} };
- new Timer;
- public OnFilterScriptInit()
- {
- new Float:cPos[3], temp, ok;
- for(new I = 0; I < TOTAL_CAIXAS; I++) {
- cPos[2] = 99.9;
- while(!IsWaterPosition(cPos[2])) {
- if(random(10) >= 5) {
- cPos[0] = random(MAX - MIN) + MIN;
- if(random(10) <= 5) cPos[1] = (random(10000)) * -1;
- else cPos[1] = (random(10000));
- }
- else {
- cPos[0] = (random(MAX - MIN) + MIN) * -1;
- if(random(10) >= 5) cPos[1] = (random(10000)) * -1;
- else cPos[1] = (random(10000));
- }
- MapAndreas_FindZ_For2DCoord(cPos[0], cPos[1], cPos[2]);
- }
- eCaixa[I][cObject][0] = CreateDynamicObject(19360, cPos[0], cPos[1], cPos[2]+0.5, 0.0, 90.0, 0, -1, -1, -1, 300, 300);
- 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);
- eCaixa[I][cArea] = CreateDynamicCircle(cPos[0], cPos[1], 1.5);
- AttachDynamicAreaToObject(eCaixa[I][cArea], eCaixa[I][cObject][1]);
- if(250 >= random(500) <= 300 && temp <= TOTAL_PRESENTES) {
- eCaixa[I][cItem] = true;
- temp++;
- }
- if(!ZN_FileExists(eFile(I))) {
- ZN_CreateFile(eFile(I));
- ZN_SetBool(eFile(I), "cItem", eCaixa[I][cItem]);
- ZN_SetString(eFile(I), "Dono", "Ninguem");
- }
- else {
- eCaixa[I][cItem] = ZN_GetBool(eFile(I), "cItem");
- }
- ZN_SaveFile();
- if(eCaixa[I][cItem] == true) ok++;
- //SetPlayerPos(I, cPos[0], cPos[1], cPos[2]+0.5);
- }
- Timer = SetTimer("UpdateMoviments", 5000, false);
- //
- /*SendClientMessageToAll(0xFFFFFFAA, " ");
- SendClientMessageToAll(0xFF5E35FF, "~~~~~~~~~~~~~~~~~~~~~~~ Evento de Ano Novo ~~~~~~~~~~~~~~~~~~~~~~~");
- SendClientMessageToAll(0xFFFFFFAA, "* O evento de Ano Novo do server Cidade Virtual acaba de iniciar!");
- SendClientMessageToAll(0xFFFFFFAA, "* Para saber mais informações sobre o mesmo, digite: /AjudaAnoNovo");
- SendClientMessageToAll(0xFF5E35FF, "~~~~~~~~~~~~~~~~~~~~~~~ Evento de Ano Novo ~~~~~~~~~~~~~~~~~~~~~~~");
- SendClientMessageToAll(0xFFFFFFAA, " ");*/
- for(new I = 0; I <= MAX_PLAYERS; I ++) if(IsPlayerConnected(I)) PlayerPlaySound(I, 1057, 0, 0, 0);
- printf("[DEBUG] Há %d presentes disponíveis.", ok);
- //
- return 1;
- }
- stock eFile(id)
- {
- new str[64];
- format(str, sizeof(str), "AN/CaixaFlutuante%d.ini", id);
- return str;
- }
- forward UpdateMoviments();
- public UpdateMoviments()
- {
- new Float:Z, Float:Y, Float:X;
- new Float:cPos[3];
- for(new I = 0; I < TOTAL_CAIXAS; I++) {
- Z = 99.9;
- if(random(10) >= 5) {
- cPos[0] = random(MAX - MIN) + MIN;
- if(random(10) <= 5) cPos[1] = (random(10000)) * -1;
- else cPos[1] = (random(10000));
- }
- else {
- cPos[0] = (random(MAX - MIN) + MIN) * -1;
- if(random(10) >= 5) cPos[1] = (random(10000)) * -1;
- else cPos[1] = (random(10000));
- }
- MapAndreas_FindZ_For2DCoord(cPos[0], cPos[1], Z);
- if(IsWaterPosition(Z)) {
- GetDynamicObjectPos(eCaixa[I][cObject][0], X, Y, cPos[2]);
- MoveDynamicObject(eCaixa[I][cObject][0], cPos[0], cPos[1], cPos[2], 1.0);
- //
- GetDynamicObjectPos(eCaixa[I][cObject][1], X, Y, cPos[2]);
- MoveDynamicObject(eCaixa[I][cObject][1], cPos[0], cPos[1], cPos[2], 1.0);
- }
- }
- Timer = SetTimer("UpdateMoviments", 300000, false);
- SendClientMessageToAll(0xFFFFFFAA, " ");
- SendClientMessageToAll(0xFF5E35FF, "~~~~~~~~~~~~~~~~~~~~~~~ Evento de Ano Novo ~~~~~~~~~~~~~~~~~~~~~~~");
- SendClientMessageToAll(0xFFFFFFAA, "* O evento de Ano Novo do server Cidade Virtual acaba de iniciar!");
- SendClientMessageToAll(0xFFFFFFAA, "* Para saber mais informações sobre o mesmo, digite: /AjudaAnoNovo");
- SendClientMessageToAll(0xFF5E35FF, "~~~~~~~~~~~~~~~~~~~~~~~ Evento de Ano Novo ~~~~~~~~~~~~~~~~~~~~~~~");
- SendClientMessageToAll(0xFFFFFFAA, " ");
- return 1;
- }
- public OnPlayerEnterDynamicArea(playerid, areaid)
- {
- if(!IsValidDynamicArea(areaid)) return 1;
- new Float:X, Float:Y, Float:Z;
- for(new I = 0; I < TOTAL_CAIXAS; I++) {
- GetDynamicObjectPos(eCaixa[I][cObject][0], X, Y, Z);
- if(areaid == eCaixa[I][cArea] && IsPlayerInRangeOfPoint(playerid, 10.0, X, Y, Z)) {
- if(eCaixa[I][cItem] == true) {
- eCaixa[I][cItem] = false;
- ZN_SetInt(eFile(I), "cItem", eCaixa[I][cItem]);
- ZN_SetString(eFile(I), "Dono", PlayerName(playerid));
- ZN_SaveFile();
- new S[128];
- format(S, sizeof(S), "| ANO-NOVO | O(A) jogador(a) %s(%d) encontrou um dos presentes do evento!", PlayerName(playerid), playerid);
- SendClientMessageToAll(0xC8E1FFAA, S);
- print(S);
- 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));
- SendClientMessage(playerid, 0xC8E1FFAA, S);
- SetPlayerPos(playerid, 1247.5353, -1760.1205, 13.6269);
- }
- else {
- new S[128];
- 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);
- SendClientMessageToAll(0xC8E1FFAA, S);
- new Float:pp[3];
- GetPlayerPos(playerid, pp[0], pp[1], pp[2]);
- CreateExplosion(pp[0], pp[1], pp[2], 10, 1);
- CreateExplosion(pp[0], pp[1], pp[2], 7, 1);
- if(!IsPlayerAdmin(playerid)) SetPlayerHealth(playerid, 0);
- }
- break;
- }
- }
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new I = 0; I < TOTAL_CAIXAS; I++) {
- DestroyDynamicArea(eCaixa[I][cArea]);
- DestroyDynamicObject(eCaixa[I][cObject][1]);
- DestroyDynamicObject(eCaixa[I][cObject][0]);
- }
- KillTimer(Timer);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- return 1;
- }
- public OnVehicleSpawn(vehicleid)
- {
- return 1;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(strcmp(cmdtext, "/AjudaAnoNovo", true) == 0)
- {
- SendClientMessage(playerid, 0xFF5E35FF, "~~~~~~~~~~~~~~~~~~~~~ Evento de Ano Novo ~~~~~~~~~~~~~~~~~~~~~");
- SendClientMessage(playerid, 0xFFFFFFAA, "* Há um total de 250 caixas espalhadas pelo mar de San Andreas e apenas 20 com presentes.");
- SendClientMessage(playerid, 0xFFFFFFAA, "* Para capturar um presente, suba na plataforma e fique próximo a caixa do presente!");
- SendClientMessage(playerid, 0xFFFFFFAA, "* Todos os presentes apenas estão no MAR, então você deve conseguir um barco para encontrá-los.");
- SendClientMessage(playerid, 0xFFFFFFAA, "* Os presentes serão itens do ShopTSSA (level, saldo, SET, VIP, etc).");
- SendClientMessage(playerid, 0xFF5E35FF, "~~~~~~~~~~~~~~~~~~~~~ Evento de Ano Novo ~~~~~~~~~~~~~~~~~~~~~");
- return 1;
- }
- return 0;
- }
- public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
- {
- return 1;
- }
- public OnPlayerExitVehicle(playerid, vehicleid)
- {
- return 1;
- }
- stock IsVehicleAirVehicle(vehid)
- {
- switch(vehid)
- {
- case 592, 577, 511, 512, 593, 520, 553, 476, 519, 460, 513, 548, 425, 417, 488, 498, 563, 447, 469: return true;
- }
- return false;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- /*if(newstate == PLAYER_STATE_DRIVER && !IsPlayerAdmin(playerid)) {
- if(IsVehicleAirVehicle(GetVehicleModel(GetPlayerVehicleID(playerid)))) {
- SendClientMessage(playerid, 0xFF5E35FF, "| ERRO | Infelizmente devido ao evento de ano novo os veículos aéreos estão desativados.");
- RemovePlayerFromVehicle(playerid);
- }
- }*/
- return 1;
- }
- public OnPlayerEnterCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerEnterRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnRconCommand(cmd[])
- {
- return 1;
- }
- public OnPlayerRequestSpawn(playerid)
- {
- return 1;
- }
- public OnObjectMoved(objectid)
- {
- return 1;
- }
- public OnPlayerObjectMoved(playerid, objectid)
- {
- return 1;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- return 1;
- }
- public OnVehicleMod(playerid, vehicleid, componentid)
- {
- return 1;
- }
- public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
- {
- return 1;
- }
- public OnVehicleRespray(playerid, vehicleid, color1, color2)
- {
- return 1;
- }
- public OnPlayerSelectedMenuRow(playerid, row)
- {
- return 1;
- }
- public OnPlayerExitedMenu(playerid)
- {
- return 1;
- }
- public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
- {
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- return 1;
- }
- public OnRconLoginAttempt(ip[], password[], success)
- {
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- return 1;
- }
- public OnPlayerStreamIn(playerid, forplayerid)
- {
- return 1;
- }
- public OnPlayerStreamOut(playerid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamIn(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamOut(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- return 1;
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
- stock PlayerName(playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- return name;
- }
- stock IsWaterPosition(Float:Z)
- {
- if(Z < 0.7) return 1;
- return 0;
- }
Add Comment
Please, Sign In to add comment