abramcumner 1 175 Опубликовано 21 Сентября 2011 Artos, Gun12, строка для возможности запускать скрипты из Сталкера (*.script) должна быть: command.go.*.lua;*.macro;*.script=dofile $(FilePath) По идее же сталкеровские скрипты не будут работать - содержимое lua_help.script не экспортировано. Или это можно как-то обойти? Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 25 Октября 2011 Есть таблица вида: Тоесть не с числовыми индексами, как можно определить, что таблица не пустая, кроме как делать перебор вида for k,v in pairs() Для таблиц с числовыми индексами есть table.getn, а как с этими быть? Вроде бы getn возвращает 0. (я правда #tbl так проверял, но это эквивалентно вроде) А ты вообще по текстовым индексам-то к таблице обращаешься? а то может они тебе и не нужны. Ну и ещё вопросец, возникла необходимость перебирать с большой скоростью (несколько раз в секунду) довольно большую таблицу (около 200 элементов). Таблица с нечисловыми индексами. Перебор делаю через pairs(), если я переделаю таблицу на числовые индексы и буду делать перебор по for i=1, #tbl do, она будет заметно быстрее перебираться? Или перебор таблицы сам по себе не особо много процессорного времени использует? Пока сам не проверишь никто не скажет Пустые циклы for i=1, #tbl do быстрее pairs() аж на 30%. Выше же в теме приводили сравнение вроде и в разработке солянки тоже подобные вещи проскакивали. А если в цикле запрашивать те же серверные объекты, или вычисления какие делать, то может на процент, два будет быстрее. Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 7 Января 2012 да там и skeleton_flags в net_ph_skeleton хорошо бы разбирать по аналогии с num_items Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 7 Января 2012 xStream, ну мне лично интересно посмотреть на изменение порядка чтения с grenade_mode у тебя а со skeleton_flags в зависимости от значения флажка надо читать данные или нет. В all.spawn флажок всегда 0, а в живой игре не всегда. Актуальная версия: или асдс универсальный или нет-пакеты Artos`а. Вроде только так. Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 7 Января 2012 xStream, ну хз, по идее он с универсального асдс последний раз делал. кстати исправь копипасту net_base:_write Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 7 Января 2012 xStream, я так понимаю там будет не новый тип объектов, а несколько обычных? Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 7 Января 2012 xStream, (используется новый тип объектов, описанный в конфигах, имеющие произвольную длину пакета) Все-таки именно один объект? Или несколько, добавляемых по необходимости? Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 12 Января 2012 xStream, поменяй терминологию binder - это где-то рядом с object_binder и ко, а-ля bind_stalker.script Ты же используешь скриптовый серверный класс Ну и если интересно то то, что ты назвала unused_pad - это данные которые сохраняются/загружаются в object_binder:save/load Ну и Дело в том, что шейпы-параллелепипеды не имеют параметра поворота неверно. Конечно же поворот там задается. Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 13 Января 2012 (изменено) Добавлено через 8 мин.: abramcumner, ИМХО как раз наименование 'binder' вполне к месту. Большинство привыкло биндерами называть биндеры клиентских объектов, хотя серверные объекты имеют аналогичные биндеры (которые, кстати, первичны) с аналогичными методами. Просто, при необходимости, нужно по контексту добавлять уточняющее: клиентский/серверный биндер иль биндер серверного объекта ... Вообще-то там задается пара серверный/клиентский класс. Они оба биндеры? Тогда в bind_stalker.script задается биндер-биндер??? Там же даже по наследованию видно, что задается наследник серверного класса - зачем наследника называть биндером? Можно просто правильно употреблять термины. И с 'unused_pad' ты что-то не то сказал. Никак 'unused_pad', который в "net_abstract", не может иметь отношение к object_binder:save/load ... Ооо, знаток говорит, что не может, значит не может Ты бы хотя бы в игре проверил. А почему не может? Почему в серверном биндере не может быть данных клиентского биндера? Добавлено через 3 мин.: abramcumner, что такое bind в переводе с английского? Переведи, пожалуйста. Ты же когда пример приводила, видела же? class "se_outfit" (cse_alife_item_custom_outfit) Теперь наследование называется биндинг? Изменено 13 Января 2012 пользователем abramcumner Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 13 Января 2012 (изменено) xStream, Inheritance, inheritance, inheritance Я тоже могу нагуглить пару английских слов. Скажи уж прямо, что ты имеешь ввиду. Добавлено через 20 мин.: Погуглил luabind - вот что нашел: Inheritance can be used between lua-classes: class 'derived' (lua_testclass) Ты это имела ввиду? Изменено 13 Января 2012 пользователем abramcumner Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 13 Января 2012 (изменено) xStream, class "se_outfit" (cse_alife_item_custom_outfit) Конкретно это является наследованием (пусть и от забинденного класса), а не биндингом. И семантически и по-всякому. И se_outfit не является биндером. Конкретно мне не нравится упоминание биндера здесь: 1) этот тип объектов должен иметь биндер (то есть то, что будет вызвано, когда объект появится в игре) Завязка из class_registrator.script: cs_register (object_factory, "CStalkerOutfit", "se_item.se_outfit", "E_STLK", "equ_stalker_s") 2) обязательно сделать метод биндера STATE_Write Если что, здесь говорится именно про se_outfit Ну и в сталкер-lua сложилась своя терминология биндеры это одно, клиентские и серверные классы другое. Зачем ее менять не понятно. Никто не называет тот же game_object ни биндером, не забинденным классом и ни чем-либо со словом бинд Изменено 13 Января 2012 пользователем abramcumner Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 13 Января 2012 (изменено) xStream, я тоже не понимаю, почему ты предпочитаешь называть черное белым И способ есть получше зажмуривания Ответь, пожалуйста, на вопрос: Есть нечто, объявленное как class "XXX" (YYY). Чем является XXX? Биндером, наследником, чем-то другим? Изменено 13 Января 2012 пользователем abramcumner Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 13 Января 2012 (изменено) Andrey07071977, а точно не биндером? Пока код xStream хоть как-то прокомментировали 2 человека, тебя среди них не было. Ты его сначала прочитай. Ну и конкретно сейчас рассматривается только один скрипт перепаковки пакетов. Может назовем его "перерисовкой авосек" - какая разница как назвать По сравнению с предыдущей версией добавился только "биндер". Что еще обсуждать? Изменено 13 Января 2012 пользователем abramcumner Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 3 Февраля 2012 cj ayho, по-моему ты загнался Код корректно работает и с положительными и с отрицательными числами Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 3 Февраля 2012 (изменено) cj ayho, вместе с math.floor ни сколько не смущает. Возможно тебе нужно не математическое округление, а какое-то свое - тут хз. Но для обычного математического именно так и надо. Хинт: -1 > -2 Изменено 3 Февраля 2012 пользователем abramcumner Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 3 Февраля 2012 Потелепаю чуток... Он думает, что раз для положительных "+ 0.5", то для отрицательных "- 0.5" Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 3 Февраля 2012 Gun12, уже было вроде в этой теме, что если хочешь гарантированно n цифр после запятой при выводе, то только string.format и прочие. Если использовать функции типа вышеприведенной и выводить как число, будет работать не всегда. Так что дело совсем не в скорости. Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 4 Февраля 2012 cj ayho, Так ты уж прочитай наконец-то описание math.floor Ну или ответ malandrinus'а. Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 10 Февраля 2012 Gun12, ну, например, функция bind есть в куче модулей. И это хорошо, что она одинаково называется. Поделиться этим сообщением Ссылка на сообщение
abramcumner 1 175 Опубликовано 29 Января 2013 (изменено) Объясните мне, дураку, почему так получилось? Ведь закономерность в моих исследованиях очевидна?! А так похоже на криво реализованный бинарный поиск. А может так и хотели, следуя методике: неправильные данные на входе, неправильные данные на выходе. Нечего путать операции между собой. Вообще-то уже давно пора посмотреть исходники lua и закрыть этот вопрос с таблицами. Так и есть /* ** Try to find a boundary in table `t'. A `boundary' is an integer index ** such that t[i] is non-nil and t[i+1] is nil (and 0 if t[1] is nil). */ int luaH_getn (Table *t) { unsigned int j = t->sizearray; if (j > 0 && ttisnil(&t->array[j - 1])) { /* there is a boundary in the array part: (binary) search for it */ unsigned int i = 0; while (j - i > 1) { unsigned int m = (i+j)/2; if (ttisnil(&t->array[m - 1])) j = m; else i = m; } return i; } /* else must find a boundary in hash part */ else if (isdummy(t->node)) /* hash part is empty? */ return j; /* that is easy... */ else return unbound_search(t, j); } Изменено 29 Января 2013 пользователем abramcumner Поделиться этим сообщением Ссылка на сообщение