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

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

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

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

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

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

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

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

Спавн по координатам.

Статус пользователя Nixon
сообщение 27.11.2013, 18:11
Сообщение #1


Стаж: 12 лет

Сообщений: 399
Благодарностей: 192
Полезность: 589

Добрый день. Хотел спросить как сделать спавн игрока по координатам, тем которые мне нужны. Допустим у меня есть две координаты, к примеру это:
1. -2155 2505 167
2. -2215 2615 167

Как мне сделать чтобы при спавне использовались именно эти координаты? Возможно ли сделать через цикл? К примеру:

Код
new const origins[][] =
{
    "-2155 2505 167",
    "-2215 2615 167"
}

public spawn(id)
{
    for(new i; i < origins(); i++)
    {
        set_user_origin(id, i)
    }
}


Например если уже эта координата занята(т.е. уже там игрок заспавнился), то идет на другую координату, если свободна то спавнит.

Отредактировал: Nixon, - 27.11.2013, 18:12
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   Цитировать сообщение
serfreeman1337
сообщение 28.11.2013, 5:11
Сообщение #2
Стаж: 13 лет

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

Проверить занятость спавна другим игроком можно с помощью этой функции:
Код:
#define IsPlayer(%1) (1 <= %1 <= g_MaxPlayers)

bool: IsSpawnPointValid(const resp_ent)
{
new ent = FM_NULLENT;
new Float: origin[3];
pev(resp_ent, pev_origin, origin);

while((ent= engfunc(EngFunc_FindEntityInSphere, ent, origin, 10.0)))
{
return IsPlayer(ent) ? false : true;
}
return false;
}

Она ищет игроков в радиусе 10 юнитов от точки по позиции переданной ID энтити в respt_ent.
Чтобы изменить спаун, лучше всего хукать пост Ham_Spawn и изменять уже там.

Можно еще сделать рандом выбор точки появления, но нужно создать энтайты на этих позициях:
Код:
SearchSpawnPoint()
{
new ent, alert, i;
do
{
for (i = random_num(1, 10); i > 0; i-- )
ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "info_player_deathmatch");

if (alert ++ > 10) return 0;
}
while (!IsSpawnPointValid(ent));
return ent;
}

Поиск незанятой случайной позиции info_player_deathmatch (T).

Пример кода можешь посмотреть в моем плагине hl_ctf, который я никак доделать не могу :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: