All pastes #225090 Raw Edit

VK

public text v1 · immutable
#225090 ·published 2006-10-27 19:11 UTC
rendered paste body
/*
ESEMPIO DI VOTEKICK MOLTO SEMPLICE:

creato da me >RLZ<Elvis1991 ;)

lo script si basa su principi di programmazione mooooolto semplici: cicli for, format e
variabili...Ho tenuto conto che vote-kick complessi possono rallentare il gioco(aumento del pig
per tutti i giocatori) quindi ho fatto 1 codice molto semplice.

INSALLAZIONE:
Visita questa pagina web:

*/

#include <a_samp>
//#include <UsFunc>

//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<MAX_PLAYERS;i++){
if(IsPlayerConnected(i)){
player++;}}
return player;}

public GetParamsOfVote()
{
PlayersConnected = GetPlayersNumber();
if (PlayersConnected == 1){MinVote = 1;RqTime =60000;}
if (PlayersConnected <= 3){MinVote = 2;RqTime =120000;}
if (PlayersConnected >= 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);
        }
    }
}