JBDaysmenu итеми, кръв т.н. достигат само до този, който е пуснал деня, round start set lights

Въпроси и проблеми свързани с AMXModX.
Аватар
Orangegame14
Извън линия
Потребител
Потребител
Мнения: 87
Регистриран на: 02 Апр 2020, 22:48
Се отблагодари: 6 пъти
Получена благодарност: 24 пъти

JBDaysmenu итеми, кръв т.н. достигат само до този, който е пуснал деня, round start set lights

Мнение от Orangegame14 » 24 Юни 2020, 15:36

Здравейте! По-долу е кодът на плъгин, чиято идея е да пуска специални дни в JBMod-а(най-вероятно ще ви е познато). Възникнаха обаче два проблема - единствено пусналият деня получава нещата за специалния ден, независимо от кой отбор е, но никой друг от отборите не получава съответните неща. Другият е, че след началото на Night Crawler ден светлината на мапа се сетва до минимална, обаче в края на рунда не се сетва обратно на нормалната(тоест t или s някъде) във функцията endround(). Благодаря предварително! Помогналият ще бъде записан в //comment.

Ето и лог от конзолата: This server is using AMX Mod X
Visit http://www.amxmodx.org
L 06/24/2020 - 15:23:23: [FUN] Player out of range (0)
L 06/24/2020 - 15:23:23: [AMXX] Displaying debug trace (plugin "jbdaysmenu2.amxx")
L 06/24/2020 - 15:23:23: [AMXX] Run time error 10: native error (native "set_user_health")
L 06/24/2020 - 15:23:23: [AMXX] [0] jbdaysmenu2.sma::endround (line 240)

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

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <chatcolor>
#include <newmenus>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>

public plugin_init()
{
	register_plugin("JBDaysMenu", "1.0", "Ibrahim")
	register_clcmd("say /daysmenu2", "DaysMenu2")
	register_clcmd("say_team /daysmenu2", "DaysMenu2")
	register_logevent("endround",2,"0=World triggered","1=Round_End")
}
public plugin_precache()
{
	precache_model("models/v_nemesis.mdl")
	precache_model("models/player/Nemesis/Nemesis.mdl")
	precache_model("models/player/Nightcrawler/Nightcrawler.mdl")
	precache_model("models/v_nightcrawler.mdl")
}
public DaysMenu2(id)
{
	new menu = menu_create("\wIzberi specialen den\r(Samo admini mogat da puskat specialni dni!)", "menu_handler", 0)
	menu_additem(menu, "\rNatisni tuk", "", 0, -1)
	menu_additem(menu, "\wNemesis den", "" , ADMIN_IMMUNITY, -1)
	menu_additem(menu, "\wUSP vs Glock den", "" , ADMIN_IMMUNITY, -1)
	menu_additem(menu, "\wLast man standing den", "", ADMIN_IMMUNITY, -1)
	menu_additem(menu, "\wOnly Headshot den\r(CT)", "", ADMIN_IMMUNITY, -1)
	menu_additem(menu, "\wOnly Headshot den\r(T)", "", ADMIN_IMMUNITY, -1)
	menu_additem(menu, "\wNight Crawler den", "", ADMIN_IMMUNITY, -1)
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
	menu_display(id, menu, 0)
}
public menu_handler(id, menu, item)
{
	new players[32], num, player;
	get_players( players, num, "a" );
	
	for( new i = 0; i < num; i++ )
	switch(item)
	{
		case 0:
		{
			client_print_color(player, GREY, "^x03NAZAD DEMONE (avtor na plugina - Ibrahim)"); 
		}
		case 1:
		{
			new players[32], num, player;
			get_players( players, num, "a" );
	
			for( new i = 0; i < num; i++ )
			player = players[i];
			if(cs_get_user_team(player) == CS_TEAM_CT)
			{
				cs_set_user_model(player, "Nemesis")
				set_user_health(player, 2000)
				set_user_gravity(player, 0.3)
				strip_user_weapons(player)
				give_item(player, "weapon_knife")
				set_pev(player, pev_viewmodel2, "models/v_nemesis.mdl")
				client_print_color(player, GREY, "sega si Nemesis! Trqbva da ubiesh Ocelqvashtite!");
			}
			else
			{
				give_item(player, "weapon_ak47")
				set_user_health(player, 100)
				cs_set_user_bpammo(player, CSW_AK47, 200)
				client_print_color(player, GREY, "Ti sega si Ocelqvasht! Trqbva da ubiesh Nemesisite!");
			}
		
		}
		case 2:
		{
			new players[32], num, player;
			get_players( players, num, "a" );
	
			for( new i = 0; i < num; i++ )
			player = players[i];
			if(cs_get_user_team(player) == CS_TEAM_CT)
			{
				strip_user_weapons(player)
				give_item(player, "weapon_usp")
				set_user_health(player, 250)
				cs_set_user_bpammo(player, CSW_USP, 200)
				client_print_color(player, GREY, "^Pusnat e USP vs Glock den! Trqbva da ubiesh zatvornicite!");
			}
			else
			{
				strip_user_weapons(player)
				give_item(player, "weapon_glock18")
				set_user_health(player, 100)
				cs_set_user_bpammo(player, CSW_GLOCK18, 200)
				client_print_color(player, GREY, "Pusnat e USP vs Glock den! Trqbva da ubiesh nadziratelite!");
			}
		}
		case 3:
		{
			new players[32], num, player;
			get_players( players, num, "a" );
	
			for( new i = 0; i < num; i++ )
			player = players[i];
			set_cvar_num("mp_friendlyfire" ,1)
			if(cs_get_user_team(player) == CS_TEAM_T)
			{
				set_user_health(player, 500)
				client_print_color(player, GREY, "Pusnat e Last man standing den! Trqbva da izbiesh ostanalite zatvornici i da ostanesh posleden!");
				give_item(player, "weapon_ak47")
				give_item(player, "weapon_aug")
				give_item(player, "weapon_awp")
				give_item(player, "weapon_deagle")
				give_item(player, "weapon_elite")
				give_item(player, "weapon_famas")
				give_item(player, "weapon_g3sg1")
				give_item(player, "weapon_flashbang")
				give_item(player, "weapon_fiveseven")
				give_item(player, "weapon_galil")
				give_item(player, "weapon_hegrenade")
				give_item(player, "weapon_knife")
				give_item(player, "weapon_glock18")
				give_item(player, "weapon_m4a1")
				give_item(player, "weapon_m3")
				give_item(player, "weapon_m249")
				give_item(player, "weapon_p90")
				give_item(player, "weapon_xm1014")
				give_item(player, "weapon_mac10")
				give_item(player, "weapon_mp5navy")
				give_item(player, "weapon_p228")
				give_item(player, "weapon_sg552")
				give_item(player, "weapon_sg550")
				give_item(player, "weapon_scout")
				give_item(player, "weapon_smokegrenade")
				give_item(player, "weapon_tmp")
				give_item(player, "weapon_usp")
				give_item(player, "weapon_ump45")
			}
			else
			{
				client_print_color(player, GREY, "Pusnat e Last man standing den i imash godmode dokato zatvornicite se izbivat!");
				set_user_godmode(player, 1)
			}
		}
		case 4:
		{
			new players[32], num, player;
			get_players( players, num, "a" );
	
			for( new i = 0; i < num; i++ )
			player = players[i];
			if(cs_get_user_team(player) == CS_TEAM_CT)
			{
				client_print_color(player, GREY, "Pusnat e Only Headshot den!Kato CT poemash shteti samo v GLAVATA!");
				set_user_hitzones(player, 0, 2)
				give_item(player, "weapon_scout")
				set_user_health(player, 250)
				cs_set_user_bpammo(player, CSW_SCOUT, 200)
			}
			else
			{
				client_print_color(player, GREY, "Pusnat e Only Headshot den!CT poemat shteti samo v GLAVATA!");
				give_item(player, "weapon_glock18")
				set_user_health(player, 100)
				cs_set_user_bpammo(player, CSW_GLOCK18, 200)
			}
		}
		case 5:
		{
			new players[32], num, player;
			get_players( players, num, "a" );
	
			for( new i = 0; i < num; i++ )
			player = players[i];
			if(cs_get_user_team(player) == CS_TEAM_T)
			{
				client_print_color(player, GREY, "Pusnat e Only Headshot den!Kato T poemash shteti samo v GLAVATA!");
				set_user_hitzones(player, 0, 2)
				give_item(player, "weapon_glock18")
				set_user_health(player, 100)
				cs_set_user_bpammo(player, CSW_GLOCK18, 200)
			}
			else
			{
				client_print_color(player, GREY, "Pusnat e Only Headshot den!T poemat shteti samo v GLAVATA!");
				give_item(player, "weapon_m4a1")
				set_user_health(player, 250)
				cs_set_user_bpammo(player, CSW_M4A1, 200)
			}
		}
		case 6:
		{
			new players[32], num, player;
			get_players( players, num, "a" );
	
			for( new i = 0; i < num; i++ )
			player = players[i];
			set_lights("a")
			if(cs_get_user_team(player) == CS_TEAM_CT)
			{
				client_print_color(player, GREY, "^Pusnat e Night Crawler den!Ti si noshten presledvach i trqbva da ubiesh ocelqvashtite!");
				strip_user_weapons(player)
				give_item(player, "weapon_knife")
				cs_set_user_nvg(player, 1)
				set_user_health(player, 300)
				fm_set_rendering(player, kRenderFxGlowShell, 000, 255, 255, kRenderNormal, 16)
				set_user_gravity(player, 0.125)
				set_pev(player, pev_viewmodel2, "models/v_nightcrawler.mdl")
				cs_set_user_model(player, "Nightcrawler")
			}
			else
			{
				client_print_color(player, GREY, "^Pusnat e Night Crawler den!Ti si ocelqvasht i trqbva da ubiesh noshtnite presledvachi!");
				strip_user_weapons(player)
				give_item(player, "weapon_elite")
			}
		}
	}
	menu_destroy(menu)
	return PLUGIN_HANDLED
}
public endround() 
{
	new players[32], num, player;
	get_players( players, num, "a" );
	for(new id = 1; id < 33; id++) 
	{
		set_user_health(player, 100)
		set_user_gravity(player, 1.0)
		set_user_godmode(player)
		strip_user_weapons(player)
		set_user_hitzones(player, 0, 255)
		fm_set_rendering(player, kRenderFxNone)
		cs_reset_user_model(player)
		set_user_armor(player, 0)
		give_item(player, "weapon_knife")
		set_lights("t")
		set_cvar_num("mp_friendlyfire", 0);
	}
	return PLUGIN_CONTINUE
}

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

JBDaysmenu итеми, кръв т.н. достигат само до този, който е пуснал деня, round start set lights

Мнение от OciXCrom » 24 Юни 2020, 15:41

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

for(new id = 1; id < 33; id++) 
=>

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

for(new i, player; i < num; i++)
{
    player = players[i]
set_lights и set_cvar_num не трябва да са в цикъла, тъй като са глобални функции. По този начин ще се извикат до 32 пъти (за всеки играч отделно).

Аватар
Orangegame14
Извън линия
Потребител
Потребител
Мнения: 87
Регистриран на: 02 Апр 2020, 22:48
Се отблагодари: 6 пъти
Получена благодарност: 24 пъти

JBDaysmenu итеми, кръв т.н. достигат само до този, който е пуснал деня, round start set lights

Мнение от Orangegame14 » 24 Юни 2020, 18:32

След преместването на set_lights и set_cvar_num на mp_friendlyfire вън от цикъла вече работят както трябва, но при промяната на реда в кода с твоя излезе предупреждение 203, че символът "player" никога не е бил използван.

Аватар
JackEyedJones
Извън линия
Потребител
Потребител
Мнения: 399
Регистриран на: 10 Сеп 2018, 17:26
Местоположение: Plovdiv, Bulgaria, Europe, Entire World
Се отблагодари: 4 пъти
Получена благодарност: 69 пъти
Обратна връзка:

JBDaysmenu итеми, кръв т.н. достигат само до този, който е пуснал деня, round start set lights

Мнение от JackEyedJones » 24 Юни 2020, 18:40

Така мисля, че трябва да е...

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

public endround() 
{
	new players[32], num;
	get_players( players, num, "a" );

	for(new i, player; i < num; i++)
	{
    		player = players[i];

		set_user_health(player, 100)
		set_user_gravity(player, 1.0)
		set_user_godmode(player)
		strip_user_weapons(player)
		set_user_hitzones(player, 0, 255)
		fm_set_rendering(player, kRenderFxNone)
		cs_reset_user_model(player)
		set_user_armor(player, 0)
		give_item(player, "weapon_knife");
	}
	
        set_cvar_num("mp_friendlyfire", 0);
        set_lights("t")
	return PLUGIN_CONTINUE
}

Аватар
Orangegame14
Извън линия
Потребител
Потребител
Мнения: 87
Регистриран на: 02 Апр 2020, 22:48
Се отблагодари: 6 пъти
Получена благодарност: 24 пъти

JBDaysmenu итеми, кръв т.н. достигат само до този, който е пуснал деня, round start set lights

Мнение от Orangegame14 » 24 Юни 2020, 19:03

JackEyedJones написа: 24 Юни 2020, 18:40 Така мисля, че трябва да е...
Не се получи. Не знам дали трябва да бъде нещо в endround() променено, за да ДАВА неща на двата отбора, защото смисълът на endround() би трябвало в случая да е да ги взима, да променя mp_ обратно на default и т.н.

Аватар
JackEyedJones
Извън линия
Потребител
Потребител
Мнения: 399
Регистриран на: 10 Сеп 2018, 17:26
Местоположение: Plovdiv, Bulgaria, Europe, Entire World
Се отблагодари: 4 пъти
Получена благодарност: 69 пъти
Обратна връзка:

JBDaysmenu итеми, кръв т.н. достигат само до този, който е пуснал деня, round start set lights

Мнение от JackEyedJones » 24 Юни 2020, 20:24

Е отговора ми беше спрямо мнението на Крома
след началото на Night Crawler ден светлината на мапа се сетва до минимална, обаче в края на рунда не се сетва обратно на нормалната(тоест t или s някъде) във функцията endround()
Инак за другото, предвид че с това не се занимавам вече активно, кода е огромен и ще ми отнеме твърде много време да го прегледам и видя какво да се прави. Предвид, че и с JB не съм се занимавал. Даже като се загледам, не съм сигурен дали този код се компилира и работи така, ако изобщо се компилира.

Аватар
Orangegame14
Извън линия
Потребител
Потребител
Мнения: 87
Регистриран на: 02 Апр 2020, 22:48
Се отблагодари: 6 пъти
Получена благодарност: 24 пъти

JBDaysmenu итеми, кръв т.н. достигат само до този, който е пуснал деня, round start set lights

Мнение от Orangegame14 » 24 Юни 2020, 20:42

JackEyedJones написа: 24 Юни 2020, 20:24 Инак за другото, предвид че с това не се занимавам вече активно, кода е огромен и ще ми отнеме твърде много време да го прегледам и видя какво да се прави. Предвид, че и с JB не съм се занимавал. Даже като се загледам, не съм сигурен дали този код се компилира и работи така, ако изобщо се компилира.
Компилира се, така както ти го даде беше премахнато и предупреждението от мнението ми по-горе, но все още при стартирането на специален ден само и единствено аз получавам нещата от редовете.

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

JBDaysmenu итеми, кръв т.н. достигат само до този, който е пуснал деня, round start set lights

Мнение от OciXCrom » 24 Юни 2020, 21:08

Ъъъ защо целият menu handler е сложен в цикъл за всички играчи?

Изображение

Тази част от кода не трябва да съществува.

Аватар
Orangegame14
Извън линия
Потребител
Потребител
Мнения: 87
Регистриран на: 02 Апр 2020, 22:48
Се отблагодари: 6 пъти
Получена благодарност: 24 пъти

JBDaysmenu итеми, кръв т.н. достигат само до този, който е пуснал деня, round start set lights

Мнение от Orangegame14 » 24 Юни 2020, 22:26

Защото съм забравил на case 0: да сложа id вместо player в първата аргументация и ми изкарваше грешки и се чудех защо е така..добре, след премахването на тези редове сега дава на другите играчи, но не и на мен. Пробвах с двойно if
за всеки от отборите с player като първи аргумент, пробвах и с 4 if като първите 2 са за 2та отбора с първи аргумент player, а останалите 2 са за 2та отбора с първи аргумент id. При премахването на редовете работеше само при другите, при двойно if работеше само при другите играчи, при четворното само при мен, но идеята е всеки да получава според отбора си.

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

JBDaysmenu итеми, кръв т.н. достигат само до този, който е пуснал деня, round start set lights

Мнение от OciXCrom » 24 Юни 2020, 22:34

Качи новия код.

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

Обратно към “Поддръжка / Помощ”

Кой е на линия

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