Заявка за преработка на два плъгина и търся Bots

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
Pet(5)ko
Извън линия
Потребител
Потребител
Мнения: 134
Регистриран на: 09 Фев 2017, 19:53
Местоположение: Варна
Се отблагодари: 12 пъти
Получена благодарност: 2 пъти
Обратна връзка:

Заявка за преработка на два плъгина и търся Bots

Мнение от Pet(5)ko » 08 Фев 2018, 08:17

Здравейте може ли да ми преработите тези 2 плъгина :
crx_resetscore - Да може да се използва само от потребители с флаг "a" и ако някой напише в чата (/rs /resetscore) Да му изписва "Samo VIP potrebiteli i admini mogat da izpolzvat tazi komanda za info napishete v chata "/wantvip ili /wantadmin"

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

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

#define PLUGIN_NAME "Resetscore System"
#define PLUGIN_VERSION "1.1"
#define PLUGIN_AUTHOR "OciXCrom"

#define sReset "buttons/bell1.wav"
#define sResetAll "buttons/lightswitch2.wav"

enum Color
{
	NORMAL = 1, // clients scr_concolor cvar color
	GREEN, // Green Color
	TEAM_COLOR, // Red, grey, blue
	GREY, // grey
	RED, // Red
	BLUE, // Blue
}

new TeamName[][] = 
{
	"",
	"TERRORIST",
	"CT",
	"SPECTATOR"
}


new const g_Commands[][] = {
	"say /rs",
	"say /resetscore",
	"say_team /rs",
	"say_team /resetscore"
}

new cvar_prefix, cvar_alive, cvar_viponly, cvar_vipflag, cvar_limit, cvar_resetkills, cvar_resetdeaths, cvar_resetmoney, cvar_notifyall, cvar_sound, cvar_chat, cvar_adverttime
new limit[33], advert

public plugin_init()
{
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
	register_cvar("ResetscoreSystem", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	
	cvar_prefix = 			register_cvar("resetscore_prefix", 			"!g[!tResetscore System!g]")
	cvar_alive = 			register_cvar("resetscore_alive", 			"1")
	cvar_viponly = 			register_cvar("resetscore_viponly", 		"0")
	cvar_vipflag = 			register_cvar("resetscore_vipflag", 		"b")
	cvar_limit =			register_cvar("resetscore_limit", 			"0")
	cvar_resetkills = 		register_cvar("resetscore_resetkills", 		"1")
	cvar_resetdeaths = 		register_cvar("resetscore_resetdeaths", 	"1")
	cvar_resetmoney = 		register_cvar("resetscore_resetmoney",		"0")
	cvar_notifyall = 		register_cvar("resetscore_notifyall", 		"1")
	cvar_sound = 			register_cvar("resetscore_sound", 			"1")
	cvar_chat = 			register_cvar("resetscore_chat", 			"0")
	cvar_adverttime = 		register_cvar("resetscore_adverttime", 		"120")
	
	for(new i = 0; i < sizeof(g_Commands); i++)
		register_clcmd(g_Commands[i], "cmd_resetscore")
}

public plugin_cfg()
{
	advert = get_pcvar_num(cvar_adverttime)
	if(advert > 0) set_task(float(advert), "rs_advertise", 2222, "", 0, "b", 0)
}

public cmd_resetscore(id)
{
	static szPrefix[100]
	szPrefix = get_prefix()
	
	static cmd_limit
	cmd_limit = get_pcvar_num(cvar_limit)
	
	if(!get_pcvar_num(cvar_alive) && is_user_alive(id))
	{
		ColorChat(id, TEAM_COLOR, "%s ^1You can't ^3reset ^1your ^4score ^1while you are ^3alive^1.", szPrefix)
		return PLUGIN_HANDLED
	}
	
	if(get_pcvar_num(cvar_viponly) == 1 && !user_has_flag(id, cvar_vipflag))
	{
		new flag_vip[2]
		get_pcvar_string(cvar_vipflag, flag_vip, charsmax(flag_vip))
		
		ColorChat(id, TEAM_COLOR, "%s ^1Flag ^3%s ^1is neeeded to ^4reset your score^1.", szPrefix, flag_vip)
		return PLUGIN_HANDLED
	}
	
	if(cmd_limit > 0)
	{
		if(limit[id] == cmd_limit)
		{
			ColorChat(id, TEAM_COLOR, "%s ^1You can ^4reset your score ^1only ^3%i ^1times per map.", szPrefix, cmd_limit)
			return PLUGIN_HANDLED
		}
		
		if(limit[id] < cmd_limit)
			limit[id]++
	}
	
	new limit_left = cmd_limit - limit[id]
	
	switch(get_pcvar_num(cvar_notifyall))
	{
		case 0:
		{
			if(cmd_limit > 0)
			{
				if(limit_left == 0) ColorChat(id, TEAM_COLOR, "%s ^1You have just ^3reset ^1your ^4score^1. You ^3can't ^1use this command anymore.", szPrefix)
				else ColorChat(id, TEAM_COLOR, "%s ^1You have just ^3reset ^1your ^4score^1. You can do this ^3%i ^1more time%s.", szPrefix, limit_left, (limit_left == 1) ? "" : "s")
			}
			else ColorChat(id, TEAM_COLOR, "%s ^1You have just ^3reset ^1your ^4score^1.", szPrefix)
		}
		case 1:
		{
			new name[32]
			get_user_name(id, name, charsmax(name))
			
			if(cmd_limit > 0) ColorChat(0, TEAM_COLOR, "%s ^1Player ^3%s ^1has just ^4reset his score ^1[^4Limit: ^3%i^1/^3%i^1]", szPrefix, name, limit[id], cmd_limit)
			else ColorChat(0, TEAM_COLOR, "%s ^1Player ^3%s ^1has just ^4reset his score^1.", szPrefix, name)
		}
	}
	
	switch(get_pcvar_num(cvar_sound))
	{
		case 1: client_cmd(id, "spk %s", sReset)
		case 2: client_cmd(0, "spk %s", sResetAll)
	}
	
	resetscore(id)
	return (get_pcvar_num(cvar_chat) == 1) ? PLUGIN_CONTINUE : PLUGIN_HANDLED
}

public rs_advertise()
	ColorChat(0, TEAM_COLOR, "%s ^1Type ^3/rs ^1or ^3/resetscore ^1to ^4reset your score^1.", get_prefix())

resetscore(id)
{
	if(get_pcvar_num(cvar_resetkills) == 1) set_user_frags(id, 0)
	if(get_pcvar_num(cvar_resetdeaths) == 1) cs_set_user_deaths(id, 0)
	if(get_pcvar_num(cvar_resetmoney) == 1) cs_set_user_money(id, get_cvar_num("mp_startmoney"))
}

stock get_prefix()
{
	static szPrefix[100]
	get_pcvar_string(cvar_prefix, szPrefix, charsmax(szPrefix))
	
	replace_all(szPrefix, charsmax(szPrefix), "!n", "^1")
	replace_all(szPrefix, charsmax(szPrefix), "!t", "^3")
	replace_all(szPrefix, charsmax(szPrefix), "!g", "^4")
	
	return szPrefix
}

stock user_has_flag(id, cvar)
{
	new flags[32]
	get_flags(get_user_flags(id), flags, charsmax(flags))
	
	new vip_flag[2]
	get_pcvar_string(cvar, vip_flag, charsmax(vip_flag))
	
	return (contain(flags, vip_flag) != -1) ? true : false
}

public plugin_precache()
{
	precache_sound(sReset)
	precache_sound(sResetAll)
}

/* ColorChat */

ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
	static message[256];

	switch(type)
	{
		case NORMAL: // clients scr_concolor cvar color
		{
			message[0] = 0x01;
		}
		case GREEN: // Green
		{
			message[0] = 0x04;
		}
		default: // White, Red, Blue
		{
			message[0] = 0x03;
		}
	}

	vformat(message[1], 251, msg, 4);

	// Make sure message is not longer than 192 character. Will crash the server.
	message[192] = '^0';

	static team, ColorChange, index, MSG_Type;
	
	if(id)
	{
		MSG_Type = MSG_ONE;
		index = id;
	} else {
		index = FindPlayer();
		MSG_Type = MSG_ALL;
	}
	
	team = get_user_team(index);
	ColorChange = ColorSelection(index, MSG_Type, type);

	ShowColorMessage(index, MSG_Type, message);
		
	if(ColorChange)
	{
		Team_Info(index, MSG_Type, TeamName[team]);
	}
}

ShowColorMessage(id, type, message[])
{
	message_begin(type, get_user_msgid("SayText"), _, id);
	write_byte(id)		
	write_string(message);
	message_end();	
}

Team_Info(id, type, team[])
{
	message_begin(type, get_user_msgid("TeamInfo"), _, id);
	write_byte(id);
	write_string(team);
	message_end();

	return 1;
}

ColorSelection(index, type, Color:Type)
{
	switch(Type)
	{
		case RED:
		{
			return Team_Info(index, type, TeamName[1]);
		}
		case BLUE:
		{
			return Team_Info(index, type, TeamName[2]);
		}
		case GREY:
		{
			return Team_Info(index, type, TeamName[0]);
		}
	}

	return 0;
}

FindPlayer()
{
	static i;
	i = -1;

	while(i <= get_maxplayers())
	{
		if(is_user_connected(++i))
		{
			return i;
		}
	}

	return -1;
}
crx_team_advantage Да дава възнаграждение само на потребители с флаг "a" и да изписва в чата примерно : Vsichki VIP potrebite ot CT / T team poluchavat bonus **** Zaradi zagubenite rundove

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

#include <amxmodx>
#include <amxmisc>
#include <cromchat>
#include <cstrike>

#define PLUGIN_VERSION "1.0"

enum
{
	SECTION_NONE = 0,
	SECTION_SETTINGS,
	SECTION_ADVANTAGES
}

enum _:Settings
{
	CsTeams:ADVANTAGE_TEAM,
	ADVANTAGE_FLAGS[32],
	bool:ADVANTAGE_USE_FLAGS,
	MAX_MONEY,
	bool:PLAYER_MESSAGE
}

new g_eSettings[Settings]

new Array:g_aLoses,
	Array:g_aMoney,
	bool:g_bRoundEnd,
	g_iLoses[CsTeams:3],
	g_iAdvantages

public plugin_init()
{
	register_plugin("Team Advantage", PLUGIN_VERSION, "OciXCrom")
	register_cvar("CRXTeamAdvantage", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	register_dictionary("TeamAdvantage.txt")
	register_logevent("OnFirstRound", 2, "0=World triggered", "1&Restart_Round_")
	register_logevent("OnFirstRound", 2, "0=World triggered", "1=Game_Commencing")
	register_logevent("OnRoundStart", 2, "0=World triggered", "1=Round_Start")
	register_event("SendAudio", "OnTeamWin", "a", "2&%!MRAD_terwin", "2&%!MRAD_ctwin")
	g_aLoses = ArrayCreate(5)
	g_aMoney = ArrayCreate(8)
	ReadFile()
}

public plugin_end()
{
	ArrayDestroy(g_aLoses)
	ArrayDestroy(g_aMoney)
}

public OnFirstRound()
{
	g_iLoses[CS_TEAM_CT] = 0
	g_iLoses[CS_TEAM_T] = 0
}

public OnRoundStart()
	g_bRoundEnd = false

public OnTeamWin()
{
	if(g_bRoundEnd)
		return
		
	g_bRoundEnd = true
	
	new szTeam[9]
	read_data(2, szTeam, charsmax(szTeam))
	
	new CsTeams:iWinTeam = szTeam[7] == 'c' ? CS_TEAM_CT : CS_TEAM_T,
		CsTeams:iLoseTeam = iWinTeam == CS_TEAM_CT ? CS_TEAM_T : CS_TEAM_CT
	
	g_iLoses[iLoseTeam]++
	g_iLoses[iWinTeam] = 0
	
	if(g_eSettings[ADVANTAGE_TEAM] != CS_TEAM_UNASSIGNED && g_eSettings[ADVANTAGE_TEAM] != iLoseTeam)
		return
	
	new iMoney
	
	for(new i; i < g_iAdvantages; i++)
	{
		if(g_iLoses[iLoseTeam] == ArrayGetCell(g_aLoses, i))
		{
			iMoney = ArrayGetCell(g_aMoney, i)
			break
		}
	}
	
	if(!iMoney)
		return
		
	new iPlayers[32], iPnum
	get_players(iPlayers, iPnum, "e", iLoseTeam == CS_TEAM_CT ? "CT" : "TERRORIST")
	
	if(g_eSettings[ADVANTAGE_USE_FLAGS])
		CC_SendMessage(0, "%L", LANG_PLAYER, "ADVANTAGE_GET_FLAGS", g_eSettings[ADVANTAGE_FLAGS], LANG_PLAYER, iLoseTeam == CS_TEAM_CT ? "ADVANTAGE_TEAM_CT" : "ADVANTAGE_TEAM_T", iMoney, g_iLoses[iLoseTeam])
	else
		CC_SendMessage(0, "%L", LANG_PLAYER, "ADVANTAGE_GET_NORMAL", LANG_PLAYER, iLoseTeam == CS_TEAM_CT ? "ADVANTAGE_TEAM_CT" : "ADVANTAGE_TEAM_T", iMoney, g_iLoses[iLoseTeam])		
	
	for(new iPlayer, i; i < iPnum; i++)
	{
		iPlayer = iPlayers[i]
		
		if(g_eSettings[ADVANTAGE_USE_FLAGS] && !has_all_flags(iPlayer, g_eSettings[ADVANTAGE_FLAGS]))
			continue
			
		cs_set_user_money(iPlayers[i], clamp(cs_get_user_money(iPlayer) + iMoney, .max = g_eSettings[MAX_MONEY]))
		
		if(g_eSettings[PLAYER_MESSAGE])
			CC_SendMessage(iPlayer, "%L", iPlayer, "ADVANTAGE_GET_PLAYER", iMoney, g_iLoses[iLoseTeam])
	}
}

ReadFile()
{
	new szConfigsName[256], szFilename[256]
	get_configsdir(szConfigsName, charsmax(szConfigsName))
	formatex(szFilename, charsmax(szFilename), "%s/TeamAdvantage.ini", szConfigsName)
	
	new iFilePointer = fopen(szFilename, "rt")
	
	if(iFilePointer)
	{
		new szData[64], szKey[32], szValue[32], iNum, iSection = SECTION_NONE
		
		while(!feof(iFilePointer))
		{
			fgets(iFilePointer, szData, charsmax(szData))
			trim(szData)
			
			switch(szData[0])
			{
				case EOS, ';': continue
				case '[':
				{
					iNum = strlen(szData)
					
					if(szData[iNum - 1] == ']')
					{
						switch(szData[1])
						{
							case 'S', 's': iSection = SECTION_SETTINGS
							case 'A', 'a': iSection = SECTION_ADVANTAGES
						}
					}
					else continue
				}
				default:
				{
					strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
					trim(szKey); trim(szValue)
					
					if(!szValue[0])
						continue
						
					switch(iSection)
					{
						case SECTION_SETTINGS:
						{
							if(equal(szKey, "ADVANTAGE_TEAM"))
							{
								switch(szValue[0])
								{
									case 'C', 'c': g_eSettings[ADVANTAGE_TEAM] = CS_TEAM_CT
									case 'T', 't': g_eSettings[ADVANTAGE_TEAM] = CS_TEAM_T
									default: g_eSettings[ADVANTAGE_TEAM] = CS_TEAM_UNASSIGNED
								}
							}
							else if(equal(szKey, "ADVANTAGE_FLAGS"))
							{
								if(szValue[0] != '!')
								{
									g_eSettings[ADVANTAGE_USE_FLAGS] = true
									copy(g_eSettings[ADVANTAGE_FLAGS], charsmax(g_eSettings[ADVANTAGE_FLAGS]), szValue)
								}
							}
							else if(equal(szKey, "MAX_MONEY"))
								g_eSettings[MAX_MONEY] = str_to_num(szValue)
							else if(equal(szKey, "CHAT_PREFIX"))
								CC_SetPrefix(szValue)
							else if(equal(szKey, "PLAYER_MESSAGE"))
								g_eSettings[PLAYER_MESSAGE] = _:clamp(str_to_num(szValue), false, true)
						}
						case SECTION_ADVANTAGES:
						{
							iNum = str_to_num(szKey)
							ArrayPushCell(g_aLoses, iNum)
							
							iNum = str_to_num(szValue)
							ArrayPushCell(g_aMoney, iNum)
							
							g_iAdvantages++
						}
					}
				}
			}
		}
		
		fclose(iFilePointer)
	}
}
И последно,търся плъгин забелязах в някой сървъри има 2 бота който са ИП-то на сървъра и уеб сайта.

Аватар
wrath
Извън линия
Потребител
Потребител
Мнения: 167
Регистриран на: 21 Яну 2018, 10:30
Местоположение: /changerace
Обратна връзка:

Заявка за преработка на два плъгина и търся Bots

Мнение от wrath » 08 Фев 2018, 10:13

IP Bot

Website Bot: :rolle:

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

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <xs>

#define PLUGIN "WebSiteBot"
#define VERSION "1.0"
#define AUTHOR "Parker;"

#define OFFSET_LINUX 5


new bw_botname
new bw_botnumber
new cvar_enable
new g_oldbotname[32]
new g_oldbotid
new g_teaminfo

enum (+= 1000)
{
	TASK_ID_BOTS
};

enum CS_Internal_Models 
{
	CS_DONTCHANGE = 0
}

enum CsTeams 
{
	CS_TEAM_UNASSIGNED = 0,
	CS_TEAM_T = 1,
	CS_TEAM_CT = 2,
	CS_TEAM_SPECTATOR = 3
};

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	bw_botname = register_cvar("bw_botname", "www.YourWebSite.com.ar")
	bw_botnumber = register_cvar("bw_kickbot", "4")
	cvar_enable = register_cvar("bw_enable", "1")
	set_task(5.0, "Createbot", TASK_ID_BOTS, _, _, "b")
	g_teaminfo = get_user_msgid("TeamInfo")
	
}
public Createbot()
{
	if( get_pcvar_num(cvar_enable) != 1 )
		return;
		
	new botname[32]
	get_pcvar_string(bw_botname, botname, 31)
	
	new id = find_player("ia", botname)
	
	new playersn = get_playersnum()

	if( !equali(botname, g_oldbotname) )
	{
		if( is_user_connected(g_oldbotid) && is_user_bot(g_oldbotid) )
		{
			set_user_info(g_oldbotid, "name", botname)
			return;
		}
	}
	
	
	if( playersn < get_pcvar_num(bw_botnumber) && !id )
	{
		g_oldbotid = id = engfunc(EngFunc_CreateFakeClient, botname)
		
		g_oldbotname = botname
		
		if( pev_valid( id ) )
		{
			engfunc( EngFunc_FreeEntPrivateData, id)
			dllfunc( MetaFunc_CallGameEntity, "player", id)
			set_user_info( id, "rate", "3500" )
			set_user_info( id, "cl_updaterate", "25" )
			set_user_info( id, "cl_lw", "1" )
			set_user_info( id, "cl_lc", "1" )
			set_user_info( id, "cl_dlmax", "128" )
			set_user_info( id, "cl_righthand", "1" )
			set_user_info( id, "_vgui_menus", "0" )
			set_user_info( id, "_ah", "0" )
			set_user_info( id, "dm", "0" )
			set_user_info( id, "tracker", "0" )
			set_user_info( id, "friends", "0" )
			set_user_info( id, "*bot", "1" )
			set_pev( id, pev_flags, pev( id, pev_flags ) | FL_FAKECLIENT )
			set_pev( id, pev_colormap, id )
			
			new msg[128]
			dllfunc( DLLFunc_ClientConnect, id, botname, "127.0.0.1", msg )
			dllfunc( DLLFunc_ClientPutInServer, id )
			engfunc( EngFunc_RunPlayerMove, id, Float:{0.0,0.0,0.0}, 0.0, 0.0, 0.0, 0, 0, 76 )
			
			fm_set_user_team(id, CS_TEAM_CT);
			dllfunc(DLLFunc_Spawn, id)
		}
	}
	
	else if( playersn > get_pcvar_num(bw_botnumber) && id )
	{
		set_pev(id, pev_effects, pev(id, pev_effects) & ~EF_NODRAW)
		server_cmd( "kick #%d", get_user_userid(id) )
	}
	
	else if( id )
	{
		if( !is_user_alive(id) )
			dllfunc(DLLFunc_Spawn, id)
		
		set_pev(id, pev_effects, pev(id, pev_effects) & EF_NODRAW)
		set_pev(id, pev_solid, SOLID_NOT)
		set_pev(id, pev_takedamage, DAMAGE_NO)
		
		fix_score_team(id,"SPECTATOR")
		
	}
}

stock bool:bw_botis_valid(id)
{	
	return ( is_user_connected(g_oldbotid) && is_user_bot(g_oldbotid) && id == g_oldbotid )
}
stock fm_set_user_team(id, {CsTeams,_}:team, {CS_Internal_Models,_}:model = CS_DONTCHANGE)
{
	if( !is_user_connected(id) )
		return 0;
	
	set_pdata_int(id, 114, _:team, OFFSET_LINUX);

	if(model)
	{
		set_pdata_int( id, 126, _:model, OFFSET_LINUX);
	}

	dllfunc( DLLFunc_ClientUserInfoChanged, id, engfunc( EngFunc_GetInfoKeyBuffer, id ) );

	static const teams[] = { "UNASSIGNED", "TERRORIST", "CT", "SPECTATOR" };

	emessage_begin(MSG_BROADCAST, g_teaminfo);
	ewrite_byte(id);
	ewrite_string(teams[_:team]);
	emessage_end();
    
	return 1;

}

stock fix_score_team(id, const TEAM[])
{
	emessage_begin(MSG_BROADCAST, g_teaminfo);
	ewrite_byte(id);
	ewrite_string(TEAM);
	emessage_end();
}
stock bw_make_cvarexec(const config[])
{
	new f = fopen(config, "wt");
	new stringscvars[192]
	
	fprintf(f, "// Bot WebSite^n")
	fprintf(f, "// -_-_-_-_-_-_-^n")
	get_pcvar_string(bw_botname, stringscvars, 191)
	fprintf(f, "bw_botname ^"%s^" // Bot name, Default( ^"www.YourWebSite.com.ar^" )^n", stringscvars)
	fprintf(f, "bw_kickbot %i // Number of Player to Kick the Bot^n", get_pcvar_num(bw_botnumber))
	fprintf(f, "^n")
	
	fclose(f);
	
	server_cmd("exec %s", config)
	server_exec()
}
Добавено преди 2 минути 52 секунди:
Единствения CVAR ти е bw_botname "името на website-а". Друго не пипай. :coffee:
I am not big on sermons ,broken bones teach better lessons. Изображение Изображение

Аватар
Pet(5)ko
Извън линия
Потребител
Потребител
Мнения: 134
Регистриран на: 09 Фев 2017, 19:53
Местоположение: Варна
Се отблагодари: 12 пъти
Получена благодарност: 2 пъти
Обратна връзка:

Заявка за преработка на два плъгина и търся Bots

Мнение от Pet(5)ko » 08 Фев 2018, 10:28

wrath написа: 08 Фев 2018, 10:13 IP Bot

Website Bot: :rolle:

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

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <xs>

#define PLUGIN "WebSiteBot"
#define VERSION "1.0"
#define AUTHOR "Parker;"

#define OFFSET_LINUX 5


new bw_botname
new bw_botnumber
new cvar_enable
new g_oldbotname[32]
new g_oldbotid
new g_teaminfo

enum (+= 1000)
{
	TASK_ID_BOTS
};

enum CS_Internal_Models 
{
	CS_DONTCHANGE = 0
}

enum CsTeams 
{
	CS_TEAM_UNASSIGNED = 0,
	CS_TEAM_T = 1,
	CS_TEAM_CT = 2,
	CS_TEAM_SPECTATOR = 3
};

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	bw_botname = register_cvar("bw_botname", "www.YourWebSite.com.ar")
	bw_botnumber = register_cvar("bw_kickbot", "4")
	cvar_enable = register_cvar("bw_enable", "1")
	set_task(5.0, "Createbot", TASK_ID_BOTS, _, _, "b")
	g_teaminfo = get_user_msgid("TeamInfo")
	
}
public Createbot()
{
	if( get_pcvar_num(cvar_enable) != 1 )
		return;
		
	new botname[32]
	get_pcvar_string(bw_botname, botname, 31)
	
	new id = find_player("ia", botname)
	
	new playersn = get_playersnum()

	if( !equali(botname, g_oldbotname) )
	{
		if( is_user_connected(g_oldbotid) && is_user_bot(g_oldbotid) )
		{
			set_user_info(g_oldbotid, "name", botname)
			return;
		}
	}
	
	
	if( playersn < get_pcvar_num(bw_botnumber) && !id )
	{
		g_oldbotid = id = engfunc(EngFunc_CreateFakeClient, botname)
		
		g_oldbotname = botname
		
		if( pev_valid( id ) )
		{
			engfunc( EngFunc_FreeEntPrivateData, id)
			dllfunc( MetaFunc_CallGameEntity, "player", id)
			set_user_info( id, "rate", "3500" )
			set_user_info( id, "cl_updaterate", "25" )
			set_user_info( id, "cl_lw", "1" )
			set_user_info( id, "cl_lc", "1" )
			set_user_info( id, "cl_dlmax", "128" )
			set_user_info( id, "cl_righthand", "1" )
			set_user_info( id, "_vgui_menus", "0" )
			set_user_info( id, "_ah", "0" )
			set_user_info( id, "dm", "0" )
			set_user_info( id, "tracker", "0" )
			set_user_info( id, "friends", "0" )
			set_user_info( id, "*bot", "1" )
			set_pev( id, pev_flags, pev( id, pev_flags ) | FL_FAKECLIENT )
			set_pev( id, pev_colormap, id )
			
			new msg[128]
			dllfunc( DLLFunc_ClientConnect, id, botname, "127.0.0.1", msg )
			dllfunc( DLLFunc_ClientPutInServer, id )
			engfunc( EngFunc_RunPlayerMove, id, Float:{0.0,0.0,0.0}, 0.0, 0.0, 0.0, 0, 0, 76 )
			
			fm_set_user_team(id, CS_TEAM_CT);
			dllfunc(DLLFunc_Spawn, id)
		}
	}
	
	else if( playersn > get_pcvar_num(bw_botnumber) && id )
	{
		set_pev(id, pev_effects, pev(id, pev_effects) & ~EF_NODRAW)
		server_cmd( "kick #%d", get_user_userid(id) )
	}
	
	else if( id )
	{
		if( !is_user_alive(id) )
			dllfunc(DLLFunc_Spawn, id)
		
		set_pev(id, pev_effects, pev(id, pev_effects) & EF_NODRAW)
		set_pev(id, pev_solid, SOLID_NOT)
		set_pev(id, pev_takedamage, DAMAGE_NO)
		
		fix_score_team(id,"SPECTATOR")
		
	}
}

stock bool:bw_botis_valid(id)
{	
	return ( is_user_connected(g_oldbotid) && is_user_bot(g_oldbotid) && id == g_oldbotid )
}
stock fm_set_user_team(id, {CsTeams,_}:team, {CS_Internal_Models,_}:model = CS_DONTCHANGE)
{
	if( !is_user_connected(id) )
		return 0;
	
	set_pdata_int(id, 114, _:team, OFFSET_LINUX);

	if(model)
	{
		set_pdata_int( id, 126, _:model, OFFSET_LINUX);
	}

	dllfunc( DLLFunc_ClientUserInfoChanged, id, engfunc( EngFunc_GetInfoKeyBuffer, id ) );

	static const teams[] = { "UNASSIGNED", "TERRORIST", "CT", "SPECTATOR" };

	emessage_begin(MSG_BROADCAST, g_teaminfo);
	ewrite_byte(id);
	ewrite_string(teams[_:team]);
	emessage_end();
    
	return 1;

}

stock fix_score_team(id, const TEAM[])
{
	emessage_begin(MSG_BROADCAST, g_teaminfo);
	ewrite_byte(id);
	ewrite_string(TEAM);
	emessage_end();
}
stock bw_make_cvarexec(const config[])
{
	new f = fopen(config, "wt");
	new stringscvars[192]
	
	fprintf(f, "// Bot WebSite^n")
	fprintf(f, "// -_-_-_-_-_-_-^n")
	get_pcvar_string(bw_botname, stringscvars, 191)
	fprintf(f, "bw_botname ^"%s^" // Bot name, Default( ^"www.YourWebSite.com.ar^" )^n", stringscvars)
	fprintf(f, "bw_kickbot %i // Number of Player to Kick the Bot^n", get_pcvar_num(bw_botnumber))
	fprintf(f, "^n")
	
	fclose(f);
	
	server_cmd("exec %s", config)
	server_exec()
}
Добавено преди 2 минути 52 секунди:
Единствения CVAR ти е bw_botname "името на website-а". Друго не пипай. :coffee:

Само това за ИП-то нещо не мога да настроя cvars :
ff_players 0
ff_automode 1
ff_delay 0

И не излиза а пише,че плъгина е пуснат ... :confused:

Аватар
wrath
Извън линия
Потребител
Потребител
Мнения: 167
Регистриран на: 21 Яну 2018, 10:30
Местоположение: /changerace
Обратна връзка:

Заявка за преработка на два плъгина и търся Bots

Мнение от wrath » 08 Фев 2018, 10:43

Пробвай с ff_players 1
ff_delay 1.


Добавено преди 3 минути 12 секунди:
Човек ,не ,този плъгин не ти трябва.. Тоя Fake Player Client го махни ,oстави само Website ,ще намеря друг. Тоя е бил за ботове които са си с настроени имена и т.н. :coffee:

Добавено преди 2 минути :
Това? ;)
I am not big on sermons ,broken bones teach better lessons. Изображение Изображение

Аватар
Pet(5)ko
Извън линия
Потребител
Потребител
Мнения: 134
Регистриран на: 09 Фев 2017, 19:53
Местоположение: Варна
Се отблагодари: 12 пъти
Получена благодарност: 2 пъти
Обратна връзка:

Заявка за преработка на два плъгина и търся Bots

Мнение от Pet(5)ko » 08 Фев 2018, 11:01

wrath написа: 08 Фев 2018, 10:43 Пробвай с ff_players 1
ff_delay 1.


Добавено преди 3 минути 12 секунди:
Човек ,не ,този плъгин не ти трябва.. Тоя Fake Player Client го махни ,oстави само Website ,ще намеря друг. Тоя е бил за ботове които са си с настроени имена и т.н. :coffee:

Добавено преди 2 минути :
Това? ;)
Благодаря ти! Остава само някой да ми помогне с другите 2 :beer:

Аватар
wrath
Извън линия
Потребител
Потребител
Мнения: 167
Регистриран на: 21 Яну 2018, 10:30
Местоположение: /changerace
Обратна връзка:

Заявка за преработка на два плъгина и търся Bots

Мнение от wrath » 08 Фев 2018, 11:09

Моля. А за първото не става ли с resetscore_viponly 1? :lol:
I am not big on sermons ,broken bones teach better lessons. Изображение Изображение

Аватар
Pet(5)ko
Извън линия
Потребител
Потребител
Мнения: 134
Регистриран на: 09 Фев 2017, 19:53
Местоположение: Варна
Се отблагодари: 12 пъти
Получена благодарност: 2 пъти
Обратна връзка:

Заявка за преработка на два плъгина и търся Bots

Мнение от Pet(5)ko » 08 Фев 2018, 11:20

wrath написа: 08 Фев 2018, 11:09 Моля. А за първото не става ли с resetscore_viponly 1? :lol:
Идеята ми там е да излиза надписа който съм написал ако е възможно 8)

Аватар
wrath
Извън линия
Потребител
Потребител
Мнения: 167
Регистриран на: 21 Яну 2018, 10:30
Местоположение: /changerace
Обратна връзка:

Заявка за преработка на два плъгина и търся Bots

Мнение от wrath » 08 Фев 2018, 11:28

Искам да ти кажа ,че не разбирам въобще от скриптиране ,ама опитах да направя нещо и ако сега стане..

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

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

#define PLUGIN_NAME "Resetscore System"
#define PLUGIN_VERSION "1.1"
#define PLUGIN_AUTHOR "OciXCrom"

#define sReset "buttons/bell1.wav"
#define sResetAll "buttons/lightswitch2.wav"

enum Color
{
	NORMAL = 1, // clients scr_concolor cvar color
	GREEN, // Green Color
	TEAM_COLOR, // Red, grey, blue
	GREY, // grey
	RED, // Red
	BLUE, // Blue
}

new TeamName[][] = 
{
	"",
	"TERRORIST",
	"CT",
	"SPECTATOR"
}


new const g_Commands[][] = {
	"say /rs",
	"say /resetscore",
	"say_team /rs",
	"say_team /resetscore"
}

new cvar_prefix, cvar_alive, cvar_viponly, cvar_vipflag, cvar_limit, cvar_resetkills, cvar_resetdeaths, cvar_resetmoney, cvar_notifyall, cvar_sound, cvar_chat, cvar_adverttime
new limit[33], advert

public plugin_init()
{
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
	register_cvar("ResetscoreSystem", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	
	cvar_prefix = 			register_cvar("resetscore_prefix", 			"!g[!tResetscore System!g]")
	cvar_alive = 			register_cvar("resetscore_alive", 			"1")
	cvar_viponly = 			register_cvar("resetscore_viponly", 		"0")
	cvar_vipflag = 			register_cvar("resetscore_vipflag", 		"b")
	cvar_limit =			register_cvar("resetscore_limit", 			"0")
	cvar_resetkills = 		register_cvar("resetscore_resetkills", 		"1")
	cvar_resetdeaths = 		register_cvar("resetscore_resetdeaths", 	"1")
	cvar_resetmoney = 		register_cvar("resetscore_resetmoney",		"0")
	cvar_notifyall = 		register_cvar("resetscore_notifyall", 		"1")
	cvar_sound = 			register_cvar("resetscore_sound", 			"1")
	cvar_chat = 			register_cvar("resetscore_chat", 			"0")
	cvar_adverttime = 		register_cvar("resetscore_adverttime", 		"120")
	
	for(new i = 0; i < sizeof(g_Commands); i++)
		register_clcmd(g_Commands[i], "cmd_resetscore")
}

public plugin_cfg()
{
	advert = get_pcvar_num(cvar_adverttime)
	if(advert > 0) set_task(float(advert), "rs_advertise", 2222, "", 0, "b", 0)
}

public cmd_resetscore(id)
{
	static szPrefix[100]
	szPrefix = get_prefix()
	
	static cmd_limit
	cmd_limit = get_pcvar_num(cvar_limit)
	
	if(!get_pcvar_num(cvar_alive) && is_user_alive(id))
	{
		ColorChat(id, TEAM_COLOR, "%s ^1You can't ^3reset ^1your ^4score ^1while you are ^3alive^1.", szPrefix)
		return PLUGIN_HANDLED
	}
	
	if(get_pcvar_num(cvar_viponly) == 1 && !user_has_flag(id, cvar_vipflag))
	{
		new flag_vip[2]
		get_pcvar_string(cvar_vipflag, flag_vip, charsmax(flag_vip))
		
		ColorChat(id, TEAM_COLOR, "%s ^1Samo VIP potrebiteli i admini mogat ^3%s ^da izpolzvat tazi komanda za info to ^4napishete v chata /wantvip ili /wantadmin^1.", szPrefix, flag_vip)
		return PLUGIN_HANDLED
	}
	
	if(cmd_limit > 0)
	{
		if(limit[id] == cmd_limit)
		{
			ColorChat(id, TEAM_COLOR, "%s ^1You can ^4reset your score ^1only ^3%i ^1times per map.", szPrefix, cmd_limit)
			return PLUGIN_HANDLED
		}
		
		if(limit[id] < cmd_limit)
			limit[id]++
	}
	
	new limit_left = cmd_limit - limit[id]
	
	switch(get_pcvar_num(cvar_notifyall))
	{
		case 0:
		{
			if(cmd_limit > 0)
			{
				if(limit_left == 0) ColorChat(id, TEAM_COLOR, "%s ^1You have just ^3reset ^1your ^4score^1. You ^3can't ^1use this command anymore.", szPrefix)
				else ColorChat(id, TEAM_COLOR, "%s ^1You have just ^3reset ^1your ^4score^1. You can do this ^3%i ^1more time%s.", szPrefix, limit_left, (limit_left == 1) ? "" : "s")
			}
			else ColorChat(id, TEAM_COLOR, "%s ^1You have just ^3reset ^1your ^4score^1.", szPrefix)
		}
		case 1:
		{
			new name[32]
			get_user_name(id, name, charsmax(name))
			
			if(cmd_limit > 0) ColorChat(0, TEAM_COLOR, "%s ^1Player ^3%s ^1has just ^4reset his score ^1[^4Limit: ^3%i^1/^3%i^1]", szPrefix, name, limit[id], cmd_limit)
			else ColorChat(0, TEAM_COLOR, "%s ^1Player ^3%s ^1has just ^4reset his score^1.", szPrefix, name)
		}
	}
	
	switch(get_pcvar_num(cvar_sound))
	{
		case 1: client_cmd(id, "spk %s", sReset)
		case 2: client_cmd(0, "spk %s", sResetAll)
	}
	
	resetscore(id)
	return (get_pcvar_num(cvar_chat) == 1) ? PLUGIN_CONTINUE : PLUGIN_HANDLED
}

public rs_advertise()
	ColorChat(0, TEAM_COLOR, "%s ^1Type ^3/rs ^1or ^3/resetscore ^1to ^4reset your score^1.", get_prefix())

resetscore(id)
{
	if(get_pcvar_num(cvar_resetkills) == 1) set_user_frags(id, 0)
	if(get_pcvar_num(cvar_resetdeaths) == 1) cs_set_user_deaths(id, 0)
	if(get_pcvar_num(cvar_resetmoney) == 1) cs_set_user_money(id, get_cvar_num("mp_startmoney"))
}

stock get_prefix()
{
	static szPrefix[100]
	get_pcvar_string(cvar_prefix, szPrefix, charsmax(szPrefix))
	
	replace_all(szPrefix, charsmax(szPrefix), "!n", "^1")
	replace_all(szPrefix, charsmax(szPrefix), "!t", "^3")
	replace_all(szPrefix, charsmax(szPrefix), "!g", "^4")
	
	return szPrefix
}

stock user_has_flag(id, cvar)
{
	new flags[32]
	get_flags(get_user_flags(id), flags, charsmax(flags))
	
	new vip_flag[2]
	get_pcvar_string(cvar, vip_flag, charsmax(vip_flag))
	
	return (contain(flags, vip_flag) != -1) ? true : false
}

public plugin_precache()
{
	precache_sound(sReset)
	precache_sound(sResetAll)
}

/* ColorChat */

ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
	static message[256];

	switch(type)
	{
		case NORMAL: // clients scr_concolor cvar color
		{
			message[0] = 0x01;
		}
		case GREEN: // Green
		{
			message[0] = 0x04;
		}
		default: // White, Red, Blue
		{
			message[0] = 0x03;
		}
	}

	vformat(message[1], 251, msg, 4);

	// Make sure message is not longer than 192 character. Will crash the server.
	message[192] = '^0';

	static team, ColorChange, index, MSG_Type;
	
	if(id)
	{
		MSG_Type = MSG_ONE;
		index = id;
	} else {
		index = FindPlayer();
		MSG_Type = MSG_ALL;
	}
	
	team = get_user_team(index);
	ColorChange = ColorSelection(index, MSG_Type, type);

	ShowColorMessage(index, MSG_Type, message);
		
	if(ColorChange)
	{
		Team_Info(index, MSG_Type, TeamName[team]);
	}
}

ShowColorMessage(id, type, message[])
{
	message_begin(type, get_user_msgid("SayText"), _, id);
	write_byte(id)		
	write_string(message);
	message_end();	
}

Team_Info(id, type, team[])
{
	message_begin(type, get_user_msgid("TeamInfo"), _, id);
	write_byte(id);
	write_string(team);
	message_end();

	return 1;
}

ColorSelection(index, type, Color:Type)
{
	switch(Type)
	{
		case RED:
		{
			return Team_Info(index, type, TeamName[1]);
		}
		case BLUE:
		{
			return Team_Info(index, type, TeamName[2]);
		}
		case GREY:
		{
			return Team_Info(index, type, TeamName[0]);
		}
	}

	return 0;
}

FindPlayer()
{
	static i;
	i = -1;

	while(i <= get_maxplayers())
	{
		if(is_user_connected(++i))
		{
			return i;
		}
	}

	return -1;
}
I am not big on sermons ,broken bones teach better lessons. Изображение Изображение

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Заявка за преработка на два плъгина и търся Bots

Мнение от OciXCrom » 08 Фев 2018, 13:56

То за resetscore си има и квар и съобщение, обаче е на английски - просто промени го както искаш. Не ти трябват познания от скриптиране за да промениш едно съобщение.

За team advantage също си има настройка за флага. Защо не прочетеш описанието на плъгините преди да пускаш теми? Даже и в самия .ini файл точно и ясно го пише...

Аватар
Pet(5)ko
Извън линия
Потребител
Потребител
Мнения: 134
Регистриран на: 09 Фев 2017, 19:53
Местоположение: Варна
Се отблагодари: 12 пъти
Получена благодарност: 2 пъти
Обратна връзка:

Заявка за преработка на два плъгина и търся Bots

Мнение от Pet(5)ko » 08 Фев 2018, 19:24

OciXCrom™ написа: 08 Фев 2018, 13:56 То за resetscore си има и квар и съобщение, обаче е на английски - просто промени го както искаш. Не ти трябват познания от скриптиране за да промениш едно съобщение.

За team advantage също си има настройка за флага. Защо не прочетеш описанието на плъгините преди да пускаш теми? Даже и в самия .ini файл точно и ясно го пише...
Прав си не съм погледнал... Извинявам се може да лок. Благодаря все пак :)

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

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

Кой е на линия

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