Заявка за плъгини [ТУК]

Всичко свързано с AMX mod (X), плъгини, проблеми с плъгини, заявки и тн.
Потребителски аватар
ErroNBlack
Member
Мнения: 87
Регистриран: чет мар 31, 2016 5:18 pm
Баланс: Locked

ср май 04, 2016 9:35 pm

В тази тема ще се опитвам да намеря плъгините които са заявени от нашите потребители. :P

За целта е нужно да обяснявате плъгина или да изпратите демо снимка което представлява плъгина за да изпълнявам вашата ЗАЯВКА !
Също мога и да компилирам даден плъгин от Вас със ваш префикс.

Очаквам вашите заявки :)
Първият български гейминг форум със английско съдържание, в която ще намерите готови сървъри, плъгини, модове и всичко останало относно гейминг-а, също и интересни плъгини, уроци за "Open-Source" базираните CMS системи.
Трябва да си влязъл в системата, за да можеш да виждаш линковете

Потребителски аватар
MuHaBaM
Member
Мнения: 56
Регистриран: ср май 25, 2016 12:50 pm
Баланс: Locked

ср май 25, 2016 12:54 pm

Трябва ми един плъгин за BaseBuildeR, който когато останеш сам да ти дава да си избереш 3 оръжия:

GoldenAK +NoReciol;
MP5 (+Скин)
М249 (+Скин)

Потребителски аватар
ErroNBlack
Member
Мнения: 87
Регистриран: чет мар 31, 2016 5:18 pm
Баланс: Locked

ср май 25, 2016 4:43 pm

До колкото си спомням на Zombie Plague имаше подобен плъгин, Last Man Survivor - но не съм цъкал никога BaseBuilder (bb) не мога да ти гарантирам, че има такъв. Кажи къде си видял подобен плъгин ? Евентуално ако има такъв плъгин готов веднага ще ти го намеря, но ако не съществува такъв плъгин, няма как да ти го създавам съжалявам.
Първият български гейминг форум със английско съдържание, в която ще намерите готови сървъри, плъгини, модове и всичко останало относно гейминг-а, също и интересни плъгини, уроци за "Open-Source" базираните CMS системи.
Трябва да си влязъл в системата, за да можеш да виждаш линковете

Потребителски аватар
MuHaBaM
Member
Мнения: 56
Регистриран: ср май 25, 2016 12:50 pm
Баланс: Locked

ср май 25, 2016 4:55 pm

Ето, направо ще ти дам кода... Ние с един приятел го написахме. Онзи плъгин го бях открил, ама мамка му.. Къде го слоцих и аз не знам, не си спомням от кой сайт беше.

Ето и .sma файла:

Код: Трябва да си влязъл в системата, за да можеш да виждаш линковете

 #include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <dhudmessage>
#include <fun>

#define TE_BEAMPOINTS  0

new alone_ann = 0

new bool:g_golden_ak47[33]
new bool:g_thanatos_mp5[33]
new bool:g_barlog_m249[33]

new g_MaxPlayers, g_sprite, pcvar_dmg_ak47, pcvar_dmg_thanatos, pcvar_dmg_barlog7

new const v_golden_ak47[] = { "models/new/v_golden_ak47.mdl" }
new const p_golden_ak47[] = { "models/new/p_golden_ak47.mdl" }

new const v_thanatos_mp5[] = { "models/new/v_thanatos_mp5.mdl" }

new const v_barlog7_m249[] = { "models/new/v_balrog7.mdl" }
new const p_barlog7_m249[] = { "models/new/p_balrog7.mdl" }
new const w_barlog7_m249[] = { "models/new/w_balrog7.mdl" }

new const sv_downloadurl[][] =
{
	"weapons/thanatos3_boltpull.wav", "weapons/thanatos3_clipin.wav", "weapons/thanatos3_clipout.wav", "weapons/thanatos3_draw.wav",
	"weapons/balrog7_clipin1.wav", "weapons/balrog7_clipin2.wav", "weapons/balrog7_clipin3.wav", "weapons/balrog7_clipout1.wav", "weapons/balrog7_clipout2.wav"
}

public plugin_init()
{
	new ham[] = "player"
	
	RegisterHam(Ham_Spawn, ham, "Spawn", 1)
	RegisterHam(Ham_TakeDamage, ham, "HamTakeDmg")
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_ak47", "AttackAk47", 1)	
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_mp5navy", "AttackMp5", 1)
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_m249", "AttackM249", 1)
	
	register_event("DeathMsg", "event_deweathmsg", "a")
	register_event("HLTV", "event_hltv", "a", "1=0", "2=0")
	register_event("CurWeapon", "event_curweapon", "be", "1=1")	
	register_event("SendAudio", "roundend_msg", "a", "2=%!MRAD_terwin", "2=%!MRAD_ctwin", "2=%!MRAD_rounddraw")
	register_event("TextMsg", "roundend_msg", "a", "2&#Game_C", "2&#Game_w")
	
	register_forward(FM_PlayerPreThink, "PlayerPreThink", 1)
	register_forward(FM_SetModel, "SetModel", 1)
	
	register_plugin("Last man bonus menu", "1.0", "{ S p @ W n } +++")
}
public plugin_cfg()
{
	pcvar_dmg_ak47 = register_cvar("amxx_golden_awp_dmg", "2.0")
	pcvar_dmg_thanatos = register_cvar("amxx_thanatos_dmg", "3.0")
	pcvar_dmg_barlog7 = register_cvar("amxx_barlog7_dmg", "2.0")
	g_MaxPlayers = get_maxplayers()
}
public client_connect(id)
{
	FuncExists(id)
}
public client_disconnect(id)
{
	FuncExists(id)
}
public roundend_msg()
{
	alone_ann = 0
}
public event_hltv()
{
	for(new i = 0; i <= g_MaxPlayers; i++) 
		FuncExists(i)
}
public Spawn(id)
{
	if(is_user_alive(id))
	{
		FuncExists(id)
		set_user_rendering(id, _, 0, 0, 0, _, 0)
	}
	
	return HAM_IGNORED
}
FuncExists(id)
{
	g_golden_ak47[id] = false 
	g_thanatos_mp5[id] = false
	g_barlog_m249[id] = false 	
}
public HamTakeDmg(victim, inflictor, attacker, Float:damage, damage_bits)
{
	if(is_user_alive(attacker))
	{
		new weapon = read_data(2)
		
		if(weapon == CSW_AK47 && g_golden_ak47[attacker])
		{
			SetHamParamFloat(4, damage * get_pcvar_float(pcvar_dmg_ak47))
			return 
		}
		
		if(weapon == CSW_MP5NAVY && g_thanatos_mp5[attacker])
		{
			SetHamParamFloat(4, damage * get_pcvar_float(pcvar_dmg_thanatos))
			return 
		}
		
		if(weapon == CSW_M249 && g_barlog_m249[attacker])
		{
			SetHamParamFloat(4, damage * get_pcvar_float(pcvar_dmg_barlog7))
		}
	}
}
open_menu(id)
{
	new menu = menu_create("\yBonus menu\d:", "handler_menu")
	
	menu_additem(menu, "\yGolden Ak47 \d(\r+No Recoil\d)", "1", 0)
	menu_additem(menu, "\yMP5 \d(\rx3 Dmg\d)", "2", 0)
	menu_additem(menu, "\yM249 \d(\rx2 Dmg\d)", "3", 0)
	
	menu_setprop(menu, MPROP_EXITNAME, "\dIzhod")
	
	menu_display(id, menu, 0)
}
public handler_menu(id, menu, item)
{
	if(!is_user_alive(id))
	{
		client_print(id, print_chat, "Trqbva da si jiv!")
		return 
	}
	
	if(item == MENU_EXIT)
	{
		menu_destroy(menu)
		return 
	}
	
	new data[4]
	new access, callback
	
	menu_item_getinfo(menu, item, access, data, charsmax(data), _, _, callback)
	
	new key = str_to_num(data)
	
	strip_user_weapons(id)
	
	give_item(id, "weapon_knife")
	
	give_item(id, "weapon_deagle")
	cs_set_user_bpammo(id, CSW_DEAGLE, 200)
	
	switch(key)
	{
		case 1:
		{
			if(user_has_weapon(id, CSW_HEGRENADE)) cs_set_user_bpammo(id, CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE)+1)
			else give_item(id, "weapon_hegrenade")
			
			give_item(id, "weapon_ak47")
			cs_set_user_bpammo(id, CSW_AK47, 200)
			g_golden_ak47[id] = true 
		}
		case 2:
		{
			give_item(id, "weapon_mp5navy")
			cs_set_user_bpammo(id, CSW_MP5NAVY, 200)
			g_thanatos_mp5[id] = true 
		}
		case 3:
		{
			give_item(id, "weapon_m249")
			cs_set_user_bpammo(id, CSW_M249, 200)
			g_barlog_m249[id] = true 
		}
	}
	
	event_curweapon(id)
	menu_destroy(menu)
}
public event_curweapon(id)
{
	new weapon = get_user_weapon(id)
	
	if(g_golden_ak47[id])
	{
		if(weapon == CSW_AK47)
		{
			set_pev(id, pev_gravity, 0.6)
			set_pev(id, pev_viewmodel2, v_golden_ak47)
			set_pev(id, pev_weaponmodel2, p_golden_ak47)
			set_user_rendering(id, kRenderFxGlowShell, 255, 255, 0, kRenderNormal, 16)
		}
		else
		{
			set_pev(id, pev_gravity, 1.0)
			set_user_rendering(id, _, 0, 0, 0, _, 0)
		}
		
		return 
	}
	
	if(g_thanatos_mp5[id])
	{
		if(weapon == CSW_MP5NAVY)
		{
			set_pev(id, pev_viewmodel2, v_thanatos_mp5)
		}
		
		return
	}
	
	if(g_barlog_m249[id])
	{
		if(weapon == CSW_M249)
		{
			set_pev(id, pev_viewmodel2, v_barlog7_m249)
			set_pev(id, pev_weaponmodel2, p_barlog7_m249)
		}
	}
}
public AttackAk47(weapon)
{
	new id = pev(weapon, pev_owner)
	
	new clip, ammo
	get_user_weapon(id, clip, ammo)
	
	if(is_user_alive(id) && clip > 0 && g_golden_ak47[id])
	{
		SetBeampointsTracer(id)
		emit_sound(id, CHAN_AUTO, "weapons/ak47-3.wav", VOL_NORM, ATTN_NORM, 0, PITCH_HIGH)
	}
}
public AttackMp5(weapon)
{
	new id = pev(weapon, pev_owner)
	
	new clip, ammo
	get_user_weapon(id, clip, ammo)
	
	if(is_user_alive(id) && clip > 0 && g_thanatos_mp5[id])
	{
		switch(random_num(1,2))
		{
			case 1: emit_sound(id, CHAN_AUTO, "weapons/mp5-1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_HIGH)
			case 2: emit_sound(id, CHAN_AUTO, "weapons/mp5-2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_HIGH)
		}
	}
}
public AttackM249(weapon)
{
	new id = pev(weapon, pev_owner)
	
	new clip, ammo
	get_user_weapon(id, clip, ammo)
	
	if(is_user_alive(id) && clip > 0 && g_barlog_m249[id])
	{
		emit_sound(id, CHAN_AUTO, "weapons/balrog7.wav", VOL_NORM, ATTN_NORM, 0, PITCH_HIGH)
	}
}
public PlayerPreThink(ent)
{
	if(!is_user_alive(ent))
		return FMRES_IGNORED
		
	if(get_user_weapon(ent) == CSW_AK47 && g_golden_ak47[ent])
	{
		set_pev(ent, pev_punchangle, {0.0, 0.0, 0.0 })
	}
	
	return FMRES_IGNORED
}
public SetModel(ent, const model[])
{
	if(!pev_valid(ent))
		return FMRES_IGNORED
	
	if(equal(model, "models/w_m249.mdl"))
	{
		engfunc(EngFunc_SetModel, ent, w_barlog7_m249)
		return FMRES_SUPERCEDE
	}
	
	return FMRES_IGNORED
}
public event_deathmsg()
{
	new players_ct[32], players_t[32], ict, ite, last
	
	get_players(players_ct, ict, "ae", "CT")
	get_players(players_t, ite, "ae", "TERRORIST")
	
	if(ict == 1 && ite == 1)
	{
		return PLUGIN_CONTINUE
	}
	else
	{
		if(ict == 1 && ite > 1 && alone_ann == 0)
		{
			last = players_ct[0]
			open_menu(last)
		}
		else if(ite == 1 && ict > 1 && alone_ann == 0)
		{
			last = players_t[0]
			open_menu(last)
		}
		else
		{
			return PLUGIN_CONTINUE
		}
	}
	
	alone_ann = last
	
	new last_name[32]
	get_user_name(last, last_name, charsmax(last_name))
	
	set_dhudmessage(0, 255, 0, 0.10, 0.60, 0, 6.0, 3.0, 0.5, 7.5)
	show_dhudmessage(0, "%s is a last man !", last_name) 
	
	return PLUGIN_CONTINUE
}
SetBeampointsTracer(id)
{
	new StartOrigin[3], EndOrigin[3]
	get_user_origin(id, StartOrigin, 0)
	get_user_origin(id, EndOrigin, 3)
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_BEAMPOINTS) //0
	write_coord(StartOrigin[0]-12) //position.x
	write_coord(StartOrigin[1]+15) //position.y
	write_coord(StartOrigin[2]+15) //position.z
	write_coord(EndOrigin[0]-12) //position.x
	write_coord(EndOrigin[1]+15) //position.y
	write_coord(EndOrigin[2]+15) //position.z
	write_short(g_sprite) //sprite
	write_byte(1) //framestart
	write_byte(1) //framerate
	write_byte(3) //life
	write_byte(17) //width
	write_byte(0) //noise
	write_byte(255) //red
	write_byte(215) //green
	write_byte(0) //blue
	write_byte(200) //brightness
	write_byte(150) //speed
	message_end()
}
public plugin_precache()
{
	//W: Golden ak47
	precache_model(v_golden_ak47)
	precache_model(p_golden_ak47)
	precache_sound("weapons/ak47-3.wav")
	
	//W:Thanatos Mp5
	precache_model(v_thanatos_mp5)
	precache_sound("weapons/mp5-1.wav")
	precache_sound("weapons/mp5-2.wav")
	
	//W:Barlog7 M249
	precache_model(v_barlog7_m249)
	precache_model(p_barlog7_m249)
	precache_model(w_barlog7_m249)
	precache_sound("weapons/balrog7.wav")
	
	for(new i = 0; i < sizeof sv_downloadurl; i++) 
		precache_sound(sv_downloadurl[i])
	
	g_sprite = precache_model("sprites/smoke.spr")
} 

Потребителски аватар
ErroNBlack
Member
Мнения: 87
Регистриран: чет мар 31, 2016 5:18 pm
Баланс: Locked

ср май 25, 2016 5:23 pm

Щом сте си го писали със твоя приятел, значи разбирате от кодиране/създаване на плъгин, това значи, че би трябвало да знаете от къде идва проблема ? :P
То си личи, че плъгина не е написан от теб
Името му на плъгина е - Last man bonus menu, версия: 1.0, Автор: { S p @ W n } +++
Да речем, че твоя " приятел " е този автора спаун, кажи му да си оправи плъгина (Ако наистина той е написал плъгина)

Не мога да ти помогна аз, ако има други които разбират от създаване/кодиране на плъгини от този форум, нека да изчакаме тяхното мнение, иначе аз не мога да ти създавам такава функция " Да изкарва автоматично менюто за избиране на оръжията " Съжалявам отново.
Първият български гейминг форум със английско съдържание, в която ще намерите готови сървъри, плъгини, модове и всичко останало относно гейминг-а, също и интересни плъгини, уроци за "Open-Source" базираните CMS системи.
Трябва да си влязъл в системата, за да можеш да виждаш линковете

Потребителски аватар
TheRedShoko
Member
Мнения: 50
Регистриран: пет мар 25, 2016 2:54 pm
Баланс: Locked

ср май 25, 2016 10:22 pm

Искаш ли да има някакви допълнителни екстри към всяко едно оръжие? Например към златния калашник искаш ли да има бонус damage освен опцията за no racoil? Искаш ли другите оръжия да имат някакви екстри или само обикновенни оръжия със скин? Уточни какво точно ти трябва и утре следобед, ако ми остане време понеже имам работа по сървъра ми, ще го направя. ;)

Потребителски аватар
MuHaBaM
Member
Мнения: 56
Регистриран: ср май 25, 2016 12:50 pm
Баланс: Locked

чет май 26, 2016 4:40 pm

-GoldenAK (+No Recoil [x3 dmg] ) Скин: Трябва да си влязъл в системата, за да можеш да виждаш линковете ' 
-MP5 (+ No Recoil [x3 dmg] ) Скин: Трябва да си влязъл в системата, за да можеш да виждаш линковете ;
-M249 (+No Recoil [x2 dmg] ) (без скин, ако може)

Извинявам се за закъснението... Изображение
Последна промяна от xvi на нед яну 22, 2017 7:07 pm, променено общо 1 път.

Потребителски аватар
TheRedShoko
Member
Мнения: 50
Регистриран: пет мар 25, 2016 2:54 pm
Баланс: Locked

чет май 26, 2016 6:27 pm

Код: Трябва да си влязъл в системата, за да можеш да виждаш линковете

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

enum
{
    NONE,
    GOLDENAK,
    MP5,
    M249
}

new iMaxPlayers
new iChoice[33], iLastPlayer
new iDamageMult[4]

new const szGoldAKModel[] = "models/v_goldenak47.mdl"
new const szGoldAKPModel[] = "models/p_goldenak47.mdl"
new const szMP5Model[] = "models/v_thantosmp5.mdl"

public plugin_init()
{
    register_plugin("Extra Weapon for Last Player", "1.0", "TheRedShoko")
    
    RegisterHam(Ham_TakeDamage, "player", "fwPlayerTakeDamage")
    
    register_forward(FM_PlayerPreThink, "fwPlayerPreThink")
    
    register_event("DeathMsg", "eventDeathMsg", "a")
    register_event("CurWeapon", "eventCurWeapon", "be", "1=1")
    
    register_logevent("ResetAll", 2, "1=Round_End")
    register_logevent("ResetAll", 2, "1=Round_Start")
    
    iDamageMult[GOLDENAK] = register_cvar("ewflp_goldenak_damage", "3.0")
    iDamageMult[MP5] = register_cvar("ewflp_mp5_damage", "3.0")
    iDamageMult[M249] = register_cvar("ewflp_m249_damage", "2.0")
    
    iMaxPlayers = get_maxplayers()
}

public client_disconnect(id)
{
    if (iLastPlayer == id)
    {
        iLastPlayer = 0
        iChoice[id] = NONE
    }
    
    check_players()
}

public client_putinserver(id)
{
    if (iLastPlayer == id)
    {
        iLastPlayer = 0
        iChoice[id] = NONE
    }
}

public eventDeathMsg()
{
    check_players()
}

public eventCurWeapon(id)
{
    new iWeapon = read_data(2)
    
    if (is_user_alive(id) && iLastPlayer == id && iChoice[id] != NONE)
    {
        if (iWeapon == CSW_AK47 && iChoice[id] == GOLDENAK)
        {
            set_pev(id, pev_viewmodel2, szGoldAKModel)
            set_pev(id, pev_weaponmodel2, szGoldAKPModel)
        }
        else if (iWeapon == CSW_MP5NAVY && iChoice[id] == MP5)
        {
            set_pev(id, pev_viewmodel2, szMP5Model)
        }
    }
}        

public ResetAll()
{
    for (new i = 1; i <= iMaxPlayers; i++)
    {
        iChoice[i] = NONE
    }
    
    iLastPlayer = 0
}

public fwPlayerTakeDamage(iVictim, Inflictor, iAttacker, Float:flDamage, iDamageBits)
{
    if (iVictim == iAttacker || !is_user_connected(iAttacker))
    {
        return HAM_IGNORED
    }
    
    if (iLastPlayer == iAttacker && (get_user_weapon(iAttacker) == CSW_AK47 && iChoice[iAttacker] == GOLDENAK
    || get_user_weapon(iAttacker) == CSW_MP5NAVY && iChoice[iAttacker] == MP5 || get_user_weapon(iAttacker) == CSW_M249 && iChoice[iAttacker] == M249))
    {
        SetHamParamFloat(4, flDamage * get_pcvar_float(iDamageMult[iChoice[iAttacker]]))
    }
    
    return HAM_IGNORED
}

public fwPlayerPreThink(id)
{
    if (!is_user_alive(id) || iChoice[id] == NONE || iLastPlayer != id)
    {
        return FMRES_IGNORED
    }
    
    set_pev(id, pev_punchangle, { 0.0, 0.0, 0.0 })
    
    return FMRES_IGNORED
}

check_players()
{
    static iAlivePlayers[4], iCT
    
    for (new i = 1; i <= iMaxPlayers; i++)
    {
        if (!is_user_connected(i) || !is_user_alive(i)) continue
        
        iAlivePlayers[get_user_team(i)]++
        
        if (get_user_team(i) == 2)
        {
            iCT = i
        }
    }
    
    if (iAlivePlayers[2] == 1 && iChoice[iCT] == NONE && iLastPlayer != iCT)
    {
        static szName[32]
        get_user_name(iCT, szName, charsmax(szName))
        
        iLastPlayer = iCT
        show_weaponsmenu(iCT)
    }
}

show_weaponsmenu(id)
{
    new iMenu = menu_create("You are the\r Last Alive CT^n\yChoose an extra weapon with ability:", "menu_handler")
    
    new szItem[128]
    
    formatex(szItem, charsmax(szItem), "GoldenAK 47 \r(\yNo Recoil + \w[\yx%i Damage\w]\r)", get_pcvar_num(iDamageMult[GOLDENAK]))
    menu_additem(iMenu, szItem)
    
    formatex(szItem, charsmax(szItem), "Thantos MP5 \r(\yNo Recoil + \w[\yx%i Damage\w]\r)", get_pcvar_num(iDamageMult[MP5]))
    menu_additem(iMenu, szItem)
    
    formatex(szItem, charsmax(szItem), "M249 \r(\yNo Recoil + \w[\yx%i Damage\w]\r)", get_pcvar_num(iDamageMult[M249]))
    menu_additem(iMenu, szItem)
    
    menu_display(id, iMenu)
}

public menu_handler(id, iMenu, Item)
{
    if (Item == MENU_EXIT)
    {
        menu_destroy(iMenu)
        return
    }
    
    switch (Item)
    {
        case 0:
        {
            if (!user_has_weapon(id, CSW_AK47, 1))
            {
                fm_give_item(id, "weapon_ak47")
            }
            
            set_pev(id, pev_viewmodel2, szGoldAKModel)
            set_pev(id, pev_weaponmodel2, szGoldAKPModel)
        }
        case 1:
        {
            if (!user_has_weapon(id, CSW_MP5NAVY, 1))
            {
                fm_give_item(id, "weapon_mp5navy")
            }
            
            set_pev(id, pev_viewmodel2, szMP5Model)
        }
        case 2:
        {
            if (!user_has_weapon(id, CSW_M249, 1))
            {
                fm_give_item(id, "weapon_m249")
            }
        }
    }
    
    iChoice[id] = Item + 1
    
    menu_destroy(iMenu)
}
тест... Компилира се... Написах го набързо, може да съм допуснал някоя грешка, но ми изглежда добре... Ако има нещо пиши...

Код: Трябва да си влязъл в системата, за да можеш да виждаш линковете

new const szGoldAKModel[] = "models/v_goldenak47.mdl"
new const szGoldAKPModel[] = "models/p_goldenak47.mdl"
new const szMP5Model[] = "models/v_thantosmp5.mdl"
от тук се променят моделите
Последна промяна от xvi на нед яну 22, 2017 7:08 pm, променено общо 1 път.

Потребителски аватар
MuHaBaM
Member
Мнения: 56
Регистриран: ср май 25, 2016 12:50 pm
Баланс: Locked

чет май 26, 2016 8:09 pm

Не знам защо, но когато сложа скина и като остана последен не ми дава да си избера оръжие. Не знам от мода ли е, от какво е... Пробвах и да не сложа моделите (да видя дали ще ми изпише да ги иска) и пак същото.

Помощ?

Потребителски аватар
TheRedShoko
Member
Мнения: 50
Регистриран: пет мар 25, 2016 2:54 pm
Баланс: Locked

чет май 26, 2016 8:15 pm

Код: Трябва да си влязъл в системата, за да можеш да виждаш линковете

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

enum
{
    NONE,
    GOLDENAK,
    MP5,
    M249
}

new iMaxPlayers
new iChoice[33], iLastPlayer
new iDamageMult[4]

new const szGoldAKModel[] = "models/v_goldenak47.mdl"
new const szGoldAKPModel[] = "models/p_goldenak47.mdl"
new const szMP5Model[] = "models/v_thantosmp5.mdl"

public plugin_init()
{
    register_plugin("Extra Weapon for Last Player", "1.0", "TheRedShoko")
    
    RegisterHam(Ham_TakeDamage, "player", "fwPlayerTakeDamage")
    
    register_forward(FM_PlayerPreThink, "fwPlayerPreThink")
    
    register_event("DeathMsg", "eventDeathMsg", "a")
    register_event("CurWeapon", "eventCurWeapon", "be", "1=1")
    
    register_logevent("ResetAll", 2, "1=Round_End")
    register_logevent("ResetAll", 2, "1=Round_Start")
    
    iDamageMult[GOLDENAK] = register_cvar("ewflp_goldenak_damage", "3.0")
    iDamageMult[MP5] = register_cvar("ewflp_mp5_damage", "3.0")
    iDamageMult[M249] = register_cvar("ewflp_m249_damage", "2.0")
    
    iMaxPlayers = get_maxplayers()
}

public plugin_precache()
{
    precache_model(szGoldAKModel)
    precache_model(szGoldAKPModel)
    precache_model(szMP5Model)
}

public client_disconnect(id)
{
    if (iLastPlayer == id)
    {
        iLastPlayer = 0
        iChoice[id] = NONE
    }
    
    check_players()
}

public client_putinserver(id)
{
    if (iLastPlayer == id)
    {
        iLastPlayer = 0
        iChoice[id] = NONE
    }
}

public eventDeathMsg()
{
    check_players()
}

public eventCurWeapon(id)
{
    new iWeapon = read_data(2)
    
    if (is_user_alive(id) && iLastPlayer == id && iChoice[id] != NONE)
    {
        if (iWeapon == CSW_AK47 && iChoice[id] == GOLDENAK)
        {
            set_pev(id, pev_viewmodel2, szGoldAKModel)
            set_pev(id, pev_weaponmodel2, szGoldAKPModel)
        }
        else if (iWeapon == CSW_MP5NAVY && iChoice[id] == MP5)
        {
            set_pev(id, pev_viewmodel2, szMP5Model)
        }
    }
}        

public ResetAll()
{
    for (new i = 1; i <= iMaxPlayers; i++)
    {
        iChoice[i] = NONE
    }
    
    iLastPlayer = 0
}

public fwPlayerTakeDamage(iVictim, Inflictor, iAttacker, Float:flDamage, iDamageBits)
{
    if (iVictim == iAttacker || !is_user_connected(iAttacker))
    {
        return HAM_IGNORED
    }
    
    if (iLastPlayer == iAttacker && (get_user_weapon(iAttacker) == CSW_AK47 && iChoice[iAttacker] == GOLDENAK
    || get_user_weapon(iAttacker) == CSW_MP5NAVY && iChoice[iAttacker] == MP5 || get_user_weapon(iAttacker) == CSW_M249 && iChoice[iAttacker] == M249))
    {
        SetHamParamFloat(4, flDamage * get_pcvar_float(iDamageMult[iChoice[iAttacker]]))
    }
    
    return HAM_IGNORED
}

public fwPlayerPreThink(id)
{
    if (!is_user_alive(id) || iChoice[id] == NONE || iLastPlayer != id)
    {
        return FMRES_IGNORED
    }
    
    set_pev(id, pev_punchangle, { 0.0, 0.0, 0.0 })
    
    return FMRES_IGNORED
}

check_players()
{
    static iAlivePlayers[4], iCT
    
    for (new i = 1; i <= iMaxPlayers; i++)
    {
        if (!is_user_connected(i) || !is_user_alive(i)) continue
        
        iAlivePlayers[get_user_team(i)]++
        
        if (get_user_team(i) == 2)
        {
            iCT = i
        }
    }
    
    if (iAlivePlayers[2] == 1 && iChoice[iCT] == NONE && iLastPlayer != iCT)
    {
        static szName[32]
        get_user_name(iCT, szName, charsmax(szName))
        
        iLastPlayer = iCT
        show_weaponsmenu(iCT)
    }
}

show_weaponsmenu(id)
{
    new iMenu = menu_create("You are the\r Last Alive CT^n\yChoose an extra weapon with ability:", "menu_handler")
    
    new szItem[128]
    
    formatex(szItem, charsmax(szItem), "GoldenAK 47 \r(\yNo Recoil + \w[\yx%i Damage\w]\r)", get_pcvar_num(iDamageMult[GOLDENAK]))
    menu_additem(iMenu, szItem)
    
    formatex(szItem, charsmax(szItem), "Thantos MP5 \r(\yNo Recoil + \w[\yx%i Damage\w]\r)", get_pcvar_num(iDamageMult[MP5]))
    menu_additem(iMenu, szItem)
    
    formatex(szItem, charsmax(szItem), "M249 \r(\yNo Recoil + \w[\yx%i Damage\w]\r)", get_pcvar_num(iDamageMult[M249]))
    menu_additem(iMenu, szItem)
    
    menu_display(id, iMenu)
}

public menu_handler(id, iMenu, Item)
{
    if (Item == MENU_EXIT)
    {
        menu_destroy(iMenu)
        return
    }
    
    switch (Item)
    {
        case 0:
        {
            if (!user_has_weapon(id, CSW_AK47, 1))
            {
                fm_give_item(id, "weapon_ak47")
            }
            
            set_pev(id, pev_viewmodel2, szGoldAKModel)
            set_pev(id, pev_weaponmodel2, szGoldAKPModel)
        }
        case 1:
        {
            if (!user_has_weapon(id, CSW_MP5NAVY, 1))
            {
                fm_give_item(id, "weapon_mp5navy")
            }
            
            set_pev(id, pev_viewmodel2, szMP5Model)
        }
        case 2:
        {
            if (!user_has_weapon(id, CSW_M249, 1))
            {
                fm_give_item(id, "weapon_m249")
            }
        }
    }
    
    iChoice[id] = Item + 1
    
    menu_destroy(iMenu)
} 
заповядай! бях забравил да ги precache... Относно менюто включи debug на плъгина и гледай за грешки. За да ти излезе менюто трябва някой да умре/излезе от сървъра. Ако си сам от началото на рунда и няма промяна в играчите няма да ти излезе и менюто.
Последна промяна от xvi на нед яну 22, 2017 7:09 pm, променено общо 1 път.

Отговори

Върни се в “AMX Mod (X)”

  • Информация
  • Кой е на линия

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