Заявка за плъгин - като започне рунда да излезе меню дали да се играе respawn или не (повече инфо в темата)

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
illusion
Извън линия
Developer
Developer
Мнения: 1810
Регистриран на: 27 Ное 2016, 17:47
Местоположение: CraftVision
Се отблагодари: 151 пъти
Получена благодарност: 370 пъти
Обратна връзка:

Заявка за плъгин - като започне рунда да излезе меню дали да се играе respawn или не (повече инфо в темата)

Мнение от illusion » 07 Дек 2018, 15:00

Здравейте,
Трябва ми плъгин, който е предназначен за Knife сървъра ми като цяло. Примерно като се рестартира картата и първият рунд (единствено първият рунд, нито втория, нито третия) да излиза едно меню, в което отговорите са "Da" и "Ne", като въпросът е дали да се играе Respawn или без Respawn. И ако се избере да е Respawn да наглася cvar-a "respawn_on" на 1 и cvar-a mp_round_infinite на 1. А ако се избере без Respawn да наглася кваровете respawn_on и mp_round_infinite на 0. Искам и това да е като вот тоест с тези отговори да и не накрая да се съберат и който отговор има най-много гласове това да стане - примерно ако се гласува най-много за "Dа" да бъде respawn, ако е "Ne" - да не е, сещате се. Респаун плъгина, който ползвам е този - https://amxx-bg.info/forum/viewtopic.php?t=153. Ако може и след окончателното гласуване и избиране на какво да се играе respawn или не да се рестартира рунда (sv_restart 1).

Благодаря предварително.

Аватар
kryder11
Извън линия
Потребител
Потребител
Мнения: 29
Регистриран на: 19 Окт 2016, 05:58
Местоположение: BehindYou
Се отблагодари: 1 път
Получена благодарност: 11 пъти

Заявка за плъгин - като започне рунда да излезе меню дали да се играе respawn или не (повече инфо в темата)

Мнение от kryder11 » 07 Дек 2018, 22:30

Пробвай и ми кажи.

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

#include <amxmodx>

#define PLUGIN "Respawn Vote"
#define VERSION "1.0"
#define AUTHOR "kryder11"

new g_VoteMenu
new g_Votes[3]

new bool:gRespawn

new g_iMsgTeamInfo, g_iMsgSayText

new g_MaxPlayers

enum Color {
	NORMAL = 1,
	GREEN,
	RED,
	BLUE
};

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

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)

	g_MaxPlayers	= get_maxplayers()

	g_iMsgSayText    = get_user_msgid( "SayText" );
	g_iMsgTeamInfo   = get_user_msgid( "TeamInfo" );
	gRespawn = false
	
	set_task(15.0,"StartVote")
}

public client_putinserver(id) {
	if(gRespawn) {
		set_task(10.0,"DispInfo", id)
	}
}

public DispInfo(id) {
	ColorChat(id, RED, "[AMXX]^1 Playing \GRRespawn mode")
}

public StartVote() {
	
	g_VoteMenu = menu_create("Respawn?", "menu_handler")

	menu_additem(g_VoteMenu, "Da", "1")
	menu_additem(g_VoteMenu, "Ne", "2")
	
	new s_Players[32], i_Num, i_Player
	get_players(s_Players, i_Num)

	for (new i; i < i_Num; i++)
	{
		i_Player = s_Players[i]

		menu_display(i_Player, g_VoteMenu, 0)
	}

	set_task(8.0, "EndVote")

	g_Votes[1] = g_Votes[2] = 0
	return PLUGIN_HANDLED
}
 
public menu_handler(id, menu, item) {
	if (item == MENU_EXIT)
		return PLUGIN_HANDLED

	new s_Data[6], s_Name[64], i_Access, i_Callback
	new name[32]
	get_user_name(id, name, 31)
	menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)

	new i_Vote = str_to_num(s_Data)
	
	switch(i_Vote)
	{
		case 1: ColorChat(0, RED, "[AMXX]^1 %s voted for Respawn Mode", name)
		case 2: ColorChat(0, RED, "[AMXX]^1 %s voted for Normal Mode", name)
	}
	g_Votes[i_Vote]++

	return PLUGIN_HANDLED
}
 
public EndVote() {

	if (g_Votes[1] > g_Votes[2]) {
	
		ColorChat(0, RED, "[AMXX]^1 Play Respawn Mode")
		
		gRespawn = true
		server_cmd("respawn_on 1")
		server_cmd("mp_round_infinite 1")
		server_cmd("sv_restart 1")
		server_exec ()
	}
	else if (g_Votes[2] >= g_Votes[1]) {
		
		ColorChat(0, RED, "[AMXX]^1 Play Normal Mode")
		
		server_cmd("respawn_on 0")
		server_cmd("mp_round_infinite 0")
		server_cmd("sv_restart 1")
		server_exec ()
	}

	menu_destroy(g_VoteMenu)

	return PLUGIN_CONTINUE
}

ColorChat( id, Color:type, const szMessage[], {Float,Sql,Result,_}:... ) {
	if( !get_playersnum() ) return;
	
	new message[256];
	
	switch( type ) {
		case NORMAL: message[0] = 0x01;
		case GREEN: message[0] = 0x04;
		default: message[0] = 0x03;
	}
	
	vformat(message[1], 251, szMessage, 4);
	
	message[192] = '^0';
	
	replace_all( message, 191, "\YEL", "^1" );
	replace_all( message, 191, "\GRN", "^4" );
	replace_all( message, 191, "\TEM", "^3" );
	
	new iTeam, ColorChange, index, MSG_Type;
	
	if( id ) {
		MSG_Type = MSG_ONE_UNRELIABLE;
		index = id;
	} else {
		index = CC_FindPlayer();
		MSG_Type = MSG_BROADCAST;
	}
	
	iTeam = get_user_team( index );
	ColorChange = CC_ColorSelection(index, MSG_Type, type);

	CC_ShowColorMessage(index, MSG_Type, message);
	
	if( ColorChange )
		CC_Team_Info(index, MSG_Type, TeamName[iTeam]);
}

CC_ShowColorMessage( id, type, message[] ) {
	message_begin( type, g_iMsgSayText, _, id );
	write_byte( id );	
	write_string( message );
	message_end();	
}

CC_Team_Info( id, type, team[] ) {
	message_begin( type, g_iMsgTeamInfo, _, id );
	write_byte( id );
	write_string( team );
	message_end( );
	
	return 1;
}

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

CC_FindPlayer() {
	for( new i = 1; i <= g_MaxPlayers; i++ )
		if( is_user_connected(i) )
			return i;
	
	return -1;
}
Site: http://www.olympiagaming.es/serversboard.php
Zombie Apocalypse: 54.37.14.249:27015
4Fun: 54.37.14.249:27016

Аватар
illusion
Извън линия
Developer
Developer
Мнения: 1810
Регистриран на: 27 Ное 2016, 17:47
Местоположение: CraftVision
Се отблагодари: 151 пъти
Получена благодарност: 370 пъти
Обратна връзка:

Заявка за плъгин - като започне рунда да излезе меню дали да се играе respawn или не (повече инфо в темата)

Мнение от illusion » 28 Фев 2019, 23:09

Екстра е. Ако може да се добави отгоре като HUD да пише Current Mode: и модът (Normal/Respawn - в зависимост кой мод е избран) и ако може като е началото на рунда (когато се гласува) да бъдат фрийзнати играчите и като се ресне рунда (следователно като се гласува) да могат да играят. Ако може и да се направи един HUD CountDown колко време остава до изтичането на Vote. Цветове, всичко вие си сложете някви произволни, аз ще си ги оправя, както и съобщението.

Ето и редактирана версия от мен с CromChat.

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

#include <amxmodx>
#include <cromchat>

#define PLUGIN "Respawn Vote"
#define VERSION "1.0"
#define AUTHOR "kryder11"

new g_VoteMenu
new g_Votes[3]

new bool:gRespawn

new g_iMsgTeamInfo, g_iMsgSayText

new g_MaxPlayers

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)

	g_MaxPlayers	= get_maxplayers()

	g_iMsgSayText    = get_user_msgid( "SayText" );
	g_iMsgTeamInfo   = get_user_msgid( "TeamInfo" );
	gRespawn = false
	
	set_task(15.0,"StartVote")
	CC_SetPrefix("&x04[&x03Bulgarian &x01Knife&x03Arena&x04]")
}

public client_putinserver(id) {
	if(gRespawn) {
		set_task(10.0,"DispInfo", id)
	}
}

public DispInfo(id) {
	CC_SendMessage(id, "&x01Playing &x03Respawn mode&x01.")
}

public StartVote() {
	
	g_VoteMenu = menu_create("\r[\dBulgarian \yKnifeArena\r] \wRespawn\d?", "menu_handler")

	menu_additem(g_VoteMenu, "Da / Yes", "1")
	menu_additem(g_VoteMenu, "Ne / No", "2")
	
	new s_Players[32], i_Num, i_Player
	get_players(s_Players, i_Num)
	 

	for (new i; i < i_Num; i++)
	{
		i_Player = s_Players[i]

		menu_display(i_Player, g_VoteMenu, 0)
	}

	set_task(8.0, "EndVote")

	g_Votes[1] = g_Votes[2] = 0
	return PLUGIN_HANDLED
}
 
public menu_handler(id, menu, item) {
	if (item == MENU_EXIT)
		return PLUGIN_HANDLED

	new s_Data[6], s_Name[64], i_Access, i_Callback
	new name[32]
	get_user_name(id, name, 31)
	menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)

	new i_Vote = str_to_num(s_Data)
	
	switch(i_Vote)
	{
		case 1: CC_SendMessage(0, "&x03%s &x01voted for &x04Respawn Mode&x01.", name)
		case 2: CC_SendMessage(0, "&x03%s &x01voted for &x04Normal Mode&x01.", name)
	}
	g_Votes[i_Vote]++

	return PLUGIN_HANDLED
}
 
public EndVote() {

	if (g_Votes[1] > g_Votes[2]) {
	
		CC_SendMessage(0, "&x03>> &x01Play &x04Respawn Mode &x03<<")
		
		gRespawn = true
		server_cmd("respawn_on 1")
		server_cmd("mp_round_infinite 1")
		server_cmd("sv_restart 1")
		server_exec ()
	}
	else if (g_Votes[2] >= g_Votes[1]) {
		
		CC_SendMessage(0, "&x03>> &x01Play &x04Normal Mode &x03<<")
		
		server_cmd("respawn_on 0")
		server_cmd("mp_round_infinite 0")
		server_cmd("sv_restart 1")
		server_exec ()
	}

	menu_destroy(g_VoteMenu)

	return PLUGIN_CONTINUE
}

Аватар
Huehue
Извън линия
Модератор
Модератор
Мнения: 352
Регистриран на: 16 Яну 2017, 23:42
Местоположение: София
Се отблагодари: 7 пъти
Получена благодарност: 171 пъти
Обратна връзка:

Заявка за плъгин - като започне рунда да излезе меню дали да се играе respawn или не (повече инфо в темата)

Мнение от Huehue » 01 Мар 2019, 00:16

Пробвай така..

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

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cromchat>

#define PLUGIN "Respawn Vote"
#define VERSION "1.0"
#define AUTHOR "kryder11"

new g_VoteMenu
new g_Votes[3]

new bool:gRespawn

new g_szGameMode[32], g_SyncHudMessage, bool:g_ModeSelected, Float:g_iCounter

#define TASKID_COUNTER	1010113
#define TASKID_COUNTER_ENDVOTE 1010114

#define STARTVOTE_TIME 15.0
#define ENDVOTE_TIME 8.0

#define HUD_RED 		random(256)
#define HUD_GREEN 		random(256)
#define HUD_BLUE		random(256)
#define HUD_X_COORD		0.02
#define HUD_Y_COORD		0.2
#define HUD_EFFECTS		0
#define HUD_HOLDTIME 	0.9
#define HUD_CHANNEL 	-1

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)

	register_event_ex("HLTV", "EventEx_NewRound", RegisterEvent_Global, "1=0", "2=0");

	gRespawn = false;
	g_ModeSelected = false;

	g_SyncHudMessage = CreateHudSyncObj();

	set_task(STARTVOTE_TIME, "StartVote")
	set_task_ex(1.0, "Counter_Task", .id = TASKID_COUNTER, .flags = SetTask_Repeat);
	g_iCounter = STARTVOTE_TIME;
	CC_SetPrefix("&x04[&x03Bulgarian &x01Knife&x03Arena&x04]")
}

public Counter_Task()
{
	if (g_szGameMode[0] != EOS || g_iCounter < 0.0)
	{
		remove_task(TASKID_COUNTER);
		remove_task(TASKID_COUNTER_ENDVOTE);
		return;
	}

	set_hudmessage(HUD_RED, HUD_GREEN, HUD_BLUE, HUD_X_COORD, HUD_Y_COORD, HUD_EFFECTS, .holdtime = HUD_HOLDTIME, .channel = HUD_CHANNEL);

	if (task_exists(TASKID_COUNTER))
	{
		ShowSyncHudMsg(0, g_SyncHudMessage, "You can vote after %i seconds", floatround(--g_iCounter, floatround_round));
	}
	else if (task_exists(TASKID_COUNTER_ENDVOTE))
	{
		ShowSyncHudMsg(0, g_SyncHudMessage, "Voting ends in %i seconds", floatround(--g_iCounter, floatround_round));
	}
}

public Task_HudInformation()
{
	set_hudmessage(HUD_RED, HUD_GREEN, HUD_BLUE, HUD_X_COORD, HUD_Y_COORD, HUD_EFFECTS, .holdtime = HUD_HOLDTIME, .channel = HUD_CHANNEL);
	ShowSyncHudMsg(0, g_SyncHudMessage, g_szGameMode);
}

public EventEx_NewRound()
{
	if (g_ModeSelected)
	{
		new iPlayers[MAX_PLAYERS], iNum;
		get_players(iPlayers, iNum);

		for (--iNum; iNum >= 0; iNum--)
		{
			Freeze_Player(iPlayers[iNum]);
		}
		g_ModeSelected = false;
	}
}

public client_putinserver(id)
{
	if (gRespawn)
	{
		set_task(10.0,"DispInfo", id)
	}
}

public DispInfo(id)
{
	CC_SendMessage(id, "&x01Playing &x03Respawn mode&x01.")
}

public StartVote() {
	
	g_VoteMenu = menu_create("\r[\dBulgarian \yKnifeArena\r] \wRespawn\d?", "menu_handler")

	menu_additem(g_VoteMenu, "Da / Yes", "1")
	menu_additem(g_VoteMenu, "Ne / No", "2")
	
	new s_Players[32], i_Num, i_Player
	get_players(s_Players, i_Num)
	 

	for (new i; i < i_Num; i++)
	{
		i_Player = s_Players[i]

		Freeze_Player(i_Player, true);

		menu_display(i_Player, g_VoteMenu, 0)
	}

	if (task_exists(TASKID_COUNTER))
	{
		g_iCounter = 0.0
		remove_task(TASKID_COUNTER);
	}
	set_task(ENDVOTE_TIME, "EndVote")
	g_iCounter = ENDVOTE_TIME;
	set_task_ex(1.0, "Counter_Task", .id = TASKID_COUNTER_ENDVOTE, .flags = SetTask_Repeat);

	g_Votes[1] = g_Votes[2] = 0
	return PLUGIN_HANDLED
}
 
public menu_handler(id, menu, item) {
	if (item == MENU_EXIT)
		return PLUGIN_HANDLED

	new s_Data[6], s_Name[64], i_Access, i_Callback
	new name[32]
	get_user_name(id, name, 31)
	menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)

	new i_Vote = str_to_num(s_Data)
	
	switch(i_Vote)
	{
		case 1: CC_SendMessage(0, "&x03%s &x01voted for &x04Respawn Mode&x01.", name)
		case 2: CC_SendMessage(0, "&x03%s &x01voted for &x04Normal Mode&x01.", name)
	}
	g_Votes[i_Vote]++

	return PLUGIN_HANDLED
}
 
public EndVote() {

	if (task_exists(TASKID_COUNTER))
	{
		remove_task(TASKID_COUNTER);
	}

	if (task_exists(TASKID_COUNTER_ENDVOTE))
	{
		remove_task(TASKID_COUNTER_ENDVOTE);
	}

	set_task_ex(1.0, "Task_HudInformation", .flags = SetTask_Repeat);

	if (g_Votes[1] > g_Votes[2]) {
	
		CC_SendMessage(0, "&x03>> &x01Play &x04Respawn Mode &x03<<")

		copy(g_szGameMode, charsmax(g_szGameMode), "Current Mode: Respawn");
		
		gRespawn = true
		server_cmd("respawn_on 1")
		server_cmd("mp_round_infinite 1")
		server_cmd("sv_restart 1")
		server_exec ()
	}
	else if (g_Votes[2] >= g_Votes[1]) {
		
		CC_SendMessage(0, "&x03>> &x01Play &x04Normal Mode &x03<<")

		copy(g_szGameMode, charsmax(g_szGameMode), "Current Mode: Normal");
		
		server_cmd("respawn_on 0")
		server_cmd("mp_round_infinite 0")
		server_cmd("sv_restart 1")
		server_exec ()
	}

	g_ModeSelected = true;
	menu_destroy(g_VoteMenu)

	return PLUGIN_CONTINUE
}

stock Freeze_Player(id, freeze = false)
{
	if (freeze)
	{
		set_pev(id, pev_flags, pev(id, pev_flags) | FL_FROZEN);
	}
	else
	{
		set_pev(id, pev_flags, pev(id, pev_flags) & ~FL_FROZEN);
	}
}
LOYAL TO THE OATH OF OMERTА̀

Зад монитора мъжкари, това не го разбирам..
На живо сте мишкари, това го гарантирам!
Седиш на 30 метра от мен като препариран!
Ако има нещо брат, номерът ми е блокиран..

My GitHub Profile
GitHub

My AMXX Includes Collection
AMXX Include Libraries

My Steam Profile (from SteamDB)
  • Value: 4179€
  • Games owned: 1855
  • Games played: 754 (40%)
  • Hours on record: 4,994.9h

Аватар
illusion
Извън линия
Developer
Developer
Мнения: 1810
Регистриран на: 27 Ное 2016, 17:47
Местоположение: CraftVision
Се отблагодари: 151 пъти
Получена благодарност: 370 пъти
Обратна връзка:

Заявка за плъгин - като започне рунда да излезе меню дали да се играе respawn или не (повече инфо в темата)

Мнение от illusion » 01 Мар 2019, 21:58

Точно както го исках, благодаря.

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

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

Кой е на линия

Потребители разглеждащи този форум: Bing [Bot], Semrush [Bot] и 37 госта