Генерация спавнов "на лету" - обсуждение

ifx

Сообщения
330
Реакции
149
Помог
4 раз(а)
В начале декабря на оленях появилась вот такая тема - https://forums.alliedmods.net/showthread.php?t=309495, с генерацией точек на лету. Казалось бы идеально для ксдм спавнов, но не совсем.

На коленке накидал вот такой плагин
Код:
#include <amxmodx>
#include <rog>
#include <fakemeta>
#include < hamsandwich >

public plugin_init()
{
    ROGInitialize(250.0)
    ROGDumpOriginData()

    register_clcmd("say /next", "ClientCommand_NextOrigin")
    register_clcmd("say /generate", "ClientCommand_GenerateOrigins")
    register_clcmd("say /shuffle", "ClientCommand_ShuffleOrigins")
    RegisterHam ( Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1 )
    register_event( "TextMsg", "EVENT_TextMsg", "a", "2&#Game_C", "2&#Game_w", "2&#Game_will_restart_in" );
    register_logevent( "LOG_RoundEnd", 2, "1=Round_End" );
}

public fw_PlayerSpawn_Post (id)
{
ClientCommand_NextOrigin(id)
}

public ClientCommand_NextOrigin(id)
{
    //get the next origin and spawn the player there
    new Float:Origin[3]
    ROGGetOrigin(Origin)
    engfunc(EngFunc_SetOrigin, id, Origin)
}

public ClientCommand_GenerateOrigins(id)
{
    //generate a new set of origins during runtime
    ROGInitialize(250.0)
}

public ClientCommand_ShuffleOrigins(id)
{
    //shuffle the existing set of origins
    ROGShuffleOrigins()
}
public EVENT_TextMsg(id)
{
    ClientCommand_GenerateOrigins(id)
}

public LOG_RoundEnd(id)
{
    ClientCommand_GenerateOrigins(id)
}
Беда в том, что кроме генерации хороших спавнов, есть и спавны, которые появляются за пределами карт и как это обойти - непонятно. Если у кого есть какие идеи-предложения, давайте обсудим\допилим.
 
Сообщения
2,491
Реакции
2,791
Помог
61 раз(а)
ifx, я уже говорил. Что генерировать нужно локально, потом пробегатся по ним и смотреть, нормально ли лни сгенерировались или нет. Если за пределамы карты или в точках которые заблокированы (например подвал в центре на авп индии). И если она плохая убирать. Сразу же стоит уточнить, что нужно генерировать на ~15-30% больше точок, чтоб после удаления плохих их не оказалось слишком мало. Также стоит править угол спавна? чтобы игрок при спавне не упирлся в стену. И только после удачного редактирования, сохранить в конфиг файл. На сервере же просто грузить с файла. Суть автогенерации в том, что она существенно упрощает растановку точек. Ведь не нужно бегать по всей карте и раставлять точки. Можна их сгенерировать и подправить.
14 Янв 2019
Можна связать с этим плагином https://dev-cs.ru/resources/402/
 

ifx

Сообщения
330
Реакции
149
Помог
4 раз(а)
fantom, это все понятно) это я отложил как резервный вариант :)
те проставлять спавны все же никак не получится динамически?
 
Сообщения
2,491
Реакции
2,791
Помог
61 раз(а)
ifx, ну я тестировал другой генератор. И о чень часто оно генерило не там, где нужно. Судя по
которые появляются за пределами карт
Я делаю вывод чт ои тот не решен данног онедостатка. Оно то и понятно. Очень сложно наверн сделать чтобы всегда были бы валидные спавны. Посему считаю предложеный мною вариант лучшым решением на даный момент.
 
Сообщения
494
Реакции
109
Помог
16 раз(а)
Еще может быть проблема что если на карте установлена зона закупки в определенных границах,новый спавн не расширит ее,и игроки несмогут закупаться. Я незнаю но можно ли сделать так что бы 2 игрока допустим могли спавнится в 1 месте,везде почти стоит прозрачность игроков и типа спавнить их с определенной задержкой например.
 
Сообщения
1,419
Реакции
2,509
Помог
59 раз(а)
В начале декабря
В конце июля если быть точным. Так-то уже было до этого много генераторов всяких, суть этого в том что он намного быстрее и эффективнее. Лучше думаю конечно прежде чем получать следующую точку, зарандомить все точки. И да, там ещё не хватает проверки жив ли игрок. На какой карте проблема?
 

ifx

Сообщения
330
Реакции
149
Помог
4 раз(а)
r1nk0, с зоной покупки мне как раз на ксдм вообще пофиг :)

w0w, на многих картах) напр банальные de_dust2_3x3, de_dust2x2_snow, de_inferno_2x2 = на них примерно 10% спавнов идут в небесах\под землей. еще есть карты типа cs_italy, cs_assault, de_dust2 и тп - где есть пустые комнаты в упоре с картой и плагин игрока тоже туда спавнит :(

можно конечно увеличивать origin с 250 текущих, до например 350 и выше - тогда шанс таких залетов будет ниже, но и соотв кол-во респов меньше
 
Сообщения
28
Реакции
1
ifx, Эти спавны можно исправить, путём их раставления и редактирования карты, ничего сложно
 

ifx

Сообщения
330
Реакции
149
Помог
4 раз(а)
Indigo, заголовок темы прочти плз или 3 пост в теме
 
Последнее редактирование:

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу