Fire Deagle

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
USA_CA
Извън линия
Foreigner
Foreigner
Мнения: 106
Регистриран на: 19 Юли 2020, 18:02

Fire Deagle

Мнение от USA_CA » 17 Юни 2021, 11:58

Hello, help me make sure that the fire deagle is bought only for 1 round

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <file>
//#include <cstrike>
#include <fakemeta>
//#include <reapi>

// Настройки:
	
	// Флаг доступа:
		#define ACCESS_FLAG ADMIN_LEVEL_H
		
	// Мин. и макс. урон от огня:
		#define FIRE_DMG_MIN 4
		#define FIRE_DMG_MAX 8
		
	// Мин. и макс. длительность горения:
		#define FIRE_DUR_MIN 4
		#define FIRE_DUR_MAX 8
		
	// Путь к папке с моделями ("models/.../"):
		#define MODEL_PATH "models/awFireDeagle/"
		
	// Название моделей ("deagle" => v/p_deagle.mdl):
		#define MODEL_NAME "deagle"
		
	// Команда для вкл\выкл огненного дигла:
		#define SWITCH_CMD "say /fd"
		
	// Префикс плагина в чате:
		//new const pPrefix[] = "!g[!tFireDeagle!g]!t";
		
	// Поддержка режима FFA(Каждый сам за себя)
		#define SUPPORT_FFA 0
		
	// Множитель урона от попадания огненного дигла [Float]
		#define FIRE_SHOT_DMG 0.8


enum cvars{
	cFireDmgMin,
	cFireDmgMax,
	cFireDurMin,
	cFireDurMax,
	cAccessFlags,
	cModelsPath,
	cModelsName,
	cFfaMode,
	cDmgMult,
	cChatPrefix,
	cSwitchCmd,
	cPlayerGlow
}

new bool:pOnFire[33], bool:pFireDeagleActive[33];
new msgDamage, spFire[5];
new vModel[128], pModel[128];
new pCvars[cvars];
new pPrefix[128], mdlName[128], mdlPath[128];

#define PLUG_VER "1.2"
#define PLUG_NAME "Fire Deagle"

public plugin_init(){
	register_plugin(PLUG_NAME, PLUG_VER, "ArKaNeMaN");
	get_pcvar_string(pCvars[cChatPrefix], pPrefix, charsmax(pPrefix));
	static swtchCmd[128]; get_pcvar_string(pCvars[cSwitchCmd], swtchCmd, charsmax(swtchCmd));
	RegisterHam (Ham_TakeDamage, "player", "pTakeDamage", true);
	RegisterHam(Ham_Item_Deploy, "weapon_deagle", "pDeagleDeploy", true);
	RegisterHam(Ham_Killed,"player","pDeath");
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_deagle", "wPrimaryAttack", true);
	msgDamage = get_user_msgid("Damage");
	register_clcmd(swtchCmd, "fdSwitch");
	server_print("[%s v%s] loaded. ", PLUG_NAME, PLUG_VER);
}

public cfgExec(){
	pCvars[cFireDmgMin] = register_cvar("awFdFireDmgMin", "4");
	pCvars[cFireDmgMax] = register_cvar("awFdFireDmgMax", "8");
	pCvars[cFireDurMin] = register_cvar("awFdFireDurMin", "4");
	pCvars[cFireDurMax] = register_cvar("awFdFireDurMax", "8");
	pCvars[cAccessFlags] = register_cvar("awFdAccessFlags", "t");
	pCvars[cModelsPath] = register_cvar("awFdModelsPath", "models/awFireDeagle/");
	pCvars[cModelsName] = register_cvar("awFdModelsName", "deagle");
	pCvars[cFfaMode] = register_cvar("awFdFfaMode", "0");
	pCvars[cDmgMult] = register_cvar("awFdDmgMult", "1.0");
	pCvars[cChatPrefix] = register_cvar("awFdChatPrefix", "!g[!tFireDeagle!g]!t");
	pCvars[cSwitchCmd] = register_cvar("awFdSwitchCmd", "say /fd");
	pCvars[cPlayerGlow] = register_cvar("awFdPlayerGlow", "1");
	
	static cfgDir[32], cfgFileFullName[64];
	get_configsdir(cfgDir, charsmax(cfgDir));
	formatex(cfgFileFullName, charsmax(cfgFileFullName), "%s/awFireDeagle.cfg", cfgDir);
	if(file_exists(cfgFileFullName)){
		server_cmd("exec %s", cfgFileFullName);
		server_exec();
	}
	else{
		server_print("[%s v%s] [Error] [Config file not found (%s)] [Plugin paused]", PLUG_NAME, PLUG_VER, cfgFileFullName);
		pause("d");
	}
}

public wPrimaryAttack(weapon){
	static id; id = get_pdata_cbase(weapon, 41, 4);
	if(pFireDeagleActive[id] && get_user_flags(id) & get_pcvar_flags(pCvars[cAccessFlags])) emit_sound(id, CHAN_WEAPON, "awFireDeagle/shot.wav", 1.0, ATTN_NORM, 0, 100);
}

public fdSwitch(id){
	if(get_user_flags(id) & get_pcvar_flags(pCvars[cAccessFlags])){
		static name[32]; get_user_name(id, name, charsmax(name));
		pFireDeagleActive[id] = !pFireDeagleActive[id];
		printColorChat(id, "%s Огненный дигл !g%s!t.", pPrefix, pFireDeagleActive[id] ? "активирован" : "деактивирован");
		if(get_user_weapon(id) == CSW_DEAGLE){
			if(pFireDeagleActive[id]) setFireModel(id);
			else resetDeagleModel(id);
		}
	}
	else printColorChat(id, "%s Нет доступа!", pPrefix);
}

public plugin_natives() register_native("fdIsUserOnFire", "nativeIsUserOnFire");

public nativeIsUserOnFire(pluginId, param) return pOnFire[get_param(1)] ? 1 : 0;

public plugin_precache(){
	cfgExec();
	get_pcvar_string(pCvars[cModelsPath], mdlPath, charsmax(mdlPath));
	get_pcvar_string(pCvars[cModelsName], mdlName, charsmax(mdlName));
	for(new i = 0; i < 1; i++){
		static fileName[128]; formatex(fileName, charsmax(fileName), "sprites/reapi_molotov/fire.spr", i+1);
		spFire[i] = precache_model(fileName);
	}
	/* 
	precache_sound("awFireDeagle/dmg1.wav");
	precache_sound("awFireDeagle/dmg2.wav");
	precache_sound("awFireDeagle/dmg3.wav");
	precache_sound("awFireDeagle/dmg4.wav");
	 */
	precache_sound("awFireDeagle/shot.wav");
	
	formatex(vModel, charsmax(vModel), "%sv_%s.mdl", mdlPath, mdlName);
	if(file_exists(vModel)) precache_model(vModel);
	else formatex(vModel, charsmax(vModel), "");
	
	formatex(pModel, charsmax(pModel), "%sp_%s.mdl", mdlPath, mdlName);
	if(file_exists(pModel)) precache_model(pModel);
	else formatex(pModel, charsmax(pModel), "");
}

public client_authorized(id) pFireDeagleActive[id] = false;

public pDeath(victim, attacker, corpse){
	static data[2]; data[0] = victim;
	pFireEnd(data);
	remove_task(victim);
} 

public pTakeDamage(victim, weapon, attacker, Float:damage, damagebits){
	if(!attacker || !victim || attacker == victim) return HAM_IGNORED;
	if(get_user_weapon(attacker) == CSW_DEAGLE && get_user_flags(attacker) & get_pcvar_flags(pCvars[cAccessFlags]) && pFireDeagleActive[attacker]){
		if(!pOnFire[victim]){
			if(get_user_team(attacker) != get_user_team(victim) || get_pcvar_num(pCvars[cFfaMode])){
				static data[2]; data[0] = victim; data[1] = attacker;
				pOnFire[victim] = true;
				igniteEffects(data);
				ignitePlayer(data);
				static fireDur; fireDur = random_num(get_pcvar_num(pCvars[cFireDurMin]), get_pcvar_num(pCvars[cFireDurMax]));
				if(get_pcvar_num(pCvars[cPlayerGlow])) set_user_rendering(victim, kRenderFxGlowShell, 240, 127, 19, kRenderNormal, 25);
				set_task(float(fireDur), "pFireEnd" , victim, data, 2);
				damage = damage*get_pcvar_float(pCvars[cDmgMult]);
				SetHamParamFloat(4, damage);
				return HAM_IGNORED;
			}
		}
	}
	return HAM_IGNORED;
}

public pFireEnd(data[]){
	pOnFire[data[0]] = false;
	set_user_rendering(data[0]);
}

public igniteEffects(data[]){
	
	new id = data[0];
		
	if(is_user_alive(id) && pOnFire[id]){
		static korigin[3]; get_user_origin(id, korigin);
		
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
		write_byte(17);
		write_coord(korigin[0]);
		write_coord(korigin[1]);
		write_coord(korigin[2]);
		write_short(spFire[random_num(0, 4)]);
		write_byte(6); ///размер спрайта
		write_byte(200); ///прозрачность спрайта
		message_end();
		
		set_task(0.1, "igniteEffects" , 0 , data, 2);
	}
	
	return PLUGIN_CONTINUE;
	
}

public ignitePlayer(data[]){
	
	new id = data[0];
	
	if(is_user_alive(id) && pOnFire[id]){
		
		new korigin[3];
		new pOrigin[3];
		
		get_user_origin(id, korigin);
		
		ExecuteHam(Ham_TakeDamage, data[0], data[1], data[1], float(random_num(get_pcvar_num(pCvars[cFireDmgMin]), get_pcvar_num(pCvars[cFireDmgMax]))), DMG_BURN);
		message_begin(MSG_ONE, msgDamage, {0, 0, 0}, id);
		write_byte(30);
		write_byte(30);
		write_long(1<<21);
		write_coord(korigin[0]);
		write_coord(korigin[1]);
		write_coord(korigin[2]);
		message_end();
		/* 
		static name[32]; get_user_name(id, name, charsmax(name));
		static sSound[128]; formatex(sSound, charsmax(sSound), "awFireDeagle/dmg%d.wav", random_num(1, 4));
		emit_sound(data[0], CHAN_VOICE, sSound, 0.8, ATTN_NORM, 0, PITCH_NORM);
		emit_sound(id, CHAN_ITEM, sSound, 0.6, ATTN_NORM, 0, PITCH_NORM);
		 */
		new players[32], inum = 0;
		get_players(players, inum, "a");
		for(new i = 0 ; i < inum; ++i){
			get_user_origin(players[i], pOrigin);
			if(get_distance(korigin, pOrigin) < 100){
				if(!pOnFire[players[i]]){
					ExecuteHam(Ham_TakeDamage, players[i], data[0], data[1], float(random_num(get_pcvar_num(pCvars[cFireDmgMin]), get_pcvar_num(pCvars[cFireDmgMax]))), DMG_BURN);
					message_begin(MSG_ONE, msgDamage, {0, 0, 0}, players[i]);
					write_byte(30);
					write_byte(30);
					write_long(1<<21);
					write_coord(pOrigin[0]);
					write_coord(pOrigin[1]);
					write_coord(pOrigin[2]);
					message_end();
					/* 
					static ssSound[128]; formatex(ssSound, charsmax(ssSound), "awFireDeagle/fire%d.wav", random_num(1, 4));
					emit_sound(players[i], CHAN_VOICE, ssSound, 0.8, ATTN_NORM, 0, PITCH_NORM);
					 */
					message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
					write_byte(17);
					write_coord(pOrigin[0]);
					write_coord(pOrigin[1]);
					write_coord(pOrigin[2]);
					write_short(spFire[random_num(0, 4)]);
					write_byte(20);
					write_byte(200);
					message_end();
				}
			}
		}
		set_task(1.0, "ignitePlayer" , 0, data, 2);
	}
	return PLUGIN_CONTINUE;
}

public pDeagleDeploy(weapon){
	static id; id = get_pdata_cbase(weapon, 41, 4);
	setFireModel(id);
	return HAM_IGNORED;
}

public setFireModel(id){
	if(pFireDeagleActive[id] && get_user_flags(id) & get_pcvar_flags(pCvars[cAccessFlags])){
		if(vModel[0]) set_pev(id, pev_viewmodel2, vModel);
		if(pModel[0]) set_pev(id, pev_weaponmodel2, pModel);
		return true;
	}
	return false;
}

public resetDeagleModel(id){
	set_pev(id, pev_viewmodel2, "models/v_deagle.mdl");
	set_pev(id, pev_weaponmodel2, "models/p_deagle.mdl");
}

stock printColorChat(const index, const input[], any:...){
	#define gmsg_SayText 76
	static msg[191];
	new count = 1, players[32];
	vformat(msg, 190, input, 3);
	replace_all(msg, sizeof(msg), "!g", "^4");
	replace_all(msg, sizeof(msg), "!t", "^3");
	replace_all(msg, sizeof(msg), "!n", "^1");
	if(index) players[0] = index; else get_players(players, count, "ch");
	for(new i = 0; i < count; i++){
		if(!is_user_connected(players[i])) return;
		message_begin(MSG_ONE_UNRELIABLE, gmsg_SayText, _, players[i]);
		write_byte(players[i]);
		write_string(msg);
		message_end();
	}
}

Аватар
YankoNL
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 06 Апр 2017, 09:07
Местоположение: Варна
Се отблагодари: 22 пъти
Получена благодарност: 9 пъти

Fire Deagle

Мнение от YankoNL » 23 Юни 2021, 17:21

I haven't tested it in game, but it compiles fine. Here:

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <file>
//#include <cstrike>
#include <fakemeta>
//#include <reapi>

// Настройки:
	
	// Флаг доступа:
		#define ACCESS_FLAG ADMIN_LEVEL_H
		
	// Мин. и макс. урон от огня:
		#define FIRE_DMG_MIN 4
		#define FIRE_DMG_MAX 8
		
	// Мин. и макс. длительность горения:
		#define FIRE_DUR_MIN 4
		#define FIRE_DUR_MAX 8
		
	// Путь к папке с моделями ("models/.../"):
		#define MODEL_PATH "models/awFireDeagle/"
		
	// Название моделей ("deagle" => v/p_deagle.mdl):
		#define MODEL_NAME "deagle"
		
	// Команда для вкл\выкл огненного дигла:
		#define SWITCH_CMD "say /fd"
		
	// Префикс плагина в чате:
		//new const pPrefix[] = "!g[!tFireDeagle!g]!t";
		
	// Поддержка режима FFA(Каждый сам за себя)
		#define SUPPORT_FFA 0
		
	// Множитель урона от попадания огненного дигла [Float]
		#define FIRE_SHOT_DMG 0.8


enum cvars{
	cFireDmgMin,
	cFireDmgMax,
	cFireDurMin,
	cFireDurMax,
	cAccessFlags,
	cModelsPath,
	cModelsName,
	cFfaMode,
	cDmgMult,
	cChatPrefix,
	cSwitchCmd,
	cPlayerGlow
}

new bool:pOnFire[33], bool:pFireDeagleActive[33];
new msgDamage, spFire[5];
new vModel[128], pModel[128];
new pCvars[cvars];
new pPrefix[128], mdlName[128], mdlPath[128];

#define PLUG_VER "1.2"
#define PLUG_NAME "Fire Deagle"

public plugin_init(){
	register_plugin(PLUG_NAME, PLUG_VER, "ArKaNeMaN");
	get_pcvar_string(pCvars[cChatPrefix], pPrefix, charsmax(pPrefix));
	static swtchCmd[128]; get_pcvar_string(pCvars[cSwitchCmd], swtchCmd, charsmax(swtchCmd));
	RegisterHam (Ham_TakeDamage, "player", "pTakeDamage", true);
	RegisterHam(Ham_Item_Deploy, "weapon_deagle", "pDeagleDeploy", true);
	RegisterHam(Ham_Killed,"player","pDeath");
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_deagle", "wPrimaryAttack", true);
	RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
	msgDamage = get_user_msgid("Damage");
	register_clcmd(swtchCmd, "fdSwitch");
	server_print("[%s v%s] loaded. ", PLUG_NAME, PLUG_VER);
}

public cfgExec(){
	pCvars[cFireDmgMin] = register_cvar("awFdFireDmgMin", "4");
	pCvars[cFireDmgMax] = register_cvar("awFdFireDmgMax", "8");
	pCvars[cFireDurMin] = register_cvar("awFdFireDurMin", "4");
	pCvars[cFireDurMax] = register_cvar("awFdFireDurMax", "8");
	pCvars[cAccessFlags] = register_cvar("awFdAccessFlags", "t");
	pCvars[cModelsPath] = register_cvar("awFdModelsPath", "models/awFireDeagle/");
	pCvars[cModelsName] = register_cvar("awFdModelsName", "deagle");
	pCvars[cFfaMode] = register_cvar("awFdFfaMode", "0");
	pCvars[cDmgMult] = register_cvar("awFdDmgMult", "1.0");
	pCvars[cChatPrefix] = register_cvar("awFdChatPrefix", "!g[!tFireDeagle!g]!t");
	pCvars[cSwitchCmd] = register_cvar("awFdSwitchCmd", "say /fd");
	pCvars[cPlayerGlow] = register_cvar("awFdPlayerGlow", "1");
	
	static cfgDir[32], cfgFileFullName[64];
	get_configsdir(cfgDir, charsmax(cfgDir));
	formatex(cfgFileFullName, charsmax(cfgFileFullName), "%s/awFireDeagle.cfg", cfgDir);
	if(file_exists(cfgFileFullName)){
		server_cmd("exec %s", cfgFileFullName);
		server_exec();
	}
	else{
		server_print("[%s v%s] [Error] [Config file not found (%s)] [Plugin paused]", PLUG_NAME, PLUG_VER, cfgFileFullName);
		pause("d");
	}
}

public wPrimaryAttack(weapon){
	static id; id = get_pdata_cbase(weapon, 41, 4);
	if(pFireDeagleActive[id] && get_user_flags(id) & get_pcvar_flags(pCvars[cAccessFlags])) emit_sound(id, CHAN_WEAPON, "awFireDeagle/shot.wav", 1.0, ATTN_NORM, 0, 100);
}

public fdSwitch(id){
	if(get_user_flags(id) & get_pcvar_flags(pCvars[cAccessFlags])){
		static name[32]; get_user_name(id, name, charsmax(name));
		pFireDeagleActive[id] = !pFireDeagleActive[id];
		printColorChat(id, "%s Огненный дигл !g%s!t.", pPrefix, pFireDeagleActive[id] ? "активирован" : "деактивирован");
		if(get_user_weapon(id) == CSW_DEAGLE){
			if(pFireDeagleActive[id]) setFireModel(id);
			else resetDeagleModel(id);
		}
	}
	else printColorChat(id, "%s Нет доступа!", pPrefix);
}

public plugin_natives() register_native("fdIsUserOnFire", "nativeIsUserOnFire");

public nativeIsUserOnFire(pluginId, param) return pOnFire[get_param(1)] ? 1 : 0;

public plugin_precache(){
	cfgExec();
	get_pcvar_string(pCvars[cModelsPath], mdlPath, charsmax(mdlPath));
	get_pcvar_string(pCvars[cModelsName], mdlName, charsmax(mdlName));
	for(new i = 0; i < 1; i++){
		static fileName[128]; formatex(fileName, charsmax(fileName), "sprites/reapi_molotov/fire.spr", i+1);
		spFire[i] = precache_model(fileName);
	}
	/* 
	precache_sound("awFireDeagle/dmg1.wav");
	precache_sound("awFireDeagle/dmg2.wav");
	precache_sound("awFireDeagle/dmg3.wav");
	precache_sound("awFireDeagle/dmg4.wav");
	 */
	precache_sound("awFireDeagle/shot.wav");
	
	formatex(vModel, charsmax(vModel), "%sv_%s.mdl", mdlPath, mdlName);
	if(file_exists(vModel)) precache_model(vModel);
	else formatex(vModel, charsmax(vModel), "");
	
	formatex(pModel, charsmax(pModel), "%sp_%s.mdl", mdlPath, mdlName);
	if(file_exists(pModel)) precache_model(pModel);
	else formatex(pModel, charsmax(pModel), "");
}

public client_authorized(id) pFireDeagleActive[id] = false;

public pDeath(victim, attacker, corpse){
	static data[2]; data[0] = victim;
	pFireEnd(data);
	remove_task(victim);
} 

public pTakeDamage(victim, weapon, attacker, Float:damage, damagebits){
	if(!attacker || !victim || attacker == victim) return HAM_IGNORED;
	if(get_user_weapon(attacker) == CSW_DEAGLE && get_user_flags(attacker) & get_pcvar_flags(pCvars[cAccessFlags]) && pFireDeagleActive[attacker]){
		if(!pOnFire[victim]){
			if(get_user_team(attacker) != get_user_team(victim) || get_pcvar_num(pCvars[cFfaMode])){
				static data[2]; data[0] = victim; data[1] = attacker;
				pOnFire[victim] = true;
				igniteEffects(data);
				ignitePlayer(data);
				static fireDur; fireDur = random_num(get_pcvar_num(pCvars[cFireDurMin]), get_pcvar_num(pCvars[cFireDurMax]));
				if(get_pcvar_num(pCvars[cPlayerGlow])) set_user_rendering(victim, kRenderFxGlowShell, 240, 127, 19, kRenderNormal, 25);
				set_task(float(fireDur), "pFireEnd" , victim, data, 2);
				damage = damage*get_pcvar_float(pCvars[cDmgMult]);
				SetHamParamFloat(4, damage);
				return HAM_IGNORED;
			}
		}
	}
	return HAM_IGNORED;
}

public pFireEnd(data[]){
	pOnFire[data[0]] = false;
	set_user_rendering(data[0]);
}

public igniteEffects(data[]){
	
	new id = data[0];
		
	if(is_user_alive(id) && pOnFire[id]){
		static korigin[3]; get_user_origin(id, korigin);
		
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
		write_byte(17);
		write_coord(korigin[0]);
		write_coord(korigin[1]);
		write_coord(korigin[2]);
		write_short(spFire[random_num(0, 4)]);
		write_byte(6); ///размер спрайта
		write_byte(200); ///прозрачность спрайта
		message_end();
		
		set_task(0.1, "igniteEffects" , 0 , data, 2);
	}
	
	return PLUGIN_CONTINUE;
	
}

public ignitePlayer(data[]){
	
	new id = data[0];
	
	if(is_user_alive(id) && pOnFire[id]){
		
		new korigin[3];
		new pOrigin[3];
		
		get_user_origin(id, korigin);
		
		ExecuteHam(Ham_TakeDamage, data[0], data[1], data[1], float(random_num(get_pcvar_num(pCvars[cFireDmgMin]), get_pcvar_num(pCvars[cFireDmgMax]))), DMG_BURN);
		message_begin(MSG_ONE, msgDamage, {0, 0, 0}, id);
		write_byte(30);
		write_byte(30);
		write_long(1<<21);
		write_coord(korigin[0]);
		write_coord(korigin[1]);
		write_coord(korigin[2]);
		message_end();
		/* 
		static name[32]; get_user_name(id, name, charsmax(name));
		static sSound[128]; formatex(sSound, charsmax(sSound), "awFireDeagle/dmg%d.wav", random_num(1, 4));
		emit_sound(data[0], CHAN_VOICE, sSound, 0.8, ATTN_NORM, 0, PITCH_NORM);
		emit_sound(id, CHAN_ITEM, sSound, 0.6, ATTN_NORM, 0, PITCH_NORM);
		 */
		new players[32], inum = 0;
		get_players(players, inum, "a");
		for(new i = 0 ; i < inum; ++i){
			get_user_origin(players[i], pOrigin);
			if(get_distance(korigin, pOrigin) < 100){
				if(!pOnFire[players[i]]){
					ExecuteHam(Ham_TakeDamage, players[i], data[0], data[1], float(random_num(get_pcvar_num(pCvars[cFireDmgMin]), get_pcvar_num(pCvars[cFireDmgMax]))), DMG_BURN);
					message_begin(MSG_ONE, msgDamage, {0, 0, 0}, players[i]);
					write_byte(30);
					write_byte(30);
					write_long(1<<21);
					write_coord(pOrigin[0]);
					write_coord(pOrigin[1]);
					write_coord(pOrigin[2]);
					message_end();
					/* 
					static ssSound[128]; formatex(ssSound, charsmax(ssSound), "awFireDeagle/fire%d.wav", random_num(1, 4));
					emit_sound(players[i], CHAN_VOICE, ssSound, 0.8, ATTN_NORM, 0, PITCH_NORM);
					 */
					message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
					write_byte(17);
					write_coord(pOrigin[0]);
					write_coord(pOrigin[1]);
					write_coord(pOrigin[2]);
					write_short(spFire[random_num(0, 4)]);
					write_byte(20);
					write_byte(200);
					message_end();
				}
			}
		}
		set_task(1.0, "ignitePlayer" , 0, data, 2);
	}
	return PLUGIN_CONTINUE;
}

public pDeagleDeploy(weapon){
	static id; id = get_pdata_cbase(weapon, 41, 4);
	setFireModel(id);
	return HAM_IGNORED;
}

public setFireModel(id){
	if(pFireDeagleActive[id] && get_user_flags(id) & get_pcvar_flags(pCvars[cAccessFlags])){
		if(vModel[0]) set_pev(id, pev_viewmodel2, vModel);
		if(pModel[0]) set_pev(id, pev_weaponmodel2, pModel);
		return true;
	}
	return false;
}

public fw_PlayerSpawn_Post(id)
{
	pFireDeagleActive[id] = false
}

public resetDeagleModel(id){
	set_pev(id, pev_viewmodel2, "models/v_deagle.mdl");
	set_pev(id, pev_weaponmodel2, "models/p_deagle.mdl");
}

stock printColorChat(const index, const input[], any:...){
	#define gmsg_SayText 76
	static msg[191];
	new count = 1, players[32];
	vformat(msg, 190, input, 3);
	replace_all(msg, sizeof(msg), "!g", "^4");
	replace_all(msg, sizeof(msg), "!t", "^3");
	replace_all(msg, sizeof(msg), "!n", "^1");
	if(index) players[0] = index; else get_players(players, count, "ch");
	for(new i = 0; i < count; i++){
		if(!is_user_connected(players[i])) return;
		message_begin(MSG_ONE_UNRELIABLE, gmsg_SayText, _, players[i]);
		write_byte(players[i]);
		write_string(msg);
		message_end();
	}
}

Аватар
USA_CA
Извън линия
Foreigner
Foreigner
Мнения: 106
Регистриран на: 19 Юли 2020, 18:02

Fire Deagle

Мнение от USA_CA » 25 Юни 2021, 20:44

YankoNL написа: 23 Юни 2021, 17:21 I haven't tested it in game, but it compiles fine. Here:

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <file>
//#include <cstrike>
#include <fakemeta>
//#include <reapi>

// Настройки:
	
	// Флаг доступа:
		#define ACCESS_FLAG ADMIN_LEVEL_H
		
	// Мин. и макс. урон от огня:
		#define FIRE_DMG_MIN 4
		#define FIRE_DMG_MAX 8
		
	// Мин. и макс. длительность горения:
		#define FIRE_DUR_MIN 4
		#define FIRE_DUR_MAX 8
		
	// Путь к папке с моделями ("models/.../"):
		#define MODEL_PATH "models/awFireDeagle/"
		
	// Название моделей ("deagle" => v/p_deagle.mdl):
		#define MODEL_NAME "deagle"
		
	// Команда для вкл\выкл огненного дигла:
		#define SWITCH_CMD "say /fd"
		
	// Префикс плагина в чате:
		//new const pPrefix[] = "!g[!tFireDeagle!g]!t";
		
	// Поддержка режима FFA(Каждый сам за себя)
		#define SUPPORT_FFA 0
		
	// Множитель урона от попадания огненного дигла [Float]
		#define FIRE_SHOT_DMG 0.8


enum cvars{
	cFireDmgMin,
	cFireDmgMax,
	cFireDurMin,
	cFireDurMax,
	cAccessFlags,
	cModelsPath,
	cModelsName,
	cFfaMode,
	cDmgMult,
	cChatPrefix,
	cSwitchCmd,
	cPlayerGlow
}

new bool:pOnFire[33], bool:pFireDeagleActive[33];
new msgDamage, spFire[5];
new vModel[128], pModel[128];
new pCvars[cvars];
new pPrefix[128], mdlName[128], mdlPath[128];

#define PLUG_VER "1.2"
#define PLUG_NAME "Fire Deagle"

public plugin_init(){
	register_plugin(PLUG_NAME, PLUG_VER, "ArKaNeMaN");
	get_pcvar_string(pCvars[cChatPrefix], pPrefix, charsmax(pPrefix));
	static swtchCmd[128]; get_pcvar_string(pCvars[cSwitchCmd], swtchCmd, charsmax(swtchCmd));
	RegisterHam (Ham_TakeDamage, "player", "pTakeDamage", true);
	RegisterHam(Ham_Item_Deploy, "weapon_deagle", "pDeagleDeploy", true);
	RegisterHam(Ham_Killed,"player","pDeath");
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_deagle", "wPrimaryAttack", true);
	RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
	msgDamage = get_user_msgid("Damage");
	register_clcmd(swtchCmd, "fdSwitch");
	server_print("[%s v%s] loaded. ", PLUG_NAME, PLUG_VER);
}

public cfgExec(){
	pCvars[cFireDmgMin] = register_cvar("awFdFireDmgMin", "4");
	pCvars[cFireDmgMax] = register_cvar("awFdFireDmgMax", "8");
	pCvars[cFireDurMin] = register_cvar("awFdFireDurMin", "4");
	pCvars[cFireDurMax] = register_cvar("awFdFireDurMax", "8");
	pCvars[cAccessFlags] = register_cvar("awFdAccessFlags", "t");
	pCvars[cModelsPath] = register_cvar("awFdModelsPath", "models/awFireDeagle/");
	pCvars[cModelsName] = register_cvar("awFdModelsName", "deagle");
	pCvars[cFfaMode] = register_cvar("awFdFfaMode", "0");
	pCvars[cDmgMult] = register_cvar("awFdDmgMult", "1.0");
	pCvars[cChatPrefix] = register_cvar("awFdChatPrefix", "!g[!tFireDeagle!g]!t");
	pCvars[cSwitchCmd] = register_cvar("awFdSwitchCmd", "say /fd");
	pCvars[cPlayerGlow] = register_cvar("awFdPlayerGlow", "1");
	
	static cfgDir[32], cfgFileFullName[64];
	get_configsdir(cfgDir, charsmax(cfgDir));
	formatex(cfgFileFullName, charsmax(cfgFileFullName), "%s/awFireDeagle.cfg", cfgDir);
	if(file_exists(cfgFileFullName)){
		server_cmd("exec %s", cfgFileFullName);
		server_exec();
	}
	else{
		server_print("[%s v%s] [Error] [Config file not found (%s)] [Plugin paused]", PLUG_NAME, PLUG_VER, cfgFileFullName);
		pause("d");
	}
}

public wPrimaryAttack(weapon){
	static id; id = get_pdata_cbase(weapon, 41, 4);
	if(pFireDeagleActive[id] && get_user_flags(id) & get_pcvar_flags(pCvars[cAccessFlags])) emit_sound(id, CHAN_WEAPON, "awFireDeagle/shot.wav", 1.0, ATTN_NORM, 0, 100);
}

public fdSwitch(id){
	if(get_user_flags(id) & get_pcvar_flags(pCvars[cAccessFlags])){
		static name[32]; get_user_name(id, name, charsmax(name));
		pFireDeagleActive[id] = !pFireDeagleActive[id];
		printColorChat(id, "%s Огненный дигл !g%s!t.", pPrefix, pFireDeagleActive[id] ? "активирован" : "деактивирован");
		if(get_user_weapon(id) == CSW_DEAGLE){
			if(pFireDeagleActive[id]) setFireModel(id);
			else resetDeagleModel(id);
		}
	}
	else printColorChat(id, "%s Нет доступа!", pPrefix);
}

public plugin_natives() register_native("fdIsUserOnFire", "nativeIsUserOnFire");

public nativeIsUserOnFire(pluginId, param) return pOnFire[get_param(1)] ? 1 : 0;

public plugin_precache(){
	cfgExec();
	get_pcvar_string(pCvars[cModelsPath], mdlPath, charsmax(mdlPath));
	get_pcvar_string(pCvars[cModelsName], mdlName, charsmax(mdlName));
	for(new i = 0; i < 1; i++){
		static fileName[128]; formatex(fileName, charsmax(fileName), "sprites/reapi_molotov/fire.spr", i+1);
		spFire[i] = precache_model(fileName);
	}
	/* 
	precache_sound("awFireDeagle/dmg1.wav");
	precache_sound("awFireDeagle/dmg2.wav");
	precache_sound("awFireDeagle/dmg3.wav");
	precache_sound("awFireDeagle/dmg4.wav");
	 */
	precache_sound("awFireDeagle/shot.wav");
	
	formatex(vModel, charsmax(vModel), "%sv_%s.mdl", mdlPath, mdlName);
	if(file_exists(vModel)) precache_model(vModel);
	else formatex(vModel, charsmax(vModel), "");
	
	formatex(pModel, charsmax(pModel), "%sp_%s.mdl", mdlPath, mdlName);
	if(file_exists(pModel)) precache_model(pModel);
	else formatex(pModel, charsmax(pModel), "");
}

public client_authorized(id) pFireDeagleActive[id] = false;

public pDeath(victim, attacker, corpse){
	static data[2]; data[0] = victim;
	pFireEnd(data);
	remove_task(victim);
} 

public pTakeDamage(victim, weapon, attacker, Float:damage, damagebits){
	if(!attacker || !victim || attacker == victim) return HAM_IGNORED;
	if(get_user_weapon(attacker) == CSW_DEAGLE && get_user_flags(attacker) & get_pcvar_flags(pCvars[cAccessFlags]) && pFireDeagleActive[attacker]){
		if(!pOnFire[victim]){
			if(get_user_team(attacker) != get_user_team(victim) || get_pcvar_num(pCvars[cFfaMode])){
				static data[2]; data[0] = victim; data[1] = attacker;
				pOnFire[victim] = true;
				igniteEffects(data);
				ignitePlayer(data);
				static fireDur; fireDur = random_num(get_pcvar_num(pCvars[cFireDurMin]), get_pcvar_num(pCvars[cFireDurMax]));
				if(get_pcvar_num(pCvars[cPlayerGlow])) set_user_rendering(victim, kRenderFxGlowShell, 240, 127, 19, kRenderNormal, 25);
				set_task(float(fireDur), "pFireEnd" , victim, data, 2);
				damage = damage*get_pcvar_float(pCvars[cDmgMult]);
				SetHamParamFloat(4, damage);
				return HAM_IGNORED;
			}
		}
	}
	return HAM_IGNORED;
}

public pFireEnd(data[]){
	pOnFire[data[0]] = false;
	set_user_rendering(data[0]);
}

public igniteEffects(data[]){
	
	new id = data[0];
		
	if(is_user_alive(id) && pOnFire[id]){
		static korigin[3]; get_user_origin(id, korigin);
		
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
		write_byte(17);
		write_coord(korigin[0]);
		write_coord(korigin[1]);
		write_coord(korigin[2]);
		write_short(spFire[random_num(0, 4)]);
		write_byte(6); ///размер спрайта
		write_byte(200); ///прозрачность спрайта
		message_end();
		
		set_task(0.1, "igniteEffects" , 0 , data, 2);
	}
	
	return PLUGIN_CONTINUE;
	
}

public ignitePlayer(data[]){
	
	new id = data[0];
	
	if(is_user_alive(id) && pOnFire[id]){
		
		new korigin[3];
		new pOrigin[3];
		
		get_user_origin(id, korigin);
		
		ExecuteHam(Ham_TakeDamage, data[0], data[1], data[1], float(random_num(get_pcvar_num(pCvars[cFireDmgMin]), get_pcvar_num(pCvars[cFireDmgMax]))), DMG_BURN);
		message_begin(MSG_ONE, msgDamage, {0, 0, 0}, id);
		write_byte(30);
		write_byte(30);
		write_long(1<<21);
		write_coord(korigin[0]);
		write_coord(korigin[1]);
		write_coord(korigin[2]);
		message_end();
		/* 
		static name[32]; get_user_name(id, name, charsmax(name));
		static sSound[128]; formatex(sSound, charsmax(sSound), "awFireDeagle/dmg%d.wav", random_num(1, 4));
		emit_sound(data[0], CHAN_VOICE, sSound, 0.8, ATTN_NORM, 0, PITCH_NORM);
		emit_sound(id, CHAN_ITEM, sSound, 0.6, ATTN_NORM, 0, PITCH_NORM);
		 */
		new players[32], inum = 0;
		get_players(players, inum, "a");
		for(new i = 0 ; i < inum; ++i){
			get_user_origin(players[i], pOrigin);
			if(get_distance(korigin, pOrigin) < 100){
				if(!pOnFire[players[i]]){
					ExecuteHam(Ham_TakeDamage, players[i], data[0], data[1], float(random_num(get_pcvar_num(pCvars[cFireDmgMin]), get_pcvar_num(pCvars[cFireDmgMax]))), DMG_BURN);
					message_begin(MSG_ONE, msgDamage, {0, 0, 0}, players[i]);
					write_byte(30);
					write_byte(30);
					write_long(1<<21);
					write_coord(pOrigin[0]);
					write_coord(pOrigin[1]);
					write_coord(pOrigin[2]);
					message_end();
					/* 
					static ssSound[128]; formatex(ssSound, charsmax(ssSound), "awFireDeagle/fire%d.wav", random_num(1, 4));
					emit_sound(players[i], CHAN_VOICE, ssSound, 0.8, ATTN_NORM, 0, PITCH_NORM);
					 */
					message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
					write_byte(17);
					write_coord(pOrigin[0]);
					write_coord(pOrigin[1]);
					write_coord(pOrigin[2]);
					write_short(spFire[random_num(0, 4)]);
					write_byte(20);
					write_byte(200);
					message_end();
				}
			}
		}
		set_task(1.0, "ignitePlayer" , 0, data, 2);
	}
	return PLUGIN_CONTINUE;
}

public pDeagleDeploy(weapon){
	static id; id = get_pdata_cbase(weapon, 41, 4);
	setFireModel(id);
	return HAM_IGNORED;
}

public setFireModel(id){
	if(pFireDeagleActive[id] && get_user_flags(id) & get_pcvar_flags(pCvars[cAccessFlags])){
		if(vModel[0]) set_pev(id, pev_viewmodel2, vModel);
		if(pModel[0]) set_pev(id, pev_weaponmodel2, pModel);
		return true;
	}
	return false;
}

public fw_PlayerSpawn_Post(id)
{
	pFireDeagleActive[id] = false
}

public resetDeagleModel(id){
	set_pev(id, pev_viewmodel2, "models/v_deagle.mdl");
	set_pev(id, pev_weaponmodel2, "models/p_deagle.mdl");
}

stock printColorChat(const index, const input[], any:...){
	#define gmsg_SayText 76
	static msg[191];
	new count = 1, players[32];
	vformat(msg, 190, input, 3);
	replace_all(msg, sizeof(msg), "!g", "^4");
	replace_all(msg, sizeof(msg), "!t", "^3");
	replace_all(msg, sizeof(msg), "!n", "^1");
	if(index) players[0] = index; else get_players(players, count, "ch");
	for(new i = 0; i < count; i++){
		if(!is_user_connected(players[i])) return;
		message_begin(MSG_ONE_UNRELIABLE, gmsg_SayText, _, players[i]);
		write_byte(players[i]);
		write_string(msg);
		message_end();
	}
}
thank you))) can you also please make sure that the fire deagle model does not remain in the new round, and that there are no 2 pistols in the slot

Аватар
YankoNL
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 06 Апр 2017, 09:07
Местоположение: Варна
Се отблагодари: 22 пъти
Получена благодарност: 9 пъти

Fire Deagle

Мнение от YankoNL » 28 Юни 2021, 21:24

USA_CA написа: 25 Юни 2021, 20:44 thank you))) can you also please make sure that the fire deagle model does not remain in the new round, and that there are no 2 pistols in the slot
I also remove the unnecessary code.
Here, please try this and tell me if it's working fine :)

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <fun>
#include <file>
//#include <cstrike>
//#include <reapi>

#define PLUG_VER "1.2"
#define PLUG_NAME "Fire Deagle"

enum cvars
{
	cFireDmgMin,
	cFireDmgMax,
	cFireDurMin,
	cFireDurMax,
	cAccessFlags,
	cModelsPath,
	cModelsName,
	cFfaMode,
	cDmgMult,
	cChatPrefix,
	cSwitchCmd,
	cPlayerGlow
}

new bool:pOnFire[33], bool:pFireDeagleActive[33];
new msgDamage, spFire[5];
new vModel[128], pModel[128];
new pCvars[cvars];
new pPrefix[128], mdlName[128], mdlPath[128];

public plugin_init()
{
	register_plugin(PLUG_NAME, PLUG_VER, "ArKaNeMaN");
	get_pcvar_string(pCvars[cChatPrefix], pPrefix, charsmax(pPrefix));
	static swtchCmd[128]; get_pcvar_string(pCvars[cSwitchCmd], swtchCmd, charsmax(swtchCmd));
	
	RegisterHam(Ham_TakeDamage, "player", "pTakeDamage", true);
	RegisterHam(Ham_Item_Deploy, "weapon_deagle", "pDeagleDeploy", true);
	RegisterHam(Ham_Killed,"player","pDeath");
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_deagle", "wPrimaryAttack", true);
	RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1);
	
	msgDamage = get_user_msgid("Damage");
	register_clcmd(swtchCmd, "fdSwitch");
	server_print("[%s v%s] loaded. ", PLUG_NAME, PLUG_VER);
}

public cfgExec(){
	pCvars[cFireDmgMin] = register_cvar("awFdFireDmgMin", "4");
	pCvars[cFireDmgMax] = register_cvar("awFdFireDmgMax", "8");
	pCvars[cFireDurMin] = register_cvar("awFdFireDurMin", "4");
	pCvars[cFireDurMax] = register_cvar("awFdFireDurMax", "8");
	pCvars[cAccessFlags] = register_cvar("awFdAccessFlags", "t");
	pCvars[cModelsPath] = register_cvar("awFdModelsPath", "models/awFireDeagle/");
	pCvars[cModelsName] = register_cvar("awFdModelsName", "deagle");
	pCvars[cFfaMode] = register_cvar("awFdFfaMode", "0");
	pCvars[cDmgMult] = register_cvar("awFdDmgMult", "1.0");
	pCvars[cChatPrefix] = register_cvar("awFdChatPrefix", "!g[!tFireDeagle!g]!t");
	pCvars[cSwitchCmd] = register_cvar("awFdSwitchCmd", "say /fd");
	pCvars[cPlayerGlow] = register_cvar("awFdPlayerGlow", "1");
	
	static cfgDir[32], cfgFileFullName[64];
	get_configsdir(cfgDir, charsmax(cfgDir));
	formatex(cfgFileFullName, charsmax(cfgFileFullName), "%s/awFireDeagle.cfg", cfgDir);
	if(file_exists(cfgFileFullName)){
		server_cmd("exec %s", cfgFileFullName);
		server_exec();
	}
	else{
		server_print("[%s v%s] [Error] [Config file not found (%s)] [Plugin paused]", PLUG_NAME, PLUG_VER, cfgFileFullName);
		pause("d");
	}
}

public wPrimaryAttack(weapon){
	static id; id = get_pdata_cbase(weapon, 41, 4);
	if(pFireDeagleActive[id] && get_user_flags(id) & get_pcvar_flags(pCvars[cAccessFlags])) emit_sound(id, CHAN_WEAPON, "awFireDeagle/shot.wav", 1.0, ATTN_NORM, 0, 100);
}

public fdSwitch(id){
	if(get_user_flags(id) & get_pcvar_flags(pCvars[cAccessFlags])){
		drop_weapons(id, 2)
		
		static name[32]; get_user_name(id, name, charsmax(name));
		pFireDeagleActive[id] = !pFireDeagleActive[id];
		printColorChat(id, "%s Огненный дигл !g%s!t.", pPrefix, pFireDeagleActive[id] ? "активирован" : "деактивирован");
		if(get_user_weapon(id) == CSW_DEAGLE){
			if(pFireDeagleActive[id]) setFireModel(id);
			else resetDeagleModel(id);
		}
	}
	else printColorChat(id, "%s Нет доступа!", pPrefix);
}

public plugin_natives() register_native("fdIsUserOnFire", "nativeIsUserOnFire");

public nativeIsUserOnFire(pluginId, param) return pOnFire[get_param(1)] ? 1 : 0;

public plugin_precache(){
	cfgExec();
	get_pcvar_string(pCvars[cModelsPath], mdlPath, charsmax(mdlPath));
	get_pcvar_string(pCvars[cModelsName], mdlName, charsmax(mdlName));
	for(new i = 0; i < 1; i++){
		static fileName[128]; formatex(fileName, charsmax(fileName), "sprites/reapi_molotov/fire.spr", i+1);
		spFire[i] = precache_model(fileName);
	}
	/* 
	precache_sound("awFireDeagle/dmg1.wav");
	precache_sound("awFireDeagle/dmg2.wav");
	precache_sound("awFireDeagle/dmg3.wav");
	precache_sound("awFireDeagle/dmg4.wav");
	 */
	precache_sound("awFireDeagle/shot.wav");
	
	formatex(vModel, charsmax(vModel), "%sv_%s.mdl", mdlPath, mdlName);
	if(file_exists(vModel)) precache_model(vModel);
	else formatex(vModel, charsmax(vModel), "");
	
	formatex(pModel, charsmax(pModel), "%sp_%s.mdl", mdlPath, mdlName);
	if(file_exists(pModel)) precache_model(pModel);
	else formatex(pModel, charsmax(pModel), "");
}

public client_authorized(id) pFireDeagleActive[id] = false;

public pDeath(victim, attacker, corpse){
	static data[2]; data[0] = victim;
	pFireEnd(data);
	remove_task(victim);
} 

public pTakeDamage(victim, weapon, attacker, Float:damage, damagebits){
	if(!attacker || !victim || attacker == victim) return HAM_IGNORED;
	if(get_user_weapon(attacker) == CSW_DEAGLE && get_user_flags(attacker) & get_pcvar_flags(pCvars[cAccessFlags]) && pFireDeagleActive[attacker]){
		if(!pOnFire[victim]){
			if(get_user_team(attacker) != get_user_team(victim) || get_pcvar_num(pCvars[cFfaMode])){
				static data[2]; data[0] = victim; data[1] = attacker;
				pOnFire[victim] = true;
				igniteEffects(data);
				ignitePlayer(data);
				static fireDur; fireDur = random_num(get_pcvar_num(pCvars[cFireDurMin]), get_pcvar_num(pCvars[cFireDurMax]));
				if(get_pcvar_num(pCvars[cPlayerGlow])) set_user_rendering(victim, kRenderFxGlowShell, 240, 127, 19, kRenderNormal, 25);
				set_task(float(fireDur), "pFireEnd" , victim, data, 2);
				damage = damage*get_pcvar_float(pCvars[cDmgMult]);
				SetHamParamFloat(4, damage);
				return HAM_IGNORED;
			}
		}
	}
	return HAM_IGNORED;
}

public pFireEnd(data[]){
	pOnFire[data[0]] = false;
	set_user_rendering(data[0]);
}

public igniteEffects(data[]){
	
	new id = data[0];
		
	if(is_user_alive(id) && pOnFire[id]){
		static korigin[3]; get_user_origin(id, korigin);
		
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
		write_byte(17);
		write_coord(korigin[0]);
		write_coord(korigin[1]);
		write_coord(korigin[2]);
		write_short(spFire[random_num(0, 4)]);
		write_byte(6); ///размер спрайта
		write_byte(200); ///прозрачность спрайта
		message_end();
		
		set_task(0.1, "igniteEffects" , 0 , data, 2);
	}
	
	return PLUGIN_CONTINUE;
	
}

public ignitePlayer(data[]){
	
	new id = data[0];
	
	if(is_user_alive(id) && pOnFire[id]){
		
		new korigin[3];
		new pOrigin[3];
		
		get_user_origin(id, korigin);
		
		ExecuteHam(Ham_TakeDamage, data[0], data[1], data[1], float(random_num(get_pcvar_num(pCvars[cFireDmgMin]), get_pcvar_num(pCvars[cFireDmgMax]))), DMG_BURN);
		message_begin(MSG_ONE, msgDamage, {0, 0, 0}, id);
		write_byte(30);
		write_byte(30);
		write_long(1<<21);
		write_coord(korigin[0]);
		write_coord(korigin[1]);
		write_coord(korigin[2]);
		message_end();
		/* 
		static name[32]; get_user_name(id, name, charsmax(name));
		static sSound[128]; formatex(sSound, charsmax(sSound), "awFireDeagle/dmg%d.wav", random_num(1, 4));
		emit_sound(data[0], CHAN_VOICE, sSound, 0.8, ATTN_NORM, 0, PITCH_NORM);
		emit_sound(id, CHAN_ITEM, sSound, 0.6, ATTN_NORM, 0, PITCH_NORM);
		 */
		new players[32], inum = 0;
		get_players(players, inum, "a");
		for(new i = 0 ; i < inum; ++i){
			get_user_origin(players[i], pOrigin);
			if(get_distance(korigin, pOrigin) < 100){
				if(!pOnFire[players[i]]){
					ExecuteHam(Ham_TakeDamage, players[i], data[0], data[1], float(random_num(get_pcvar_num(pCvars[cFireDmgMin]), get_pcvar_num(pCvars[cFireDmgMax]))), DMG_BURN);
					message_begin(MSG_ONE, msgDamage, {0, 0, 0}, players[i]);
					write_byte(30);
					write_byte(30);
					write_long(1<<21);
					write_coord(pOrigin[0]);
					write_coord(pOrigin[1]);
					write_coord(pOrigin[2]);
					message_end();
					/* 
					static ssSound[128]; formatex(ssSound, charsmax(ssSound), "awFireDeagle/fire%d.wav", random_num(1, 4));
					emit_sound(players[i], CHAN_VOICE, ssSound, 0.8, ATTN_NORM, 0, PITCH_NORM);
					 */
					message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
					write_byte(17);
					write_coord(pOrigin[0]);
					write_coord(pOrigin[1]);
					write_coord(pOrigin[2]);
					write_short(spFire[random_num(0, 4)]);
					write_byte(20);
					write_byte(200);
					message_end();
				}
			}
		}
		set_task(1.0, "ignitePlayer" , 0, data, 2);
	}
	return PLUGIN_CONTINUE;
}

public pDeagleDeploy(weapon){
	static id; id = get_pdata_cbase(weapon, 41, 4);
	setFireModel(id);
	return HAM_IGNORED;
}

public setFireModel(id){
	if(pFireDeagleActive[id] && get_user_flags(id) & get_pcvar_flags(pCvars[cAccessFlags])){
		if(vModel[0]) set_pev(id, pev_viewmodel2, vModel);
		if(pModel[0]) set_pev(id, pev_weaponmodel2, pModel);
		return true;
	}
	return false;
}

public fw_PlayerSpawn_Post(id)
{
	pFireDeagleActive[id] = false
	resetDeagleModel(id)
}

public resetDeagleModel(id){
	set_pev(id, pev_viewmodel2, "models/v_deagle.mdl");
	set_pev(id, pev_weaponmodel2, "models/p_deagle.mdl");
}

stock printColorChat(const index, const input[], any:...){
	#define gmsg_SayText 76
	static msg[191];
	new count = 1, players[32];
	vformat(msg, 190, input, 3);
	replace_all(msg, sizeof(msg), "!g", "^4");
	replace_all(msg, sizeof(msg), "!t", "^3");
	replace_all(msg, sizeof(msg), "!n", "^1");
	if(index) players[0] = index; else get_players(players, count, "ch");
	for(new i = 0; i < count; i++){
		if(!is_user_connected(players[i])) return;
		message_begin(MSG_ONE_UNRELIABLE, gmsg_SayText, _, players[i]);
		write_byte(players[i]);
		write_string(msg);
		message_end();
	}
}

stock drop_weapons(id, dropwhat)
{
	// Get user weapons
	static weapons[32], num, i, weaponid
	num = 0 // reset passed weapons count (bugfix)
	get_user_weapons(id, weapons, num)
	
	const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
	const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)

	// Loop through them and drop primaries or secondaries
	for (i = 0; i < num; i++)
	{
		// Prevent re-indexing the array
		weaponid = weapons[i]
		
		if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
		{
			// Get weapon entity
			static wname[32]; get_weaponname(weaponid, wname, charsmax(wname))
			engclient_cmd(id, "drop", wname)
		}
	}
}

Аватар
USA_CA
Извън линия
Foreigner
Foreigner
Мнения: 106
Регистриран на: 19 Юли 2020, 18:02

Fire Deagle

Мнение от USA_CA » 28 Юни 2021, 21:40

YankoNL написа: 28 Юни 2021, 21:24
USA_CA написа: 25 Юни 2021, 20:44 thank you))) can you also please make sure that the fire deagle model does not remain in the new round, and that there are no 2 pistols in the slot
I also remove the unnecessary code.
Here, please try this and tell me if it's working fine :)
the plugin does not work correctly

Аватар
YankoNL
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 06 Апр 2017, 09:07
Местоположение: Варна
Се отблагодари: 22 пъти
Получена благодарност: 9 пъти

Fire Deagle

Мнение от YankoNL » 28 Юни 2021, 22:19

USA_CA написа: 28 Юни 2021, 21:40 the plugin does not work correctly
What is the problem?

Also try this, but I think the 2 weapon bug is still there.

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <file>
//#include <cstrike>
#include <fakemeta>
//#include <reapi>

// Настройки:
	
	// Флаг доступа:
		#define ACCESS_FLAG ADMIN_LEVEL_H
		
	// Мин. и макс. урон от огня:
		#define FIRE_DMG_MIN 4
		#define FIRE_DMG_MAX 8
		
	// Мин. и макс. длительность горения:
		#define FIRE_DUR_MIN 4
		#define FIRE_DUR_MAX 8
		
	// Путь к папке с моделями ("models/.../"):
		#define MODEL_PATH "models/awFireDeagle/"
		
	// Название моделей ("deagle" => v/p_deagle.mdl):
		#define MODEL_NAME "deagle"
		
	// Команда для вкл\выкл огненного дигла:
		#define SWITCH_CMD "say /fd"
		
	// Префикс плагина в чате:
		//new const pPrefix[] = "!g[!tFireDeagle!g]!t";
		
	// Поддержка режима FFA(Каждый сам за себя)
		#define SUPPORT_FFA 0
		
	// Множитель урона от попадания огненного дигла [Float]
		#define FIRE_SHOT_DMG 0.8


enum cvars{
	cFireDmgMin,
	cFireDmgMax,
	cFireDurMin,
	cFireDurMax,
	cAccessFlags,
	cModelsPath,
	cModelsName,
	cFfaMode,
	cDmgMult,
	cChatPrefix,
	cSwitchCmd,
	cPlayerGlow
}

new bool:pOnFire[33], bool:pFireDeagleActive[33];
new msgDamage, spFire[5];
new vModel[128], pModel[128];
new pCvars[cvars];
new pPrefix[128], mdlName[128], mdlPath[128];

#define PLUG_VER "1.2"
#define PLUG_NAME "Fire Deagle"

public plugin_init(){
	register_plugin(PLUG_NAME, PLUG_VER, "ArKaNeMaN");
	get_pcvar_string(pCvars[cChatPrefix], pPrefix, charsmax(pPrefix));
	static swtchCmd[128]; get_pcvar_string(pCvars[cSwitchCmd], swtchCmd, charsmax(swtchCmd));
	RegisterHam (Ham_TakeDamage, "player", "pTakeDamage", true);
	RegisterHam(Ham_Item_Deploy, "weapon_deagle", "pDeagleDeploy", true);
	RegisterHam(Ham_Killed,"player","pDeath");
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_deagle", "wPrimaryAttack", true);
	RegisterHam(Ham_Spawn, "player", "OnPlayerSpawn", 1);
	msgDamage = get_user_msgid("Damage");
	register_clcmd(swtchCmd, "fdSwitch");
	server_print("[%s v%s] loaded. ", PLUG_NAME, PLUG_VER);
}

public cfgExec(){
	pCvars[cFireDmgMin] = register_cvar("awFdFireDmgMin", "4");
	pCvars[cFireDmgMax] = register_cvar("awFdFireDmgMax", "8");
	pCvars[cFireDurMin] = register_cvar("awFdFireDurMin", "4");
	pCvars[cFireDurMax] = register_cvar("awFdFireDurMax", "8");
	pCvars[cAccessFlags] = register_cvar("awFdAccessFlags", "t");
	pCvars[cModelsPath] = register_cvar("awFdModelsPath", "models/awFireDeagle/");
	pCvars[cModelsName] = register_cvar("awFdModelsName", "deagle");
	pCvars[cFfaMode] = register_cvar("awFdFfaMode", "0");
	pCvars[cDmgMult] = register_cvar("awFdDmgMult", "1.0");
	pCvars[cChatPrefix] = register_cvar("awFdChatPrefix", "!g[!tFireDeagle!g]!t");
	pCvars[cSwitchCmd] = register_cvar("awFdSwitchCmd", "say /fd");
	pCvars[cPlayerGlow] = register_cvar("awFdPlayerGlow", "1");
	
	static cfgDir[32], cfgFileFullName[64];
	get_configsdir(cfgDir, charsmax(cfgDir));
	formatex(cfgFileFullName, charsmax(cfgFileFullName), "%s/awFireDeagle.cfg", cfgDir);
	if(file_exists(cfgFileFullName)){
		server_cmd("exec %s", cfgFileFullName);
		server_exec();
	}
	else{
		server_print("[%s v%s] [Error] [Config file not found (%s)] [Plugin paused]", PLUG_NAME, PLUG_VER, cfgFileFullName);
		pause("d");
	}
}

public wPrimaryAttack(weapon){
	static id; id = get_pdata_cbase(weapon, 41, 4);
	if(pFireDeagleActive[id] && get_user_flags(id) & get_pcvar_flags(pCvars[cAccessFlags])) emit_sound(id, CHAN_WEAPON, "awFireDeagle/shot.wav", 1.0, ATTN_NORM, 0, 100);
}

public fdSwitch(id){
	if(get_user_flags(id) & get_pcvar_flags(pCvars[cAccessFlags])){
		static name[32]; get_user_name(id, name, charsmax(name));
		pFireDeagleActive[id] = !pFireDeagleActive[id];
		printColorChat(id, "%s Огненный дигл !g%s!t.", pPrefix, pFireDeagleActive[id] ? "активирован" : "деактивирован");
		if(get_user_weapon(id) == CSW_DEAGLE){
			if(pFireDeagleActive[id]){
				setFireModel(id);
			} else {
				resetDeagleModel(id);
			}
		}
	}
	else printColorChat(id, "%s Нет доступа!", pPrefix);
}

public plugin_natives()
	register_native("fdIsUserOnFire", "nativeIsUserOnFire");


public nativeIsUserOnFire(pluginId, param)
	return pOnFire[get_param(1)] ? 1 : 0;

public plugin_precache(){
	cfgExec();
	get_pcvar_string(pCvars[cModelsPath], mdlPath, charsmax(mdlPath));
	get_pcvar_string(pCvars[cModelsName], mdlName, charsmax(mdlName));
	for(new i = 0; i < 1; i++){
		static fileName[128]; formatex(fileName, charsmax(fileName), "sprites/reapi_molotov/fire.spr", i+1);
		spFire[i] = precache_model(fileName);
	}
	/* 
	precache_sound("awFireDeagle/dmg1.wav");
	precache_sound("awFireDeagle/dmg2.wav");
	precache_sound("awFireDeagle/dmg3.wav");
	precache_sound("awFireDeagle/dmg4.wav");
	 */
	precache_sound("awFireDeagle/shot.wav");
	
	formatex(vModel, charsmax(vModel), "%sv_%s.mdl", mdlPath, mdlName);
	if(file_exists(vModel)) precache_model(vModel);
	else formatex(vModel, charsmax(vModel), "");
	
	formatex(pModel, charsmax(pModel), "%sp_%s.mdl", mdlPath, mdlName);
	if(file_exists(pModel)) precache_model(pModel);
	else formatex(pModel, charsmax(pModel), "");
}

public pDeath(victim, attacker, corpse){
	static data[2]; data[0] = victim;
	pFireEnd(data);
	remove_task(victim);
} 

public pTakeDamage(victim, weapon, attacker, Float:damage, damagebits){
	if(!attacker || !victim || attacker == victim) return HAM_IGNORED;
	if(get_user_weapon(attacker) == CSW_DEAGLE && get_user_flags(attacker) & get_pcvar_flags(pCvars[cAccessFlags]) && pFireDeagleActive[attacker]){
		if(!pOnFire[victim]){
			if(get_user_team(attacker) != get_user_team(victim) || get_pcvar_num(pCvars[cFfaMode])){
				static data[2]; data[0] = victim; data[1] = attacker;
				pOnFire[victim] = true;
				igniteEffects(data);
				ignitePlayer(data);
				static fireDur; fireDur = random_num(get_pcvar_num(pCvars[cFireDurMin]), get_pcvar_num(pCvars[cFireDurMax]));
				if(get_pcvar_num(pCvars[cPlayerGlow])) set_user_rendering(victim, kRenderFxGlowShell, 240, 127, 19, kRenderNormal, 25);
				set_task(float(fireDur), "pFireEnd" , victim, data, 2);
				damage = damage*get_pcvar_float(pCvars[cDmgMult]);
				SetHamParamFloat(4, damage);
				return HAM_IGNORED;
			}
		}
	}
	return HAM_IGNORED;
}

public pFireEnd(data[]){
	pOnFire[data[0]] = false;
	set_user_rendering(data[0]);
}

public igniteEffects(data[]){
	
	new id = data[0];
		
	if(is_user_alive(id) && pOnFire[id]){
		static korigin[3]; get_user_origin(id, korigin);
		
		message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
		write_byte(17);
		write_coord(korigin[0]);
		write_coord(korigin[1]);
		write_coord(korigin[2]);
		write_short(spFire[random_num(0, 4)]);
		write_byte(6); ///размер спрайта
		write_byte(200); ///прозрачность спрайта
		message_end();
		
		set_task(0.1, "igniteEffects" , 0 , data, 2);
	}
	
	return PLUGIN_CONTINUE;
	
}

public ignitePlayer(data[]){
	
	new id = data[0];
	
	if(is_user_alive(id) && pOnFire[id]){
		
		new korigin[3];
		new pOrigin[3];
		
		get_user_origin(id, korigin);
		
		ExecuteHam(Ham_TakeDamage, data[0], data[1], data[1], float(random_num(get_pcvar_num(pCvars[cFireDmgMin]), get_pcvar_num(pCvars[cFireDmgMax]))), DMG_BURN);
		message_begin(MSG_ONE, msgDamage, {0, 0, 0}, id);
		write_byte(30);
		write_byte(30);
		write_long(1<<21);
		write_coord(korigin[0]);
		write_coord(korigin[1]);
		write_coord(korigin[2]);
		message_end();
		/* 
		static name[32]; get_user_name(id, name, charsmax(name));
		static sSound[128]; formatex(sSound, charsmax(sSound), "awFireDeagle/dmg%d.wav", random_num(1, 4));
		emit_sound(data[0], CHAN_VOICE, sSound, 0.8, ATTN_NORM, 0, PITCH_NORM);
		emit_sound(id, CHAN_ITEM, sSound, 0.6, ATTN_NORM, 0, PITCH_NORM);
		 */
		new players[32], inum = 0;
		get_players(players, inum, "a");
		for(new i = 0 ; i < inum; ++i){
			get_user_origin(players[i], pOrigin);
			if(get_distance(korigin, pOrigin) < 100){
				if(!pOnFire[players[i]]){
					ExecuteHam(Ham_TakeDamage, players[i], data[0], data[1], float(random_num(get_pcvar_num(pCvars[cFireDmgMin]), get_pcvar_num(pCvars[cFireDmgMax]))), DMG_BURN);
					message_begin(MSG_ONE, msgDamage, {0, 0, 0}, players[i]);
					write_byte(30);
					write_byte(30);
					write_long(1<<21);
					write_coord(pOrigin[0]);
					write_coord(pOrigin[1]);
					write_coord(pOrigin[2]);
					message_end();
					/* 
					static ssSound[128]; formatex(ssSound, charsmax(ssSound), "awFireDeagle/fire%d.wav", random_num(1, 4));
					emit_sound(players[i], CHAN_VOICE, ssSound, 0.8, ATTN_NORM, 0, PITCH_NORM);
					 */
					message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
					write_byte(17);
					write_coord(pOrigin[0]);
					write_coord(pOrigin[1]);
					write_coord(pOrigin[2]);
					write_short(spFire[random_num(0, 4)]);
					write_byte(20);
					write_byte(200);
					message_end();
				}
			}
		}
		set_task(1.0, "ignitePlayer" , 0, data, 2);
	}
	return PLUGIN_CONTINUE;
}

public pDeagleDeploy(weapon){
	static id; id = get_pdata_cbase(weapon, 41, 4);
	setFireModel(id);
	return HAM_IGNORED;
}

public setFireModel(id){
	if(pFireDeagleActive[id] && get_user_flags(id) & get_pcvar_flags(pCvars[cAccessFlags])){
		if(vModel[0]) set_pev(id, pev_viewmodel2, vModel);
		if(pModel[0]) set_pev(id, pev_weaponmodel2, pModel);
		return true;
	}
	return false;
}

public resetDeagleModel(id){
	set_pev(id, pev_viewmodel2, "models/v_deagle.mdl");
	set_pev(id, pev_weaponmodel2, "models/p_deagle.mdl");
}

public OnPlayerSpawn(id)
{
	pFireDeagleActive[id] = false;
	resetDeagleModel(id);
}

public client_putinserver(id)
{
	pFireDeagleActive[id] = false;
}

stock printColorChat(const index, const input[], any:...){
	#define gmsg_SayText 76
	static msg[191];
	new count = 1, players[32];
	vformat(msg, 190, input, 3);
	replace_all(msg, sizeof(msg), "!g", "^4");
	replace_all(msg, sizeof(msg), "!t", "^3");
	replace_all(msg, sizeof(msg), "!n", "^1");
	if(index) players[0] = index; else get_players(players, count, "ch");
	for(new i = 0; i < count; i++){
		if(!is_user_connected(players[i])) return;
		message_begin(MSG_ONE_UNRELIABLE, gmsg_SayText, _, players[i]);
		write_byte(players[i]);
		write_string(msg);
		message_end();
	}
}

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 15 госта