[Rezolvat] Plugin Nades

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
User avatar
pinky.
Membru, skill +1
Membru, skill +1
Posts: 163
Joined: 14 Apr 2013, 17:07
Detinator Steam: Da
CS Status: Busy!
Detinator server CS: STAR.CSBEST.RO
Location: Focşani
Has thanked: 2 times
Been thanked: 7 times
Contact:

29 Jul 2014, 01:59

Vreau să-mi modificaţi această sursă! Este de la pluginul silend_nades.amxx care scoate sunetul şi mesajul de la "Fire in the Hole"
Aş vrea ca din acest .sma să-mi fie scoase comenzile pentru playeri

Code: Select all

* Commands available for each player:
* say "/fithmsg" to toggle Nade-messages ON/OFF
* say "/fithsnd" to toggle Nade-sounds ON/OFF
* say "/fith" for an info message on how to enable/disable the sounds/messages
Adică să meargă automat cu cvarurile setate de mine, să nu mai aibă permisiunea playerul să-şi seteze după bunul plac.
cvarurile vreau să fie aceleaşi să nu umblaţi la ele!
Şi vreau să fie scoase mesajele HUD de la acest plugin!

Sursă:
Sursa | Afiseaza codul
/**********************************************************************************
* Author: regalis ([email protected])
*
*	Version: 1.0
*
*
*	Description:
*		This plugin removes the message "Fire in the hole" and the sound "Fire in the hole" for every nade.
*		Every player can for himself choose if he want to hear/read the Nade-Sounds/Messages by simple client-commands
*		Thats all :)
*
*
*	CVARS:
*		-amx_snilentnades	1|0 (1 = enabled | 0 = disabled)
*		-amx_sn_mode 0|1|2 (0 = S:OFF M:OFF | 1 = S:OFF M:ON | 2 = S:ON M:OFF)
*
*
*	Console-Commands available for admins:
*		-amx_sntoggle - Toggles Silent-Nades ON|OFF
*		-amx_snmode - Toggles between the 3 Silent-Nades Modes (S:ON M:OFF | S:OFF M:ON | S:OFF M:OFF)
*
*
*	Commands available for each player:
*		say "/fithmsg" to toggle Nade-messages ON/OFF
*		say "/fithsnd" to toggle Nade-sounds ON/OFF
*		say "/fith" for an info message on how to enable/disable the sounds/messages
*
*
*	Changelog:
*		V0.1.0 
*			@Release
*
*		V0.2.0 
*			+Added CS:CZ support, requested and suggested by mogel and Ryu2877
*
*		V0.2.5
*			+Added Client commands so that everyone can choose for himself if want to hear/read the Nade-sounds/messages
*			+Added a welcome-message with the client command to get help
*			+Added a help-message which displays info on how to enable/disable the sounds/messages
*
*		V0.3.0
*			+Added Admin commands to disable/enable the whole plugin
*			+Added Admin commands to toggle between 3 modes:
*					1. Sound: ON / Messages: OFF
*					2. Sound: OFF / Messages: ON
*					3. Sound: OFF / Messages: OFF
*
*
*		V0.3.5
*			+Added ShowSyncHudMsg() support
*			+Added set_user_info() support for saving settings even after roundstart|reconnect
*
*		V1.0
*			!Optimized code a little
*			@Got approved and therefore changed Version to 1.0
*
*
* Known Bugs:
*			-NONE-
*
*
*	TODO:
*			+Add a procedure to save the player preferences so they will not be cleared on changelevel or reconnect.
*
*
*	Credits:
*		Angelina for the initial idea to make this plugin!
*		mogel and Ryu2877 for giving me the hint to adjust the argument number to 6 for CS:CZ support
*		VEN for the idea that everyone should be able to enable/disable the Messages/Sounds for himself
*		"Message Logging 1.17" by Damaged Soul VERY usefull!!! *omg*
*		http://wiki.alliedmods.net/Main_Page
*		http://www.amxmodx.org/doc/
*
***********************************************************************************/

/*
Also a hint.
You can use set_user_info() to store personal client configuration into UserInfo buffer.
This will allow to keep configuration for every specific client until his actual disconnect.
Buffer will not be cleared on changelevel or reconnect. 
Note that better set a short key name and key value to not clutter up UserInfo buffer.

For example this is how i'd do that.
key name: "_fith", key value: "3". 3 is ((1<<0) | (1<<1)) - so this mean that audio and text is disabled.
If you familiar with bitwise operations you'll get what i mean and how to deal with it.
If not then you can do it in similar manner but without bitwise operations.
And also maybe make amx_silentnades CVar functionality in the same manner to provide more flexibility.
If you don't like digits you can use for example "ab" letters/flags. 
But again it will be converted into bitwise-like form if you going to use read_flags().

If you interested in learning more about bitwise operations you can visit this page
http://wiki.amxmodx.org/index.php/Pawn
It's cover Pawn scripting basics.


Let's say that you have a CVar: my_cvar "ab"
You get CVar value and then do: 

new flags = read_flags(cvar_value)

And then:

if (flags & (1<<0)) // check for "a" flag, (1<<0) == 1 and corresponds to "a" 
 // do something
if (flags & (1<<1)) // check for "b" flag, (1<<1) == 2 and corresponds to "b"   
 // do something


*/

#include <amxmodx>
#include <amxmisc>

#define MAXPLAYERS 32
#define Version "1.0"

new bool:g_player_FITH[MAXPLAYERS+1][2];
new g_sn_enabled;
new g_sn_mode;
new g_MsgSync;


public plugin_init()
{
	register_plugin("silentnades", Version, "regalis");

	register_message(get_user_msgid("TextMsg"), "block_FITH_message");
	register_message(get_user_msgid("SendAudio"), "block_FITH_audio");

	register_cvar("silentnades_version", Version, FCVAR_SERVER|FCVAR_SPONLY);
	g_sn_enabled = register_cvar("amx_silentnades", "1");
	g_sn_mode = register_cvar("amx_sn_mode", "0");
	register_concmd("amx_sntoggle", "toggle_sn", ADMIN_CVAR, "amx_sn_toggle - Toggle Silent-Nades ON/OFF");
	register_concmd("amx_snmode", "toggle_mode", ADMIN_CVAR, "amx_sn_mode - Toggle between modes RADIO/CHAT/BOTH");
	register_clcmd("say /fithmsg", "client_message");
	register_clcmd("say /fithsnd", "client_sound");
	register_clcmd("say /fith", "client_info");
	g_MsgSync = CreateHudSyncObj();
}


public toggle_mode(id,lvl,cid)
{
	if(!cmd_access(id, lvl, cid, 1)) return PLUGIN_HANDLED;
	new snmode = get_pcvar_num(g_sn_mode);	
	switch(snmode)
	{
		case 0:
		{
			set_pcvar_num(g_sn_mode, 1);
			set_fith_mode(false, true);
			console_print(id, "Silent-Nades:  SOUND-MESSAGES: -Disabled- / CHAT-MESSAGES: -Enabled-");
			log_message("[AMXX] Silent-Nades:  SOUND-MESSAGES: -Disabled- / CHAT-MESSAGES: -Enabled-");
		}
		case 1:
		{
			set_pcvar_num(g_sn_mode, 2);
			set_fith_mode(true, false);
			console_print(id, "Silent-Nades:  SOUND-MESSAGES: -Enabled- / CHAT-MESSAGES: -Disabled-");
			log_message("[AMXX] Silent-Nades:  SOUND-MESSAGES: -Enabled- / CHAT-MESSAGES: -Disabled-");
		}
		case 2:
		{
			set_pcvar_num(g_sn_mode, 0);
			set_fith_mode(false, false);
			console_print(id, "Silent-Nades:  SOUND-MESSAGES: -Disabled- / CHAT-MESSAGES: -Disabled-");
			log_message("[AMXX] Silent-Nades:  SOUND-MESSAGES: -Disabled- / CHAT-MESSAGES: -Disabled-");	
		}
	}
	return PLUGIN_HANDLED;
}


public toggle_sn(id,lvl,cid)
{
	if(!cmd_access(id, lvl, cid, 1)) return PLUGIN_HANDLED;
	if(!get_pcvar_num(g_sn_enabled))
	{
		set_pcvar_num(g_sn_enabled, 1);
		set_fith_mode(false, false);
		console_print(id, "Silent-Nades:  The Messages are now -Disabled-");
		log_message("[AMXX] Silent-Nades:  The Messages are now -Disabled-");
	}
	else 
	{
		set_pcvar_num(g_sn_enabled, 0);
		set_fith_mode(true, true);
		console_print(id, "Silent-Nades:  The Messages are now -Enabled-");
		log_message("[AMXX] Silent-Nades:  The Messages are now -Enabled-");
	}
	return PLUGIN_HANDLED;
}


set_fith_mode(bool:snd, bool:msg)
{
	new playercount, Players[MAXPLAYERS];
	get_players(Players, playercount);
	for(new i=0;i<playercount;i++)
	{		
		g_player_FITH[0] = msg;
		g_player_FITH[1] = snd;
	}	
}


public client_putinserver(id)
{
	if(!get_pcvar_num(g_sn_enabled)) return PLUGIN_HANDLED;
	set_task(10.0,"welcome",id);
	return PLUGIN_HANDLED;
}


public welcome(id)
{
	set_hudmessage(192, 192, 192, -1.0, 0.45, 2, 0.02, 10.0, 0.01, 0.1);
	switch(get_pcvar_num(g_sn_mode))
	{
		case 1:{
			ShowSyncHudMsg(id, g_MsgSync, "Welcome! Nade-Sounds are disabled! Type /fith for info!");
		}
		case 2:{
			ShowSyncHudMsg(id, g_MsgSync, "Welcome! Nade-Messages are disabled! Type /fith for info!");
		}
		default:{
			ShowSyncHudMsg(id, g_MsgSync, "Welcome! Nade-Sounds AND Messages are disabled! Type /fith for info!");
		}
	}
	return PLUGIN_HANDLED;
}


public client_info(id)
{
	if(!get_pcvar_num(g_sn_enabled)) return PLUGIN_HANDLED;
	set_hudmessage(192, 192, 192, -1.0, 0.45, 2, 0.02, 5.0, 0.01, 0.1);
	switch(get_pcvar_num(g_sn_mode))
	{
		case 1:{
			ShowSyncHudMsg(id, g_MsgSync, "For enable/disable Nade-Sounds type /fithsnd");
		}
		case 2:{
			ShowSyncHudMsg(id, g_MsgSync, "For enable/disable Nade-Messages type /fithmsg");
		}
		default:{
			ShowSyncHudMsg(id, g_MsgSync, "For enable/disable Nade-Sounds/Messages type /fithsnd or /fithmsg");
		}
	}
	return PLUGIN_HANDLED;
}


public client_message(id)
{
	if(!get_pcvar_num(g_sn_enabled)) return PLUGIN_HANDLED;
	set_hudmessage(20, 20, 200, -1.0, 0.0, 0, 0.0, 5.0, 0.0, 0.0);
	if(get_pcvar_num(g_sn_mode) == 1)
	{
		ShowSyncHudMsg(id, g_MsgSync, "Sorry, server has disabled this option only /fithsnd will work!");
	}
	else
	{
		if(!g_player_FITH[id][0])
		{
			g_player_FITH[id][0] = true;
		}
		else
		{
			g_player_FITH[id][0] = false;
		}
		ShowSyncHudMsg(id, g_MsgSync, "NADE-Messages: %s", (g_player_FITH[id][0] ? "ON" : "OFF"));
	}
	return PLUGIN_HANDLED;
}


public client_sound(id)
{
	if(!get_pcvar_num(g_sn_enabled)) return PLUGIN_HANDLED;
	set_hudmessage(20, 20, 200, -1.0, 0.0, 0, 0.0, 5.0, 0.0, 0.0);
	if(get_pcvar_num(g_sn_mode) == 2)
	{
		ShowSyncHudMsg(id, g_MsgSync, "Sorry, server has disabled this option only /fithmsg will work!");
	}
	else
	{
		if (!get_pcvar_num(g_sn_enabled)) return PLUGIN_HANDLED;
		if(!g_player_FITH[id][1])
		{
			g_player_FITH[id][1] = true;
		}
		else
		{
			g_player_FITH[id][1] = false;
		}
		ShowSyncHudMsg(id, g_MsgSync, "NADE-Sound: %s", (g_player_FITH[id][1] ? "ON" : "OFF"));
	}
	return PLUGIN_HANDLED;
}


/*
MessageBegin (TextMsg "77") (Destination "One<1>") (Args "5") (Entity "1") (Classname "player") (Netname "~regalis~") (Origin "0.000000 0.000000 0.000000")
Arg 1 (Byte "5")
Arg 2 (String "1")
Arg 3 (String "#Game_radio")
Arg 4 (String "~regalis~")
Arg 5 (String "#Fire_in_the_hole")
MessageEnd (TextMsg "77")
*/
public block_FITH_message(msg_id, msg_dest, entity)
{
	if(!get_pcvar_num(g_sn_enabled)) return PLUGIN_CONTINUE;
	if(get_pcvar_num(g_sn_mode) == 1) return PLUGIN_CONTINUE;
	if(get_msg_args() == 5)
	{
		if(get_msg_argtype(5) == ARG_STRING)
		{
			new value5[64];
			get_msg_arg_string(5 ,value5 ,63);
			if(equal(value5, "#Fire_in_the_hole"))
			{
				if(!g_player_FITH[entity][0]) return PLUGIN_HANDLED;
			}
		}
	}
	else if(get_msg_args() == 6)
	{
		if(get_msg_argtype(6) == ARG_STRING)
		{
			new value6[64];
			get_msg_arg_string(6 ,value6 ,63);
			if(equal(value6 ,"#Fire_in_the_hole"))
			{
				if(!g_player_FITH[entity][0]) return PLUGIN_HANDLED;
			}
		}
	}
	return PLUGIN_CONTINUE;
}


/*
MessageBegin (SendAudio "100") (Destination "One<1>") (Args "3") (Entity "1") (Classname "player") (Netname "~regalis~") (Origin "0.000000 0.000000 0.000000")
Arg 1 (Byte "1")
Arg 2 (String "%!MRAD_FIREINHOLE")
Arg 3 (Short "100")
MessageEnd (SendAudio "100")
*/
public block_FITH_audio(msg_id, msg_dest, entity)
{
	if(!get_pcvar_num(g_sn_enabled)) return PLUGIN_CONTINUE;
	if(get_pcvar_num(g_sn_mode) == 2) return PLUGIN_CONTINUE;
	if(get_msg_args() == 3)
	{
		if(get_msg_argtype(2) == ARG_STRING)
		{
			new value2[64];
			get_msg_arg_string(2 ,value2 ,63);
			if(equal(value2 ,"%!MRAD_FIREINHOLE"))
			{
				if(!g_player_FITH[entity][1]) return PLUGIN_HANDLED;
			}
		}
	}
	return PLUGIN_CONTINUE;
}
Last edited by Vlad eXtream on 29 Jul 2014, 16:03, edited 2 times in total.
Reason: #rezolvat.
RoyalServer
User avatar
Awakening
eXtream Mod
eXtream Mod
Posts: 3933
Joined: 06 Apr 2010, 11:01
Detinator Steam: Da
CS Status: Plictiseala
Detinator server CS: Adio cs
SteamID: eliara
Reputatie: eXtream Mod
Fost Manager VEST.eXtream.Ro
Fost Manager ZM.eXtream.Ro
Membru Club eXtreamCS (6 luni)
Nume anterior: CRISTIAN
Location: Bucuresti
Discord: m_i3
Has thanked: 151 times
Been thanked: 344 times

29 Jul 2014, 02:05

Mutat in Programarea CS-ului / Modificari pluginuri

Daca vrei sa scoti de tot acele comenzi, poti scoate din sursa pluginului urmatoarele

Code: Select all

	register_clcmd("say /fithmsg", "client_message");
	register_clcmd("say /fithsnd", "client_sound");
	register_clcmd("say /fith", "client_info");
User avatar
pinky.
Membru, skill +1
Membru, skill +1
Posts: 163
Joined: 14 Apr 2013, 17:07
Detinator Steam: Da
CS Status: Busy!
Detinator server CS: STAR.CSBEST.RO
Location: Focşani
Has thanked: 2 times
Been thanked: 7 times
Contact:

29 Jul 2014, 02:08

Asta ştiu că trebuie făcut, dar îmi dă eroare!

+ că vreau să scot şi mesajele! :)
User avatar
w3zoo_RedX
Membru, skill +2
Membru, skill +2
Posts: 737
Joined: 21 Dec 2013, 22:16
Detinator Steam: Da
CS Status: Scripter CS.
Detinator server CS: PM.
SteamID: PM.
Location: Bucuresti sector 2
Has thanked: 45 times
Been thanked: 45 times
Contact:

29 Jul 2014, 07:03

| Afiseaza codul
#include <amxmodx>
#include <amxmisc>

#define MAXPLAYERS 32
#define Version "1.0"

new bool:g_player_FITH[MAXPLAYERS+1][2];
new g_sn_enabled;
new g_sn_mode;


public plugin_init()
{
	register_plugin("silentnades", Version, "regalis");

	register_message(get_user_msgid("TextMsg"), "block_FITH_message");
	register_message(get_user_msgid("SendAudio"), "block_FITH_audio");

	register_cvar("silentnades_version", Version, FCVAR_SERVER|FCVAR_SPONLY);
	g_sn_enabled = register_cvar("amx_silentnades", "1");
	g_sn_mode = register_cvar("amx_sn_mode", "0");
	register_concmd("amx_sntoggle", "toggle_sn", ADMIN_CVAR, "amx_sn_toggle - Toggle Silent-Nades ON/OFF");
	register_concmd("amx_snmode", "toggle_mode", ADMIN_CVAR, "amx_sn_mode - Toggle between modes RADIO/CHAT/BOTH");
}


public toggle_mode(id,lvl,cid)
{
	if(!cmd_access(id, lvl, cid, 1)) return PLUGIN_HANDLED;
	new snmode = get_pcvar_num(g_sn_mode);	
	switch(snmode)
	{
		case 0:
		{
			set_pcvar_num(g_sn_mode, 1);
			set_fith_mode(false, true);
			console_print(id, "Silent-Nades:  SOUND-MESSAGES: -Disabled- / CHAT-MESSAGES: -Enabled-");
			log_message("[AMXX] Silent-Nades:  SOUND-MESSAGES: -Disabled- / CHAT-MESSAGES: -Enabled-");
		}
		case 1:
		{
			set_pcvar_num(g_sn_mode, 2);
			set_fith_mode(true, false);
			console_print(id, "Silent-Nades:  SOUND-MESSAGES: -Enabled- / CHAT-MESSAGES: -Disabled-");
			log_message("[AMXX] Silent-Nades:  SOUND-MESSAGES: -Enabled- / CHAT-MESSAGES: -Disabled-");
		}
		case 2:
		{
			set_pcvar_num(g_sn_mode, 0);
			set_fith_mode(false, false);
			console_print(id, "Silent-Nades:  SOUND-MESSAGES: -Disabled- / CHAT-MESSAGES: -Disabled-");
			log_message("[AMXX] Silent-Nades:  SOUND-MESSAGES: -Disabled- / CHAT-MESSAGES: -Disabled-");	
		}
	}
	return PLUGIN_HANDLED;
}


public toggle_sn(id,lvl,cid)
{
	if(!cmd_access(id, lvl, cid, 1)) return PLUGIN_HANDLED;
	if(!get_pcvar_num(g_sn_enabled))
	{
		set_pcvar_num(g_sn_enabled, 1);
		set_fith_mode(false, false);
		console_print(id, "Silent-Nades:  The Messages are now -Disabled-");
		log_message("[AMXX] Silent-Nades:  The Messages are now -Disabled-");
	}
	else 
	{
		set_pcvar_num(g_sn_enabled, 0);
		set_fith_mode(true, true);
		console_print(id, "Silent-Nades:  The Messages are now -Enabled-");
		log_message("[AMXX] Silent-Nades:  The Messages are now -Enabled-");
	}
	return PLUGIN_HANDLED;
}


set_fith_mode(bool:snd, bool:msg)
{
	new playercount, Players[MAXPLAYERS];
	get_players(Players, playercount);
	for(new i=0;i<playercount;i++)
	{		
		g_player_FITH[0] = msg;
		g_player_FITH[1] = snd;
	}	
}

public block_FITH_message(msg_id, msg_dest, entity)
{
	if(!get_pcvar_num(g_sn_enabled)) return PLUGIN_CONTINUE;
	if(get_pcvar_num(g_sn_mode) == 1) return PLUGIN_CONTINUE;
	if(get_msg_args() == 5)
	{
		if(get_msg_argtype(5) == ARG_STRING)
		{
			new value5[64];
			get_msg_arg_string(5 ,value5 ,63);
			if(equal(value5, "#Fire_in_the_hole"))
			{
				if(!g_player_FITH[entity][0]) return PLUGIN_HANDLED;
			}
		}
	}
	else if(get_msg_args() == 6)
	{
		if(get_msg_argtype(6) == ARG_STRING)
		{
			new value6[64];
			get_msg_arg_string(6 ,value6 ,63);
			if(equal(value6 ,"#Fire_in_the_hole"))
			{
				if(!g_player_FITH[entity][0]) return PLUGIN_HANDLED;
			}
		}
	}
	return PLUGIN_CONTINUE;
}


/*
MessageBegin (SendAudio "100") (Destination "One<1>") (Args "3") (Entity "1") (Classname "player") (Netname "~regalis~") (Origin "0.000000 0.000000 0.000000")
Arg 1 (Byte "1")
Arg 2 (String "%!MRAD_FIREINHOLE")
Arg 3 (Short "100")
MessageEnd (SendAudio "100")
*/
public block_FITH_audio(msg_id, msg_dest, entity)
{
	if(!get_pcvar_num(g_sn_enabled)) return PLUGIN_CONTINUE;
	if(get_pcvar_num(g_sn_mode) == 2) return PLUGIN_CONTINUE;
	if(get_msg_args() == 3)
	{
		if(get_msg_argtype(2) == ARG_STRING)
		{
			new value2[64];
			get_msg_arg_string(2 ,value2 ,63);
			if(equal(value2 ,"%!MRAD_FIREINHOLE"))
			{
				if(!g_player_FITH[entity][1]) return PLUGIN_HANDLED;
			}
		}
	}
	return PLUGIN_CONTINUE;
}
User avatar
pinky.
Membru, skill +1
Membru, skill +1
Posts: 163
Joined: 14 Apr 2013, 17:07
Detinator Steam: Da
CS Status: Busy!
Detinator server CS: STAR.CSBEST.RO
Location: Focşani
Has thanked: 2 times
Been thanked: 7 times
Contact:

29 Jul 2014, 11:24

Mulţumesc! Funcţionează!
PACE omule!
Post Reply

Return to “Modificari pluginuri”

  • Information
  • Who is online

    Users browsing this forum: Yandex [Bot] and 9 guests