Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Рандомный выбор игрока

, 4 игрока
Статус пользователя unnamed7777
сообщение 10.6.2014, 13:59
Сообщение #1


Стаж: 12 лет

Сообщений: 54
Благодарностей: 7
Полезность: 17

Добрый день. На сервере есть 4 игрока, как из этих 4 игроков выбрать 1-го рандомно и дать ему авп?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
serfreeman1337
сообщение 10.6.2014, 14:01
Сообщение #2
Стаж: 13 лет

Сообщений: 912
Благодарности: выкл.

Код:
new id = random_num(1,4)

:yao face:

Отредактировал: serfreeman1337, - 10.6.2014, 14:01
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя unnamed7777
сообщение 10.6.2014, 14:04
Сообщение #3


Стаж: 12 лет

Сообщений: 54
Благодарностей: 7
Полезность: 17

Цитата(serfreeman1337 @ 10.6.2014, 14:01) *
Код:
new id = random_num(1,4)

:yao face:

Код:
#include <amxmodx>
#include <fun>

public plugin_init() {
register_event("ResetHUD", "awp", "be")
}

public awp(id) {
new id = random_num(1,4)

give_item(id, "weapon_awp")
}


Так?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
serfreeman1337
сообщение 10.6.2014, 14:10
Сообщение #4
Стаж: 13 лет

Сообщений: 912
Благодарности: выкл.

А что если будет меньше 4ех игроков или их не будет вообще? И почему в ResetHUD ты выполняешь эту функцию?
Подумай.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя unnamed7777
сообщение 10.6.2014, 14:11
Сообщение #5


Стаж: 12 лет

Сообщений: 54
Благодарностей: 7
Полезность: 17

Цитата(serfreeman1337 @ 10.6.2014, 14:10) *
А что если будет меньше 4ех игроков или их не будет вообще? И почему в ResetHUD ты выполняешь эту функцию?
Подумай.

Код:
public functions()
{
new plauer[32], num

get_players(plauer, num, "ch")

if(num == 4)
{

}
}


Отредактировал: tom94ok, - 10.6.2014, 14:18
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя unnamed7777
сообщение 10.6.2014, 15:57
Сообщение #6


Стаж: 12 лет

Сообщений: 54
Благодарностей: 7
Полезность: 17

Цитата(tom94ok @ 10.6.2014, 14:11) *
Код:
public functions()
{
new plauer[32], num

get_players(plauer, num, "ch")

if(num == 4)
{

}
}


А как еще сделать диапазон? Например если 4 игрока, то одному выдаст awp, а если будет 5 или 6, ну или 32
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 10.6.2014, 16:08
Сообщение #7
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(Safety1st @ 15.12.2013, 4:01) *
Получить любое количество рандомных игроков
Универсальная функция, получающая любое количество рандомных уникальных игроков.

PLAYERS_NEED поставить 1.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя unnamed7777
сообщение 10.6.2014, 16:18
Сообщение #8


Стаж: 12 лет

Сообщений: 54
Благодарностей: 7
Полезность: 17

Цитата(Safety1st @ 10.6.2014, 16:08) *
PLAYERS_NEED поставить 1.


Можно пример?

Цитата(tom94ok @ 10.6.2014, 16:16) *
Можно пример?

Код:
SomeFunction() {
#define PLAYERS_NEED 3
new iPlayers[PLAYERS_NEED], iPlayersHave, iPlayer
iPlayersHave = GetRandomPlayers( iPlayers, PLAYERS_NEED )

new szIds[32] = "none", iLen // FOR TEST ONLY

for( new i = 0; i < iPlayersHave; i++ ) {
iPlayer = iPlayers[i]
// ...

iLen += formatex( szIds[iLen], charsmax(szIds) - iLen, "%d ", iPlayer ) // FOR TEST ONLY
}

server_print( "Got players: %s", szIds ) // FOR TEST ONLY
}

GetRandomPlayers( players[], const need ) {
new iPlayers[32], iPlayersNum, iLastPlayer, iRandom, iFound
get_players( iPlayers, iPlayersNum, "a" ) // only alive

iLastPlayer = iPlayersNum - 1

while( iLastPlayer != -1 && iFound != need ) {
iRandom = random_num( 0, iLastPlayer ) // properly works for ( 0, 0 ) too
players[iFound++] = iPlayers[iRandom]
if( iRandom != iLastPlayer ) {
// move last element to new position
iPlayers[iRandom] = iPlayers[iLastPlayer]
}
iLastPlayer--
}

return iFound
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 10.6.2014, 16:21
Сообщение #9
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

GetRandomPlayers() - сама функция, её не нужно трогать.

Использовать в своём плагине:
Код
#define PLAYERS_NEED 1
new iPlayers[PLAYERS_NEED], iPlayersHave, iPlayer
iPlayersHave = GetRandomPlayers( iPlayers, PLAYERS_NEED )
if( iPlayersHave )
    give_item( iPlayers[0], "weapon_awp")
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя unnamed7777
сообщение 10.6.2014, 16:31
Сообщение #10


Стаж: 12 лет

Сообщений: 54
Благодарностей: 7
Полезность: 17

Цитата(Safety1st @ 10.6.2014, 16:21) *
GetRandomPlayers() - сама функция, её не нужно трогать.

Использовать в своём плагине:
Код
#define PLAYERS_NEED 1
new iPlayers[PLAYERS_NEED], iPlayersHave, iPlayer
iPlayersHave = GetRandomPlayers( iPlayers, PLAYERS_NEED )
if( iPlayersHave )
    give_item( iPlayers[0], "weapon_awp")

Жаль, что пока нету кнопки "Спасибо"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 10.6.2014, 16:42
Сообщение #11
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Через 3 поста появится ;)
Пожалуйста.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя unnamed7777
сообщение 10.6.2014, 16:43
Сообщение #12


Стаж: 12 лет

Сообщений: 54
Благодарностей: 7
Полезность: 17

Цитата(tom94ok @ 10.6.2014, 16:31) *
Жаль, что пока нету кнопки "Спасибо"

Дабы не создавать еще 1 тему, как можно отловить, что за терористов есть 1 игрок?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя unnamed7777
сообщение 10.6.2014, 17:33
Сообщение #13


Стаж: 12 лет

Сообщений: 54
Благодарностей: 7
Полезность: 17

Цитата(tom94ok @ 10.6.2014, 16:43) *
Дабы не создавать еще 1 тему, как можно отловить, что за терористов есть 1 игрок?

Будет очень хорошо :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 10.6.2014, 17:55
Сообщение #14
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Может речь об определении, сколько игроков за TT в определенный момент времени?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя unnamed7777
сообщение 10.6.2014, 18:40
Сообщение #15


Стаж: 12 лет

Сообщений: 54
Благодарностей: 7
Полезность: 17

Цитата(Safety1st @ 10.6.2014, 17:55) *
Может речь об определении, сколько игроков за TT в определенный момент времени?

Не мне нужно узнать если 1 игрок за терористов
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя unnamed7777
сообщение 10.6.2014, 19:14
Сообщение #16


Стаж: 12 лет

Сообщений: 54
Благодарностей: 7
Полезность: 17

Цитата(Safety1st @ 10.6.2014, 17:55) *
Может речь об определении, сколько игроков за TT в определенный момент времени?

Код:
new iPlayers[32], num_tt

get_players ( iPlayers, num_tt, "e", "TERRORIST")

if(num_tt == 1) {
// code
}


Так правильно будет подсчет?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 10.6.2014, 20:28
Сообщение #17
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(tom94ok @ 10.6.2014, 20:40) *
Не мне нужно узнать если 1 игрок за терористов

А ниже код как раз для случая, который я называл)

Цитата(tom94ok @ 10.6.2014, 21:14) *
Код:
new iPlayers[32], num_tt

get_players ( iPlayers, num_tt, "e", "TERRORIST")

if(num_tt == 1) {
// code
}


Так правильно будет подсчет?

Только если использовать для подсчёта живых TT вот так:
Код:
new iPlayers[32], num_tt

get_players ( iPlayers, num_tt, "ae", "TERRORIST")

if(num_tt == 1) {
// code
}
С мёртвыми возможны ошибки в определении.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: