/* ESEMPIO DI VOTEKICK MOLTO SEMPLICE: creato da me >RLZ //#include //Color Define #define COLOR_GREY 0xAFAFAFAA #define COLOR_GREEN 0x33AA33AA #define COLOR_RED 0xFF0000AA #define COLOR_YELLOW 0xFFFF00AA #define COLOR_DARKYELLOW 0xE3B515AA #define COLOR_PINK 0xFF66FFAA #define COLOR_BLUE 0x0000BBAA #define COLOR_LIGHTBLUE 0x33CCFFAA #define COLOR_DARKRED 0x660000AA #define COLOR_ORANGE 0xFF9900AA #define COLOR_WHITE 0xFFFFFFAA #define COLOR_LIGHTGREEN 0x00FF00AA //End Color Define new PlayersConnected; new CheckPlayerConnectedTimer; new MinVote; #define VOTE_IN_PROGRESS 1 #define VOTE_ENDED 2 #define VOTE_NONE 0 new Voting; new Voted[MAX_PLAYERS]; new RqTime; new VotedID; new VoteYes; main() { print("\n----------------------------------"); print(" This is a blank GameModeScript"); print("----------------------------------\n"); } public OnGameModeInit() { print("GameModeInit()"); SetGameModeText("Blank Script"); AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); CheckPlayerConnectedTimer = SetTimer("GetParamsOfVote",1500,1); return 1; } public OnPlayerRequestClass(playerid, classid) { printf("OnPlayerRequestClass(%d, %d)", playerid, classid); SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); return 1; } public OnGameModeExit() { print("GameModeExit()"); KillTimer(CheckPlayerConnectedTimer); return 1; } public OnPlayerConnect(playerid) { printf("OnPlayerConnect(%d)", playerid); SendClientMessage(playerid,COLOR_GREEN,"Press: /Vote [VotedID] [reason] ---> Start vote"); SendClientMessage(playerid,COLOR_GREEN,"Press: /Report [message] ---> Report a message to admin"); return 1; } public OnPlayerDisconnect(playerid) { printf("OnPlayerDisconnect(%d)", playerid); return 1; } public OnPlayerSpawn(playerid) { printf("OnPlayerSpawn(%d)", playerid); return 1; } public OnPlayerDeath(playerid, killerid, reason) { printf("OnPlayerDeath(%d, %d, %d)", playerid, killerid, reason); return 1; } public OnVehicleSpawn(vehicleid) { printf("OnVehicleSpawn(%d)", vehicleid); return 1; } public OnVehicleDeath(vehicleid, killerid) { printf("OnVehicleDeath(%d, %d)", vehicleid, killerid); return 1; } public OnPlayerText(playerid) { printf("OnPlayerText(%d)", playerid); return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { new cmd[256]; new idx; cmd = strtok(cmdtext, idx); if(strcmp(cmd,"/Vote",true) == 0) { if (Voting == VOTE_NONE) { new VotedX[256]; VotedX = strtok(cmdtext, idx); if(!strlen(VotedX)){ SendClientMessage(playerid, COLOR_WHITE, "USAGE: /Vote [VotedID] [reason]"); return 1;} VotedID = strval(VotedX); new Reason[300]; Reason = strrest(cmd,idx); if(!strlen(Reason)){ SendClientMessage(playerid, COLOR_WHITE, "USAGE: /Vote [VotedID] [reason]"); return 1;} if (IsPlayerConnected(VotedID)) { if (IsPlayerAdmin(VotedID) == 0) { if (VotedID != playerid) { Voted[VotedID] = 1; new VotedName[MAX_PLAYER_NAME]; GetPlayerName(VotedID,VotedName,sizeof(VotedName)); new VoteMess[256]; new TimerVal = RqTime/1000/60; format(VoteMess,sizeof(VoteMess),"*** Vote-Kick: Started vote of %s (id: %d). The vote will check in %d minute!",VotedName,VotedID,TimerVal); SendClientMessageToAllOthers2(VotedID, COLOR_YELLOW, VoteMess); new Res[256]; format(Res,sizeof(Res),"*** Reason: %s",Reason); SendClientMessageToAll(COLOR_YELLOW,"Press /yes (agree) /no (disagree)"); SendClientMessageToAll(COLOR_YELLOW,Res); new MessVoted[256]; format(MessVoted,sizeof(MessVoted),"**** You are selected to a VOTE for: %s",Reason); SendClientMessage(VotedID, COLOR_RED,MessVoted); SetTimer("CheckVote",RqTime,0); } else{SendClientMessage(playerid,COLOR_RED,"You are voting your self!!!");} } else{SendClientMessage(playerid,COLOR_RED,"You can't vote the Admin!");} } else{SendClientMessage(playerid,COLOR_RED,"That id doesen't exist!");} Voting = VOTE_IN_PROGRESS; } if (Voting != VOTE_NONE) { SendClientMessage(playerid,COLOR_RED,"Now is evolving an other vote!"); } } if (strcmp(cmdtext, "/yes", true)==0) { if (Voting != VOTE_NONE) { VoteYes++; new VoteYESMess[256]; format(VoteYESMess,sizeof(VoteYESMess),"*** Vote: someone has voted to kick. Vote is now to %d / %d",VoteYes,MinVote); SendClientMessageToAll(COLOR_YELLOW,VoteYESMess); new XT[256]; format(XT,sizeof(XT),"%d / %d",VoteYes,MinVote); GameTextForPlayer(VotedID,XT,3000,4); } return 1; } if (strcmp(cmdtext, "/no", true)==0) { if (Voting != VOTE_NONE) { SendClientMessage(playerid,COLOR_YELLOW,"You have voted NO"); } return 1; } if (strcmp(cmdtext, "/Report", true)==0) { new AdminMess[300]; AdminMess = strrest(cmd,idx); if(!strlen(AdminMess)){ SendClientMessage(playerid, COLOR_WHITE, "USAGE: /Report [message]"); return 1;} new sender[MAX_PLAYER_NAME]; GetPlayerName(playerid,sender,sizeof(sender)); new MessToAdmin[512]; format(MessToAdmin,sizeof(MessToAdmin),"***AdminReport: %s (by %s)***",AdminMess,sender); for (new i = 0; i < MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) { if (IsPlayerAdmin(i)) { SendClientMessage(i, COLOR_YELLOW, MessToAdmin); SendClientMessage(playerid,COLOR_YELLOW,"***Your Message is succesful sent to admin!"); } else { SendClientMessage(playerid,COLOR_RED,"***Sorry, but Admin is not connected or loged in!"); } } } return 1; } if (strcmp(cmdtext, "/mycommand", true)==0) { /* Do something here */ return 1; } return 0; } public OnPlayerInfoChange(playerid) { printf("OnPlayerInfoChange(%d)"); return 1; } public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { printf("OnPlayerEnterVehicle(%d, %d, %d)", playerid, vehicleid, ispassenger); return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { printf("OnPlayerExitVehicle(%d, %d)", playerid, vehicleid); return 1; } public OnPlayerStateChange(playerid, newstate, oldstate) { printf("OnPlayerStateChange(%d, %d, %d)", playerid, newstate, oldstate); return 1; } public OnPlayerEnterCheckpoint(playerid) { printf("OnPlayerEnterCheckpoint(%d)", playerid); return 1; } public OnPlayerLeaveCheckpoint(playerid) { printf("OnPlayerLeaveCheckpoint(%d)", playerid); return 1; } public GetPlayersNumber() //By rapidZ & edited by me {new i; new player; player = 0; for (i=0;i= 4 && PlayersConnected <= 6){MinVote = 4;RqTime = 180000;} if (PlayersConnected >= 7 && PlayersConnected <= 12){MinVote = 7;RqTime = 240000;} if (PlayersConnected >= 13 && PlayersConnected <= 20){MinVote = 10;RqTime = 300000;} if (PlayersConnected >= 21 && PlayersConnected <= 30){MinVote = 12;RqTime = 360000;} if (PlayersConnected >= 31){MinVote = 15;RqTime = 360000;} if (PlayersConnected >= 95 && PlayersConnected <= 100){MinVote = 20;RqTime = 480000;} } public CheckVote() { if (VoteYes >= MinVote) { new nameofkicked[MAX_PLAYER_NAME]; GetPlayerName(VotedID,nameofkicked,sizeof(nameofkicked)); new KickedMess[256]; format(KickedMess,sizeof(KickedMess),"*** Vote Kick: %s (id: %d) was kicked by all for %d vote!",nameofkicked,VotedID,VoteYes); SendClientMessageToAllOthers2(VotedID, COLOR_YELLOW, KickedMess); SendClientMessage(VotedID,COLOR_RED,"You was been Kicked!"); GameTextForPlayer(VotedID,"KICK!",5000,3); Kick(VotedID); //reset Param: Voting = VOTE_NONE; for (new i = 0; i < MAX_PLAYERS; i++) Voted[i] = 0; VoteYes = 0; } if (VoteYes < MinVote) { new nameofNOkicked[MAX_PLAYER_NAME]; GetPlayerName(VotedID,nameofNOkicked,sizeof(nameofNOkicked)); new NoKickMess[256]; format(NoKickMess,sizeof(NoKickMess),"*** Vote Kick: %s (id: %d) won't kicked because there was not enought vote (%d/%d)!",nameofNOkicked,VotedID,VoteYes,MinVote); SendClientMessageToAll(COLOR_YELLOW,NoKickMess); SendClientMessageToAllOthers2(VotedID, COLOR_YELLOW, "You can report that to admin...(/Report [message])"); //reset Param: Voting = VOTE_NONE; for (new i = 0; i < MAX_PLAYERS; i++) Voted[i] = 0; VoteYes = 0; } } strtok(const string[], &index) { new length = strlen(string); while ((index < length) && (string[index] <= ' ')) { index++; } new offset = index; new result[20]; while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; } public strrest(const string[], index) { new length = strlen(string); new offset = index; new result[256]; while ((index < length) && ((index - offset) < (sizeof(result) - 1)) && (string[index] > '\r')) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; // new result[256]; // strmid(result,string,index,strlen(string),sizeof(result)); return result; } public SendClientMessageToAllOthers2(playerid, color, const message[]) { for (new i = 0; i < MAX_PLAYERS; i++) { if ((IsPlayerConnected(i)) && (i != playerid)) { SendClientMessage(i, color, message); } } } public GameTextForAllOthers2(playerid, const string[], time, style) { for (new i = 0; i < MAX_PLAYERS; i++) { if ((IsPlayerConnected(i)) && (i != playerid)) { GameTextForPlayer(i, string, time, style); } } }