Преработка на Pro Become V.I.P.

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
iv69
Извън линия
Потребител
Потребител
Мнения: 744
Регистриран на: 17 Мар 2018, 15:34
Се отблагодари: 214 пъти
Получена благодарност: 39 пъти

Преработка на Pro Become V.I.P.

Мнение от iv69 » 08 Фев 2020, 11:37

Здравейте,
Може ли към плъгина на Дидо ( от тази тема: https://forums.alliedmods.net/showthread.php?t=281385 ) , да се добави
един допълнителен квар:
amx_vip_kills_limit - т.е. - с него да се поставя "лимит" от убийства, след който лимит, играча да "губи" VIP-флага? Може би инфото броя направени убийства с VIP - ше е по-лесно да се отчита от cstats (или просто там да си го "записва" в nvault-a...)-това не го разбирам и знам, главното е - убийствата да се нулират при достигане на някаква горна граница или лимит... - ще бъда много благодарен ако някой се опита да добави тази "опция"
Плъгина:

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

#include <amxmodx>
#include <nvault>
#include <hamsandwich>

// Save type (1 - by name / 2 - by IP / 3 - by SteamID)
#define SAVE_TYPE	3

// Chat Tag (prefix)
#define MSG_TAG		"FREE VIP"

new p_kills, p_flags;

new g_iVault;

new g_iMsgSayText;

new g_iKills[33];
new g_szData[33][35];
new bool:g_bFlagged[33];

public plugin_init()
{
	register_plugin("Pro Become V.I.P.", "re1.0.4", "didoWEE");
	register_cvar( "pb_vip_version", "re1.0.4", FCVAR_SERVER | FCVAR_SPONLY);
	
	p_kills = register_cvar("amx_vip_kills", "1500");	// The number of kills you need to become V.I.P.
	p_flags = register_cvar("amx_vip_flags", "abc");		// The flags you get when you become V.I.P.
	
	g_iVault = nvault_open("pb_vip");
	
	g_iMsgSayText = get_user_msgid("SayText");
	
	RegisterHam(Ham_Spawn, "player", "fwdPlayerSpawn", 1);
	RegisterHam(Ham_Killed, "player", "fwdPlayerKilled", 1);
}

public fwdPlayerSpawn(id)
{
	if(!is_user_alive(id))
		return HAM_IGNORED;
		
	if(!is_real_player(id))
		return HAM_IGNORED;
		
	if(g_bFlagged[id])
		return HAM_IGNORED;
	
	if(!g_iKills[id])
		SayText(id, "^4[%s] ^1Players who play ^3regularly ^1are rewarded with ^4V.I.P. ^1privileges", MSG_TAG);
	
	SayText(id, "^4[%s] ^1You need^3 %i ^1kills more to become ^4V.I.P.", MSG_TAG, (get_pcvar_num(p_kills)-g_iKills[id]));
	return HAM_IGNORED;
}

public fwdPlayerKilled(victim, killer, shouldgib)
{
	if(!is_user_connected(killer))
		return HAM_IGNORED;
		
	if(killer == victim)
		return HAM_IGNORED;
		
	if(!is_real_player(killer))
		return HAM_IGNORED;
		
	if(g_bFlagged[killer])
		return HAM_IGNORED;
	
	g_iKills[killer]++;
	SaveData(killer);
	
	if(g_iKills[killer] < get_pcvar_num(p_kills))
	{
		SayText(killer, "^4[%s] ^1You need ^3%i ^1kills more to become ^4V.I.P.", MSG_TAG, (get_pcvar_num(p_kills)-g_iKills[killer]));
		return HAM_IGNORED;
	}
		
	g_bFlagged[killer] = true;
	
	new flags[24];
	get_pcvar_string(p_flags, flags, charsmax(flags));
	set_user_flags(killer, read_flags(flags));
	
	new name[32];
	get_user_name(killer, name, charsmax(name));
	SayText(0, "^4[%s] ^1Congratulation to^4 %s^1 for reaching^3 %i ^1kills and becoming ^4V.I.P.", MSG_TAG, name, get_pcvar_num(p_kills));
	
	return HAM_IGNORED;
}

public client_authorized(id)
	UpdateData(id);

public client_infochanged(id)
	set_task(0.1, "UpdateData", id);
	
public client_disconnect(id)
	remove_task(id);

public UpdateData(id)
{
	if(!is_real_player(id))
		return PLUGIN_HANDLED;
	
	static flags[24];
	get_pcvar_string(p_flags, flags, charsmax(flags));
	if(get_user_flags(id) & read_flags(flags))
	{
		g_bFlagged[id] = true;
		return PLUGIN_CONTINUE;
	}
	
	switch(SAVE_TYPE)
	{
		case 1: get_user_name(id, g_szData[id], charsmax(g_szData[]));
		case 2: get_user_ip(id, g_szData[id], charsmax(g_szData[]), 1);
		case 3: get_user_authid(id, g_szData[id], charsmax(g_szData[]));
	}
	LoadData(id);
	
	if(g_iKills[id] < get_pcvar_num(p_kills))
	{
		g_bFlagged[id] = false;
		return PLUGIN_HANDLED;
	}
	
	set_user_flags(id, read_flags(flags));
	g_bFlagged[id] = true;
	
	return PLUGIN_CONTINUE;
}

LoadData(id)
{
	new data[16];
	g_iKills[id] = nvault_get(g_iVault, g_szData[id], data, charsmax(data)) ? str_to_num(data):0;
}

SaveData(id)
{
	new data[16];
	num_to_str(g_iKills[id], data, charsmax(data));
	nvault_set(g_iVault, g_szData[id], data);
}

bool:is_real_player(id)
	return ((is_user_bot(id) || is_user_hltv(id)) ? false : true);

SayText(id, input[], any:...)
{
	static i, receiver, iCount, iPlayers[32];
	static msg[191];
	vformat(msg, charsmax(msg), input, 3);
	if(id)
	{
		//if(!is_user_connected(id))
		//	return 0;
		iCount = 1;
		iPlayers[0] = id;
	}
	else
		get_players(iPlayers , iCount , "ch");
	
	for(i=0; i<iCount; i++)
	{
		receiver = iPlayers[i];
		message_begin(MSG_ONE_UNRELIABLE, g_iMsgSayText,. player=receiver);
		write_byte(receiver);
		write_string(msg);
		message_end();
	}
	return 1;
}
Благодаря!

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

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

Кой е на линия

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