Грешно ли е да използвам else вместо да направи друга проверка ?

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
[N]eXuS
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 16 Мар 2018, 04:52

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от [N]eXuS » 18 Мар 2018, 00:53

Здравейте, някой би ли обяснил дали е грешно да използвам else вместо да направи друга проверка да кажем за пример този плъгин

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

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


#define HE "weapon_hegrenade"
#define SG "weapon_smokegrenade"
#define FB "weapon_flashbang"
#define HP 50

#define HE_CT_AMMO 2
#define SG_CT_AMMO 2
#define FB_CT_AMMO 2

#define HE_T_AMMO 1
#define SG_T_AMMO 1
#define FB_T_AMMO 1

new pActiveMod

public plugin_init()
{
	register_plugin("Test Plugin", "1.0", "[N]eXuS")
	RegisterHam(Ham_Spawn, "player", "Spawn_Player", true)
	
	pActiveMod = register_cvar("amx_active", "1")
}

public Spawn_Player(id)
{
	if(get_pcvar_num(pActiveMod) == 1)
	{
		new Team:csTeam = get_user_team(id)
		if(csTeam == CS_TEAM_CT)
		{
			give_item(id, HE)
			give_item(id, SG)
			give_item(id, FB)
			
			new UserHp = get_user_health(id)
			set_user_health(id, UserHp + HP)
			
			cs_set_user_bpammo(id, CSW_HEGRENADE, HE_CT_AMMO)
			cs_set_user_bpammo(id, CSW_SMOKEGRENADE, SG_CT_AMMO)
			cs_set_user_bpammo(id, CSW_FLASHBANG, FB_CT_AMMO)
		}
		
		else
		
		{
			give_item(id, HE)
			give_item(id, SG)
			give_item(id, FB)
			
			new UserHp = get_user_health(id)
			set_user_health(id, UserHp + HP)
			
			cs_set_user_bpammo(id, CSW_HEGRENADE, HE_T_AMMO)
			cs_set_user_bpammo(id, CSW_SMOKEGRENADE, SG_T_AMMO)
			cs_set_user_bpammo(id, CSW_FLASHBANG, FB_T_AMMO)
		}
	}
}

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

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от OciXCrom » 18 Мар 2018, 00:55

Защо пък да е грешно? Точно това е целта на else. Излишно е да правиш две проверки, тъй като никога няма двете да се извикат наведнъж (няма как играч да е в повече от един отбор). Демек, или ще е едното, или ще е другото. Имай предвид обаче, че няма само 2 отбора, тъй че въпросното else ще се извика и когато играчът е спектатор.

Аватар
[N]eXuS
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 16 Мар 2018, 04:52

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от [N]eXuS » 18 Мар 2018, 01:04

Много ти благодаря за инфото, а как се прави когато играч получи друго оръжие старото да го хвърли например има USP полочава Deagle Usp то да хвърли ?

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

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от OciXCrom » 18 Мар 2018, 02:08

На ReHLDS ли си?

Аватар
[N]eXuS
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 16 Мар 2018, 04:52

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от [N]eXuS » 18 Мар 2018, 02:36

OciXCrom™ написа: 18 Мар 2018, 02:08 На ReHLDS ли си?
Не на HLDS тоест нямам сървър а на платформата на цс са се уча но кажи и двата начина :)

И да напишеш един прост код в който трябва да смени да кажем модела на цт без флагове и такива само структурата кадето се дава новия модел :)

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

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от OciXCrom » 18 Мар 2018, 04:33

На HLDS можеш да ползваш библиотеката stripweapons.inc и да премахнеш пистолетите на играча преди да му дадеш deagle:

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

StripWeapons(id, Secondary)
give_item(id, "weapon_deagle")
На ReHLDS трябва да ползваш ReGameDLL, който има функция която може да даде и автоматично да замести оръжието във въпросния слот:

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

rg_give_item(id, "weapon_deagle", GT_REPLACE)
За модела cs_set_user_model.

Аватар
[N]eXuS
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 16 Мар 2018, 04:52

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от [N]eXuS » 18 Мар 2018, 07:51

А как да направя при достигане на Х кила да дава нещо на играча за даването не е проблем проверката е проблема ?

Аватар
TheRedShoko
Извън линия
Модератор
Модератор
Мнения: 1016
Регистриран на: 06 Окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 5 пъти
Получена благодарност: 84 пъти

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от TheRedShoko » 18 Мар 2018, 12:57

Дали ще използваш само else зависи от ситуацията. Ако една промрнлива приема само 2 стойности, например 0 и 1, е безсмислено да слагаш проверка в else. Ако променливата приема повече от 2 стойности (твоя пример), зависи от желания резултат. Примера с отбора - отборите са от 0 до 3 включително. Ако искаш кодът да се държи по един начин за всички отбори, но за ct отбора има някаква разлика - няма нужда от проверка в else. Ако обаче искаш за CT да се държи по един начин, за Т по друг, а за спектатор по трети - има нужда от проверки. Много зависи от контекста и целта на кода. Например е твоя код ако спектатор се роди, той ще бъде третиран като Т и ще му даде нещата от else.

За киловете - прихващаш смъртта по някой от многото начини (DeathMsg, Ham_Killed, client_death, RG_CBasePlayer_Killed etc) и с една глобална или статична променлива си броиш киловете. Когато достигне определена стойност - правиш каквото искаш.

Аватар
[N]eXuS
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 16 Мар 2018, 04:52

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от [N]eXuS » 18 Мар 2018, 20:00

Може ли примерен код за да се орентирам по него ? :)

Аватар
Fr0sTt
Извън линия
Потребител
Потребител
Мнения: 138
Регистриран на: 16 Фев 2018, 19:11

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от Fr0sTt » 18 Мар 2018, 20:48

Правиш една променлива new PlayerKills[32], след това в deathmsg я добавяш, примерно PlayerKills[killer]++.И там къдего искаш на определени убийства да дава нещо слагаш - if(PlayerKills[playerid] == 10) като това е проверката за X убийствата и след нея може да добавиш да дава допълнителни екстри. Също така, ако искаш да не се запазват в client_disconect трябва да добавиш PlayerKills[playerid]=0 и в client_putinserver пак същото.

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

Обратно към “Помощ в скриптирането”

Кой е на линия

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