←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Przerzucenie Gracza

Zablokowany

  • +
  • -
Magisterr. - zdjęcie Magisterr. 09.08.2008

Czy da się przerzucić gracza do 2 teamu (np. z CT do TT), ale tak by cały czas żył? - Jeśli tak to proszę o pomoc :help:
Odpowiedz

  • +
  • -
TastyB - zdjęcie TastyB 09.08.2008

Nie spotkalam sie jeszcze z takim pluginem ktory przerzucalby zywego gracza do przeciwnej druzyny ale mam plugin ktory "zaznacza" zawodnika do przeniesienia i przenosi go natychmiast po tym jak on sam zginie albo na koncu aktualnej rundy - czyli generalnie go nie zabija przenoszac.

Jezeli Cie on ineresuje to daj znac



Pozdrawiam
Odpowiedz

  • +
  • -
Magisterr. - zdjęcie Magisterr. 09.08.2008

Znowu sprawa HnS :P.

Jeśli CT jest afk to po 20 sec. afkowania go przerzuca do terorystów, a w zamian wybiera losowo 1 gracza z tero. (CT może ewnt. zabić, ale nie terroryste który idzie na jego miejsce).

Choć jest też prostrze rozwiązanie - Po 60 sec afkowania CT (od początku rundy) - zabija go ;]. Ale tylko CT i tylko tego co Afkuje :)

//Proszę o przeniesienie tematu do działu "Szukam Pluginu"
Odpowiedz

  • +
  • -
grankee - zdjęcie grankee 09.08.2008

Czy on się pytał o jakieś afk? Z tego co można zrozumieć chodzi mu o to, że jak wpisze amx_teammenu i przerzuci gracza żywego to go nie zabije, ale zespawnuje na respie.
Oczywiście, że jest taki plugin, bo sam go zrobiłem xP

Dla poprawnego działania plugin musi być umieszcznowy w plugins.ini przez pluginem plmenu.amxx
xxx.amxx
xxx.amxx
teammenu_nokill.amxx
plmenu.amxx
xxx.amxx 
/*	Autor: grankee
*   Plugin pisany z myslą o tych, którzy giną przy przenoszeniu do drugiej drużyny przez admina <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/wink.gif' class='bbc_emoticon' alt=';)' />
*   W przypadku gdy admin przenosi żywego gracza do drugiej drużyny jest on zabijany. 
*   Ten plugin sprawia, że przenoszony gracz pojawia sie na respie drużyny, do której został przeniesiony
*   (lub zostaje w miejscu w przypadku amx_teammenuspawn=0)
*
*	Robiony na podstawie kody plmenu.sma
*
*/
#include <amxmodx>
#include <amxmisc>
#include <fun>

/** skip autoloading since it's optional */
#define AMXMODX_NOAUTOLOAD
#include <cstrike>

new g_menuPosition[33]
new g_menuPlayers[33][32]
new g_menuPlayersNum[33]
new g_menuOption[33]
#define MAX_CLCMDS 24
new g_coloredMenus
new g_cstrike = 0

public plugin_natives()
{
	set_module_filter("module_filter")
	set_native_filter("native_filter")
}

public plugin_init()
{
	register_plugin("Teammenu nokill v4.0", "v4.0", "grankee")
	register_dictionary("common.txt")
	register_dictionary("admincmd.txt")
	register_dictionary("plmenu.txt")

	
	register_clcmd("amx_teammenu", "cmdTeamMenu", ADMIN_LEVEL_A, "- pokazuje menu druzyn")
	register_clcmd("teammenu", "cmdTeamMenu", ADMIN_LEVEL_A, "- pokazuje menu druzyn")
	register_cvar("amx_teammenuspawn", "1")
	register_menucmd(register_menuid("Team Menu"), 1023, "actionTeamMenu")
	

	g_coloredMenus = colored_menus()

	

	if (module_exists("cstrike"))
		g_cstrike = 1
}

public module_filter(const module[])
{
	if (equali(module, "cstrike"))
		return PLUGIN_HANDLED
	
	return PLUGIN_CONTINUE
}

public native_filter(const name[], index, trap)
{
	if (!trap)
		return PLUGIN_HANDLED
		
	return PLUGIN_CONTINUE
}





public actionTeamMenu(id, key)
{
//new teamname[32]
	switch (key)
	{
		case 7:
		{
			g_menuOption[id] = 1 - g_menuOption[id]
			displayTeamMenu(id, g_menuPosition[id])
		}
		case 8: displayTeamMenu(id, ++g_menuPosition[id])
		case 9: displayTeamMenu(id, --g_menuPosition[id])
		default:
		{
			new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
			new authid[32], authid2[32], name[32], name2[32]

			get_user_name(player, name2, 31)
			get_user_authid(id, authid, 31)
			get_user_authid(player, authid2, 31)
			get_user_name(id, name, 31)
				
			log_amx("Cmd: ^"%s<%d><%s><>^" transfer ^"%s<%d><%s><>^" (team ^"%s^")", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, g_menuOption[id] ? "TERRORIST" : "CT")
			
			if (get_cvar_num("amx_hideactivity")==1)
			{
				for (new a=1;a<=32;a++)
				{
					if (is_user_connected(a))
					{
						if (get_user_flags(a) & ADMIN_RESERVATION)
						{
							client_print(a, print_chat, "%L", id, "ADMIN_TRANSF_2", name, name2, g_menuOption[id] ? "TERRORIST" : "CT")
						}
			
					}
				}
			}
			else
			{
				switch (get_cvar_num("amx_show_activity"))
				{
					case 2: client_print(0, print_chat, "%L", id, "ADMIN_TRANSF_2", name, name2, g_menuOption[id] ? "TERRORIST" : "CT")
					case 1: client_print(0, print_chat, "%L", id, "ADMIN_TRANSF_1", name2, g_menuOption[id] ? "TERRORIST" : "CT")
				}
			}

			if (g_cstrike)
			{
				if (is_user_alive(player))
				{
					if(g_menuOption[id]==1)
					{
						cs_set_user_team(player, CS_TEAM_T)
						if (get_cvar_num("amx_teammenuspawn") > 0)
						spawn(player)
						
					}
					else
					{
						cs_set_user_team(player, CS_TEAM_CT)
						if (get_cvar_num("amx_teammenuspawn") > 0)
						spawn(player)
					}
				}
				else
				{
					if(g_menuOption[id]==1)
					{
						cs_set_user_team(player, CS_TEAM_T)
						cs_reset_user_model(player)	
					}
					else
					{
						cs_set_user_team(player, CS_TEAM_CT)
						cs_reset_user_model(player)	
					}
				}	
				
			}
				
			 /*else 
			{
				new limit_setting = get_cvar_num("mp_limitteams")
				
				set_cvar_num("mp_limitteams", 0)
				engclient_cmd(player, "jointeam", g_menuOption[id] ? "1" : "2")
				engclient_cmd(player, "joinclass", "1")
				set_cvar_num("mp_limitteams", limit_setting)
			}*/

			displayTeamMenu(id, g_menuPosition[id])
		}
	}
	
	return PLUGIN_HANDLED
}

displayTeamMenu(id, pos)
{
	if (pos < 0)
		return

	get_players(g_menuPlayers[id], g_menuPlayersNum[id])

	new menuBody[512]
	new b = 0
	new i, iteam
	new name[32], team[4]
	new start = pos * 7
	new ja[32]
	get_user_name (id, ja, 31)
	if (start >= g_menuPlayersNum[id])
		start = pos = g_menuPosition[id] = 0

	new len = format(menuBody, 511, g_coloredMenus ? "y%LR%d/%d^nw^n" : "%L %d/%d^n^n", id, "TEAM_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
	new end = start + 7
	new keys = MENU_KEY_0|MENU_KEY_8

	if (end > g_menuPlayersNum[id])
		end = g_menuPlayersNum[id]

	for (new a = start; a < end; ++a)
	{
		i = g_menuPlayers[id][a]
		get_user_name(i, name, 31)
		
		if (g_cstrike)
		{
			iteam = _:cs_get_user_team(i)
			
			if (iteam == 1)
			{
				copy(team, 3, "TE")
			}
			else if (iteam == 2)
			{
				copy(team, 3, "CT")
			} else {
				get_user_team(i, team, 3)
			}
		} else {
			iteam = get_user_team(i, team, 3)
		}

		if ((iteam == (g_menuOption[id] ? 1 : 2)) || (access(i, ADMIN_IMMUNITY)&&(i!=id)))
		{
			++b
			
			if (g_coloredMenus)
				len += format(menuBody[len], 511-len, "d%d. %sR%s^nw", b, name, team)
			else
				len += format(menuBody[len], 511-len, "#. %s   %s^n", name, team)		
		} else {
			keys |= (1<<<img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />
				
			if (is_user_admin(i))
				len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s r*yR%s^nw" : "%d. %s *   %s^n", ++b, name, team)
			else
				len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %syR%s^nw" : "%d. %s   %s^n", ++b, name, team)
		}
	}

	len += format(menuBody[len], 511-len, "^n8. %L^n", id, "TRANSF_TO", g_menuOption[id] ? "TERRORIST" : "CT")

	if (end != g_menuPlayersNum[id])
	{
		format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
		keys |= MENU_KEY_9
	}
	else
		format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")
	
	show_menu(id, keys, menuBody, -1, "Team Menu")
}

public cmdTeamMenu(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED

	g_menuOption[id] = 0

	displayTeamMenu(id, g_menuPosition[id] = 0)

	return PLUGIN_HANDLED
}

Odpowiedz

  • +
  • -
Magisterr. - zdjęcie Magisterr. 09.08.2008

Znowu mi pomagasz, ale nie tak jak ja potrzebuje :D

Afk CT :

Plugin ma polegac na tym ze gdy anty terrorysta afkuje to po 60 sec. (tego afkowania) zabija go. I tyle teori :lol:

ps. Plugin pod serwer HnS
Odpowiedz

  • +
  • -
grankee - zdjęcie grankee 09.08.2008

Czy da się przerzucić gracza do 2 teamu (np. z CT do TT), ale tak by cały czas żył? - Jeśli tak to proszę o pomoc :help:

Plugin ma polegac na tym ze gdy anty terrorysta afkuje to po 60 sec. (tego afkowania) zabija go. I tyle teori :lol:


Ktoś tu się gubi w zeznaniach ^^
Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 09.08.2008

Chyba sie da, ja bym to zrobil najoptymalniej przez mienienie teamu przez engine (to nie zabije gracza) potem tylko zrobic update modelu gracza (bo chcemy by wygladal jak nasz np CT). I ostatecznie przeniesc go na spawn gracza.

Tak to by wygladalo teoretycznie i naj bardziej optymalnie.
Odpowiedz

  • +
  • -
grankee - zdjęcie grankee 09.08.2008

Z tego co sprawdzałem model się zmienia, odpowiada za to chyba cs_reset_user_model prawda? ;-)
Odpowiedz

  • +
  • -
Magisterr. - zdjęcie Magisterr. 09.08.2008

Ktoś tu się gubi w zeznaniach


Gdzie się gubi :D... Poprostu troche ułatwiłem robotę :P... Nie trzeba długich pluginów, tylko krótki xP

Tak jak jest Bomb Afk :) - tylko zamiast Terrorysty który wyrzuca pake, Jest CT który Ginie ;]
Odpowiedz

  • +
  • -
grankee - zdjęcie grankee 09.08.2008

Gdzie się gubi :D


jest ogromna różnica między

Czy da się przerzucić gracza do 2 teamu (np. z CT do TT), ale tak by cały czas żył? - Jeśli tak to proszę o pomoc :help:

a

Plugin ma polegac na tym ze gdy anty terrorysta afkuje to po 60 sec. (tego afkowania) zabija go. I tyle teori :lol:

Odpowiedz

  • +
  • -
Magisterr. - zdjęcie Magisterr. 09.08.2008

dobra, masz rację ;P... Ale teraz obróce sprawe :D : dałem 2 wątki - pomoże jak kto umie, każdy inaczej xP

Ale już przeszłość :). Dzięki za pomoc :* (+ pomógł)

//Close
Odpowiedz
Zablokowany