1. sayfa (Toplam 1 sayfa)

Moda uyarlanmış eklentiyi normale çevirme

Gönderilme zamanı: Cum Eki 15, 2021 5:39 pm
gönderen seating
Merhaba Bir Eklenti Mevcut ZP Moduna Uyarlanmış Sanırım İçinde ZP EXTRA Falan Filan Diye Geçiyor MOD Olmadan Çalışmıyor Zaten Rica Etsem Mod Olarak Değil de Normal Olarak Kullabilir Hale Getirilebilir mi Acaba ?
amxx_grenade_molotov.sma

MODA UYARLANMIŞ EKLENTİYİ NORMALE ÇEVİRME

Gönderilme zamanı: Cum Eki 15, 2021 6:06 pm
gönderen orucoglukayra

Kod: Tümünü seç

#define ZP_SUPPORT // Поддержка Zombie Plague 4.3
ZP Modu kapatmak isterseniz bu satırın başına // koyabilirsiniz.

MODA UYARLANMIŞ EKLENTİYİ NORMALE ÇEVİRME

Gönderilme zamanı: Cum Eki 15, 2021 6:44 pm
gönderen seating
Teşekkürler Oldu :) bu plugini cvara bağlama şansımız var mı ? para kesmesini sağlamam lazım bir de sadece silah alınan yerde alınması lazım ayrıca sınırsız şekilde alımı sağlanıyor 1 e düşürmek lazım :/

MODA UYARLANMIŞ EKLENTİYİ NORMALE ÇEVİRME

Gönderilme zamanı: Cum Eki 15, 2021 6:53 pm
gönderen orucoglukayra
İsteklerini anlaşılır bir dilde, tek tek yazarsan yardımcı olmaya çalışırım.
Cvardan kastın nedir ?
Molotof aldığı zaman paranın mı eksilmesini istiyorsun ?
Molotof limiti olsun, oyuncular bir roundda bir kez mi alabilsin istiyorsun ?
Ve buyzone dışında satın almalarını engellemek mi istiyorsun ?

MODA UYARLANMIŞ EKLENTİYİ NORMALE ÇEVİRME

Gönderilme zamanı: Cum Eki 15, 2021 6:56 pm
gönderen seating
Cvar dan kastım şu şekilde ;

Molotof aldığı zaman paranın eksilmesini istiyorum.
Molotof limiti olsun her round 1 kez değil de oyuncu üzerinde molotof varken 2. yi alamasın istiyorum
Buyzone Dışında da alınmamasını istiyorum.

MODA UYARLANMIŞ EKLENTİYİ NORMALE ÇEVİRME

Gönderilme zamanı: Cum Eki 15, 2021 7:04 pm
gönderen orucoglukayra

Kod: Tümünü seç

bind_pcvar_num(create_cvar("molotof_ucret", "800"), cvars[0]);
:hl: Ücret ve limit ekledim.Buyzone hakkında bir bilgim yok.Araştıracağım.

Edit : Mesajı her elde bir olarak düzenlemişim fakat aynı mantığa çıkacak. "Her Elde Yanlizca 1 Molotof Alabilirsin" mesajını editleyerek zaten molotofun var gibi bişey yapabilirsin.

Kod: Tümünü seç

#include < amxmodx >
#include < fakemeta_util >
#include < hamsandwich >
#include < reapi >

#define ZP_SUPPORT // Поддержка Zombie Plague 4.3

#if defined ZP_SUPPORT
	#include < zombieplague >
#endif

#define linux_diff_weapon		4
#define linux_diff_player		5

// CBasePlayerItem
#define m_pPlayer				41

#define MAX_CLIENTS				32
#define NADE_TYPE				1337

#define FLAME_CLASSNAME			"ent_flame" // Класснейм огня
#define FLAME_DURATION			5.0 // Сколько будет идти горение
#define FLAME_TIMERESET			0.2 // Через сколько будет наносится урон

// Урон от огня
#if defined ZP_SUPPORT
	#define FLAME_DAMAGE		random_float(30.0, 50.0)
#else
	#define FLAME_DAMAGE		random_float(3.0, 5.0)
#endif

#define GRENADE_VIEW_MODEL		"models/x/v_molotov.mdl"
#define GRENADE_PLAYER_MODEL	"models/x/p_molotov.mdl"
#define GRENADE_WORLD_MODEL		"models/x/w_molotov.mdl"
#define GRENADE_MODEL_BODY		0

#define GRENADE_EXPLODE_SOUND	"x/molotov_exp.wav"

#define WEAPON_OLD				"weapon_smokegrenade"
#define WEAPON_NEW				"x/weapon_molotov"
#define WEAPON_HUD 				"sprites/x/640hudx1.spr"

new const iWeaponList[] = {  
	13, 1,  -1, -1, 3, 3, 9,  24 // weapon_smokegrenade
}


#if defined ZP_SUPPORT
	new g_iItemID;
#endif

new g_iThinkTimes[512];
new g_iszModelIndexSprite;
new g_iUserHasMolotov[MAX_CLIENTS + 1];
new cvars[2];

public plugin_init()
{
	register_plugin("[AMXX] Grenade: Molotov", "1.1", "xUnicorn (t3rkecorejz)");

	RegisterHam(Ham_Killed, "player", "CPlayer__Killed_Post", .Post = 1);
	RegisterHam(Ham_Touch, "grenade", "CGrenade__Touch_Pre", .Post = 0);
	RegisterHam(Ham_Think, "grenade", "CGrenade__Think_Pre", .Post = 0);
	RegisterHam(Ham_Think, "info_target", "CEntity__Think_Pre", .Post = 0);
	RegisterHam(Ham_Item_Deploy, WEAPON_OLD, "CGrenade__Item_Deploy_Post", .Post = 1);
	RegisterHam(Ham_Item_AddToPlayer, WEAPON_OLD, "CGrenade__Item_AddToPlayer_Post", .Post = 1);

	bind_pcvar_num(create_cvar("molotof_ucret", "800"), cvars[0]);

	register_forward(FM_SetModel, "FM_Hook_SetModel_Pre", ._post = 0);

	register_clcmd(WEAPON_NEW, "HookSelect");

	#if defined ZP_SUPPORT
		g_iItemID = zp_register_extra_item("Molotov", 10, ZP_TEAM_HUMAN);
	#else
		register_clcmd("say molotov", "Command_GiveMolotov");
	#endif
}

public plugin_precache()
{
	new szBuffer[64]; formatex(szBuffer, charsmax(szBuffer), "sprites/%s.txt", WEAPON_NEW);

	engfunc(EngFunc_PrecacheGeneric, szBuffer);
	engfunc(EngFunc_PrecacheGeneric, WEAPON_HUD);
	
	g_iszModelIndexSprite = engfunc(EngFunc_PrecacheModel, "sprites/x/flame.spr");

	engfunc(EngFunc_PrecacheModel, GRENADE_VIEW_MODEL);
	engfunc(EngFunc_PrecacheModel, GRENADE_PLAYER_MODEL);
	engfunc(EngFunc_PrecacheModel, GRENADE_WORLD_MODEL);

	engfunc(EngFunc_PrecacheSound, GRENADE_EXPLODE_SOUND);
}

public client_disconnected(iPlayer) g_iUserHasMolotov[iPlayer] = 0;

#if defined ZP_SUPPORT
	public zp_extra_item_selected(iPlayer, iItemID)
	{
		if(iItemID == g_iItemID)
			Command_GiveMolotov(iPlayer);
	}
#endif

public HookSelect(iPlayer) 
{
	engclient_cmd(iPlayer, WEAPON_OLD);
	return PLUGIN_HANDLED;
}

public Command_GiveMolotov(iPlayer)
{
	if(!is_user_alive(iPlayer))
		return PLUGIN_HANDLED;

	if(get_member(iPlayer, m_iAccount) < cvars[0])
	{
		client_print_color(iPlayer,iPlayer, "^1[^3MOLOTOF^1] Molotof Almak Icin Yeterli Paran Yok ^1!");
		return PLUGIN_HANDLED;
	}

	if(g_iUserHasMolotov[iPlayer] > 1)
	{
		client_print_color(iPlayer,iPlayer, "^1[^3MOLOTOF^1] Her Elde Yanlizca 1 Molotof Alabilirsin ^1!");
		return PLUGIN_HANDLED;
	}

	if(user_has_weapon(iPlayer, CSW_SMOKEGRENADE))
	{
		g_iUserHasMolotov[iPlayer]++;
		rg_add_account(iPlayer, get_member(iPlayer, m_iAccount) - cvars[0], AS_SET);
		ExecuteHamB(Ham_GiveAmmo, iPlayer, 1, "SmokeGrenade", 32);
		emit_sound(iPlayer, CHAN_ITEM, "items/9mmclip1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
	}

	if(CPlayer__MakeWeapon(iPlayer)) 
	{
		g_iUserHasMolotov[iPlayer]++;
		emit_sound(iPlayer, CHAN_ITEM, "items/gunpickup2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
	}
	#if defined ZP_SUPPORT
		else return ZP_PLUGIN_HANDLED;
	#else
		else return PLUGIN_HANDLED;
	#endif

	return PLUGIN_HANDLED;
}

public CPlayer__Killed_Post(iVictim) g_iUserHasMolotov[iVictim] = 0;
public CGrenade__Touch_Pre(iEntity)
{
	if(!pev_valid(iEntity))
		return HAM_IGNORED;

	if(pev(iEntity, pev_flTimeStepSound) == NADE_TYPE)
	{
		static Float: vecOrigin[3];
		pev(iEntity, pev_origin, vecOrigin);

		if(engfunc(EngFunc_PointContents, vecOrigin) == CONTENTS_WATER) {
			set_pev(iEntity, pev_flags, FL_KILLME);
			return HAM_IGNORED;
		}

		set_pev(iEntity, pev_dmgtime, get_gametime());
	}

	return HAM_IGNORED;
}

public CGrenade__Think_Pre(iEntity)
{
	if(!pev_valid(iEntity)) 
		return HAM_IGNORED;

	static Float: flDamageTime; pev(iEntity, pev_dmgtime, flDamageTime);
	
	if(flDamageTime > get_gametime())
		return HAM_IGNORED;

	if(pev(iEntity, pev_flTimeStepSound) == NADE_TYPE)
	{
		static Float: vecOrigin[3];
		pev(iEntity, pev_origin, vecOrigin);

		if(engfunc(EngFunc_PointContents, vecOrigin) == CONTENTS_WATER) {
			set_pev(iEntity, pev_flags, FL_KILLME);
			return HAM_IGNORED;
		}

		MolotovExplode(iEntity);
		return HAM_SUPERCEDE;
	}

	return HAM_IGNORED;
}

MolotovExplode(iEntity)
{
	if(iEntity < 0)
		return;
	
	static Float: vecOrigin[3];
	pev(iEntity, pev_origin, vecOrigin);

	emit_sound(iEntity, CHAN_WEAPON, GRENADE_EXPLODE_SOUND, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);

	static iReference;

	new iOwner; iOwner = pev(iEntity, pev_owner);

	if(iReference || (iReference = engfunc(EngFunc_AllocString, "info_target")))
	{
		new iFlameEntity = engfunc(EngFunc_CreateNamedEntity, iReference);

		g_iThinkTimes[iFlameEntity] = 0;

		set_pev(iFlameEntity, pev_classname, FLAME_CLASSNAME);
		set_pev(iFlameEntity, pev_solid, SOLID_TRIGGER);
		set_pev(iFlameEntity, pev_movetype, MOVETYPE_TOSS);
		set_pev(iFlameEntity, pev_effects, EF_NODRAW);
		set_pev(iFlameEntity, pev_owner, iOwner);
		set_pev(iFlameEntity, pev_nextthink, get_gametime() + FLAME_TIMERESET);

		engfunc(EngFunc_SetModel, iFlameEntity, "models/w_ak47.mdl");
		engfunc(EngFunc_SetOrigin, iFlameEntity, vecOrigin);
	}

	message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
	write_byte(TE_SPRITETRAIL);
	engfunc(EngFunc_WriteCoord, vecOrigin[0]);
	engfunc(EngFunc_WriteCoord, vecOrigin[1]);
	engfunc(EngFunc_WriteCoord, vecOrigin[2] + 100.0);
	engfunc(EngFunc_WriteCoord, vecOrigin[0]);
	engfunc(EngFunc_WriteCoord, vecOrigin[1]);
	engfunc(EngFunc_WriteCoord, vecOrigin[2] + 30.0);
	write_short(g_iszModelIndexSprite);
	write_byte(50);
	write_byte(random_num(17, 20));
	write_byte(random_num(4, 6));
	write_byte(15);
	write_byte(10);
	message_end();

	set_pev(iEntity, pev_flags, FL_KILLME);
}

public CEntity__Think_Pre(iEntity)
{
	if(!pev_valid(iEntity))
		return HAM_IGNORED;

	static iVictim = -1;

	new szClassName[32], vecOrigin[3], iOwner;
	pev(iEntity, pev_classname, szClassName, charsmax(szClassName));

	if(equal(szClassName, FLAME_CLASSNAME))
	{
		pev(iEntity, pev_origin, vecOrigin);
		iOwner = pev(iEntity, pev_owner);

		if(g_iThinkTimes[iEntity] == floatround(FLAME_DURATION / FLAME_TIMERESET))
		{
			set_pev(iEntity, pev_flags, FL_KILLME);

			return HAM_IGNORED;
		}

		while((iVictim = engfunc(EngFunc_FindEntityInSphere, iVictim, vecOrigin, 100.0)))
		{
			if(iOwner == iVictim || !is_user_alive(iVictim))
				continue;

			#if defined ZP_SUPPORT
				if(zp_get_user_zombie(iOwner) || !zp_get_user_zombie(iVictim))
					continue;
			#endif

			ExecuteHamB(Ham_TakeDamage, iVictim, iEntity, iOwner, FLAME_DAMAGE, DMG_BURN | DMG_NEVERGIB);
		}

		g_iThinkTimes[iEntity] += 1;
		set_pev(iEntity, pev_nextthink, get_gametime() + FLAME_TIMERESET);
	}

	return HAM_IGNORED;
}

public CGrenade__Item_Deploy_Post(iEntity)
{
	static iPlayer; iPlayer = get_pdata_cbase(iEntity, m_pPlayer, linux_diff_weapon);

	#if defined ZP_SUPPORT
		if(zp_get_user_zombie(iPlayer))
			return;
	#endif

	if(!g_iUserHasMolotov[iPlayer]) 
		return;

	set_pev(iPlayer, pev_viewmodel2, GRENADE_VIEW_MODEL);
	set_pev(iPlayer, pev_weaponmodel2, GRENADE_PLAYER_MODEL);
}

public CGrenade__Item_AddToPlayer_Post(iItem, iPlayer) p_set_user_weaponlist(iPlayer, g_iUserHasMolotov[iPlayer]);
public FM_Hook_SetModel_Pre(iEntity, const szModel[])
{
	if(!pev_valid(iEntity)) 
		return FMRES_IGNORED;

	static Float: flDamageTime; pev(iEntity, pev_dmgtime, flDamageTime);
	
	if(flDamageTime == 0.0)
		return FMRES_IGNORED;

	static iOwner; iOwner = pev(iEntity, pev_owner);

	if(equal(szModel, "models/w_smokegrenade.mdl"))
	{
		if(g_iUserHasMolotov[iOwner])
		{
			engfunc(EngFunc_SetModel, iEntity, GRENADE_WORLD_MODEL);
			
			set_pev(iEntity, pev_body, GRENADE_MODEL_BODY);
			set_pev(iEntity, pev_flTimeStepSound, NADE_TYPE);

			g_iUserHasMolotov[iOwner] -= 1;

			return FMRES_SUPERCEDE;
		}
	}

	return FMRES_IGNORED;
}

public CPlayer__MakeWeapon(iPlayer)
{
	static iEntity, g_AllocString_E;

	if(g_AllocString_E || (g_AllocString_E = engfunc(EngFunc_AllocString, WEAPON_OLD)))
		iEntity = engfunc(EngFunc_CreateNamedEntity, g_AllocString_E);

	if(iEntity <= 0) 
		return 0;

	g_iUserHasMolotov[iPlayer]++;
	set_pev(iEntity, pev_spawnflags, SF_NORESPAWN);
	ExecuteHam(Ham_Spawn, iEntity);

	if(!ExecuteHamB(Ham_AddPlayerItem, iPlayer, iEntity)) 
	{
		set_pev(iEntity, pev_flags, FL_KILLME);
		return 0;
	}

	ExecuteHamB(Ham_Item_AttachToPlayer, iEntity, iPlayer);
	return iEntity;
}

stock p_set_user_weaponlist(iPlayer, iList) {
	message_begin(MSG_ONE, get_user_msgid("WeaponList"), _, iPlayer);
	write_string(iList ? WEAPON_NEW : WEAPON_OLD);
	write_byte(iWeaponList[0]);
	write_byte(iWeaponList[1]);
	write_byte(iWeaponList[2]);
	write_byte(iWeaponList[3]);
	write_byte(iWeaponList[4]);
	write_byte(iWeaponList[5]);
	write_byte(iWeaponList[6]);
	write_byte(iWeaponList[7]);
	message_end();
}

MODA UYARLANMIŞ EKLENTİYİ NORMALE ÇEVİRME

Gönderilme zamanı: Cum Eki 15, 2021 7:54 pm
gönderen seating

Kod: Tümünü seç

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

new gHpBombPara

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_clcmd("say /hpbomb","givehpbomb")
    register_clcmd("say !hpbomb","givehpbomb")
    register_clcmd("say .hpbomb","givehpbomb")
    
    
    gHpBombPara = register_cvar("amx_hpbomb","5000")
    
}

public givehpbomb(id) {
    new HpBombPara = get_pcvar_num(gHpBombPara)
    if(cs_get_user_money(id) < HpBombPara) {
        client_print(id,print_center,"Yeterli Paran Yok! %d$ Gerekli",HpBombPara)
        return PLUGIN_HANDLED
    }
    if(!is_user_alive(id)) {
        return PLUGIN_HANDLED
    }
    if(user_has_weapon(id,9)) {
        client_print(id,print_center,"Hp Bombasina Zaten Sahipsin! Daha Fazlasini Alamazsin.")
        return PLUGIN_HANDLED
    }
    if(cs_get_user_buyzone(id) != 1) {
        client_print(id,print_center,"Burada Bomba Alamazsin! (Satin Alma Bolgesine Git.)")
        return PLUGIN_HANDLED
    }
    if(cs_get_user_hasprim(id) != 0) {
        client_print(id,print_center,"Zaten Bomban Var, Fazladan Alamazsin!")
        return PLUGIN_HANDLED
    }
    if(cs_get_user_vip(id) != 0) {
        client_print(id,print_center,"VIP'ler Bu Komutu Kullanamaz!")
        return PLUGIN_HANDLED
    }
    client_print(id,print_center,"Hp Bombasi Satin Aldiniz!")
    cs_set_user_money(id,cs_get_user_money(id) - HpBombPara)
    give_item(id,"weapon_smokegrenade")
    return PLUGIN_HANDLED
}

stock has_user_secondary( index ) { 
    
    new weapons[32],inum; 
    get_user_weapons(index,weapons,inum) 
    for( new i; i<inum ; i++ ) { 
        switch(weapons[i]) { 
            case CSW_SMOKEGRENADE: { 
                return 1; 
            } 
        } 
    } 
    return 0; 
    
} 
Bizde şöyle bir eklenti mevcut smoke bombasının yerine geçen bir bomba plugini kullanıyoruz say dan komutla almaya bağladık belki yardımcı olur molotov plugini komutu uygulamadıkça başka bir bombanın yerine geçmediği için içine eklememiz lazım ama çok fazla bilgim yok benimde :/

MODA UYARLANMIŞ EKLENTİYİ NORMALE ÇEVİRME

Gönderilme zamanı: Cum Eki 15, 2021 8:06 pm
gönderen orucoglukayra
Buyur.

Kod: Tümünü seç

#include < amxmodx >
#include < fakemeta_util >
#include < hamsandwich >
#include < reapi >
#include < cstrike >

#define ZP_SUPPORT // Поддержка Zombie Plague 4.3

#if defined ZP_SUPPORT
	#include < zombieplague >
#endif

#define linux_diff_weapon		4
#define linux_diff_player		5

// CBasePlayerItem
#define m_pPlayer				41

#define MAX_CLIENTS				32
#define NADE_TYPE				1337

#define FLAME_CLASSNAME			"ent_flame" // Класснейм огня
#define FLAME_DURATION			5.0 // Сколько будет идти горение
#define FLAME_TIMERESET			0.2 // Через сколько будет наносится урон

// Урон от огня
#if defined ZP_SUPPORT
	#define FLAME_DAMAGE		random_float(30.0, 50.0)
#else
	#define FLAME_DAMAGE		random_float(3.0, 5.0)
#endif

#define GRENADE_VIEW_MODEL		"models/x/v_molotov.mdl"
#define GRENADE_PLAYER_MODEL	"models/x/p_molotov.mdl"
#define GRENADE_WORLD_MODEL		"models/x/w_molotov.mdl"
#define GRENADE_MODEL_BODY		0

#define GRENADE_EXPLODE_SOUND	"x/molotov_exp.wav"

#define WEAPON_OLD				"weapon_smokegrenade"
#define WEAPON_NEW				"x/weapon_molotov"
#define WEAPON_HUD 				"sprites/x/640hudx1.spr"

new const iWeaponList[] = {  
	13, 1,  -1, -1, 3, 3, 9,  24 // weapon_smokegrenade
}


#if defined ZP_SUPPORT
	new g_iItemID;
#endif

new g_iThinkTimes[512];
new g_iszModelIndexSprite;
new g_iUserHasMolotov[MAX_CLIENTS + 1];
new cvars[2];

public plugin_init()
{
	register_plugin("[AMXX] Grenade: Molotov", "1.1", "xUnicorn (t3rkecorejz)");

	RegisterHam(Ham_Killed, "player", "CPlayer__Killed_Post", .Post = 1);
	RegisterHam(Ham_Touch, "grenade", "CGrenade__Touch_Pre", .Post = 0);
	RegisterHam(Ham_Think, "grenade", "CGrenade__Think_Pre", .Post = 0);
	RegisterHam(Ham_Think, "info_target", "CEntity__Think_Pre", .Post = 0);
	RegisterHam(Ham_Item_Deploy, WEAPON_OLD, "CGrenade__Item_Deploy_Post", .Post = 1);
	RegisterHam(Ham_Item_AddToPlayer, WEAPON_OLD, "CGrenade__Item_AddToPlayer_Post", .Post = 1);

	bind_pcvar_num(create_cvar("molotof_ucret", "800"), cvars[0]);

	register_forward(FM_SetModel, "FM_Hook_SetModel_Pre", ._post = 0);

	register_clcmd(WEAPON_NEW, "HookSelect");

	#if defined ZP_SUPPORT
		g_iItemID = zp_register_extra_item("Molotov", 10, ZP_TEAM_HUMAN);
	#else
		register_clcmd("say molotov", "Command_GiveMolotov");
	#endif
}

public plugin_precache()
{
	new szBuffer[64]; formatex(szBuffer, charsmax(szBuffer), "sprites/%s.txt", WEAPON_NEW);

	engfunc(EngFunc_PrecacheGeneric, szBuffer);
	engfunc(EngFunc_PrecacheGeneric, WEAPON_HUD);
	
	g_iszModelIndexSprite = engfunc(EngFunc_PrecacheModel, "sprites/x/flame.spr");

	engfunc(EngFunc_PrecacheModel, GRENADE_VIEW_MODEL);
	engfunc(EngFunc_PrecacheModel, GRENADE_PLAYER_MODEL);
	engfunc(EngFunc_PrecacheModel, GRENADE_WORLD_MODEL);

	engfunc(EngFunc_PrecacheSound, GRENADE_EXPLODE_SOUND);
}

public client_disconnected(iPlayer) g_iUserHasMolotov[iPlayer] = 0;

#if defined ZP_SUPPORT
	public zp_extra_item_selected(iPlayer, iItemID)
	{
		if(iItemID == g_iItemID)
			Command_GiveMolotov(iPlayer);
	}
#endif

public HookSelect(iPlayer) 
{
	engclient_cmd(iPlayer, WEAPON_OLD);
	return PLUGIN_HANDLED;
}

public Command_GiveMolotov(iPlayer)
{
    if(!is_user_alive(iPlayer))
        return PLUGIN_HANDLED;

    if(get_member(iPlayer, m_iAccount) < cvars[0])
    {
        client_print_color(iPlayer,iPlayer, "^1[^3MOLOTOF^1] Molotof Almak Icin Yeterli Paran Yok ^1!");
        return PLUGIN_HANDLED;
    }

    if(cs_get_user_buyzone(iPlayer) != 1) 
    {
        client_print_color(iPlayer,iPlayer, "^1[^3MOLOTOF^1] Sadece satin alma yerinde molotof alabilirsin ^1!");
        return PLUGIN_HANDLED;
    }

    if(user_has_weapon(iPlayer, CSW_SMOKEGRENADE))
    {
        client_print_color(iPlayer,iPlayer, "^1[^3MOLOTOF^1] Molotof'a zaten sahipsin ^1!");
        return PLUGIN_HANDLED;
    }

    if(CPlayer__MakeWeapon(iPlayer)) 
    {
        g_iUserHasMolotov[iPlayer]++;
        rg_add_account(iPlayer, get_member(iPlayer, m_iAccount) - cvars[0], AS_SET);
        emit_sound(iPlayer, CHAN_ITEM, "items/gunpickup2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
    }

    #if defined ZP_SUPPORT
        else return ZP_PLUGIN_HANDLED;
    #else
        else return PLUGIN_HANDLED;
    #endif

    return PLUGIN_HANDLED;
}

public CPlayer__Killed_Post(iVictim) g_iUserHasMolotov[iVictim] = 0;
public CGrenade__Touch_Pre(iEntity)
{
	if(!pev_valid(iEntity))
		return HAM_IGNORED;

	if(pev(iEntity, pev_flTimeStepSound) == NADE_TYPE)
	{
		static Float: vecOrigin[3];
		pev(iEntity, pev_origin, vecOrigin);

		if(engfunc(EngFunc_PointContents, vecOrigin) == CONTENTS_WATER) {
			set_pev(iEntity, pev_flags, FL_KILLME);
			return HAM_IGNORED;
		}

		set_pev(iEntity, pev_dmgtime, get_gametime());
	}

	return HAM_IGNORED;
}

public CGrenade__Think_Pre(iEntity)
{
	if(!pev_valid(iEntity)) 
		return HAM_IGNORED;

	static Float: flDamageTime; pev(iEntity, pev_dmgtime, flDamageTime);
	
	if(flDamageTime > get_gametime())
		return HAM_IGNORED;

	if(pev(iEntity, pev_flTimeStepSound) == NADE_TYPE)
	{
		static Float: vecOrigin[3];
		pev(iEntity, pev_origin, vecOrigin);

		if(engfunc(EngFunc_PointContents, vecOrigin) == CONTENTS_WATER) {
			set_pev(iEntity, pev_flags, FL_KILLME);
			return HAM_IGNORED;
		}

		MolotovExplode(iEntity);
		return HAM_SUPERCEDE;
	}

	return HAM_IGNORED;
}

MolotovExplode(iEntity)
{
	if(iEntity < 0)
		return;
	
	static Float: vecOrigin[3];
	pev(iEntity, pev_origin, vecOrigin);

	emit_sound(iEntity, CHAN_WEAPON, GRENADE_EXPLODE_SOUND, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);

	static iReference;

	new iOwner; iOwner = pev(iEntity, pev_owner);

	if(iReference || (iReference = engfunc(EngFunc_AllocString, "info_target")))
	{
		new iFlameEntity = engfunc(EngFunc_CreateNamedEntity, iReference);

		g_iThinkTimes[iFlameEntity] = 0;

		set_pev(iFlameEntity, pev_classname, FLAME_CLASSNAME);
		set_pev(iFlameEntity, pev_solid, SOLID_TRIGGER);
		set_pev(iFlameEntity, pev_movetype, MOVETYPE_TOSS);
		set_pev(iFlameEntity, pev_effects, EF_NODRAW);
		set_pev(iFlameEntity, pev_owner, iOwner);
		set_pev(iFlameEntity, pev_nextthink, get_gametime() + FLAME_TIMERESET);

		engfunc(EngFunc_SetModel, iFlameEntity, "models/w_ak47.mdl");
		engfunc(EngFunc_SetOrigin, iFlameEntity, vecOrigin);
	}

	message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
	write_byte(TE_SPRITETRAIL);
	engfunc(EngFunc_WriteCoord, vecOrigin[0]);
	engfunc(EngFunc_WriteCoord, vecOrigin[1]);
	engfunc(EngFunc_WriteCoord, vecOrigin[2] + 100.0);
	engfunc(EngFunc_WriteCoord, vecOrigin[0]);
	engfunc(EngFunc_WriteCoord, vecOrigin[1]);
	engfunc(EngFunc_WriteCoord, vecOrigin[2] + 30.0);
	write_short(g_iszModelIndexSprite);
	write_byte(50);
	write_byte(random_num(17, 20));
	write_byte(random_num(4, 6));
	write_byte(15);
	write_byte(10);
	message_end();

	set_pev(iEntity, pev_flags, FL_KILLME);
}

public CEntity__Think_Pre(iEntity)
{
	if(!pev_valid(iEntity))
		return HAM_IGNORED;

	static iVictim = -1;

	new szClassName[32], vecOrigin[3], iOwner;
	pev(iEntity, pev_classname, szClassName, charsmax(szClassName));

	if(equal(szClassName, FLAME_CLASSNAME))
	{
		pev(iEntity, pev_origin, vecOrigin);
		iOwner = pev(iEntity, pev_owner);

		if(g_iThinkTimes[iEntity] == floatround(FLAME_DURATION / FLAME_TIMERESET))
		{
			set_pev(iEntity, pev_flags, FL_KILLME);

			return HAM_IGNORED;
		}

		while((iVictim = engfunc(EngFunc_FindEntityInSphere, iVictim, vecOrigin, 100.0)))
		{
			if(iOwner == iVictim || !is_user_alive(iVictim))
				continue;

			#if defined ZP_SUPPORT
				if(zp_get_user_zombie(iOwner) || !zp_get_user_zombie(iVictim))
					continue;
			#endif

			ExecuteHamB(Ham_TakeDamage, iVictim, iEntity, iOwner, FLAME_DAMAGE, DMG_BURN | DMG_NEVERGIB);
		}

		g_iThinkTimes[iEntity] += 1;
		set_pev(iEntity, pev_nextthink, get_gametime() + FLAME_TIMERESET);
	}

	return HAM_IGNORED;
}

public CGrenade__Item_Deploy_Post(iEntity)
{
	static iPlayer; iPlayer = get_pdata_cbase(iEntity, m_pPlayer, linux_diff_weapon);

	#if defined ZP_SUPPORT
		if(zp_get_user_zombie(iPlayer))
			return;
	#endif

	if(!g_iUserHasMolotov[iPlayer]) 
		return;

	set_pev(iPlayer, pev_viewmodel2, GRENADE_VIEW_MODEL);
	set_pev(iPlayer, pev_weaponmodel2, GRENADE_PLAYER_MODEL);
}

public CGrenade__Item_AddToPlayer_Post(iItem, iPlayer) p_set_user_weaponlist(iPlayer, g_iUserHasMolotov[iPlayer]);
public FM_Hook_SetModel_Pre(iEntity, const szModel[])
{
	if(!pev_valid(iEntity)) 
		return FMRES_IGNORED;

	static Float: flDamageTime; pev(iEntity, pev_dmgtime, flDamageTime);
	
	if(flDamageTime == 0.0)
		return FMRES_IGNORED;

	static iOwner; iOwner = pev(iEntity, pev_owner);

	if(equal(szModel, "models/w_smokegrenade.mdl"))
	{
		if(g_iUserHasMolotov[iOwner])
		{
			engfunc(EngFunc_SetModel, iEntity, GRENADE_WORLD_MODEL);
			
			set_pev(iEntity, pev_body, GRENADE_MODEL_BODY);
			set_pev(iEntity, pev_flTimeStepSound, NADE_TYPE);

			g_iUserHasMolotov[iOwner] -= 1;

			return FMRES_SUPERCEDE;
		}
	}

	return FMRES_IGNORED;
}

public CPlayer__MakeWeapon(iPlayer)
{
	static iEntity, g_AllocString_E;

	if(g_AllocString_E || (g_AllocString_E = engfunc(EngFunc_AllocString, WEAPON_OLD)))
		iEntity = engfunc(EngFunc_CreateNamedEntity, g_AllocString_E);

	if(iEntity <= 0) 
		return 0;

	g_iUserHasMolotov[iPlayer]++;
	set_pev(iEntity, pev_spawnflags, SF_NORESPAWN);
	ExecuteHam(Ham_Spawn, iEntity);

	if(!ExecuteHamB(Ham_AddPlayerItem, iPlayer, iEntity)) 
	{
		set_pev(iEntity, pev_flags, FL_KILLME);
		return 0;
	}

	ExecuteHamB(Ham_Item_AttachToPlayer, iEntity, iPlayer);
	return iEntity;
}

stock p_set_user_weaponlist(iPlayer, iList) {
	message_begin(MSG_ONE, get_user_msgid("WeaponList"), _, iPlayer);
	write_string(iList ? WEAPON_NEW : WEAPON_OLD);
	write_byte(iWeaponList[0]);
	write_byte(iWeaponList[1]);
	write_byte(iWeaponList[2]);
	write_byte(iWeaponList[3]);
	write_byte(iWeaponList[4]);
	write_byte(iWeaponList[5]);
	write_byte(iWeaponList[6]);
	write_byte(iWeaponList[7]);
	message_end();
}

Moda uyarlanmış eklentiyi normale çevirme

Gönderilme zamanı: Pzr Eki 17, 2021 6:38 pm
gönderen seating
Teşekkür Ederim Hatasız :)