Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ********************************
- ES - Eleição Sys.
- ********************************
- Descrição:
- Permite que os jogadores concorram a eleições, como prefeitura, administração ou qualquer coisa que desejar.
- Versão:
- 1.0
- Developer:
- Luke "Larceny" G.
- "Lós" .
- ChangeLOG:
- 18/09/2011:
- Primeira versão.
- Thanks To:
- ZeeX - ZCMD Command Processor.
- Double-O-Seven - DOF2 Fast INI file system.
- Ryder` - rBits fast and easy method to use Bits.
- SA-MP Team - For All.
- Shickcard - Idea.
- */
- #define FILTERSCRIPT
- // Settings
- #define DIALOG_MSG 358
- #define DIALOG_CAN 359
- #define DIALOG_VOT 360
- #define MAX_CANDID 3
- #define CAND_PLACE 358.4222,186.2485,1008.3828
- #define VOTE_PLACE 358.2370,182.5879,1008.3828
- #include <a_samp>
- #include <rBits>
- #include <zcmd>
- #include <DOF2>
- forward ResetClientStats(clientid);
- new CANDPICK;
- new VOTEPICK;
- new isEleicaoStarted;
- enum eBit1_pData
- {
- isContestant,
- isVoted
- // ...
- };
- new
- Bit1:g_iBit1_pData[eBit1_pData] <MAX_PLAYERS>
- ;
- stock GetPlayerNameEx(playerid)
- {
- new string[MAX_PLAYER_NAME];
- GetPlayerName(playerid, string, MAX_PLAYER_NAME);
- return string;
- }
- public ResetClientStats(clientid)
- {
- Bit1_Set(g_iBit1_pData[isContestant], clientid, false);
- Bit1_Set(g_iBit1_pData[isVoted], clientid, false);
- return 1;
- }
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" Eleicao Sys. carregado com sucesso.");
- print(" Larceny & Shickcard & Los.");
- print("--------------------------------------\n");
- // ...
- CANDPICK = CreatePickup(1239, 2, CAND_PLACE, -1);
- VOTEPICK = CreatePickup(1239, 2, VOTE_PLACE, -1);
- // ...
- new FileToRead[] = "ESettings/Settings.ini";
- if(DOF2_GetInt(FileToRead, "CandidatesTotal") > MAX_CANDID){DOF2_SetInt(FileToRead, "CandidatesTotal", MAX_CANDID);}
- if(DOF2_GetInt(FileToRead, "CandidatesTotal") == 0){DOF2_SetInt(FileToRead, "CandidatesTotal", 0);}
- isEleicaoStarted = DOF2_GetInt(FileToRead, "EleicaoStarted");
- DOF2_SaveFile();
- return 1;
- }
- public OnFilterScriptExit()
- {
- DOF2_SetInt("ESettings/Settings.ini", "EleicaoStarted", isEleicaoStarted);
- DOF2_Exit();
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case DIALOG_CAN:
- {
- if(!response) return 1;
- new FileToRead[] = "ESettings/Settings.ini";
- if(DOF2_GetInt(FileToRead, "CandidatesTotal") >= MAX_CANDID) return SendClientMessage(playerid, 0xB11D21AA, "(*) Não há mais vagas para candidatos.");
- Bit1_Set(g_iBit1_pData[isContestant], playerid, true);
- SendClientMessage(playerid, 0x1B12BCFF, "(*) Você agora é um candidato, use /candidatos para manter-se informado.");
- new
- KeyToRead[32],
- Key2ToRead[32],
- StrToWrite[32];
- format(KeyToRead, sizeof(KeyToRead), "Candidato%i", DOF2_GetInt(FileToRead, "CandidatesTotal"));
- format(Key2ToRead, sizeof(Key2ToRead), "CandidatoVote%i", DOF2_GetInt(FileToRead, "CandidatesTotal"));
- strmid(StrToWrite, DOF2_GetString(FileToRead, KeyToRead), 0, strlen(DOF2_GetString(FileToRead, KeyToRead)), 255);
- //
- DOF2_SetInt(FileToRead, "CandidatesTotal", DOF2_GetInt(FileToRead, "CandidatesTotal")+1);
- DOF2_SetString(FileToRead, KeyToRead, GetPlayerNameEx(playerid));
- DOF2_SetInt(FileToRead, Key2ToRead, 0);
- DOF2_SaveFile();
- new FileToWrite[64];
- format(FileToWrite, sizeof(FileToWrite), "ESettings/%s.ini", GetPlayerNameEx(playerid));
- DOF2_SetInt(FileToWrite, "isContestant", 1);
- DOF2_SaveFile();
- }
- case DIALOG_VOT:
- {
- if(!response) return 1;
- new FileToRead[] = "ESettings/Settings.ini";
- new StrToShow[256];
- for(new var=0;var<MAX_CANDID;var++)
- {
- new
- KeyToRead[32],
- StrToWrite[32];
- format(KeyToRead, sizeof(KeyToRead), "Candidato%i", var);
- strmid(StrToWrite, DOF2_GetString(FileToRead, KeyToRead), 0, strlen(DOF2_GetString(FileToRead, KeyToRead)), 255);
- if(!strcmp(StrToWrite, " ", true)){strins(StrToShow, "Nenhum - 0 Votos\n", strlen(StrToShow));}
- else
- {
- new StrToConvert[64], StrToGet[32], VoteToGet[32];
- format(VoteToGet, sizeof(VoteToGet), "CandidatoVote%i", var);
- new MyVote;
- MyVote = DOF2_GetInt(FileToRead, VoteToGet);
- strmid(StrToGet, DOF2_GetString(FileToRead, KeyToRead), 0, strlen(DOF2_GetString(FileToRead, KeyToRead)), 255);
- format(StrToConvert, sizeof(StrToConvert), "%s - %i Votos\n", StrToGet, MyVote);
- strins(StrToShow, StrToConvert, strlen(StrToShow));
- }
- }
- ShowPlayerDialog (playerid, DIALOG_VOT+1, DIALOG_STYLE_LIST, "Candidatos", StrToShow, "Votar", "");
- }
- case DIALOG_VOT+1:
- {
- new FileToRead[] = "ESettings/Settings.ini";
- new
- KeyToRead[32],
- StrToWrite[32];
- format(KeyToRead, sizeof(KeyToRead), "Candidato%i", listitem);
- strmid(StrToWrite, DOF2_GetString(FileToRead, KeyToRead), 0, strlen(DOF2_GetString(FileToRead, KeyToRead)), 255);
- if(!strcmp(StrToWrite, " ", true)){ SendClientMessage(playerid, 0xB11D21AA, "(*) Candidato inválido."); }
- else
- {
- new VoteToGet[32];
- format(VoteToGet, sizeof(VoteToGet), "CandidatoVote%i", listitem);
- new MyVote;
- MyVote = DOF2_GetInt(FileToRead, VoteToGet);
- DOF2_SetInt(FileToRead, VoteToGet, MyVote+1);
- SendClientMessage(playerid, 0x1B12BCAA, "(*) Voto computado com sucesso.");
- Bit1_Set(g_iBit1_pData[isVoted], playerid, true);
- new FileToWrite[64];
- format(FileToWrite, sizeof(FileToWrite), "ESettings/%s.ini", GetPlayerNameEx(playerid));
- DOF2_SetInt(FileToWrite, "isVoted", 1);
- DOF2_SaveFile();
- }
- }
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- ResetClientStats(playerid);
- new UserFile[64];
- format(UserFile, sizeof(UserFile), "ESettings/%s.ini", GetPlayerNameEx(playerid));
- if(DOF2_FileExists(UserFile))
- {
- Bit1_Set(g_iBit1_pData[isContestant], playerid, DOF2_GetInt(UserFile, "isContestant"));
- Bit1_Set(g_iBit1_pData[isVoted], playerid, DOF2_GetInt(UserFile, "isVoted"));
- DOF2_SaveFile();
- }
- return 1;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- if (pickupid == CANDPICK)
- {
- if(isEleicaoStarted == 0) return SendClientMessage(playerid, -1, "(*) Não há nenhuma eleição ocorrendo.");
- if(!Bit1_Get(g_iBit1_pData[isContestant], playerid))
- {
- ShowPlayerDialog (playerid, DIALOG_CAN, DIALOG_STYLE_MSGBOX, "Candidatação", "Você não é candidato,\n deseja candidatar-se?", "Sim", "Não");
- }
- else
- {
- ShowPlayerDialog (playerid, DIALOG_MSG, DIALOG_STYLE_MSGBOX, "Atenção", "Você já é um candidato.", "Fechar", "");
- }
- }
- else if (pickupid == VOTEPICK)
- {
- if(isEleicaoStarted == 0) return SendClientMessage(playerid, -1, "(*) Não há nenhuma eleição ocorrendo.");
- if(!Bit1_Get(g_iBit1_pData[isVoted], playerid))
- {
- ShowPlayerDialog (playerid, DIALOG_VOT, DIALOG_STYLE_MSGBOX, "Voto", "Você ainda não votou,\n deseja votar?", "Sim", "Não");
- }
- else
- {
- ShowPlayerDialog (playerid, DIALOG_MSG, DIALOG_STYLE_MSGBOX, "Atenção", "Você já votou.", "Fechar", "");
- }
- }
- return 1;
- }
- CMD:iniciareleicao(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "(*) Você não é um administrador conectado na RCON.");
- if(isEleicaoStarted == 1) return SendClientMessage(playerid, -1, "(*) A eleição já está ocorrendo.");
- SendClientMessageToAll(-1, "As eleições foram abertas pelo administrador.");
- isEleicaoStarted = 1;
- return 1;
- }
- CMD:encerrareleicao(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "(*) Você não é um administrador conectado na RCON.");
- if(isEleicaoStarted == 0) return SendClientMessage(playerid, -1, "(*) Não há nenhuma eleição ocorrendo.");
- SendClientMessageToAll(-1, "As eleições foram ecerradas pelo administrador.");
- isEleicaoStarted = 0;
- new CVotes;
- new CID;
- for(new var=0;var<MAX_CANDID;var++)
- {
- new VoteToGet[32];
- format(VoteToGet, sizeof(VoteToGet), "CandidatoVote%i", var);
- new MyVote;
- MyVote = DOF2_GetInt("ESettings/Settings.ini", VoteToGet);
- if(MyVote > CVotes)
- {
- CVotes = MyVote;
- CID = var;
- }
- }
- new NameToGet[32], STR[64];
- format(NameToGet, sizeof(NameToGet), "Candidato%i", CID);
- strmid(STR, DOF2_GetString("ESettings/Settings.ini", NameToGet), 0, strlen(DOF2_GetString("ESettings/Settings.ini", NameToGet)), 255);
- new MySTR[128];
- format(MySTR, sizeof(MySTR), "O Vencedor da eleição foi: %s com %i votos.", STR, CVotes);
- SendClientMessageToAll(-1, MySTR);
- DOF2_RemoveFile("ESettings/Settings.ini");
- if(!DOF2_FileExists("ESettings/LogEleicao.ini")) DOF2_CreateFile("ESettings/LogEleicao.ini");
- // ...
- new pYear, pMonth, pDay, pHour, pMinute, pSecond, pDate[128];
- getdate(pYear, pMonth, pDay),gettime(pHour, pMinute, pSecond);
- format(pDate, sizeof pDate, "%s venceu a eleição no dia %02d:%02d:%02d às %02d/%02d/%02d.", STR, pHour, pMinute, pSecond , pDay, pMonth, pYear);
- DOF2_SetString("ESettings/LogEleicao.ini", STR, pDate);
- return 1;
- }
- CMD:candidatos(playerid, params[])
- {
- if(isEleicaoStarted == 0) return SendClientMessage(playerid, -1, "(*) Não há nenhuma eleição ocorrendo.");
- new FileToRead[] = "ESettings/Settings.ini";
- new StrToShow[256];
- for(new var=0;var<MAX_CANDID;var++)
- {
- new
- KeyToRead[32],
- StrToWrite[32];
- format(KeyToRead, sizeof(KeyToRead), "Candidato%i", var);
- strmid(StrToWrite, DOF2_GetString(FileToRead, KeyToRead), 0, strlen(DOF2_GetString(FileToRead, KeyToRead)), 255);
- if(!strcmp(StrToWrite, " ", true)){strins(StrToShow, "Nenhum - 0 Votos\n", strlen(StrToShow));}
- else
- {
- new StrToConvert[64], StrToGet[32], VoteToGet[32];
- format(VoteToGet, sizeof(VoteToGet), "CandidatoVote%i", var);
- new MyVote;
- MyVote = DOF2_GetInt(FileToRead, VoteToGet);
- strmid(StrToGet, DOF2_GetString(FileToRead, KeyToRead), 0, strlen(DOF2_GetString(FileToRead, KeyToRead)), 255);
- format(StrToConvert, sizeof(StrToConvert), "%s - %i Votos\n", StrToGet, MyVote);
- strins(StrToShow, StrToConvert, strlen(StrToShow));
- }
- }
- ShowPlayerDialog (playerid, DIALOG_MSG, DIALOG_STYLE_MSGBOX, "Candidatos", StrToShow, "Fechar", "");
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement