Редакция на плъгин CSDM Teambalancer V1.0 by DA

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
CS-PR0GAMING
Извън линия
Потребител
Потребител
Мнения: 37
Регистриран на: 06 Авг 2019, 13:01
Местоположение: Габрово
Се отблагодари: 6 пъти
Получена благодарност: 6 пъти
Обратна връзка:

Редакция на плъгин CSDM Teambalancer V1.0 by DA

Мнение от CS-PR0GAMING » 16 Ное 2019, 14:47

Здравейте, бихте ли могли да ми редактирате този плъгин, да мести играч в противоположния отбор, само когато умре, а не докато е жив, както е в момента. Всичко друго по плъгина работи безупречно, само това ми трябва. Благодаря предварително.

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

/*	
* 
* 							CSDM Teambalancer V1.0 by DA 
* 							Date: 03.04.2008
* 
* 			
* 							Description:
* 										This plugin balance the teams in CS 1.6 without to end the round. It was made for CSDM (Deathmatch) Servers
* 
* 					
* 							Installation:
* 										 Download the sma file and compile it
* 										 Load the compiled csdm_teambalancer.amxx to your plugins folder
* 										 Add a line "csdm_teambalancer.amxx" (without quotes) to your plugins.ini
* 										 If you want to play a sound to the player who switched by the plugin then copy the massteleporttarget.wav to your /sound/misc/ folder and add this to your amxx.cfg: amx_tsound 1
* 										 Change the map or restart the Server
* 		
* 						
* 							SVAR's:
* 									amx_tfreq			(Default: 50)	-	All 50 (Default) death the plugin checks the players and switch they
* 									amx_tmaxplayers		(Default:  4)	-	Max players on the server that it works
* 									amx_tsound			(Default:  0)	- 	Plays a sound to the player if he will be changed	
* 
* 
* 							Credits:
* 									Jim for some code and the idea
* 									Geesu for the sound file from wc3ft
* 					
* 
*/ 



#include <amxmodx>
#include <cstrike>
#include <ColorChat>
#include <dhudmessage>
						
#define PLUGIN	"CSDM Teambalancer"
#define AUTHOR	"DA"
#define VERSION	"1.0"

#define TeamT      1
#define TeamCT     2

new counter=0;



public plugin_precache()
{
	if	((get_cvar_num("amx_tsound")) != 1)
		return PLUGIN_CONTINUE;
	
	precache_sound("misc/massteleporttarget.wav");
	return PLUGIN_CONTINUE;
}


public on_death()
{
	counter++;
	if	(counter >= (get_cvar_num("amx_tmaxfreq")))
	{
		if	(get_playersnum() >= (get_cvar_num("amx_tmaxplayers")))
		{
			counter = 0;
			check_balance();
		}
	}
}


public check_balance()
{
	new players[32], tnum, ctnum;
	get_players(players, tnum, "ce", "TERRORIST");
	get_players(players, ctnum, "ce", "CT");
	if	((tnum - ctnum) >= 2) transfer_player(TeamT);
	if	((ctnum - tnum) >= 2) transfer_player(TeamCT);
}



transfer_player(team) 
{ 
	new name[32], players[32], scores[32];
	new player, playercount, bestscore, theone, i;

	
	get_players(players, playercount, "ce", team == TeamT ? "TERRORIST" : "CT");
	for	(i=0; i<playercount; i++) 
	{
		player = players[i];
		scores[i] = get_user_frags(player) - get_user_deaths(player);
	}
	
	bestscore = -9999;
	for	(i=0; i<playercount; i++) 
	{
		if	(scores[i] > bestscore) 
		{
			bestscore = scores[i];
			theone = players[i];
		}
	}
	
	cs_set_user_team(theone, team == TeamT ? CS_TEAM_CT : CS_TEAM_T);
	if	(get_cvar_num("amx_tsound") == 1) 
		client_cmd(theone, "speak misc/MassTeleportTarget");
	set_hudmessage(255, 140, 0, -1.0, 0.40, 2, 0.02, 5.0, 0.01, 0.1, 2);
	show_hudmessage(theone,"You have been transferred to %s", team == TeamT ? "CT" : "Terrorist");
	get_user_name(theone,name,31);
	set_dhudmessage(random(255), random(255), random(255), -1.0, 0.7, 1, 0.1, 4.0, 0.1, 0.1)
	show_dhudmessage(0, "%s has been transferred to %s.", name, team == TeamT ? "CT" : "Terrorist");
	console_print(0,"%s has been transferred to %s.", name, team == TeamT ? "CT" : "Terrorist");
}



public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	register_cvar("amx_tmaxfreq", "50");
	register_cvar("amx_tmaxplayer", "4");
	register_cvar("amx_tsound", "1");
	register_event("DeathMsg", "on_death", "a");
}
Последно промяна от CS-PR0GAMING на 16 Ное 2019, 20:46, променено общо 1 път.

Аватар
mi0
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 534
Регистриран на: 09 Дек 2016, 22:02
Се отблагодари: 97 пъти
Получена благодарност: 120 пъти
Обратна връзка:

Редакция на плъгин

Мнение от mi0 » 16 Ное 2019, 15:25

Лошо написан плъгин. Тествай този, написах го набързо. Кажи след това дали работи.

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

#include <amxmodx>
#include <cstrike>

#define PLUGIN  "TeamBalancer"
#define VERSION "1.0"
#define AUTHOR  "mi0"

new g_iCvar_Difference
new g_iTeamPriority

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_event("DeathMsg", "OnDeathMsg", "a")
	g_iCvar_Difference = register_cvar("amx_tb_difference", "2")
	
	set_task(30.0, "task_CheckTeams", .flags = "b")
}

public task_CheckTeams()
{
	new iUnused[32], iTNum, iCTNum
	get_players(iUnused, iTNum, "e", "TERRORIST")
	get_players(iUnused, iCTNum, "e", "CT")
	
	new iDifferenceCvar = get_pcvar_num(g_iCvar_Difference)
	if (iTNum - iCTNum >= iDifferenceCvar)
	{
		g_iTeamPriority = 1
	}
	else if (iCTNum - iTNum >= iDifferenceCvar)
	{
		g_iTeamPriority = 2
	}
}

public OnDeathMsg()
{
	new id = read_data(2)
	if (get_user_team(id) == g_iTeamPriority)
	{
		cs_set_user_team(id, abs(g_iTeamPriority - 3))
		g_iTeamPriority = 0
	}
}
aka kurdokoleno
Catch Mod - 87.121.112.232:27021

Аватар
CS-PR0GAMING
Извън линия
Потребител
Потребител
Мнения: 37
Регистриран на: 06 Авг 2019, 13:01
Местоположение: Габрово
Се отблагодари: 6 пъти
Получена благодарност: 6 пъти
Обратна връзка:

Редакция на плъгин

Мнение от CS-PR0GAMING » 16 Ное 2019, 16:58

Добре, слагам го.

Added in 1 hour 14 minutes 27 seconds:
Не работи, както трябва пак мести, докато играят, а не като умрът.

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

Аватар
mi0
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 534
Регистриран на: 09 Дек 2016, 22:02
Се отблагодари: 97 пъти
Получена благодарност: 120 пъти
Обратна връзка:

Редакция на плъгин

Мнение от mi0 » 16 Ное 2019, 17:26

Това, което казваш, не е логично, а аз не виждам причина, да се ползва стария плъгин. Нямам възможност да го тествам, ако не дадеш по конкретен проблем, няма да мога да ти помогна. Моля, ако следващия коментар ще е "какво по-ясно от не е след като умре, а докато е жив", да видиш как работи. DeathMsg е евент, който се изпълнява когато има DeathMsg в горния десен ъгъл, data 2 е victim-а(убития), съответно или има fake death messages, или не си махнал предишния плъгин, преди да включиш този.

Не разбирам, как ти харесва, начина по който работи стария плъгин и в същото време ти самия пускаш заявка да се промени този начин, не мисля да го преработвам, за да стигна в крайна сметка до същото нещо.
aka kurdokoleno
Catch Mod - 87.121.112.232:27021

Аватар
CS-PR0GAMING
Извън линия
Потребител
Потребител
Мнения: 37
Регистриран на: 06 Авг 2019, 13:01
Местоположение: Габрово
Се отблагодари: 6 пъти
Получена благодарност: 6 пъти
Обратна връзка:

Редакция на плъгин

Мнение от CS-PR0GAMING » 16 Ное 2019, 17:49

Да, в мен беше проблема. Само да попитам къде да си ръгна HUD съобщението, което съм направил за самият трансфер? Говоря за това -

set_hudmessage(255, 140, 0, -1.0, 0.40, 2, 0.02, 5.0, 0.01, 0.1, 2);
show_hudmessage(theone,"You have been transferred to %s", team == TeamT ? "CT" : "Terrorist");
get_user_name(theone,name,31);
set_dhudmessage(random(255), random(255), random(255), -1.0, 0.7, 1, 0.1, 4.0, 0.1, 0.1)
show_dhudmessage(0, "%s has been transferred to %s.", name, team == TeamT ? "CT" : "Terrorist");
console_print(0,"%s has been transferred to %s.", name, team == TeamT ? "CT" : "Terrorist");

Аватар
mi0
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 534
Регистриран на: 09 Дек 2016, 22:02
Се отблагодари: 97 пъти
Получена благодарност: 120 пъти
Обратна връзка:

Редакция на плъгин

Мнение от mi0 » 16 Ное 2019, 18:02

Ето го със съобщението -

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

#include <amxmodx>
#include <cstrike>

#define PLUGIN  "TeamBalancer"
#define VERSION "1.0"
#define AUTHOR  "mi0"

new const g_szTeamNames[2][] =
{
	"Terrorist",
	"CT"
}

new g_iCvar_Difference, g_iCvar_CheckTime
new g_iTeamPriority

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_event("DeathMsg", "OnDeathMsg", "a")
	g_iCvar_Difference = register_cvar("amx_tb_difference", "2")
	g_iCvar_CheckTime = register_cvar("amx_tb_checktime", "10.0")
	
	set_task(get_pcvar_float(g_iCvar_CheckTime), "task_CheckTeams")
}

public task_CheckTeams()
{
	new iUnused[32], iTNum, iCTNum
	get_players(iUnused, iTNum, "e", "TERRORIST")
	get_players(iUnused, iCTNum, "e", "CT")
	
	new iDifferenceCvar = get_pcvar_num(g_iCvar_Difference)
	if (iTNum - iCTNum >= iDifferenceCvar)
	{
		g_iTeamPriority = 1
	}
	else if (iCTNum - iTNum >= iDifferenceCvar)
	{
		g_iTeamPriority = 2
	}

	set_task(get_pcvar_float(g_iCvar_CheckTime), "task_CheckTeams")
}

public OnDeathMsg()
{
	new id = read_data(2)
	new iTeam = get_user_team(id)
	if (iTeam == g_iTeamPriority)
	{
		transfer_ShowMessage(id, iTeam)
		cs_set_user_team(id, abs(g_iTeamPriority - 3))
		g_iTeamPriority = 0
	}
}

transfer_ShowMessage(id, iTeam)
{
	new szName[32], iTeamArray = iTeam - 1
	get_user_name(id, szName, 31)

	set_hudmessage(255, 140, 0, -1.0, 0.40, 2, 0.02, 5.0, 0.01, 0.1, 2)
	show_hudmessage(id, "You have been transferred to %s", g_szTeamNames[iTeamArray])
	set_dhudmessage(random(255), random(255), random(255), -1.0, 0.7, 1, 0.1, 4.0, 0.1, 0.1)
	show_dhudmessage(0, "%s has been transferred to %s.", szName, g_szTeamNames[iTeamArray])
	console_print(0,"%s has been transferred to %s.", szName, g_szTeamNames[iTeamArray])
}
Тук можеш да видиш съобщенията, като съм оптимизирал, каквото видях.

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

transfer_ShowMessage(id, iTeam)
{
	new szName[32], iTeamArray = iTeam - 1
	get_user_name(id, szName, 31)

	set_hudmessage(255, 140, 0, -1.0, 0.40, 2, 0.02, 5.0, 0.01, 0.1, 2)
	show_hudmessage(id, "You have been transferred to %s", g_szTeamNames[iTeamArray])
	set_dhudmessage(random(255), random(255), random(255), -1.0, 0.7, 1, 0.1, 4.0, 0.1, 0.1)
	show_dhudmessage(0, "%s has been transferred to %s.", szName, g_szTeamNames[iTeamArray])
	console_print(0,"%s has been transferred to %s.", szName, g_szTeamNames[iTeamArray])
}
Ако се чудиш, къде да промениш името на отбора(Terrorist, CT)

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

new const g_szTeamNames[2][] =
{
	"Terrorist",
	"CT"
}
aka kurdokoleno
Catch Mod - 87.121.112.232:27021

Аватар
CS-PR0GAMING
Извън линия
Потребител
Потребител
Мнения: 37
Регистриран на: 06 Авг 2019, 13:01
Местоположение: Габрово
Се отблагодари: 6 пъти
Получена благодарност: 6 пъти
Обратна връзка:

Редакция на плъгин

Мнение от CS-PR0GAMING » 16 Ное 2019, 18:08

Супер, много ти благодаря!

Аватар
stambeto2006
Извън линия
Модератор
Модератор
Мнения: 505
Регистриран на: 06 Окт 2016, 15:44
Се отблагодари: 53 пъти
Получена благодарност: 45 пъти
Обратна връзка:

Редакция на плъгин

Мнение от stambeto2006 » 16 Ное 2019, 19:50

До автора на темата, оправи си заглавието!

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

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

Кой е на линия

Потребители разглеждащи този форум: Google [Bot] и 13 госта