Irc script
#1

How can i script if a player join the irc, then the message should show in the server , like this
" %s has join the RBTDM irc channel."
please reply
Reply
#2

There is a callback for this in the IRC plugin.

pawn Код:
IRC_OnUserJoinChannel(botid, channel[], user[], host[]);
Reply
#3

Quote:
Originally Posted by Ensconce
Посмотреть сообщение
There is a callback for this in the IRC plugin.

pawn Код:
IRC_OnUserJoinChannel(botid, channel[], user[], host[]);
Can you tell me in details? plz
Reply
#4

Do you have irc plugin installed?
Reply
#5

yes i installed
Reply
#6

https://sampforum.blast.hk/showthread.php?tid=98803 read this.
Reply
#7

i am using this script
Код:
// Porsche911's IRC PAWN Script!

#include <a_samp>
#include <irc>

// Name that everyone will see
#define BOT_1_NICKNAME "RBTDM1"

// Name that will only be visible in a whois
#define BOT_1_REALNAME "SA-MP Bot"
// Name that will be in front of the hostname (username@hostname)
#define BOT_1_USERNAME "bot"

#define BOT_2_NICKNAME "RBTDM2"
#define BOT_2_REALNAME "SA-MP Bot"
#define BOT_2_USERNAME "bot"

#define IRC_SERVER "irc.focogaming.com" // EDIT IT to your irc server
#define IRC_PORT (6667) // Leave THE port
#define IRC_CHANNEL "#RBTDM" // Set it to your IRC Channel!
#define			blue 						0x375FFFFF
#define 		red 						0xFF0000AA
#define 		green 						0x33FF33AA
#define 		ROJO						0x33FF33AA
#define 		yellow 						0xFFFF00AA
#define 		grey 						0xC0C0C0AA
#define 		blue1 						0x2641FEAA
#define 		lightblue 					0x33CCFFAA
#define 		orange 						0xFF9900AA
#define 		black 						0x2C2727AA


#pragma 		tabsize 					0

// Maximum number of bots in the filterscript
#define MAX_BOTS (2)

new
	gBotID[MAX_BOTS],
	gGroupID;

/*
	When the filterscript is loaded, two bots will connect and a group will be
	created for them.
*/

public
	OnFilterScriptInit()
{
	// Wait 5 seconds for the first bot
	SetTimerEx("IRC_ConnectDelay", 5000, 0, "d", 1);
	// Wait 10 seconds for the second bot
	SetTimerEx("IRC_ConnectDelay", 10000, 0, "d", 2);
	// Create a group (the bots will be added to it upon connect)
	gGroupID = IRC_CreateGroup();
}

/*
	When the filterscript is unloaded, the bots will disconnect, and the group
	will be destroyed.
*/

public
	OnFilterScriptExit()
{
	// Disconnect the first bot
	IRC_Quit(gBotID[0], "Filterscript exiting");
	// Disconnect the second bot
	IRC_Quit(gBotID[1], "Filterscript exiting");
	// Destroy the group
	IRC_DestroyGroup(gGroupID);
}

/*
	This function is called on a timer in order to delay connections to the IRC
	server and effectively prevent join floods.
*/

forward
	IRC_ConnectDelay(tempid);

public
	IRC_ConnectDelay(tempid)
{
	switch (tempid)
	{
		case 1:
		{
			// Connect the first bot
			gBotID[0] = IRC_Connect(IRC_SERVER, IRC_PORT, BOT_1_NICKNAME, BOT_1_REALNAME, BOT_1_USERNAME);
		}
		case 2:
		{
			// Connect the second bot
			gBotID[1] = IRC_Connect(IRC_SERVER, IRC_PORT, BOT_2_NICKNAME, BOT_2_REALNAME, BOT_2_USERNAME);
		}
	}
	return 1;
}

/*
	The standard SA-MP callbacks are below. We will echo a few of them to the
	IRC channel.
*/

public
	OnPlayerConnect(playerid)
{
	new
		joinMsg[128],
		name[MAX_PLAYER_NAME];
	GetPlayerName(playerid, name, sizeof(name));
	format(joinMsg, sizeof(joinMsg), "02[%d] 03*** %s has joined the server.", playerid, name);
	IRC_GroupSay(gGroupID, IRC_CHANNEL, joinMsg);
	return 1;
}

public
	OnPlayerDisconnect(playerid, reason)
{
	new
		leaveMsg[128],
		name[MAX_PLAYER_NAME],
		reasonMsg[8];
	switch(reason)
	{
		case 0:
		{
			reasonMsg = "Timeout";
		}
		case 1:
		{
			reasonMsg = "Leaving";
		}
		case 2:
		{
			reasonMsg = "Kicked";
		}
	}
	GetPlayerName(playerid, name, sizeof(name));
	format(leaveMsg, sizeof(leaveMsg), "02[%d] 03*** %s has left the server. (%s)", playerid, name, reasonMsg);
	IRC_GroupSay(gGroupID, IRC_CHANNEL, leaveMsg);
	return 1;
}

/*
	Here is an extensive list of death reasons that I compiled some time ago. It
	correctly reports all types of kills, including those made in some vehicles.
*/

public
	OnPlayerDeath(playerid, killerid, reason)
{
	new
		msg[128],
		killerName[MAX_PLAYER_NAME],
		reasonMsg[32],
		playerName[MAX_PLAYER_NAME];
	GetPlayerName(killerid, killerName, sizeof(killerName));
	GetPlayerName(playerid, playerName, sizeof(playerName));
	if (killerid != INVALID_PLAYER_ID)
	{
		switch (reason)
		{
			case 0:
			{
				reasonMsg = "Unarmed";
			}
			case 1:
			{
				reasonMsg = "Brass Knuckles";
			}
			case 2:
			{
				reasonMsg = "Golf Club";
			}
			case 3:
			{
				reasonMsg = "Night Stick";
			}
			case 4:
			{
				reasonMsg = "Knife";
			}
			case 5:
			{
				reasonMsg = "Baseball Bat";
			}
			case 6:
			{
				reasonMsg = "Shovel";
			}
			case 7:
			{
				reasonMsg = "Pool Cue";
			}
			case 8:
			{
				reasonMsg = "Katana";
			}
			case 9:
			{
				reasonMsg = "Chainsaw";
			}
			case 10:
			{
				reasonMsg = "Dildo";
			}
			case 11:
			{
				reasonMsg = "Dildo";
			}
			case 12:
			{
				reasonMsg = "Vibrator";
			}
			case 13:
			{
				reasonMsg = "Vibrator";
			}
			case 14:
			{
				reasonMsg = "Flowers";
			}
			case 15:
			{
				reasonMsg = "Cane";
			}
			case 22:
			{
				reasonMsg = "Pistol";
			}
			case 23:
			{
				reasonMsg = "Silenced Pistol";
			}
			case 24:
			{
				reasonMsg = "Desert Eagle";
			}
			case 25:
			{
				reasonMsg = "Shotgun";
			}
			case 26:
			{
				reasonMsg = "Sawn-off Shotgun";
			}
			case 27:
			{
				reasonMsg = "Combat Shotgun";
			}
			case 28:
			{
				reasonMsg = "MAC-10";
			}
			case 29:
			{
				reasonMsg = "MP5";
			}
			case 30:
			{
				reasonMsg = "AK-47";
			}
			case 31:
			{
				if (GetPlayerState(killerid) == PLAYER_STATE_DRIVER)
				{
					switch (GetVehicleModel(GetPlayerVehicleID(killerid)))
					{
						case 447:
						{
							reasonMsg = "Sea Sparrow Machine Gun";
						}
						default:
						{
							reasonMsg = "M4";
						}
					}
				}
				else
				{
					reasonMsg = "M4";
				}
			}
			case 32:
			{
				reasonMsg = "TEC-9";
			}
			case 33:
			{
				reasonMsg = "Rifle";
			}
			case 34:
			{
				reasonMsg = "Sniper Rifle";
			}
			case 37:
			{
				reasonMsg = "Fire";
			}
			case 38:
			{
				if (GetPlayerState(killerid) == PLAYER_STATE_DRIVER)
				{
					switch (GetVehicleModel(GetPlayerVehicleID(killerid)))
					{
						case 425:
						{
							reasonMsg = "Hunter Machine Gun";
						}
						default:
						{
							reasonMsg = "Minigun";
						}
					}
				}
				else
				{
					reasonMsg = "Minigun";
				}
			}
			case 41:
			{
				reasonMsg = "Spraycan";
			}
			case 42:
			{
				reasonMsg = "Fire Extinguisher";
			}
			case 49:
			{
				reasonMsg = "Vehicle Collision";
			}
			case 50:
			{
				if (GetPlayerState(killerid) == PLAYER_STATE_DRIVER)
				{
					switch (GetVehicleModel(GetPlayerVehicleID(killerid)))
					{
						case 417, 425, 447, 465, 469, 487, 488, 497, 501, 548, 563:
						{
							reasonMsg = "Helicopter Blades";
						}
						default:
						{
							reasonMsg = "Vehicle Collision";
						}
					}
				}
				else
				{
					reasonMsg = "Vehicle Collision";
				}
			}
			case 51:
			{
				if (GetPlayerState(killerid) == PLAYER_STATE_DRIVER)
				{
					switch (GetVehicleModel(GetPlayerVehicleID(killerid)))
					{
						case 425:
						{
							reasonMsg = "Hunter Rockets";
						}
						case 432:
						{
							reasonMsg = "Rhino Turret";
						}
						case 520:
						{
							reasonMsg = "Hydra Rockets";
						}
						default:
						{
							reasonMsg = "Explosion";
						}
					}
				}
				else
				{
					reasonMsg = "Explosion";
				}
			}
			default:
			{
				reasonMsg = "Unknown";
			}
		}
		format(msg, sizeof(msg), "04*** %s killed %s. (%s)", killerName, playerName, reasonMsg);
	}
	else
	{
		switch (reason)
		{
			case 53:
			{
				format(msg, sizeof(msg), "04*** %s died. (Drowned)", playerName);
			}
			case 54:
			{
				format(msg, sizeof(msg), "04*** %s died. (Collision)", playerName);
			}
			default:
			{
				format(msg, sizeof(msg), "04*** %s died.", playerName);
			}
		}
	}
	IRC_GroupSay(gGroupID, IRC_CHANNEL, msg);
	return 1;
}

public
	OnPlayerText(playerid, text[])
{
	new
		name[MAX_PLAYER_NAME],
		ircMsg[256];
	GetPlayerName(playerid, name, sizeof(name));
	format(ircMsg, sizeof(ircMsg), "02[%d] 07%s: %s", playerid, name, text);
	IRC_GroupSay(gGroupID, IRC_CHANNEL, ircMsg);
	return 1;
}

/*
	The IRC callbacks are below. Many of these are simply derived from parsed
	raw messages received from the IRC server. They can be used to inform the
	bot of new activity in any of the channels it has joined.
*/

public
	IRC_OnConnect(botid)
{
	printf("*** IRC_OnConnect: Bot ID %d connected!", botid);
	// Join the channel
	IRC_JoinChannel(botid, IRC_CHANNEL);
	// Add the bot to the group
	IRC_AddToGroup(gGroupID, botid);
	return 1;
}

/*
	Note that this callback is executed whenever a current connection is closed
	OR whenever a connection attempt fails. Reconnecting too fast can flood the
	IRC server and possibly result in a ban. It is recommended to set up
	connection reattempts on a timer, as demonstrated here.
*/

public
	IRC_OnDisconnect(botid)
{
	printf("*** IRC_OnDisconnect: Bot ID %d disconnected!", botid);
	if (botid == gBotID[0])
	{
		// Reset the bot ID
		gBotID[0] = 0;
		// Wait 20 seconds for the first bot
		SetTimerEx("IRC_ConnectDelay", 20000, 0, "d", 1);
	}
	else if (botid == gBotID[1])
	{
		// Reset the bot ID
		gBotID[1] = 0;
		// Wait 25 seconds for the second bot
		SetTimerEx("IRC_ConnectDelay", 25000, 0, "d", 2);
	}
	printf("*** IRC_OnDisconnect: Bot ID %d attempting to reconnect...", botid);
	// Remove the bot from the group
	IRC_RemoveFromGroup(gGroupID, botid);
	return 1;
}

public
	IRC_OnJoinChannel(botid, channel[])
{
	printf("*** IRC_OnJoinChannel: Bot ID %d joined channel %s!", botid, channel);
	return 1;
}

/*
	If the bot cannot immediately rejoin the channel (in the event, for example,
	that the bot is kicked and then banned), you might want to set up a timer
	here as well for rejoin attempts.
*/

public
	IRC_OnLeaveChannel(botid, channel[], message[])
{
	printf("*** IRC_OnLeaveChannel: Bot ID %d left channel %s (%s)!", botid, channel, message);
	IRC_JoinChannel(botid, channel);
	return 1;
}

public
	IRC_OnUserDisconnect(botid, user[], host[], message[])
{
	printf("*** IRC_OnUserDisconnect (Bot ID %d): User %s (%s) disconnected! (%s)", botid, user, host, message);
	return 1;
}

public
	IRC_OnUserJoinChannel(botid, channel[], user[], host[])
{
	printf("*** IRC_OnUserJoinChannel (Bot ID %d): User %s (%s) joined channel %s!", botid, user, host, channel);
	return 1;
}

public
	IRC_OnUserLeaveChannel(botid, channel[], user[], host[], message[])
{
	printf("*** IRC_OnUserLeaveChannel (Bot ID %d): User %s (%s) left channel %s (%s)!", botid, user, host, channel, message);
	return 1;
}

public
	IRC_OnUserNickChange(botid, oldnick[], newnick[], host[])
{
	printf("*** IRC_OnUserNickChange (Bot ID %d): User %s (%s) changed his nick to %s!", botid, oldnick, host, newnick);
	return 1;
}

public
	IRC_OnUserSetChannelMode(botid, channel[], user[], host[], mode[])
{
	printf("*** IRC_OnUserSetChannelMode (Bot ID %d): User %s (%s) on %s set mode: %s!", botid, user, host, channel, mode);
	return 1;
}

public
	IRC_OnUserSetChannelTopic(botid, channel[], user[], host[], topic[])
{
	printf("*** IRC_OnUserSetChannelTopic (Bot ID %d): User %s (%s) on %s set topic: %s!", botid, user, host, channel, topic);
	return 1;
}

public
	IRC_OnUserSay(botid, recipient[], user[], host[], message[])
{
	printf("*** IRC_OnUserSay (Bot ID %d): User %s (%s) sent message to %s: %s", botid, user, host, recipient, message);
	// Someone sent the first bot a private message
	if (!strcmp(recipient, BOT_1_NICKNAME))
	{
		IRC_Say(botid, user, "You sent me a PM!");
	}
	return 1;
}

public
	IRC_OnUserNotice(botid, recipient[], user[], host[], message[])
{
	printf("*** IRC_OnUserNotice (Bot ID %d): User %s (%s) sent notice to %s: %s", botid, user, host, recipient, message);
	// Someone sent the second bot a notice (probably a network service)
	if (!strcmp(recipient, BOT_2_NICKNAME))
	{
		IRC_Notice(botid, user, "You sent me a notice!");
	}
	return 1;
}

/*
	This callback is useful for logging, debugging, or catching error messages
	sent by the IRC server.
*/

public
	IRC_OnReceiveRaw(botid, message[])
{
	new
		File:file;
	if (!fexist("irc_log.txt"))
	{
		file = fopen("irc_log.txt", io_write);
	}
	else
	{
		file = fopen("irc_log.txt", io_append);
	}
	if (file)
	{
		fwrite(file, message);
		fwrite(file, "\r\n");
		fclose(file);
	}
	return 1;
}

/*
	Some examples of channel commands are here. You can add more very easily;
	their implementation is identical to that of ZeeX's zcmd.
*/

IRCCMD:say(botid, channel[], user[], host[], params[])
{
	// Check if the user has at least voice in the channel
	if (IRC_IsVoice(botid, channel, user))
	{
		// Check if the user entered any text
		if (!isnull(params))
		{
			new
				msg[128];
			// Echo the formatted message
			format(msg, sizeof(msg), "02*** %s on IRC: %s", user, params);
			IRC_GroupSay(gGroupID, channel, msg);
			format(msg, sizeof(msg), "*** %s on IRC: %s", user, params);
			SendClientMessageToAll(0x0000FFFF, msg);
		}
	}
	return 1;
}

IRCCMD:kick(botid, channel[], user[], host[], params[])
{
	// Check if the user is at least a halfop in the channel
	if (IRC_IsHalfop(botid, channel, user))
	{
		new
			playerid,
			reason[64];
		// If the user did not enter a player ID, then the command will not be processed
		if (sscanf(params, "dz", playerid, reason))
		{
			return 1;
		}
		// If the player is not connected, then nothing will be done
		if (IsPlayerConnected(playerid))
		{
			new
				msg[128],
				name[MAX_PLAYER_NAME];
			// If no reason is given, then "No reason" will be stated
			if (isnull(reason))
			{
				format(reason, sizeof(reason), "No reason");
			}
			// Echo the formatted message and kick the user
			GetPlayerName(playerid, name, sizeof(name));
			format(msg, sizeof(msg), "02*** %s has been kicked by %s on IRC. (%s)", name, user, reason);
			IRC_GroupSay(gGroupID, channel, msg);
			format(msg, sizeof(msg), "*** %s has been kicked by %s on IRC. (%s)", name, user, reason);
			SendClientMessageToAll(0x0000FFFF, msg);
			Kick(playerid);
		}
	}
	return 1;
}

IRCCMD:ban(botid, channel[], user[], host[], params[])
{
	// Check if the user is at least an op in the channel
	if (IRC_IsOp(botid, channel, user))
	{
		new
			playerid,
			reason[64];
		// If the user did not enter a player ID, then the command will not be processed
		if (sscanf(params, "dz", playerid, reason))
		{
			return 1;
		}
		// If the player is not connected, then nothing will be done
		if (IsPlayerConnected(playerid))
		{
			new
				msg[128],
				name[MAX_PLAYER_NAME];
			// If no reason is given, then "No reason" will be stated
			if (isnull(reason))
			{
				format(reason, sizeof(reason), "No reason");
			}
			// Echo the formatted message and ban the user
			GetPlayerName(playerid, name, sizeof(name));
			format(msg, sizeof(msg), "02*** %s has been banned by %s on IRC. (%s)", name, user, reason);
			IRC_GroupSay(gGroupID, channel, msg);
			format(msg, sizeof(msg), "*** %s has been banned by %s on IRC. (%s)", name, user, reason);
			SendClientMessageToAll(0x0000FFFF, msg);
			BanEx(playerid, reason);
		}
	}
	return 1;
}

IRCCMD:rcon(botid, channel[], user[], host[], params[])
{
	// Check if the user is at least an op in the channel
	if (IRC_IsOp(botid, channel, user))
	{
		// Check if the user entered any text
		if (!isnull(params))
		{
			// Check if the user did not enter any bad commands
			if (strcmp(params, "exit", true) != 0 && strfind(params, "loadfs irc", true) == -1)
			{
				// Echo the formatted message and send the command
				new
					msg[128];
				format(msg, sizeof(msg), "RCON command %s has been executed.", params);
				IRC_GroupSay(gGroupID, channel, msg);
				SendRconCommand(params);
			}
		}
	}
	return 1;
}

IRCCMD:text(botid, channel[], user[], host[], params[])
{
	// Check if the user has at least operator in the channel
	if (IRC_IsOp(botid, IRC_CHANNEL, user))
	{
		// Check if the user entered any text
		if (!isnull(params))
		{
			new
				msg[128];
			// Echo the formatted message
			format(msg, sizeof(msg), " %s You have succesfully Send This Text: %s", user, params);
			IRC_GroupSay(gGroupID, IRC_CHANNEL, msg);
			format(msg, sizeof(msg), "%s", params);
			SendClientMessageToAll(0xFFFF00AA, msg);
		}
	}
	return 1;
}

IRCCMD:admin(botid, channel[], user[], host[], params[])
{
	// Check if the user has at least operator in the channel
	if (IRC_IsOp(botid, IRC_CHANNEL, user))
	{
		// Check if the user entered any text
		if (!isnull(params))
		{
			new
				msg[128];
			// Echo the formatted message
			format(msg, sizeof(msg), " %s You Send This Admin Text Message: %s", user, params);
			IRC_GroupSay(botid, IRC_CHANNEL, msg);
			format(msg, sizeof(msg), "Admin: %s", params);
			SendClientMessageToAll(0xFFFF00AA, msg);
		}
	}
	return 1;
}



IRCCMD:crash(botid, channel[], user[], host[], params[])
{
	if (IRC_IsAdmin(botid, channel, user))
	{
		new
		    playerid;
	if (sscanf(params, "d", playerid))
	{
	    return 1;
	}
	if (IsPlayerConnected(playerid))
	{
	    new
	        msg[128],
	        name[MAX_PLAYER_NAME];
		 GetPlayerName(playerid, name, sizeof(name));
		 format(msg, sizeof(msg), "*** %s Has Crashed %s.", user, name);
		 IRC_GroupSay(gGroupID, channel, msg);
		 Crash(playerid);
		}
	}
 return 1;
}
IRCCMD:quarantine(botid, channel[], user[], host[], params[])
{

// Check if the user is at least an op in the channel
	if (IRC_IsOwner(botid, channel, user))
	{
		new
			playerid,
			reason[64];
		// If the user did not enter a player ID, then the command will not be processed
		if (sscanf(params, "ds", playerid, reason))
		{
			return 1;
		}
		// If the player is not connected, then nothing will be done
		if (IsPlayerConnected(playerid))
		{
			new
				msg[128],
				name[MAX_PLAYER_NAME];
			// Echo the formatted message and ban the user
			GetPlayerName(playerid, name, sizeof(name));
			format(msg, sizeof(msg), "02*** %s has put %s in quarantine from IRC.", user, name);
			IRC_GroupSay(gGroupID, channel, msg);
			format(msg, sizeof(msg), "* Admin %s on IRC has put %s in quarantine.", user, name);
			SendClientMessage(playerid, 0x9D000096, msg);
			SetPlayerPos(playerid,-221.059051,1408.984008,27.773437);
			SetPlayerInterior(playerid,18);
			SetPlayerVirtualWorld(playerid,0);
			TogglePlayerControllable(playerid,0);
		}
	}
	return 1;
}

IRCCMD:sethp(botid, channel[], user[], host[], params[])
{

	new string[128],	    ID,	    health;
	if(sscanf(params, "is", ID, health))
	    return IRC_Say(gGroupID, channel, "Use: !sethealth [ID] [HEALTH]");

	if(IRC_IsOp(botid, channel, user))
	if(!IsPlayerConnected(ID))
		return IRC_Say(gGroupID,channel,"4*** Error: Invalid player ID.");

	SetPlayerHealth(ID, health);

	new oname[MAX_PLAYER_NAME];
	GetPlayerName(ID, oname, sizeof(oname));

	format(string, sizeof(string), "%s has had thier health set to %.0f by IRC admin %s", oname, health, user);
	IRC_Say(gGroupID,channel,string);
	return 1;
}


IRCCMD:giveweapon(botid, channel[], user[], host, params[])
{
	new string[128],
	    ID,
	    weapid,
	    ammo;

	if(sscanf(params, "iii", ID, weapid, ammo))
		return IRC_Say(gGroupID, channel, "Use: !giveweapon [ID] [WEPID] [AMMO]");

	if(IRC_IsAdmin(botid, channel, user))
	if(!IsPlayerConnected(ID))
		return IRC_Say(gGroupID, channel,"4*** Error: Invalid player ID.");
	GivePlayerWeapon(ID, weapid, ammo);
	new oname[MAX_PLAYER_NAME];
	GetPlayerName(ID, oname, sizeof(oname));
	new weapname[24];
	GetWeaponName(weapid, weapname, 32);
	format(string, sizeof(string), "%s has been given a %d with %d ammo by IRC admin %s", oname, weapname, ammo, user);
	SendClientMessageToAll(red, string);
	IRC_Say(gGroupID,channel,string);
	return 1;
}

IRCCMD:score(botid, channel[], user[], host[], params[])
{

	new giveid,msg1[256];
	if(isnull(params)) return IRC_GroupSay(gGroupID,channel,"3Usage: !score <PlayerName/PlayerID>");
    giveid = ReturnUser(params);
	if(!IsPlayerConnected(giveid))return IRC_GroupSay(gGroupID,channel,"4*** Error: Invalid player ID.");
	format(msg1,256,"10>> Score from %s (ID:%d): %d",PlayerName(giveid),giveid,GetPlayerScore(giveid));
	IRC_GroupSay(gGroupID,channel,msg1);
	return 1;
}

IRCCMD:slap(botid, channel[], user[], host[], params[])
{

	if (IRC_IsOp(botid, channel, user))
	{
		new
			playerid,
			reason[64];
	 	new Float:pX,Float:pY,Float:pZ;
 		new Float:health;

		if (sscanf(params, "ds[64]", playerid, reason))
		{
			return 1;
		}

		if (IsPlayerConnected(playerid))
		{
			new
				msg[128],
				name[MAX_PLAYER_NAME];

			if (isnull(reason))
			{
				format(reason, sizeof(reason), "<no reason defined>");
			}

			GetPlayerName(playerid, name, sizeof(name));
			GetPlayerPos(playerid,pX,pY,pZ);
		    GetPlayerHealth(playerid,health);
			SetPlayerHealth(playerid,health-15);
            SetPlayerPos(playerid,pX,pY,pZ+15);
            GetPlayerHealth(playerid,health);
            format(msg, sizeof(msg), "02 %s has slapped by %s on IRC for %s - %.0f health left!", name, user, reason, health);
			IRC_GroupSay(gGroupID, channel, msg);



		}
	}
	return 1;
}



IRCCMD:osay(botid, channel[], user[], host[], params[])
{
	if (IRC_IsOwner(botid, channel, user))
	{
		if (!isnull(params))
		{
			new
				msg[128];
			format(msg, sizeof(msg), "0*** Owner on IRC: %s",params);
			IRC_GroupSay(gGroupID, channel, msg);
			format(msg, sizeof(msg), "*** Owner on IRC: %s",params);
			SendClientMessageToAll(0xFFFFFFAA, msg);
		}
	}
	return 1;
}

IRCCMD:asay(botid, channel[], user[], host[], params[])
{
	if (IRC_IsOp(botid, channel, user))
	{
		if (!isnull(params))
		{
			new
				msg[128];
			format(msg, sizeof(msg), "0*** Admin %s on IRC: %s",PlayerName,params);
			IRC_GroupSay(gGroupID, channel, msg);
			format(msg, sizeof(msg), "*** Admin on IRC: %s",params);
			SendClientMessageToAll(0xFFFFFFAA, msg);
		}
	}
	return 1;
}

IRCCMD:freeze(botid, channel[], user[], host[], params[])
{
	if(IRC_IsHalfop(botid, channel, user))
	{
		new
			playerid,
			reason[64];
		if (sscanf(params, "ds[64]", playerid, reason))
		{
			return 1;
		}
		if (IsPlayerConnected(playerid))
		{
			new
				msg[128],
				name[MAX_PLAYER_NAME];
			if (isnull(reason))
			{
				format(reason, sizeof(reason), "no reason (Abuse?)");
			}
			GetPlayerName(playerid, name, sizeof(name));
			format(msg, sizeof(msg), "02*** %s has been frozen by %s on IRC. (%s)", name, user, reason);
            IRC_GroupSay(gGroupID, channel, msg);
			TogglePlayerControllable(playerid,0);
		}
	}

	return 1;
}

IRCCMD:unfreeze(botid, channel[], user[], host[], params[])
{
	if (IRC_IsHalfop(botid, channel, user))
	{
		new
			playerid,
			reason[64];
		if (sscanf(params, "ds[64]", playerid, reason))
		{
			return 1;
		}
		if (IsPlayerConnected(playerid))
		{
			new
				msg[128],
				name[MAX_PLAYER_NAME];
			if (isnull(reason))
			{
				format(reason, sizeof(reason), "No Reason");
			}
			GetPlayerName(playerid, name, sizeof(name));
			format(msg, sizeof(msg), "02*** %s has been unfrozen by %s on IRC.", name, user);
			IRC_GroupSay(gGroupID, channel, msg);
			TogglePlayerControllable(playerid,1);
		}
	}
	return 1;
}


IRCCMD:gmx(botid, channel[], user[], host[], params[])
{
	if (IRC_IsAdmin(botid, channel, user))
	{
				new
					msg[128];
				format(msg, sizeof(msg), "The server was restarted by Admin %s.", user);
				IRC_GroupSay(gGroupID, channel, msg);
				SendRconCommand("gmx");
				SendClientMessageToAll(0xFF0000FF, msg);
	}
	return 1;
}



IRCCMD:unbanip(botid, channel[], user[], host[], params[])
{
	new IP[256],msg1[256],msg2[256],Reason[256],msg[100];
	if(IRC_IsAdmin(botid, channel, user))
 	if(sscanf(params, "sz",IP,Reason))
    return IRC_GroupSay(gGroupID,channel,"3Usage: !unbanip <IP> <Reason [Optional]>");
	if(!IsStringIP(IP))
	return IRC_GroupSay(gGroupID,channel,"4*** Error: Invalid IP.");
	if(!strlen(Reason)) {
		format(msg1,sizeof(msg1),"4*** %s (IRC) unbanned the ip %s",user,IP);
		format(msg2,sizeof(msg2),"*** %s (IRC) unbanned the ip %s",user,IP);
	}
	else {
	    format(msg1,sizeof(msg1),"4*** %s (IRC) unbanned the ip %s, reason: %s.",user,IP,Reason);
		format(msg2,sizeof(msg2),"*** %s (IRC) unbanned the ip %s, reason: %s.",user,IP,Reason);
	}
	IRC_GroupSay(gGroupID,channel,msg1);
	format(msg,256,"unbanip %s",IP);
	SendRconCommand(msg);
	SendRconCommand("reloadbans");
	return 1;
}

IRCCMD:banip(botid, channel[], user[], host[], params[])
{
	new IP[256],msg1[256],msg2[256],Reason[256],msg[100];

	if(IRC_IsOp(botid, channel, user))
 	if(sscanf(params, "sz",IP,Reason)) return IRC_GroupSay(gGroupID,channel,"3Usage: !banip <IP> <Reason [Optional]>");
	if(!IsStringIP(IP)) return IRC_GroupSay(gGroupID,channel,"4*** Error: Invalid IP.");
	if(!strlen(Reason)) {
		format(msg1,sizeof(msg1),"4*** %s (IRC) banned the ip %s",user,IP);
		format(msg2,sizeof(msg2),"*** %s (IRC) banned the ip %s",user,IP);
	}
	else {
	    format(msg1,sizeof(msg1),"4*** %s (IRC) banned the ip %s, reason: %s.",user,IP,Reason);
		format(msg2,sizeof(msg2),"*** %s (IRC) banned the ip %s, reason: %s.",user,IP,Reason);
	}
	IRC_GroupSay(gGroupID,channel,msg1);
	format(msg,256,"banip %s",IP);
	SendRconCommand(msg);
	return 1;
}

IRCCMD:explode(botid, channel[], user[], host[], params[])
{
	new string[128],
	    ID;
    if(sscanf(params, "i", ID))
	    return IRC_GroupSay(gGroupID, channel, "Use: !explode [ID]");
	if(IRC_IsOp(botid, channel, user))
	if(!IsPlayerConnected(ID))
		return IRC_GroupSay(gGroupID, channel,"4*** Error: Invalid player ID.");

	new Float:x, Float:y, Float:z;
	GetPlayerPos(ID, x, y, z);
	CreateExplosion(x, y, z, 10, 0);

	new oname[MAX_PLAYER_NAME];
	GetPlayerName(ID, oname, sizeof(oname));

	format(string, sizeof(string), "%s has been nuked %s", oname, user);
	IRC_GroupSay(gGroupID,channel,string);
	return 1;
}

IRCCMD:givemoney(botid, channel[], user[], host[], params[])
{
	new string[128],
	    ID,
	    amount;

	if(sscanf(params, "ii", ID, amount))
	    return IRC_GroupSay(gGroupID, channel, "Use: !givemoney [ID] [AMMOUNT]");

	if(IRC_IsOp(botid,channel,user))

	if(!IsPlayerConnected(ID))
		return IRC_GroupSay(gGroupID, channel,"4*** Error: Invalid player ID.");

	GivePlayerMoney(ID, amount);

	new oname[MAX_PLAYER_NAME];
	GetPlayerName(ID, oname, sizeof(oname));

	format(string, sizeof(string), "\"%s\" has been given $%d by IRC admin \"%s\"", oname, amount, user);
	IRC_GroupSay(gGroupID,channel,string);
	return 1;
}

IRCCMD:setname(botid, channel[], user[], host[], params[])
{

	new string[128],	    ID,	    newname[32];
	if(sscanf(params, "is", ID, newname))
	    return IRC_GroupSay(gGroupID, channel, "Use: !setname [ID] [NAME]");

	if(IRC_IsOwner(botid, channel, user))
	if(!IsPlayerConnected(ID))
		return IRC_GroupSay(gGroupID, channel,"4*** Error: Invalid player ID.");
	new oname[MAX_PLAYER_NAME];
	GetPlayerName(ID, oname, sizeof(oname));
	format(string, sizeof(string), "%s has had his name set to %s by IRC admin %s", oname, newname, user);
	SetPlayerName(ID, newname);
	IRC_GroupSay(gGroupID,channel,string);
	return 1;
}

IRCCMD:ip(botid, channel[], user[], host[], params[])
{
	new giveid, msg[256], Ip[256];

   	if(IRC_IsHalfop(botid, channel, user))
	if(isnull(params)) return IRC_GroupSay(gGroupID,channel,"3Usage: !ip <PlayerName/PlayerID>");
    giveid = ReturnUser(params);
	if(!IsPlayerConnected(giveid)) return IRC_GroupSay(gGroupID,channel,"4*** Error: Invalid player ID.");
	GetPlayerIp(giveid,Ip,256);
	format(msg,256,"3>> IP from %s (ID:%d):1 %s",PlayerName(giveid),giveid,Ip);
	IRC_GroupSay(gGroupID,channel,msg);
	return 1;
}

IRCCMD:pm(botid, channel[], user[], host[], params[])
{
	new giveid, msg[256],lolz1[256], lolz2[256], pon[256];

 	if(sscanf(params,"ss[256]",pon,msg)) return IRC_GroupSay(gGroupID,channel,"3Usage: !pm <PlayerName/PlayerID> <Message>");
    giveid = ReturnUser(pon);
	if(!IsPlayerConnected(giveid))
	return IRC_GroupSay(gGroupID,channel,"4*** Error: Invalid player ID.");
	format(lolz1,256, "*** PM from %s (IRC): %s",user, msg);
	format(lolz2,256, "5*** PM to %s (ID:%d):1 %s",PlayerName(giveid),giveid,msg);
   	SendClientMessage(giveid,green,lolz1);
	IRC_GroupSay(gGroupID, channel, lolz2);
   	return 1;
}

IRCCMD:hp(botid, channel[], user[], host[], params[])
{
    new pon[30], giveid, msg[256], Float: Health, Float: Armour;

	if(sscanf(params,"s",pon)) return
	IRC_GroupSay(gGroupID,channel,"3Usage: !hp <PlayerName/PlayerID>");
	giveid = ReturnUser(pon);
    if(!IsPlayerConnected(giveid)) return IRC_GroupSay(gGroupID,channel,"4*** Error: Invalid player ID.");
    GetPlayerHealth(giveid,Health);
	GetPlayerArmour(giveid,Armour);
	format(msg,256,"10>> (%s) Health: %s %.0f - Armour: %s %.0f",PlayerName(giveid),PercentBar(Health),Health,PercentBar(Armour),Armour);
    IRC_GroupSay(gGroupID,channel,msg);
	return 1;
}

IRCCMD:eject(botid, channel[], user[], host[], params[])
{
	new giveid,msg1[256],msg2[256],msg[256],pon[100];

    if(IRC_IsOp(botid, channel, user))
	if(sscanf(params,"sz",pon,msg)) return IRC_GroupSay(gGroupID,channel,"3Usage: !eject <PlayerName/PlayerID> <Reason [Optional]>");
    giveid = ReturnUser(pon);
	if(!IsPlayerConnected(giveid))
	return IRC_GroupSay(gGroupID,channel,"4*** Error: Invalid player ID.");
	if(!IsPlayerInAnyVehicle(giveid))
	return IRC_GroupSay(gGroupID,channel,"4*** Error: The selected id is not in a vehicle.");
	if(!strlen(msg)) {
		format(msg1,sizeof(msg1),"4*** %s (IRC) eject of the vehicle to %s (ID:%d).",user,PlayerName(giveid),giveid);
		format(msg2,sizeof(msg2),"*** %s (IRC) eject of the vehicle to %s (ID:%d).",user,PlayerName(giveid),giveid);
	}
	else {
	    format(msg1,sizeof(msg1),"4*** %s (IRC) eject of the vehicle to %s (ID:%d), reason: %s.",user,PlayerName(giveid),giveid,msg);
		format(msg2,sizeof(msg2),"*** %s (IRC) eject of the vehicle to %s (ID:%d), reason: %s.",user,PlayerName(giveid),giveid,msg);
	}
	IRC_GroupSay(gGroupID,channel,msg1);
	SendClientMessageToAll(red,msg2);
	RemovePlayerFromVehicle(giveid);
	return 1;
}

IRCCMD:getid(botid, channel[], user[], host[], params[])
{

	new GetPlayer[256],giveid,lolz1[256],lolz2[256];

	if(isnull(params)) return IRC_GroupSay(gGroupID,channel,"3Usage: !getid <PartOfName>");
	for (giveid=0; giveid<=MAX_PLAYERS; giveid++){
	    if (IsPlayerConnected(giveid)){
			GetPlayerName(giveid,GetPlayer,16);
			new space = (strfind(GetPlayer, params, true));
			if (space != -1){
				format(lolz1, sizeof(lolz1), "10>> Player whose name is %s 10has the ID: %d", GetPlayer, giveid);
				IRC_GroupSay(gGroupID,channel,lolz1);
				return 1;
			}
		}
 	}
 	format(lolz2, sizeof(lolz2),"4*** Error: Invalid Name", params[0]);
 	IRC_GroupSay(gGroupID,channel,lolz2);
	return 1;
}


IRCCMD:players(botid, channel[], user[], host[], params[])
{
	new count, PlayerNames[512];
	for(new i=0; i<=MAX_PLAYERS; i++)

	{
		if(IsPlayerConnected(i))
		{
		    if(count == 0)
		    {
		        new PlayerName1[MAX_PLAYER_NAME];
				GetPlayerName(i, PlayerName1, sizeof(PlayerName1));
			 	format(PlayerNames, sizeof(PlayerNames),"[%d] %s",i,PlayerName1);
				count++;
			}
			else
			{
			    new PlayerName1[MAX_PLAYER_NAME];
   				GetPlayerName(i, PlayerName1, sizeof(PlayerName1));
		 		format(PlayerNames, sizeof(PlayerNames),"%s, [%d] %s",PlayerNames,i,PlayerName1);
				count++;
			}
		}
		else { if(count == 0) format(PlayerNames, sizeof(PlayerNames),"No Players Online"); }
	}
    new counter = 0, msg[256], players = GetMaxPlayers();
	for(new i=0; i<=MAX_PLAYERS; i++)
	{
	    if(IsPlayerConnected(i)) counter++;
	}
	format(msg,256,"10>> Players Online [%d/%d]: %s",counter,players,PlayerNames);
 	IRC_GroupSay(gGroupID, channel, msg);
	return 1;
}

IRCCMD:kill(botid, channel[], user[], host[], params[])
{
	new giveid,msg1[255],msg2[255],Reason[256],pon[100];

	if(IRC_IsOp(botid, channel, user))
 	if(sscanf(params,"sz[255]",pon,Reason))
 	return IRC_GroupSay(gGroupID,channel,"3Usage: !kill <PlayerName/PlayerID> <Reason [Optional]>");
	giveid = ReturnUser(pon);
	if(!IsPlayerConnected(giveid))
	return IRC_GroupSay(gGroupID,channel,"4*** Error: Invalid Player ID");
    if(!strlen(Reason)) {
		format(msg1,sizeof(msg1),"4*** %s (IRC) killed player %s (ID:%d).",user,PlayerName(giveid),giveid);
		format(msg2,sizeof(msg2),"*** %s (IRC) killed player %s (ID:%d).",user,PlayerName(giveid),giveid);
	}
	else {
	    format(msg1,sizeof(msg1),"4*** %s (IRC) killed player %s (ID:%d), reason: %s.",user,PlayerName(giveid),giveid,Reason);
		format(msg2,sizeof(msg2),"*** %s (IRC) killed player %s (ID:%d), reason: %s.",user,PlayerName(giveid),giveid,Reason);
	}
	IRC_GroupSay(gGroupID,channel,msg1);
	SendClientMessageToAll(red,msg2);
    SetPlayerHealth(giveid,0);
	SetPlayerArmour(giveid,0);
	return 1;
}

IRCCMD:name(botid, channel[], user[], host[], params[])
{
	new msg1[256];
	if(isnull(params))

	return IRC_GroupSay(gGroupID,channel,"3Usage: !name <PlayerID>");
	if(!IsPlayerConnected(strval(params)))
	return IRC_GroupSay(gGroupID,channel,"4*** Error: Invalid Player ID");
	format(msg1,256,"10>> ID: %d 10is %s",strval(params),PlayerName(strval(params)));
 	IRC_GroupSay(gGroupID,channel,msg1);
	return 1;
}

IRCCMD:disarm(botid, channel[], user[], host[], params[])
{

	new giveid,msg[256],msg1[256],msg2[256],pon[100];

	if(IRC_IsOp(botid, channel, user))
	if(sscanf(params,"sz",pon,msg))
	return IRC_GroupSay(gGroupID,channel,"3Usage: !disarm <PlayerName/PlayerID> <Reason [Optional]>");
    giveid = ReturnUser(pon);
	if(!IsPlayerConnected(giveid))
	return IRC_GroupSay(gGroupID,channel,"4*** Error: Invalid player ID.");
	if(GetPlayerTotalWeapons(giveid) == 0)
	return IRC_GroupSay(gGroupID,channel,"4*** Error: The player has no weapon.");
    if(!strlen(msg)) {
		format(msg1,sizeof(msg1),"4*** %s (IRC) removed the weapons to %s (ID:%d).",user,PlayerName(giveid),giveid);
		format(msg2,sizeof(msg2),"*** %s (IRC) removed the weapons to %s (ID:%d).",user,PlayerName(giveid),giveid);
	}
	else {
	    format(msg1,sizeof(msg1),"4*** %s (IRC) removed the weapons to %s (ID:%d), reason: %s.",user,PlayerName(giveid),giveid,msg);
		format(msg2,sizeof(msg2),"*** %s (IRC) removed the weapons to %s (ID:%d), reason: %s.",user,PlayerName(giveid),giveid,msg);
	}
	SendClientMessageToAll(red,msg2);
	IRC_GroupSay(gGroupID,channel,msg1);
	ResetPlayerWeapons(giveid);
	return 1;
}

IRCCMD:time(botid, channel[], user[], host[], params[])
{
	new msg1[256],hour,minute,second,year,month,day;

	gettime(hour,minute,second);
	getdate(year,month,day);
	format(msg1,256,"10>> Day: %02d/%02d/%02d 10Hour: %02d:%02d:%02d",day,month,year,hour,minute,second);
	IRC_GroupSay(gGroupID,channel,msg1);
	return 1;
}

IRCCMD:money(botid, channel[], user[], host[], params[])
{
	new giveid,msg1[256];
	if(isnull(params))	return	IRC_GroupSay(gGroupID,channel,"3Usage: !money <PlayerName/PlayerID>");
    giveid = ReturnUser(params);

	if(!IsPlayerConnected(giveid))
	return IRC_GroupSay(gGroupID,channel,"4*** Error: Invalid player ID.");
	format(msg1,256,"10>> Money from %s (ID:%d): $%d",PlayerName(giveid),giveid,GetPlayerMoney(giveid));
	IRC_GroupSay(gGroupID,channel,msg1);
	return 1;
}

IRCCMD:fakemsg(botid, channel[], user[], host[], params[])
{
	new giveid,msg[256],lolz1[256],pon[100];

	if(IRC_IsAdmin(botid, channel, user))
 	if(sscanf(params,"ss",pon,msg))
 	return IRC_GroupSay(gGroupID,channel,"3Usage: !fakemsg <PlayerName/PlayerID> <Message>");
    giveid = ReturnUser(pon);
	if(!IsPlayerConnected(giveid))
	return IRC_GroupSay(gGroupID,channel,"4*** Error: Invalid player ID.");
	format(lolz1,256,"2[%i]7 %s: %s",giveid,PlayerName(giveid),msg);
	SendPlayerMessageToAll(giveid,msg);
	IRC_GroupSay(gGroupID,channel,lolz1);
   	return 1;
}

IRCCMD:ann(botid, channel[], user[], host[], params[])
{
    new lolz[256];

	if(IRC_IsOp(botid, channel, user))
 	if(!strlen(params))
 	return IRC_GroupSay(gGroupID, channel,"5Correct Usage: !ann <message>");
	format(lolz, 256, "2Announcement from %s: %s", user, params);
	IRC_GroupSay(gGroupID, channel, lolz);
	SendClientMessageToAll(blue,"-------------------------------------------");
	SendClientMessageToAll(red,params);
	SendClientMessageToAll(blue,"-------------------------------------------");
	return true;
}

IRCCMD:hostname(botid, channel[], user[], host[], params[])
{

	if(IRC_IsOwner(botid,channel,user))
	{
		new cmd[45];
		format(cmd,sizeof cmd,"hostname %s",params);
		SendRconCommand(cmd);
		IRC_GroupSay(gGroupID, channel,"2Server Hostname Set.");

	}
	else IRC_GroupSay(gGroupID, channel,"4Error: You must be owner to use this command.");
	return 1;
}


IRCCMD:mapname(botid, channel[], user[], host[], params[])
{

	if(IRC_IsOwner(botid,channel,user))
	{
		new cmd[45];
		format(cmd,sizeof cmd,"mapname %s",params);
		SendRconCommand(cmd);
		IRC_GroupSay(gGroupID, channel,"2Server Mapname Set.");

	}
	else IRC_GroupSay(gGroupID, channel,"4Error: You must be owner to use this command.");
	return 1;
}


IRCCMD:part(botid, channel[], user[], host[], params[])
{
	new id,msg[100],chan[100],msg1[100];

	if(IRC_IsOwner(botid,channel,user))
	if(sscanf(params,"ds",id,chan)) return IRC_GroupSay(gGroupID,channel,"3Usage: !part <channel>");
	if(id == 1) {
		if(strfind(chan,"#",true,0)!= -1)
		{
			format(msg,256,"3>> %s has left of the channel %s",BOT_1_NICKNAME, chan);
			IRC_GroupSay(gGroupID, channel, msg);
			IRC_PartChannel(botid,chan);
		}
		else
		{
			format(msg1,256,"#%s",chan);
			format(msg,256,"3>> %s has left of the channel %s",BOT_1_NICKNAME, msg1);
			IRC_GroupSay(gGroupID, channel, msg);
			IRC_PartChannel(botid,msg1);
		}
	}
	else return IRC_GroupSay(gGroupID,channel,"4*** Error: Invalid Bot ID. (1/2)");
	return 1;
}




IRCCMD:cmds(botid, channel[], user[], host[], params[])
{

	if(IRC_IsVoice(botid, channel, user))
	IRC_GroupSay(gGroupID, channel,"Voice Cmds: !name, !getid, !players, !pm, !say, !admins, !score, !credits");
	if(IRC_IsHalfop(botid, channel, user))
	IRC_GroupSay(gGroupID, channel, "Halfop Cmds: !Hp, !Ip, !Money, !Freeze, !UnFreeze, !kick, !Jail, !unjail, !warn, !admin.");
	if(IRC_IsOp(botid, channel, user))
	IRC_GroupSay(gGroupID, channel, "Op Cmds: !ban, !explode, !banip, !eject, !asay, !Kill, !disarm, !ann, !slap, !force, !xyz, !sethp, !text.");
	if(IRC_IsAdmin(botid, channel, user))
	IRC_GroupSay(gGroupID, channel, "Admin Cmds: !givemoney, !gmx, !fakemsg, !giveweapon,");
	if(IRC_IsOwner(botid, channel, user))
	IRC_GroupSay(gGroupID, channel, "Owner Cmds: !rcon, !setname, !osay, !hostname, !mapname, !raw, !part, !join, !quarantine.");
	return true;
}


IRCCMD:join(botid, channel[], user[], host[], params[])
{
	new id,msg[100],chan[100],pass[20],msg1[100];

	if(IRC_IsAdmin(botid, channel, user))
	if(sscanf(params,"dsz",id,chan,pass)) return IRC_GroupSay(gGroupID,channel,"3Usage: !join <channel>");
	if(id == 1)
	{
			if(strfind(chan,"#",true,0)!= -1)
		{
	    	if(IRC_IsUserOnChannel(botid,chan,BOT_1_NICKNAME) == 1)
			return IRC_GroupSay(gGroupID,channel,"4*** Error: Bot already in the channel.");
			format(msg,256,"3>> %s has joined to %s",BOT_1_NICKNAME, chan);
			IRC_GroupSay(gGroupID, channel, msg);
			if(!strlen(pass)) IRC_JoinChannel(botid,chan,"");
			else IRC_JoinChannel(botid,chan,pass);
		}
			else
		{
			format(msg1,256,"#%s",chan);
	    	if(IRC_IsUserOnChannel(botid,msg1,BOT_1_NICKNAME) == 1) return IRC_GroupSay(gGroupID,channel,"4*** Error: Bot already in the channel.");
			format(msg,256,"3>> %s has joined to %s",botid, msg1);
			IRC_GroupSay(gGroupID,channel, msg);
			if(!strlen(pass)) IRC_JoinChannel(botid,msg1,"");
			else IRC_JoinChannel(botid,msg1,pass);
		}
	}
	else return IRC_GroupSay(gGroupID,channel,"4*** Error: Invalid Bot ID.");
	return 1;
}



IRCCMD:xyz(botid, channel[], user[], host[], params[])
{
   	new giveid, msg1[256];

	if(IRC_IsAdmin(botid, channel, user))
	if(isnull(params)) return IRC_GroupSay(gGroupID,channel,"3Usage: !xyz <PlayerName/PlayerID>");
    giveid = ReturnUser(params);
	new Float:X,Float:Y,Float:Z,Float:A;
	GetPlayerPos(giveid,X,Y,Z);
	GetPlayerFacingAngle(giveid,A);
	format(msg1,256,"10>> Position from %s (ID:%d): X: %f10, Y: %f10, Z: %f10, A: %f",PlayerName(giveid),giveid,X,Y,Z,A);
	IRC_GroupSay(gGroupID,channel,msg1);
	return 1;
}

// EDIT THESE 3 Commands YOURSELF!
/*IRCCMD:admins(botid, channel[], user[], host[], params[])
{
	new count,lolz1[200];
    for (new giveid; giveid != GetMaxPlayers(); giveid ++)

    {
        if (!IsPlayerConnected(giveid)) continue;
        if (PlayerInfo[giveid][AdminLevel] < 1)
        {
            if(count == 0) IRC_GroupSay(gGroupID,channel,"3*** Admin's Online:1");
            GetPlayerName(giveid,lolz1,32);
            format(lolz1,200,"[%d] %s",giveid,lolz1);
            IRC_GroupSay(gGroupID,channel,lolz1);
            count++;
        }
    }
    if (count == 0) return IRC_GroupSay(gGroupID,channel,"4*** Unfortiantly there are no admins's online");
	return true;
}*/

/*
IRCCMD:jail(botid, channel[], user[], host[], params[])
{

	if(IRC_IsHalfop(botid, channel, user))
	{
		new
			playerid,
			reason[64];

		if (sscanf(params, "ds", playerid, reason))
		{
			return 1;
		}

		if (IsPlayerConnected(playerid))
		{
			new
				msg[128],
				name[MAX_PLAYER_NAME];

			if (isnull(reason))
			{
				format(reason, sizeof(reason), "no reason defined");
			}
			if(PlayerInfo[playerid][Jailed] == 1)
			{
			IRC_GroupSay(gGroupID, channel, "ERROR: This Player is already Jailed");
			}
			else
			{
			GetPlayerName(playerid, name, sizeof(name));
			format(msg, sizeof(msg), "02*** %s has been Jailed by %s on IRC. (%s)", name, user, reason);
			SendClientMessageToAll(COLOR_WHITE, msg);
			IRC_GroupSay(gGroupID, channel, msg);
   			PlayerInfo[playerid][Jailed] = 1;
			SendClientMessage(playerid,red,"Next, Learn The rules, Follow what the admins tell you");
			SetPlayerPos(playerid,3619.159,-716.425,1.069);
		    }


		}
	}

	return 1;
}

IRCCMD:unjail(botid, channel[], user[], host[], params[])
{

	if (IRC_IsHalfop(botid, channel, user))
	{
		new
			playerid,
			reason[64];

		if (sscanf(params, "ds", playerid, reason))
		{
			return 1;
		}

		if (IsPlayerConnected(playerid))
		{
			new
				msg[128],
				name[MAX_PLAYER_NAME];

			if (isnull(reason))
			{
				format(reason, sizeof(reason), "<no reason defined>");
			}
			if(PlayerInfo[playerid][Jailed] == 0) {
			IRC_Say(gGroupID, channel, "ERROR: Player isn't Jailed!"); }
			else {

			GetPlayerName(playerid, name, sizeof(name));
			format(msg, sizeof(msg), "02*** %s Has been unjaild by %s on The IRC. (%s)", name, user, reason);
			SendClientMessageToAll(COLOR_WHITE,msg);
			IRC_Say(gGroupID, channel, msg);
   			PlayerInfo[playerid][Jailed] = 0;
			SetPlayerHealth(playerid,0);
			}


		}
	}

	return 1;
}*/


IRCCMD:force(botid, channel[], user[], host[], params[])
{

	new giveid,msg1[255],msg2[255],Reason[256],pon[100];
	if(IRC_IsOp(botid, channel, user))

 	if(sscanf(params,"sz",pon,Reason))
 	return IRC_GroupSay(gGroupID,channel,"3Usage: !force <PlayerName/PlayerID> <Reason [Optional]>");
	giveid = ReturnUser(pon);
	if(!IsPlayerConnected(giveid))
	return IRC_GroupSay(gGroupID,channel,"4*** Error: Invalid Player ID");
    if(!strlen(Reason)) {
		format(msg1,sizeof(msg1),"4*** %s (IRC) Forced player %s (ID:%d).",user,PlayerName(giveid),giveid);
		format(msg2,sizeof(msg2),"*** %s (IRC) Forced player %s (ID:%d).",user,PlayerName(giveid),giveid);
	}
	else {
	    format(msg1,sizeof(msg1),"4*** %s (IRC) Forced player %s (ID:%d), reason: %s.",user,PlayerName(giveid),giveid,Reason);
		format(msg2,sizeof(msg2),"*** %s (IRC) Forced player %s (ID:%d), reason: %s.",user,PlayerName(giveid),giveid,Reason);
	}
	IRC_GroupSay(gGroupID,channel,msg1);
	SendClientMessageToAll(red,msg2);
    SetPlayerHealth(giveid,0);
	SetPlayerArmour(giveid,0);
	ForceClassSelection(giveid);
	return 1;
}

IRCCMD:raw(botid, channel[], user[], host[], params[])
{

    new id,msg[256],iparams[256];
	if(IRC_IsOwner(botid, channel, user))

	if(sscanf(params,"ds",id,iparams)) return IRC_GroupSay(gGroupID, channel, "3Usage: !ircraw <BotID [1/2]> <Params>");
	if(id == 1)
	{
    	format(msg,256,"3** RAW command for IRC:1 %s", iparams);
		IRC_Say(gGroupID, channel, msg);
		IRC_SendRaw(botid,iparams);
	}
	return 1;
}

IRCCMD:Credits(botid, channel[], user[], host[], params[])
{
	IRC_GroupSay(gGroupID, channel, " This IRC Script Has Been made by Porsche911!");
	return 1;
}
stock IsStringIP(string[])
{
	new icnt;
	new port;
	for(new i=0,j=strlen(string);i<j;i++){
		if(string[i] == '.') icnt++;
		else if(string[i] ==':') port++;
	}
	if(icnt == 3){
		if(port == 1) return 2;
		else if(port == 0) return 1;
	}
	return 0;
}

ReturnUser(text[])
{
	new pos = 0;
	while (text[pos] < 0x21)
	{
		if (text[pos] == 0) return INVALID_PLAYER_ID;
		pos++;
	}
	new userid = INVALID_PLAYER_ID;
	if (IsNumeric(text[pos]))
	{
		userid = strval(text[pos]);
		if (userid >=0 && userid < MAX_PLAYERS)
		{
			if(!IsPlayerConnected(userid))
			{
				userid = INVALID_PLAYER_ID;
			}
			else
			{
				return userid;
			}
		}
	}
	new giveid;
	new GetPlayer[256];
	for (giveid=0; giveid<=MAX_PLAYERS; giveid++)
	{
	    if (IsPlayerConnected(giveid))
	    {
			GetPlayerName(giveid,GetPlayer,16);
			new space = (strfind(GetPlayer, text,true));
			if (space != -1)
			{
				return giveid;
			}
		}
 	}
	return userid;
}

stock PercentBar(Float:data)
{
	new x[256];
	if 		(data >= 100)x = "[IIIIIIIIII]";
	else if (data >= 110)x = "HACKER, BAN!";
	else if (data >= 90) x = "[IIIIIIIII-]";
	else if (data >= 80) x = "[IIIIIIII--]";
	else if (data >= 70) x = "[IIIIIII---]";
	else if (data >= 60) x = "[IIIIII----]";
	else if (data >= 50) x = "[IIIII-----]";
	else if (data >= 40) x = "[IIII------]";
	else if (data >= 30) x = "[III-------]";
	else if (data >= 20) x = "[II--------]";
	else if (data >= 10) x = "[I---------]";
	else x = "[No HP FOUND!]";
	return x;
}

stock GetPlayerTotalWeapons(playerid)
{
	new TW = 0;
    for(new a=0; a <= 9; a++){
	    new weapon, ammo;
		GetPlayerWeaponData(playerid,a,weapon,ammo);
		if(ammo != 0 && weapon != 0){
			TW++;
		}
	}
	return TW;
}



/*
	Here is a very useful function by ****** for obtaining tokens from strings:
	sscanf. It is used in the channel commands above. I recommend using the
	plugin version (sscanf 2.0), however.
*/

stock
	sscanf(string[], format[], {Float,_}:...)
{
	#if defined isnull
		if (isnull(string))
	#else
		if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
	#endif
		{
			return format[0];
		}
	#pragma tabsize 4
	new
		formatPos = 0,
		stringPos = 0,
		paramPos = 2,
		paramCount = numargs(),
		delim = ' ';
	while (string[stringPos] && string[stringPos] <= ' ')
	{
		stringPos++;
	}
	while (paramPos < paramCount && string[stringPos])
	{
		switch (format[formatPos++])
		{
			case '\0':
			{
				return 0;
			}
			case 'i', 'd':
			{
				new
					neg = 1,
					num = 0,
					ch = string[stringPos];
				if (ch == '-')
				{
					neg = -1;
					ch = string[++stringPos];
				}
				do
				{
					stringPos++;
					if ('0' <= ch <= '9')
					{
						num = (num * 10) + (ch - '0');
					}
					else
					{
						return -1;
					}
				}
				while ((ch = string[stringPos]) > ' ' && ch != delim);
				setarg(paramPos, 0, num * neg);
			}
			case 'h', 'x':
			{
				new
					num = 0,
					ch = string[stringPos];
				do
				{
					stringPos++;
					switch (ch)
					{
						case 'x', 'X':
						{
							num = 0;
							continue;
						}
						case '0' .. '9':
						{
							num = (num << 4) | (ch - '0');
						}
						case 'a' .. 'f':
						{
							num = (num << 4) | (ch - ('a' - 10));
						}
						case 'A' .. 'F':
						{
							num = (num << 4) | (ch - ('A' - 10));
						}
						default:
						{
							return -1;
						}
					}
				}
				while ((ch = string[stringPos]) > ' ' && ch != delim);
				setarg(paramPos, 0, num);
			}
			case 'c':
			{
				setarg(paramPos, 0, string[stringPos++]);
			}
			case 'f':
			{
				setarg(paramPos, 0, _:floatstr(string[stringPos]));
			}
			case 'p':
			{
				delim = format[formatPos++];
				continue;
			}
			case '\'':
			{
				new
					end = formatPos - 1,
					ch;
				while ((ch = format[++end]) && ch != '\'') {}
				if (!ch)
				{
					return -1;
				}
				format[end] = '\0';
				if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
				{
					if (format[end + 1])
					{
						return -1;
					}
					return 0;
				}
				format[end] = '\'';
				stringPos = ch + (end - formatPos);
				formatPos = end + 1;
			}
			case 'u':
			{
				new
					end = stringPos - 1,
					id = 0,
					bool:num = true,
					ch;
				while ((ch = string[++end]) && ch != delim)
				{
					if (num)
					{
						if ('0' <= ch <= '9')
						{
							id = (id * 10) + (ch - '0');
						}
						else
						{
							num = false;
						}
					}
				}
				if (num && IsPlayerConnected(id))
				{
					setarg(paramPos, 0, id);
				}
				else
				{
					#if !defined foreach
						#define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
						#define __SSCANF_FOREACH__
					#endif
					string[end] = '\0';
					num = false;
					new
						name[MAX_PLAYER_NAME];
					id = end - stringPos;
					foreach (Player, playerid)
					{
						GetPlayerName(playerid, name, sizeof (name));
						if (!strcmp(name, string[stringPos], true, id))
						{
							setarg(paramPos, 0, playerid);
							num = true;
							break;
						}
					}
					if (!num)
					{
						setarg(paramPos, 0, INVALID_PLAYER_ID);
					}
					string[end] = ch;
					#if defined __SSCANF_FOREACH__
						#undef foreach
						#undef __SSCANF_FOREACH__
					#endif
				}
				stringPos = end;
			}
			case 's', 'z':
			{
				new
					i = 0,
					ch;
				if (format[formatPos])
				{
					while ((ch = string[stringPos++]) && ch != delim)
					{
						setarg(paramPos, i++, ch);
					}
					if (!i)
					{
						return -1;
					}
				}
				else
				{
					while ((ch = string[stringPos++]))
					{
						setarg(paramPos, i++, ch);
					}
				}
				stringPos--;
				setarg(paramPos, i, '\0');
			}
			default:
			{
				continue;
			}
		}
		while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
		{
			stringPos++;
		}
		while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
		{
			stringPos++;
		}
		paramPos++;
	}
	do
	{
		if ((delim = format[formatPos++]) > ' ')
		{
			if (delim == '\'')
			{
				while ((delim = format[formatPos++]) && delim != '\'') {}
			}
			else if (delim != 'z')
			{
				return delim;
			}
		}
	}
	while (delim > ' ');
	return 0;
}


stock Crash(playerid)
{
	return ApplyAnimation(playerid, "GANG", "DRUGS_BUY", 10, 0, 0, 0, 0, 5*1000);
}

stock PlayerName(playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    return name;
}

IsNumeric(const string[])
{
    for (new i = 0, j = strlen(string); i < j; i++)
	{
        if (string[i] > '9' || string[i] < '0') return 0;
    }
    return 1;
}
In that , i want to make if a player join irc then the message should show in the server.
can you please set it?
Reply
#8

pawn Код:
public
    OnPlayerConnect(playerid)
{
    new
        joinMsg[128],
        name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    format(joinMsg, sizeof(joinMsg), "02[%d] 03*** %s has joined the server.", playerid, name);
    IRC_GroupSay(gGroupID, IRC_CHANNEL, joinMsg);
    SendMessageToAll(playerid, joinMsg);
    return 1;
}
This might help you
Reply
#9

This message will show in server?
like " %s has joined the irc channel"
Reply
#10

Yes it will
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)