Страница 1 от 1

Заявка за два плъгина Bonus Money и Team Flash.

Публикувано на: 02 Мар 2018, 17:04
от M.K.
Здравейте, тъй като нямам опит в писането на плъгини ще помоля ако има някой желаещ да напише тези два плъгина или да ми препоръча сродни плъгини които вършат същата работа, за плъгините имам активен реапи модул в сървъра, ето и какво искам да представляват плъгините:

Bonus Money: При 3 падащи роунда на отбора който пада 3 пъти под ред да дава пари от 1500$ до 2000$ на рандом, а за победителите които бият 3 роунда подред от 1000$ до 1500$ рандом да е също.

Team Flash: При 2 флаша да му забранява да копува флаш за 3 роунда, брояча да се рестартира на 5 роунда админите с флаг "b" да имат имунтет срещи този плъгин, благодаря ви предварително.

Заявка за два плъгина Bonus Money и Team Flash.

Публикувано на: 02 Мар 2018, 18:24
от Fr0sTt
Това ти трябва - viewtopic.php?f=21&t=1551

Заявка за два плъгина Bonus Money и Team Flash.

Публикувано на: 02 Мар 2018, 20:16
от OciXCrom
Вторият (изисква AMXX 1.8.3 & ReGameDLL):

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

#include <amxmodx>
#include <cstrike>
#include <reapi>

#define FLASH_MAX 2
#define FLASH_BAN 3
#define FLASH_IMMUNITY ADMIN_RESERVATION

new g_iRoundCount[33]
new g_iTeamFlashes[33]

public plugin_init()
{
	register_plugin("Flash Restrict", "1.0", "OciXCrom")
	RegisterHookChain(RG_PlayerBlind, "OnPlayerBlind", 1)
	RegisterHookChain(RG_CSGameRules_RestartRound, "OnRoundStart", 1)
}

public client_putinserver(id)
{
	g_iRoundCount[id] = 0
	g_iTeamFlashes[id] = 0
}

public OnPlayerBlind(const id, const iInflictor, const iAttacker)
{
	if((id != iAttacker) && (get_member(id, m_iTeam) == get_member(iAttacker, m_iTeam)) && !has_immunity(iAttacker) && (g_iTeamFlashes[iAttacker] < FLASH_MAX))
	{
		g_iTeamFlashes[iAttacker]++
		
		if(g_iTeamFlashes[iAttacker] >= FLASH_MAX)
		{
			g_iRoundCount[iAttacker] = FLASH_BAN
			client_print(iAttacker, print_center, "You can't buy a flash for %i rounds because you flashed %i teammates!", FLASH_BAN, FLASH_MAX)
		}
	}
}

public CS_OnBuyAttempt(id, iItem)
{
	if(g_iRoundCount[id] && iItem == CSW_FLASHBANG)
	{
		client_print(id, print_center, "You're not allowed to buy a flashbang right now. Wait %i rounds.", g_iRoundCount[id])
		return PLUGIN_HANDLED
	}
	
	return PLUGIN_CONTINUE
}

public OnRoundStart()
{
	new iPlayers[32], iPnum
	get_players(iPlayers, iPnum)
	
	for(new i, iPlayer; i < iPnum; i++)
	{
		iPlayer = iPlayers[i]
		
		if(g_iRoundCount[iPlayer])
			g_iRoundCount[iPlayer]--
	}
}

bool:has_immunity(const id)
	return bool:(get_user_flags(id) & FLASH_IMMUNITY)

Заявка за два плъгина Bonus Money и Team Flash.

Публикувано на: 02 Мар 2018, 20:44
от M.K.
Аз съм с 1.8.2 ,да се надяваме че няма да има проблем?

Заявка за два плъгина Bonus Money и Team Flash.

Публикувано на: 02 Мар 2018, 21:28
от DoPe ;]]
Ще има проблеми :)

Заявка за два плъгина Bonus Money и Team Flash.

Публикувано на: 02 Мар 2018, 23:45
от OciXCrom
Ами щом съм написал, че изиксва 1.8.3, много ясно, че ще има проблеми. Функцията която се ползва в кода (CS_OnBuyAttempt) е достъпна само в 1.8.3. Другият метод, който е за ReAPI, не работи за гранати. Третият метод е да може да купуваш гранатата, обаче да не може да я ползваш. Опитай така:

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

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <reapi>

#define FLASH_MAX 2
#define FLASH_BAN 3
#define FLASH_IMMUNITY ADMIN_RESERVATION

new g_iRoundCount[33]
new g_iTeamFlashes[33]

public plugin_init()
{
	register_plugin("Flash Restrict", "1.0", "OciXCrom")
	RegisterHookChain(RG_PlayerBlind, "OnPlayerBlind", 1)
	RegisterHookChain(RG_CSGameRules_RestartRound, "OnRoundStart", 1)
	RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_flashbang", "OnThrowFlash")
}

public client_putinserver(id)
{
	g_iRoundCount[id] = 0
	g_iTeamFlashes[id] = 0
}

public OnPlayerBlind(const id, const iInflictor, const iAttacker)
{
	if((id != iAttacker) && (get_member(id, m_iTeam) == get_member(iAttacker, m_iTeam)) && !has_immunity(iAttacker) && (g_iTeamFlashes[iAttacker] < FLASH_MAX))
	{
		g_iTeamFlashes[iAttacker]++
		
		if(g_iTeamFlashes[iAttacker] >= FLASH_MAX)
		{
			g_iRoundCount[iAttacker] = FLASH_BAN
			client_print(iAttacker, print_center, "You can't use flashbangs for %i rounds because you flashed %i teammates!", FLASH_BAN, FLASH_MAX)
		}
	}
}

public OnThrowFlash(iEnt)
{
	new id = pev(iEnt, pev_owner)
	
	if(g_iRoundCount[id])
	{
		client_print(id, print_center, "You're not allowed to throw a flashbang for %i more rounds!", g_iRoundCount[id])
		return HAM_SUPERCEDE
	}
	
	return HAM_IGNORED
}

public OnRoundStart()
{
	new iPlayers[32], iPnum
	get_players(iPlayers, iPnum)
	
	for(new i, iPlayer; i < iPnum; i++)
	{
		iPlayer = iPlayers[i]
		
		if(g_iRoundCount[iPlayer])
			g_iRoundCount[iPlayer]--
	}
}

bool:has_immunity(const id)
	return bool:(get_user_flags(id) & FLASH_IMMUNITY)

Заявка за два плъгина Bonus Money и Team Flash.

Публикувано на: 04 Мар 2018, 00:39
от M.K.
Благодаря, всичо е точно слагайте катинара.