Counter-Strike 1.6
CS1.BG | DUST2 NOSHTA GARMI [RANKED PLAY] #1
45.144.155.113:27015
de_dust2
Играчи: 30/32
de_dust2
Counter-Strike 1.6
Cs-PlovdiV.com - Aim Attack 93.123.16.4:27022 aim_aztec Играчи: 0/16

Трябват ми 2 условия в Push Grenade

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Трябват ми 2 условия в Push Grenade

Мнение от atmax » 02 Сеп 2020, 19:59

Някой компетентен, може ли да подаде една ръка, че се мъча суматий време и вече почнах да си мисля, че това, което искам е невъзможно..
Тоя плъгин е за Flash граната, отблъсква всички в радиуса, който се определя от define ред. Проблема е, че искам това нещо да се ползва само от хора с флага ADMIN_SLAY и да не отблъсва всички в тоя радиус, ами само хората от противниковия отбор..
Ако играча с Flash граната няма този флаг тогава да се return-не така ще бъде обикновенна флаш граната. Аз не успях да го направя, надявам се, че някой има идеи.

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

/*

         ZOMBIE DARKNESS FLASHBANG
         Превръща Флашката в Push граната, която отблъсква хората.
         Радиуса и Силата се променят от ред 15 (float стойностите).
         
*/
#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <xs>
//Vars
new g_msgScreenFade, g_msgScreenShake, flash_sprite_index
//Knockback strengh and radius
new Float:KRADIUS=200.0, Float:KPOWER=600.0
//Shockwave sprite
new flashwave[] = "sprites/shockwave.spr"
public plugin_init(){
register_plugin("ZB4Flashbang","1.0","Inovella")
register_forward(FM_Think, "fwd_think")

//Flash blocking
register_event("ScreenFade","FlashEvent","b","4=255","5=255","6=255","7>199")

g_msgScreenFade = get_user_msgid("ScreenFade")
g_msgScreenShake = get_user_msgid("ScreenShake")
}
public plugin_precache(){
flash_sprite_index = precache_model(flashwave)
}
//This is an idiocy code, but fm set model not working
public fwd_think(iEntity){
if (!pev_valid(iEntity)){
         return FMRES_IGNORED
}
new szModel[25]
pev(iEntity, pev_model, szModel, 24)
if (equali(szModel, "models/w_flashbang.mdl")){
         new Float:fDmgTime
         pev(iEntity, pev_dmgtime, fDmgTime)
         if (fDmgTime <= get_gametime() && fDmgTime != 0.0){
                 func_nade_explode(iEntity)
                 return FMRES_SUPERCEDE
         }
}

return FMRES_IGNORED
}
public func_nade_explode(iEntity){
if (!pev_valid(iEntity)){
         return
}

/*Blocked explode, your code goes here*/

//Making Shockwave
flashbang_explode(iEntity);

//Making Flashbang model invisible
set_pev(iEntity, pev_effects, EF_NODRAW);

//Knockback effect, calculation from hlsdk
static Float:originF[3]
pev(iEntity, pev_origin, originF)
static victim
victim = -1
new Float:fOrigin[3],Float:fDistance,Float:fDamage
while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, KRADIUS)) != 0){
if (!is_user_alive(victim)) continue
ScreenShake(victim)
pev(victim, pev_origin, fOrigin)
fDistance = get_distance_f(fOrigin, originF)
fDamage = KPOWER - floatmul(KPOWER, floatdiv(fDistance, KRADIUS))//get the damage value
fDamage *= EstimateDamage(originF, victim, 0)
if ( fDamage < 0 ) continue
CreateBombKnockBack(victim,originF,fDamage,KPOWER)
}
}
public FlashEvent(id){
message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id)
write_short(1)
write_short(1)
write_short(1)
write_byte(0)
write_byte(0)
write_byte(0)
write_byte(255)
message_end()
}
public flashbang_explode(greindex){
if(!pev_valid(greindex)) return;
static Float:Orig[3];
pev(greindex,pev_origin,Orig);
ShockWave(Orig, 5, 35, 1000.0, {135, 206, 250})
}
//Nice Shockwave (from Alexander 3 public NPC)
stock ShockWave(Float:Orig[3], Life, Width, Float:Radius, Color[3]){
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Orig, 0)
write_byte(TE_BEAMCYLINDER) // TE id
engfunc(EngFunc_WriteCoord, Orig[0]) // x
engfunc(EngFunc_WriteCoord, Orig[1]) // y
engfunc(EngFunc_WriteCoord, Orig[2]) // z
engfunc(EngFunc_WriteCoord, Orig[0]) // x axis
engfunc(EngFunc_WriteCoord, Orig[1]) // y axis
engfunc(EngFunc_WriteCoord, Orig[2]+Radius) // z axis
write_short(flash_sprite_index) // sprite
write_byte(0) // startframe
write_byte(0) // framerate
write_byte(Life) // life (4)
write_byte(Width) // width (20)
write_byte(0) // noise
write_byte(Color[0]) // red
write_byte(Color[1]) // green
write_byte(Color[2]) // blue
write_byte(255) // brightness
write_byte(0) // speed
message_end()
}
//Knockback power and radius
stock CreateBombKnockBack(iVictim,Float:vAttacker[3],Float:fMulti,Float:fRadius){
new Float:vVictim[3];
pev(iVictim, pev_origin, vVictim);
xs_vec_sub(vVictim, vAttacker, vVictim);
xs_vec_mul_scalar(vVictim, fMulti * 0.7, vVictim);
xs_vec_mul_scalar(vVictim, fRadius / xs_vec_len(vVictim), vVictim);
set_pev(iVictim, pev_velocity, vVictim);
}
stock ScreenShake(id, amplitude = 8, duration = 6, frequency = 18){
message_begin(MSG_ONE_UNRELIABLE, g_msgScreenShake, _, id)
write_short((1<<12)*amplitude)
write_short((1<<12)*duration)
write_short((1<<12)*frequency)
message_end()
}
//Damaging only enemy team
stock Float:EstimateDamage(Float:fPoint[3], ent, ignored) {
new Float:fOrigin[3]
new tr
new Float:fFraction
pev(ent, pev_origin, fOrigin)
engfunc(EngFunc_TraceLine, fPoint, fOrigin, DONT_IGNORE_MONSTERS, ignored, tr)
get_tr2(tr, TR_flFraction, fFraction)
if ( fFraction == 1.0 || get_tr2( tr, TR_pHit ) == ent )//no valid enity between the explode point & player
return 1.0
return 0.6//if has fraise, lessen blast hurt
}
Rest in peace my friend I always will remember you! 🖤👊

Аватар
TryAgain
Извън линия
Потребител
Потребител
Мнения: 182
Регистриран на: 25 Яну 2017, 16:59
Се отблагодари: 1 път
Получена благодарност: 26 пъти

Трябват ми 2 условия в Push Grenade

Мнение от TryAgain » 03 Сеп 2020, 07:01

Пробвай така.

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

/*

ZOMBIE DARKNESS FLASHBANG
Превръща Флашката в Push граната, която отблъсква хората.
Радиуса и Силата се променят от ред 15 (float стойностите).

*/
#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <xs>

#define ADMIN_FRAG ADMIN_SLAY

//Vars
new g_msgScreenShake, flash_sprite_index
//Knockback strengh and radius
new Float:KRADIUS=200.0, Float:KPOWER=600.0
//Shockwave sprite
new flashwave[] = "sprites/shockwave.spr"
public plugin_init(){
	register_plugin("ZB4Flashbang","1.0","Inovella")
	register_forward(FM_Think, "fwd_think")
	
	g_msgScreenShake = get_user_msgid("ScreenShake")
}
public plugin_precache(){
	flash_sprite_index = precache_model(flashwave)
}
//This is an idiocy code, but fm set model not working
public fwd_think(iEntity){
	if (!pev_valid(iEntity))
	{
		return FMRES_IGNORED
	}
	new szModel[25]
	pev(iEntity, pev_model, szModel, 24)
	if (equali(szModel, "models/w_flashbang.mdl") && get_user_flags(pev(iEntity, pev_owner)) & ADMIN_FRAG)
	{
		new Float:fDmgTime
		pev(iEntity, pev_dmgtime, fDmgTime)
		if (fDmgTime <= get_gametime() && fDmgTime != 0.0)
		{
			func_nade_explode(iEntity)
			return FMRES_SUPERCEDE
		}
	}
	
	return FMRES_IGNORED
}

public func_nade_explode(iEntity)
{
	if (!pev_valid(iEntity))
	{
		return
	}
	
	/*Blocked explode, your code goes here*/
	
	//Making Shockwave
	flashbang_explode(iEntity);
	
	//Making Flashbang model invisible
	set_pev(iEntity, pev_effects, EF_NODRAW);
	
	//Knockback effect, calculation from hlsdk
	static Float:originF[3]
	pev(iEntity, pev_origin, originF)
	static victim,attacker
	victim = -1
	attacker = pev(iEntity, pev_owner)
	new Float:fOrigin[3],Float:fDistance,Float:fDamage
	while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, KRADIUS)) != 0)
	{
		if (!is_user_alive(victim)|| get_user_team(attacker) == get_user_team(victim))
		continue
		
		ScreenShake(victim)
		pev(victim, pev_origin, fOrigin)
		fDistance = get_distance_f(fOrigin, originF)
		fDamage = KPOWER - floatmul(KPOWER, floatdiv(fDistance, KRADIUS))//get the damage value
		fDamage *= EstimateDamage(originF, victim, 0)
		if ( fDamage < 0 ) continue
		CreateBombKnockBack(victim,originF,fDamage,KPOWER)
	}
}

public flashbang_explode(greindex)
{
	if(!pev_valid(greindex))
		return;
	
	static Float:Orig[3];
	pev(greindex,pev_origin,Orig);
	ShockWave(Orig, 5, 35, 1000.0, {135, 206, 250})
}
//Nice Shockwave (from Alexander 3 public NPC)
stock ShockWave(Float:Orig[3], Life, Width, Float:Radius, Color[3]){
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Orig, 0)
	write_byte(TE_BEAMCYLINDER) // TE id
	engfunc(EngFunc_WriteCoord, Orig[0]) // x
	engfunc(EngFunc_WriteCoord, Orig[1]) // y
	engfunc(EngFunc_WriteCoord, Orig[2]) // z
	engfunc(EngFunc_WriteCoord, Orig[0]) // x axis
	engfunc(EngFunc_WriteCoord, Orig[1]) // y axis
	engfunc(EngFunc_WriteCoord, Orig[2]+Radius) // z axis
	write_short(flash_sprite_index) // sprite
	write_byte(0) // startframe
	write_byte(0) // framerate
	write_byte(Life) // life (4)
	write_byte(Width) // width (20)
	write_byte(0) // noise
	write_byte(Color[0]) // red
	write_byte(Color[1]) // green
	write_byte(Color[2]) // blue
	write_byte(255) // brightness
	write_byte(0) // speed
	message_end()
}
//Knockback power and radius
stock CreateBombKnockBack(iVictim,Float:vAttacker[3],Float:fMulti,Float:fRadius){
	new Float:vVictim[3];
	pev(iVictim, pev_origin, vVictim);
	xs_vec_sub(vVictim, vAttacker, vVictim);
	xs_vec_mul_scalar(vVictim, fMulti * 0.7, vVictim);
	xs_vec_mul_scalar(vVictim, fRadius / xs_vec_len(vVictim), vVictim);
	set_pev(iVictim, pev_velocity, vVictim);
}
stock ScreenShake(id, amplitude = 8, duration = 6, frequency = 18){
	message_begin(MSG_ONE_UNRELIABLE, g_msgScreenShake, _, id)
	write_short((1<<12)*amplitude)
	write_short((1<<12)*duration)
	write_short((1<<12)*frequency)
	message_end()
}
//Damaging only enemy team
stock Float:EstimateDamage(Float:fPoint[3], ent, ignored) {
	new Float:fOrigin[3]
	new tr
	new Float:fFraction
	pev(ent, pev_origin, fOrigin)
	engfunc(EngFunc_TraceLine, fPoint, fOrigin, DONT_IGNORE_MONSTERS, ignored, tr)
	get_tr2(tr, TR_flFraction, fFraction)
	if ( fFraction == 1.0 || get_tr2( tr, TR_pHit ) == ent )//no valid enity between the explode point & player
	return 1.0
	return 0.6//if has fraise, lessen blast hurt
}

Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Трябват ми 2 условия в Push Grenade

Мнение от atmax » 03 Сеп 2020, 10:08

TryAgain написа: 03 Сеп 2020, 07:01 Пробвай така.

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

/*

ZOMBIE DARKNESS FLASHBANG
Превръща Флашката в Push граната, която отблъсква хората.
Радиуса и Силата се променят от ред 15 (float стойностите).

*/
#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <xs>

#define ADMIN_FRAG ADMIN_SLAY

//Vars
new g_msgScreenShake, flash_sprite_index
//Knockback strengh and radius
new Float:KRADIUS=200.0, Float:KPOWER=600.0
//Shockwave sprite
new flashwave[] = "sprites/shockwave.spr"
public plugin_init(){
	register_plugin("ZB4Flashbang","1.0","Inovella")
	register_forward(FM_Think, "fwd_think")
	
	g_msgScreenShake = get_user_msgid("ScreenShake")
}
public plugin_precache(){
	flash_sprite_index = precache_model(flashwave)
}
//This is an idiocy code, but fm set model not working
public fwd_think(iEntity){
	if (!pev_valid(iEntity))
	{
		return FMRES_IGNORED
	}
	new szModel[25]
	pev(iEntity, pev_model, szModel, 24)
	if (equali(szModel, "models/w_flashbang.mdl") && get_user_flags(pev(iEntity, pev_owner)) & ADMIN_FRAG)
	{
		new Float:fDmgTime
		pev(iEntity, pev_dmgtime, fDmgTime)
		if (fDmgTime <= get_gametime() && fDmgTime != 0.0)
		{
			func_nade_explode(iEntity)
			return FMRES_SUPERCEDE
		}
	}
	
	return FMRES_IGNORED
}

public func_nade_explode(iEntity)
{
	if (!pev_valid(iEntity))
	{
		return
	}
	
	/*Blocked explode, your code goes here*/
	
	//Making Shockwave
	flashbang_explode(iEntity);
	
	//Making Flashbang model invisible
	set_pev(iEntity, pev_effects, EF_NODRAW);
	
	//Knockback effect, calculation from hlsdk
	static Float:originF[3]
	pev(iEntity, pev_origin, originF)
	static victim,attacker
	victim = -1
	attacker = pev(iEntity, pev_owner)
	new Float:fOrigin[3],Float:fDistance,Float:fDamage
	while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, KRADIUS)) != 0)
	{
		if (!is_user_alive(victim)|| get_user_team(attacker) == get_user_team(victim))
		continue
		
		ScreenShake(victim)
		pev(victim, pev_origin, fOrigin)
		fDistance = get_distance_f(fOrigin, originF)
		fDamage = KPOWER - floatmul(KPOWER, floatdiv(fDistance, KRADIUS))//get the damage value
		fDamage *= EstimateDamage(originF, victim, 0)
		if ( fDamage < 0 ) continue
		CreateBombKnockBack(victim,originF,fDamage,KPOWER)
	}
}

public flashbang_explode(greindex)
{
	if(!pev_valid(greindex))
		return;
	
	static Float:Orig[3];
	pev(greindex,pev_origin,Orig);
	ShockWave(Orig, 5, 35, 1000.0, {135, 206, 250})
}
//Nice Shockwave (from Alexander 3 public NPC)
stock ShockWave(Float:Orig[3], Life, Width, Float:Radius, Color[3]){
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Orig, 0)
	write_byte(TE_BEAMCYLINDER) // TE id
	engfunc(EngFunc_WriteCoord, Orig[0]) // x
	engfunc(EngFunc_WriteCoord, Orig[1]) // y
	engfunc(EngFunc_WriteCoord, Orig[2]) // z
	engfunc(EngFunc_WriteCoord, Orig[0]) // x axis
	engfunc(EngFunc_WriteCoord, Orig[1]) // y axis
	engfunc(EngFunc_WriteCoord, Orig[2]+Radius) // z axis
	write_short(flash_sprite_index) // sprite
	write_byte(0) // startframe
	write_byte(0) // framerate
	write_byte(Life) // life (4)
	write_byte(Width) // width (20)
	write_byte(0) // noise
	write_byte(Color[0]) // red
	write_byte(Color[1]) // green
	write_byte(Color[2]) // blue
	write_byte(255) // brightness
	write_byte(0) // speed
	message_end()
}
//Knockback power and radius
stock CreateBombKnockBack(iVictim,Float:vAttacker[3],Float:fMulti,Float:fRadius){
	new Float:vVictim[3];
	pev(iVictim, pev_origin, vVictim);
	xs_vec_sub(vVictim, vAttacker, vVictim);
	xs_vec_mul_scalar(vVictim, fMulti * 0.7, vVictim);
	xs_vec_mul_scalar(vVictim, fRadius / xs_vec_len(vVictim), vVictim);
	set_pev(iVictim, pev_velocity, vVictim);
}
stock ScreenShake(id, amplitude = 8, duration = 6, frequency = 18){
	message_begin(MSG_ONE_UNRELIABLE, g_msgScreenShake, _, id)
	write_short((1<<12)*amplitude)
	write_short((1<<12)*duration)
	write_short((1<<12)*frequency)
	message_end()
}
//Damaging only enemy team
stock Float:EstimateDamage(Float:fPoint[3], ent, ignored) {
	new Float:fOrigin[3]
	new tr
	new Float:fFraction
	pev(ent, pev_origin, fOrigin)
	engfunc(EngFunc_TraceLine, fPoint, fOrigin, DONT_IGNORE_MONSTERS, ignored, tr)
	get_tr2(tr, TR_flFraction, fFraction)
	if ( fFraction == 1.0 || get_tr2( tr, TR_pHit ) == ent )//no valid enity between the explode point & player
	return 1.0
	return 0.6//if has fraise, lessen blast hurt
}
Edit: Благодаря ще тествам и ще пиша.
Rest in peace my friend I always will remember you! 🖤👊

Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Трябват ми 2 условия в Push Grenade

Мнение от atmax » 04 Сеп 2020, 09:59

Ключаря може да заключва с катинара!
Rest in peace my friend I always will remember you! 🖤👊

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

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

Кой е на линия

Потребители разглеждащи този форум: Bing [Bot] и 7 госта