Функция get_players_by_name

В този раздел можете да намерите полезни кодове и уроци свързани с PAWN скриптинга.
Аватар
SmirnoffBG
Извън линия
Потребител
Потребител
Мнения: 267
Регистриран на: 27 Ное 2016, 19:43
Местоположение: nz
Се отблагодари: 77 пъти
Получена благодарност: 38 пъти
Обратна връзка:

Функция get_players_by_name

Мнение от SmirnoffBG » 18 Юли 2019, 22:50

Защо ми е тази функция:
  • Защото get_players бъгва при търсене по отбори.
  • Защото може да върне случаен играч.
  • Защото връща всички с посочената дума, а не грешка или само първият.
Функционалност:
  • Може да засече:
    • "Gosho" (Връща всички играчи, който в името си имат думата)
    • "@ct" (връща всички контра терористи)
    • "@t" (връща всички терористи)
    • "@all" (връща всички играчи в сървъра)
    • "@r" (Избира произволен играч)
  • Употреба:
    • Код за потвърждение: Избери целия код

      new duma[15]
      copy(duma, "say goldenak @all")
      get_players_by_name(id, pl[32], duma[13], &num)
      // duma[13] защото тогава е "@all", което всъчщност й трябва на функцията
      if(num == -1) return
      if(num == 1)
      {
       //кодът намери това което търсехте
      }
      else
      {
       //кодът е намерил повече от един
      }

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

get_players_by_name(id, pl[32], szString[50], &num)
{
	switch(szString[0]) {
		case '@':if(szString[1] == 'r')
			{
				if( get_playersnum() < 2)
				{
					ColorChat(id, RED, "^x04[^x01PREFIX^x04] ^"@random^" cannot be used with only 1 person in the server!")
				}
				new tid32
				while ((tid32 = random_num(1,32)))
				{
					if(!is_user_connected(tid32) || id == tid32) continue
					pl[num] = tid32
					num++
					break
				}
			} 
			else 
			{
				for(new i=1; i<33; i++)
				{
					if(is_user_connected(i))
					{
						if(get_user_team(i) != (szString[1]-97)%6 && szString[1] != 'a') continue
						pl[num] = i, num++
					}
				}
			}
		default : for(new i=1; i<33; i++)
			if(is_user_connected(i) &&  containi(user_name[i], szString) != -1) 
				pl[num] = i, num++
	} 
}
El-Super Respawn = 87.121.54.85:27016
BG Trewa Respawn = 91.92.137.205:27015

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

Функция get_players_by_name

Мнение от TheRedShoko » 18 Юли 2019, 23:24

Какво по-точно бъгва на get_players?

- get_players работи много по-бързо
- random се имплементира изключително лесно с get_players

Аватар
SmirnoffBG
Извън линия
Потребител
Потребител
Мнения: 267
Регистриран на: 27 Ное 2016, 19:43
Местоположение: nz
Се отблагодари: 77 пъти
Получена благодарност: 38 пъти
Обратна връзка:

Функция get_players_by_name

Мнение от SmirnoffBG » 19 Юли 2019, 00:45

На версия 1.8 на amxmodx get_players не връща правилно, ако желаеш да маркираш всички от даден отбор.
ПП: Давам го този код не за да се правя на оптимизатор а за хора който имат подобен проблем и като цяло искат с един "stock" да хванат дори и "@all"
El-Super Respawn = 87.121.54.85:27016
BG Trewa Respawn = 91.92.137.205:27015

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

Обратно към “Полезни кодове/уроци”

Кой е на линия

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