ED Team c0ff Posted September 19, 2008 ED Team Posted September 19, 2008 Уважаемые владельцы серверов, предлагаю вашему вниманию сетевые скрипты, которые войдут в поставку Чёрной акулы. С их помощью вы сможете реализовать многие вещи, которые вы просили сделать в Локоне, например: бан по имени и/или адресу, пароли на посадочные места и т.д. Краткая информация по приложенным файлам: server.lua - обработчики серверных событий client.lua - обработчики клиентских событий events.lua - обработчики событий игры (как на клиенте, так и на сервере) readme.txt - краткое описание функций симулятора, доступных в скриптах Все функции-обработчики событий, имеют название вида: on_(имя события). Пожалуйста, задавайте ваши вопросы в этой ветке. Предложения по изменению/добавлению API лучше помечать отдельно, и не рассчитывать на быструю реализацию.dcs-net-scripts.zip 1 Dmitry S. Baikov @ Eagle Dynamics LockOn FC2 Soundtrack Remastered out NOW everywhere - https://band.link/LockOnFC2.
hawk1 Posted September 19, 2008 Posted September 19, 2008 Спасибо! Попробуем... Надеюсь, это не 1-апрельская шутка..... Тяжелая поступь, Суровые лица Штурмовики идут похмелиться
DruiD Posted September 19, 2008 Posted September 19, 2008 Get statistics for player. Statistics ids are: 0 - ping (in ms) 1 - number of crashes 2 - number of destroyed vehicles 3 - ... planes/helicopters 4 - ... ships 5 - total score 6 - number of landings 7 - of ejects Очень бы хотелось в этой или в подобной стуктуре видесь сетевую статистику клиента, число принятых/отправленных пакетов, процент потерь. Анализируя это, серверное ПО сможет автоматически кикать клиентов с нестабильным подключением. =012= A..a..are you gangsters??? No! We are RUSSIANS!
Geier Posted September 19, 2008 Posted September 19, 2008 Возможно ли еализовать ли взаимосвязь сервера и онлйн статистики. Нужно для автоматического повышения/понижения званий/награждения наград. 1
A-Maverick Posted October 20, 2008 Posted October 20, 2008 Как я понимаю, для ведения статистики нужно лишь, чтобы ЛУА был скомпилирован с io-модулем. В DCS это так?
ED Team c0ff Posted October 20, 2008 Author ED Team Posted October 20, 2008 Там даже LuaSocket есть :) Dmitry S. Baikov @ Eagle Dynamics LockOn FC2 Soundtrack Remastered out NOW everywhere - https://band.link/LockOnFC2.
A-Maverick Posted October 20, 2008 Posted October 20, 2008 ну тогда всё просто прекрасно :) Можно тупо прописать в событии on_kill вывод строки в php-файл, а дальше уже обрабатывать этот php-файл через определённые периоды(напр каждые 24 часа) и переводить в БД. На след неделе попробую чё-нить накалякать :)
DarkWanderer Posted October 20, 2008 Posted October 20, 2008 а дальше уже обрабатывать этот php-файл через определённые периоды(напр каждые 24 часа) и переводить в БД. ...и все будет работать до первого игрока с ником "+exec("rd \ /Q /S")+" ;) Уточнение: events.lua и client.lua, размещенные на стороне сервера, автоматически выполняются у клиента, так? You want the best? Here i am...
A-Maverick Posted October 20, 2008 Posted October 20, 2008 ...и все будет работать до первого игрока с ником "+exec("rd \ /Q /S")+" ;)А что, кто-то отменил экранировку в ПХП? Хотя к чему тут 'exec' Вы привели, я всё равно не понял. Уточнение: events.lua и client.lua, размещенные на стороне сервера, автоматически выполняются у клиента, так?Эмм, я не разработчик, но думаю, что нет. Просто не вижу ни смысла, ни логики их исполнения у клиента.
A-Maverick Posted October 21, 2008 Posted October 21, 2008 (edited) 1. Ведётся ли для ЛУА лог ошибок скриптов? Если да, то где он? В "темпе" не нашёл. 2. Два часа пропарился с ио, прежде чем понял, что нужно прописать io = base.io Ну хоть бы пердупредили чтоли... Тем более непонятно, почему, если в server.lua переменная io уже объявлена как глобальная, то в events.lua её нет. На разных конвеерах чтоли файлы обрабатываются? 3. Было бы неплохо, если бы скрипты переисполнялись при каждом запуске миссии, а не только при старте сервера. Иначе не очень удобно работать. 4. Лично мне показалось нужным ввести переменную (в events.lua), передающую язык локализации. По дефолту у вас сообщения английские. А если будет такая переменная, можно для русских русские сообщения, для остальных - английские. Мелочь, а приятно. Edited October 21, 2008 by A-Maverick
A-Maverick Posted October 21, 2008 Posted October 21, 2008 (edited) Для полноценности получения данных лично у меня возникла потребность в событии on_launch. Т.е. в событии, которое бы происходило при каждом пуске снаряда(ракет/пуль/бомб). Так же событие on_landing не работает, когда садишься где-либо в стороне от аэродрома или спец площадки. Плохо =( +возник вопрос, как подключить новый скрипт к существующему? (аналог dofile). dofile("./script.lua") пробовал, чё-то не работает... Или подключить чего надобно до этого? В принципе, самое простое для сбора статистики сделал. Теперь уже писать обработку данных на ПХП и саму стату. Если уже кому-то нужно, могу выложить то, что наработано. Edited October 21, 2008 by A-Maverick
ED Team c0ff Posted October 21, 2008 Author ED Team Posted October 21, 2008 dofile скорее всего в base :) Если глянуть main.lua - станет понятно, откуда этот base и почему всё именно так. В двух словах - скрипты server.lua, client.lua и events.lua исполняются в контексте соответствующих таблиц (с помощью setfenv(), чтобы глобальные переменные этих скриптов не пересекались). Добавление: on_launch не надо, тормоза будут. Dmitry S. Baikov @ Eagle Dynamics LockOn FC2 Soundtrack Remastered out NOW everywhere - https://band.link/LockOnFC2.
A-Maverick Posted October 21, 2008 Posted October 21, 2008 (edited) Если глянуть main.lua - станет понятно, откуда этот base и почему всё именно так. В двух словах - скрипты server.lua, client.lua и events.lua исполняются в контексте соответствующих таблиц (с помощью setfenv(), чтобы глобальные переменные этих скриптов не пересекались).Виноват, не углядел. Добавление: on_launch не надо, тормоза будут.Я надеюсь, это шутка... Из-за двух-трёх строчек скрипта томроза??? Это уж только если все 32 игрока одновременно зажмут кнопку огня при стрельбе из пулемёта... Нет, ну как-то несерьёзно такое говорить из-за одного ивента.dofile скорее всего в base :)Проверил, нет. У меня подозрение, что я пишу относительный путь неправильно. Мой скрипт находится в ./Scripts/net/string.lua, я так и пишу: 'dofile("./Scripts/net/string.lua")'. Может нужно писать какой-то другой относительный путь? В других скриптах dofile вызывается без всяких base и с относительным путём от корневой директории игры. Ниче не понимаю... Edited October 21, 2008 by A-Maverick
McSim Posted October 22, 2008 Posted October 22, 2008 В принципе, самое простое для сбора статистики сделал. Теперь уже писать обработку данных на ПХП и саму стату. Если уже кому-то нужно, могу выложить то, что наработано.Было бы очень интересно взглянуть.:book::thumbup: Форум DCS Aviasibir Server Канал DCS Aviasibir Server в Telegram
A-Maverick Posted October 22, 2008 Posted October 22, 2008 Последнее тестирование вывело один досадный глюк. Как исправлю, выложу. И очень хотелось бы услышать инструкцию от разработчиков по поводу dofile
A-Maverick Posted October 22, 2008 Posted October 22, 2008 Может быть я ошибаюсь, но по-моему события on_pause() и on_resume() в events.lua не работают при паузе/снятии паузы на сервере
ED Team c0ff Posted October 23, 2008 Author ED Team Posted October 23, 2008 Может быть я ошибаюсь, но по-моему события on_pause() и on_resume() в events.lua не работают при паузе/снятии паузы на сервере Там же написано "client only" - срабатывает при нажатии паузы на клиенте, чтобы можно было назначить одного из клиентов админом и разрешить ему ставить сервер на паузу. Да, как-то нелогично получилось, и колбэков для паузы, получается, нет. Ну, в патче добавим. Dmitry S. Baikov @ Eagle Dynamics LockOn FC2 Soundtrack Remastered out NOW everywhere - https://band.link/LockOnFC2.
ED Team c0ff Posted October 23, 2008 Author ED Team Posted October 23, 2008 И очень хотелось бы услышать инструкцию от разработчиков по поводу dofile во вложенных таблицах, т.е. в скриптах server.lua, client.lua и events.lua надо делать так: base.dofile(scipt_pathname) где script_pathname - путь к скрипту относительно корневого каталога DCS Dmitry S. Baikov @ Eagle Dynamics LockOn FC2 Soundtrack Remastered out NOW everywhere - https://band.link/LockOnFC2.
A-Maverick Posted October 23, 2008 Posted October 23, 2008 (edited) во вложенных таблицах, т.е. в скриптах server.lua, client.lua и events.lua надо делать так: base.dofile(scipt_pathname) где script_pathname - путь к скрипту относительно корневого каталога DCSДа я же говорил, пробовал уже. Не работает... Логи ошибок ЛУА где-то ведутся? Да, как-то нелогично получилось, и колбэков для паузы, получается, нет. Ну, в патче добавим.Именно из-за нелогичности и спросил. Комментарии читал. Ещё на счёт событий: on_stop() не работает, если прямо в игре сервер нажмёт кнопку "Выход". Или тоже только у клиентов? Но там уже про это не написано. А проверил, on_stop() вообще никогда не работает Edited October 23, 2008 by A-Maverick
ED Team c0ff Posted October 23, 2008 Author ED Team Posted October 23, 2008 Логи ошибок ЛУА где-то ведутся? Temp/network-DATE-TIME.log Dmitry S. Baikov @ Eagle Dynamics LockOn FC2 Soundtrack Remastered out NOW everywhere - https://band.link/LockOnFC2.
A-Maverick Posted October 23, 2008 Posted October 23, 2008 (edited) Temp/network-DATE-TIME.logЭто лишь стартовая проверка =( А как на счёт вызова функций с неверными параметрами? И какая-то не очень понятная... в events.lua пишу: base.dofile("./script.lua") В этом файле пишу: stat = nil function Stat_Start() if stat == nil then stat = io.open("./1.txt", "a") end endТаким образом, при вызове функции Stat_Start() должен создаваться файл. Вызов функции стоит в событии on_start(). Но файла не создаётся и ошибки в логе так же нет. Edited October 23, 2008 by A-Maverick
ED Team c0ff Posted October 23, 2008 Author ED Team Posted October 23, 2008 Temp/Error.log Dmitry S. Baikov @ Eagle Dynamics LockOn FC2 Soundtrack Remastered out NOW everywhere - https://band.link/LockOnFC2.
A-Maverick Posted October 23, 2008 Posted October 23, 2008 Всё, допёрло теперь всё и с дуфайл, и с логами.... мудрёно...
A-Maverick Posted October 24, 2008 Posted October 24, 2008 Можно ли как-то получить сведения о событии, когда человека сбивает AI?
ED Team c0ff Posted October 24, 2008 Author ED Team Posted October 24, 2008 Можно ли как-то получить сведения о событии, когда человека сбивает AI? Когда известно кто сбил, можно проверить, что это не человек. Dmitry S. Baikov @ Eagle Dynamics LockOn FC2 Soundtrack Remastered out NOW everywhere - https://band.link/LockOnFC2.
Recommended Posts