Как може да проверя кой рунд е ?

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
deadlylord
Извън линия
Потребител
Потребител
Мнения: 572
Регистриран на: 04 Апр 2017, 16:35
Местоположение: Бургас, България
Получена благодарност: 2 пъти
Обратна връзка:

Как се прави това/ какво означава ?

Мнение от deadlylord » 23 Мар 2018, 18:40

TheRedShoko написа: 23 Мар 2018, 17:48 Ще ти отговоря и на 3те въпроса описателно, когато си оправиш заглавието.
! се използва за превръщане на стойност в bool
! се използва за обръщане на стойността на bool

Това, че вие сте свикнали да го иползвате по-поразличен начин в pawn не означава, че не можеш да манипулираш bool с него

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

Как може да проверя кой рунд е ?

Мнение от [N]eXuS » 23 Мар 2018, 19:09

Вместо да се карате помогнете ми !!!

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

Как може да проверя кой рунд е ?

Мнение от TheRedShoko » 23 Мар 2018, 19:21

deadlylord написа: 23 Мар 2018, 18:40
TheRedShoko написа: 23 Мар 2018, 17:48 Ще ти отговоря и на 3те въпроса описателно, когато си оправиш заглавието.
! се използва за превръщане на стойност в bool
! се използва за обръщане на стойността на bool

Това, че вие сте свикнали да го иползвате по-поразличен начин в pawn не означава, че не можеш да манипулираш bool с него
Изразявай се правилно, за да не говориш глупости. Вика му се отрицание и функцията му много зависи от езика, в който се използва. Не обърквай потребителите с неправилна терминология. И не му се вика "по по-различен начин в pawn-a". Във всички езици е логическо отрицание. Не си мисли, че съм ограничен само до pawn-a и нито съм чувал нито съм виждал програмиране (имам опит със 7 езика за програмиране).
П.С. is_user_alive не връща bool.

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

#include <amxmodx>

// Все пак по някакъв начин трябва да броим рундовете - тази променлива ще ни помогне
new g_iRound = 0;

public plugin_init()
{
	// Прихващаме началото на рунда
	register_logevent("EventRoundStart", 2, "1=Round_Start");
}

public EventRoundStart()
{
	// Увеличаваме променливата, която пази номера на рунда, с 1
	g_iRound++;
}

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

Как може да проверя кой рунд е ?

Мнение от [N]eXuS » 23 Мар 2018, 19:40

Това ми стана ясно, но как ще стане: ти стигна 10 тия рунт на ти 2 флаша ?? това ме интересува :)

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

Как може да проверя кой рунд е ?

Мнение от Fr0sTt » 23 Мар 2018, 19:43

Както ти е дал този код, просто на спаун правиш проверка с if(g_iRound==10) и даваш флашовете.

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

Как може да проверя кой рунд е ?

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

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

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

Как може да проверя кой рунд е ?

Мнение от TheRedShoko » 23 Мар 2018, 19:54

Ако е 10тия рунд изцикляш всички играчи в сървъра и проверяваш. Ако са живи - 2флаша.

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

Как може да проверя кой рунд е ?

Мнение от [N]eXuS » 23 Мар 2018, 19:58

такаде това с флашовете беше пример само имам предвид

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

set_user_health(id, get_user_health(id) + Neshto si )
Дай пример с изциклянето :coolface:

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

Как може да проверя кой рунд е ?

Мнение от TheRedShoko » 23 Мар 2018, 20:19

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

#include <amxmodx>

// Все пак по някакъв начин трябва да броим рундовете - тази променлива ще ни помогне
new g_iRound = 0;

// Максималния брой играчи в сървъра
new g_iMaxPlayers;

public plugin_init()
{
	// Прихващаме началото на рунда
	register_logevent("EventRoundStart", 2, "1=Round_Start");

	// Трябва да има някаква стойност, все пак не може само да си я намери
	g_iMaxPlayers = get_maxplayers();
}

public EventRoundStart()
{
	// Увеличаваме променливата, която пази номера на рунда, с 1
	g_iRound++;
	
	// Проверяваме 10тия рунд ли е
	if (g_iRound == 10)
	{
		// Завъртаме си цикъла, който обикаля играчите
		for (new index = 1; index <= g_iMaxPlayers; index++)
		{
			// Проверяваме дали играчът е жив
			if (is_user_alive(index))
			{
				// Даваш каквото искаш
			}
		}
	}
}

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

Как може да проверя кой рунд е ?

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

@Shoko - по-правилно е да се ползва get_players, вместо да се луупват всички id-та.

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

#include <amxmodx>
#include <fun>

// Все пак по някакъв начин трябва да броим рундовете - тази променлива ще ни помогне.
new g_iRound = 0;

public plugin_init()
{
	// Прихващаме началото на рунда.
	register_logevent("EventRoundStart", 2, "1=Round_Start");
}

public EventRoundStart()
{
	// Увеличаваме променливата, която пази номера на рунда, с 1.
	g_iRound++;
	
	// Проверяваме 10тия рунд ли е.
	if (g_iRound == 10)
	{
		// Създаваме масив, където ще бъдат запазени играчите.
		// iPnum ще е броят на намерени играчи.
		new iPlayers[32], iPnum;
		
		// Запазваме всички играчи в масива. Флагът "а" в края означава, че искаме да намерим само живите играчи.
		// Можеш да погледнеш останалите флагове тук - https://amxx-bg.info/forum/api/amxmodx/get_players
		get_players(iPlayers, iPnum, "a");
		
		// Завъртаме си цикъла, който обикаля играчите.
		for (new i, id; i < iPnum; i++)
		{
			// Даваш 2 flash гранати.
			give_item(id, "weapon_flashbang");
			give_item(id, "weapon_flashbang");
		}
	}
}
Иначе, аз бих направил целия код по друг начин. Вместо даваш гранатите в началото на рунда, направо го при прераждане на играча. В този случай няма да е глобален евент и няма да има нужда от никакъв цикъл. Също така, по този начин, ако играчът се respawn-не след началото на рунда, отново ще получи гранатите, а по горния начин няма да ги получи, тъй като кодът се извиква само в началото на рунда.

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

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

// Все пак по някакъв начин трябва да броим рундовете - тази променлива ще ни помогне.
new g_iRound = 0;

public plugin_init()
{
	// Прихващаме началото на рунда.
	register_logevent("EventRoundStart", 2, "1=Round_Start");
	
	// Прихващаме прераждането на играча.
	RegisterHam(Ham_Spawn, "player", "OnPlayerSpawn", 1);
}

public EventRoundStart()
{
	// Увеличаваме променливата, която пази номера на рунда, с 1.
	g_iRound++;
}

public OnPlayerSpawn(id)
{
	// Проверяваме дали играчът е жив и дали в момента се играе 10-тия рунд.
	if(is_user_alive(id) && g_iRound == 10)
	{
		// Даваме 2 flash гранати на играча.
		give_item(id, "weapon_flashbang");
		give_item(id, "weapon_flashbang");
	}
}

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

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

Кой е на линия

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