Перейти к контенту

Nazgool

Жители
  • Число публикаций

    614
  • Регистрация

  • Последнее посещение

11 подписчиков

О Nazgool

  • День рождения 04.10.1972

Контакты

  • Сайт
    http://
  • ICQ
    589382181

Информация

  • Реальное имя
    Сергей
  • Город
    Киевская обл. г.Мироновка
  • Интересы
    Lua

Недавние посетители профиля

723 просмотра профиля
  1. Язык Lua. Общие вопросы программирования

    Dennis_Chikin Я хоть и ответил, но до чертиков в интересно, а что же такое случилось с lua, что в загалi возник такой вопрос? Это к чему? Ты (Dennis_Chikin) такой человек, что (все уже привыкли, что знаешь много) вроде такие вопросы от тебя слышать как-то... необычно что-ли? Ну как-то так выходит.
  2. Скриптование

    Jekyll Я могу сейчас всё расписать от и до. Только один вопрос - Почему именно до двадцати? for t = 1,20 do В чём сакральная задумка? P.S. Нет, я и так вижу что человек не разбирается. Просто хотелось определиться что именно нужно. P.P.S. А что это с редактором? Жесть какая-то при изменении. Но это в общем-то не особо важно.
  3. Язык Lua. Общие вопросы программирования

    Доводилось использовать несколько версий lua ТЧ а также стандартные 5.1 - 5.3 Различий не замечал. А записи абсолютно эквивалентны. "k" и "v" (да как угодно их называй) - это локальные переменные внутри цикла. Функция "pairs (t)" в любой версии (по крайней мере использованных мною) возвращает три значения - функцию next, таблицу t и nil. Т.е. for k, v in pairs(t) do можно переписать как: for k, v in next,t,nil do И теперь видно, что мы имеем дело с функцией "next" Т.е. твой вопрос переадресовывается от функции "pairs" к функции "next" Впрочем и за next-ом различных версий я тоже ничего криминального не замечал, т.е. она как возвращала два значения, так и возвращает. Те самые "k" и "v" . А как ты их будешь использовать - это сугубо твоё дело. Хоть "k" и "_" , хоть "_" и "v" , хоть только "k".
  4. У Костра

    dPlayer Человек достаточно живучее существо (хотя хочется и отметить, что если бы у некоторых особей такое свойство отсутствовало, то мир бы только приобрёл от этого) Так что не переживай. Современная природа дает нам столько всякой гадости, о которой мы не догадываемся, что грунтовку можно считать растворителем этой гадости
  5. Скриптование

    @UnLoaded, Нет, это не медвежья услуга, т.к. автор изначально хочет! чтобы при отсутствии значения бралось некое значение по умолчанию ("stalker") Т.е. такое действие не побочный эффект, а сделано намеренно. Вот если бы в исходном коде не было : if community == nil then community = "stalker" end то и я бы написал : ... and community_condition[community] Я всего-лишь подправил код так, чтобы исходная идея автора работала как можно надежнее.
  6. Скриптование

    @UnLoaded, О чем вы говорите? Какая универсальная защита? Просто защита конкретной функции. Коих создается великое множество. И лично мне не хочется несколько раз возвращаться к переписыванию одного и того кода по нескольку раз. Поэтому лично я поступил бы именно в таком духе. Ну написал бы несколько вспомогательных функций типа iff(cond, a, - (кодеры поймут что я имел в виду) А насчет "медвежьей услуги". Я посчитал, что если напишу : -- тут что-то делать. лог, вылет, исправить или ничего не делать то, будет достаточно ясно. Видимо ошибался.
  7. Скриптование

    @WinCap, Я понял о чем ты говоришь. Да, если ты используешь подобную функцию ограничено, и уверен что в будущем её не будут вызывать больше ниоткуда, что может привести к передаче "не тех" аргументов то можно оставить и так. Тогда, учитывая твоё объяснение, и запись : if community == nil then community = "stalker" end можно сократить до : community = community or "stalker" Но твоё объяснение всё равно не делает функцию абсолютно "безопасной". Твой код полностью опирается на данные таблицы community_condition. Поэтому нужно следить за тем, чтобы после добавления какой-либо группировки, не забыть прописать её и в этой таблице тоже. А сколько подобных таблиц может быть в файлах? И о всех нужно помнить? Поверь, такие мелочи со временем приводят к долгому и нудному обслуживанию кода. Вот ты сам говоришь, что функция character_community не возвращает "абы какие" значения. Т.е. программист позаботился о том, чтобы функция работала как можно надежнее. В твоей же функции, имхо, всё-равно остаются эти два слабых места. Первое - я бы никогда не был уверен на 100% что придут именно те аргументы. Второе - даже если придут "те", то я не был уверен на 100% что они обязательно будут в таблице character_community. Поэтому более надежный вариант можно было бы написать примерно так : function set_weapon_drop_condition(item, community) local data = type(community_condition) == 'table' and community_condition[community or "stalker"] -- я тут всё в кучу собрал, но можно и раздельно ошибки отлавливать if not (type(item) == 'userdata' and type(item.set_condition) == 'function' and type(data) == 'table' and type(data.min) == 'number' and type(data.max) == 'number') then return -- тут что-то делать. лог, вылет, исправить или ничего не делать end local condition = math.random(data.min, data.max) / 100 item:set_condition(condition) end Этот вариант закрашить можно только передав юзердату, которая также имеет метод set_condition и с "не той" сигнатурой. А в оригинале такой нет.
  8. Скриптование

    @WinCap, Ну во-первых он может принимать "ряд" любых типов значений lua кроме nil. См. : if community == nil then Во-вторых. Где у тебя в коде написано, что "заранее известных" и тем более "строковых значений"? Вот в моем варианте это всё предусмотрено. А покажи где у тебя? В третьих (как и во-первых), если он не определен, или определен не так как ожидалось (т.е. это либо не строка, либо строка, которой нет в списке таблицы "community_condition"), то ту два варианта - либо определять значение "насильно" (как ты сдедал): then community = "stalker" Либо вылетать. Ты уж определись чего нужно-то. Исходя из твоего кода выходит что первый вариант. Что собственно я сделал, чтобы не отходить от оригинала. Так что твоё несогласие с моим вариантом считаю не достаточно (вернее совсем не) обоснованным. P.S. Вольность типов, количества и значений переменных в lua несомненно делает его очень гибким. Но только не в "точных науках". Например мне приходилось, для исключения двусмысленности, создавать ряд сигнатурных функций.
  9. Скриптование

    Говорю не для того чтобы обидеть, а только ради благих намерений. Хотя и понимаю, что оными выстелена дорога в ад, поэтому как уж получиться. Не раз уже говорил, и всегда недоумевал от столь бесполезного кода (и подобный встречается довольно часто) : if community == nil then community = "stalker" end Что такого полезного тут проверяется? Что значение "community" не "nil"? Ну хорошо. Оно не "nil". А, скажем, "false". И что тогда будет? community_condition[community].min будет фактически равно community_condition[false].min К чему это приведет? Рассказывать, думаю, не нужно. Да, значения не то что нужно, а просто необходимо проверять! НО! Делать это максимально полезным что ли. В данном случае сам код подсказывает как это сделать У тебя уже есть таблица "community_condition", в которой заданы поля, ключи которой и определяют весь необходимый диапазон значений переменной "community" Поэтому сделав : community = community_condition[community] and community or "stalker" Решаются абсолютно все проблемы как с типом, так и со значением переменной "community". Ну или на любителя (эквивалент предыдущему коду): if not community_condition[community] then community = "stalker" end
  10. Десять сталкерских лет

    Сын купил диск, и ему что-то не понравилось. Поэтому я зашел в гугл с вопросом, "как сделать чтобы..." Это было в 2008-м вроде. С тех пор... изучил Lua, файлы, структуру и возможности игры. Поучаствовал в разных проектах (глобальных и локальных), И ни разу не жалею, так как считаю что это не только игра. Это некое сито, сквозь которое просеилось всё лучшее что было в моддинге на тот момент. Талантливые люди, сумасшедшие (и несбыточные на тот момент) идеи, которые решались с таким энтузиазмом, который покроет все те фиксы, что решают ТЕ! проблемы на данный момент. Ностальжи как ни крути В общем спасибо всем. И с юбилеем конечно.
  11. Язык Lua. Общие вопросы программирования

    Это аналог require(module_name) из академического.. lua. Идет подгрузка модуля(файла) с именем module_name.
  12. Курилка программистов

    @abramcumner, Да я бы я радостью отдал всё. Ну честно. Поверь. Да не фиг там прятать. Было бы только моё - отдал бы на другой же день. Меня держит только честь. Ну не могу я в принципе предать. Не моё это.У меня у самого руки чешутся отдать (и это кстати было моё убеждение). Но (укр) таке життя. Собака честь. УкраЇнці зрозуміють. Murarius Когда я прочитал Ваше сообщение http://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page-46#entry1066697 ... Нет. не так. Когда прочитал несколько первых строк Вашего сообщения ... и , не дочитав до конца я, воспринял всё сообщение "в штыки". И занял защитную позицию. И по инерции маховик репрессий покатился ... Извини дружище. Понял. Слава Богу не так как в истории, а вовремя Но потом, всё-таки здравый смысл (слава Богу ещё не покинул) заставил перечитать и понять. Ну в принципе я уже объяснил, что всё бы отдал ещё год назад (о Боже, а сколько назад всё это было сделано? - не помню) Но могу повторять в любой момент и в любом состоянии - честь превыше всего! (нужно было стать священником? ) TIGER_VLAD Після цього ти розумієшь що би я сказав, а ти би відповів
  13. Курилка программистов

    abramcumner , Murarius Вы, полагаю, очень хорошо умеете читать. Но, видать, внимать это не Ваша особенность Как-бы так случилось, что я простой исполнитель. Но есть вполне определённый руководитель проекта. И, есть всё-таки этика, следуя которой я не могу публиковать не согласованные с руководителем материалы. Это не закон. Это просто мои личные убеждения. А правильные они или нет - это не моя юрисдикция. Правила морали не позволяют мне опрелюднивать эти материалы. Решение полностью зависит от автора. Вы и так видите что случилось. А если хотите чего-то большего .. то за последние два или три часа что я тут ничего конкретного и зависящего от меня не слышал. Остальное читайте выше. О том что говорил Саша (Malandrinus) - ДА. Но я ещё раз повторяю. Это не моё решение! Я только подтверждаю то, что он это говорил. Я простой скриптёр, которому интересно развязывать задачи. В этом проекте было много задач. И я их развязал. С огромным удовольствием между прочим. Вот и всё. А Вы тут ту высокие материи. Ничего кроме скриптов с моей стороны. TIGER_VLAD Ріднесенька наша була і буде назавжди. Ти тільки десь поряд будь. А то я зникну як це буває в останній час
  14. Курилка программистов

    Я не для того чтобы было написано, а ради справедливости. Зашел случайно, Раз в N-месяцев. Почитал. И вот решил что есть что сказать. Я работаю (вернее работал) не для имиджа. И не для ... да придумывайте что хотите. Просто на тот момент было очень интересно. Но , (прошу прощения у Кarlan) - даже не знаю как сделать, чтобы все поняли, и не сказать лишнего. Попробую сказать как можно правильнее. Сначала для автора. Проект перешел границы личного с тех пор, как стал общедоступным. Саша (Malandrinus) предупреждал нас о всех последствиях. И вот они и во всей красе. Так что не то что (имхо) пора, а уже жизненно НЕОБХОДИМО открывать все карты И то, что было интересно для нас (домашнего использования) уже не интересно для комьюнити. Время идет. Кто-то придумывает что-то новое. Кто-то заглядывает на поколение вперед. Правда пока этого никто не понимает (как и мы думали в своё время). Кто-то уходит как я. Кто-то приходит. Это эволюция. И слава Богу что она есть. Так что, дружище, ты (если кто ещё не понял - Karlan) единственный распорядитель проекта. И только ты в праве решать как поступать. Моё мнение, надеюсь, для всех понятно. Слово за тобою. P.S. Далі любою для себе мовою. Karlan! Не важливо де ти загинешь. Важливо як. Прийшов час. Давай загинемо, як подобає чоловікам. Треба залишити по себе хоть щось. Раптом у нас попереду (це життя) вже нічого не буде (кожен день треба жити як останній), давай виборювати його до останньго. Треба вирішити правильно. І це буде словом мужа а не дитини. Так що вирішуй. Але правильно ---------------- Друже, Tiger Vlad бачу що ти тут, але мовчишь. Та інші також присутні. Але також мовчать.
  15. Скриптование

    @AndrewMor, Пожалуйста. Вот только хоть убей, но поверить не смогу, что рассмотренная функция может работать правильно. Видишь ли - из цикла for a = 1, 65534 do нет преждевременного выхода. Т.е. ни break-а, ни return-а. И поэтому, ну такие уж законы lua, он отработает все 65534 раза. И дай Бог, чтобы ты появился где-то в подземелье. Иначе, как я уже говорил, 65534 раза будут спавнится арты. Же-е-е-есть. Всго ID-шек в игре 65535. До этого было заспавнено N ID-шек (мобы, лут и т.д.) + 65534 твоих артов. Сколько будет? Точно больше максимально возможного 65535. Да и вообще. К тому коду очень много вопросов.
×