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

Nazgool

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

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

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

  • Дней в топе

    1
  • AMKoin

    37 [Подарить AMKoin]

Весь контент пользователя Nazgool

  1. Казалось бы это условие подходит, но... t = {[1] = "111",[2] = "222", [3] = "333", [4] = "444", [5] = "555"} t[4]=nil print(#t) Темное это дело. Когда-то пытался понять закономерность, да плюнул. Наверное стоит признаться. Я знал о казусах с оператором # по отношению к таблицам, но промолчал. Думал пронесет. Не пронесло.
  2. Оказалась не лишней в единственном случае. Измени for idx, v in ipairs(t0) do if k~=2 then ... Или другое число, и твоя проверка становится бесполезной. В общем это не панацея. Оператор # вообще ведет себя странно. Скорее всего это связано с тем, что luа (как заявлено) старается любыми путями до последнего сохранять таблицу именно как список а не хэш. Хотя и тут встречаются аномалии. Так что на этот оператор в принципе не стоит делать ставку. Корректно работает только iраirs. Или же писать свой "определитель длины"
  3. Artos Можно написать свою функцию. Например (прототип) function string.pegexp(s, ...) local t = {...} for i = 1, #t do if s:match(t[i]) then return true end end end str=bla-bla w = str:regexp('one', 'two') Добавлено через 13 мин.: Это для Сталкера. Для luа ещё проще, через родную таблицу аrg : function string.pegexp(s, ...) for i = 1, arg.n do if s:match(arg[i]) then return true end end end
  4. Тоже жду кто ответит. Я таких возможностей не знаю. На данный момент считаю, что это можно сделать только из С (Lua C API).
  5. В SciTE присутствует боковая панель, в которой (в закладке "abbrev") находится список автоформатов выражений. Двойной клик на нужной строке вставляет в текст кода необходимое выражение. Или же при наборе выскочит окошко с возможным макросом, который вставляется по нажатию клавиши Enter/ Имея привычку пользоваться данным инструментом можно не беспокоится о "забытом" end-е, или о...В общем как Вы сами захотите настроить. А настраивается это дело по адресу .\Lua\5.1\SciTE\abbrev\lua.abbrev Как и что там писать, думаю, особого труда не составит. malandrinus Да кто же против? Будут у меня вопросы - задам, будут у других - попытаюсь ответить. А пока преследую свою цель. А именно постепенно выкладываю информацию согласно своей стандартизации. Сразу всё выложить не в состоянии.
  6. При тех настройках что я дал должно работать. Т.е. по адресу меню "Tools" --> "script" --> должно появиться поле "Выполнить выделенное Ctrl+4" В файле lua.properties должна быть запись file.patterns.lua=*.lua;*.wlua;*.lexe;*.glua;*.gluaw;*.mlua;*.clua;*.macro;*.script Иначе не работает Portable вариант нужно ещё подготовить. Может завтра?
  7. Может я не так понял вопрос? Это работает только в контексте активного открытого файла. Открываешь файл *.script в SciTE, выделяешь нужную часть, нажимаешь "Ctrl+4".
  8. Вот чувствовал что забыл что-то. У меня, например, это в отдельной строке (эксперименты знаете ли) command.go.*.script=lua "$(FilePath)" Кстати выполнять выделенную часть кода можно комбинацией "Ctrl + 4"
  9. Написал Через точку с запятой конечно. Исправьте если можно и удалите, плз, этот пост.
  10. malandrinus Про новые версии сказать ничего не могу. У меня 2.25 .93Ru и интерфейс русский, и настройки не в виде текстового файла, а виде файла properties(это для SciTE то же самое, что и ini) А это значит что поддерживается фолдинг. Так, не буду забегать вперёд. Сейчас как раз пишу о настройках редактора. Там пытаюсь кое что рассказать. Добавлено через 43 мин.: Для пользователей SciTE. Настройка редактора.
  11. malandrinus Исходя из собственного незначительного опыта, и для упреждения беспорядка в топике предлагаю вынести в шапку следующие пункты : 1 Установка Lua 2 Справочник по Lua 5.1 2.1 Введение 2.2 Описание языка 2.3 Стандартные библиотеки 2.4 ООП 3 Ссылки На данный момент считаю этот набор достаточным. По мере необходимости построение можно будет расширять и дополнять. Думаю что в таком контексте наполнение топика общей информацией будет более упорядоченным. Это лично моё, субъективное, мнение, т.к. для подобного порядка наполнения имею немало информации. Пункты от 2.1 до 2.4 расширятся также. (например описание COROUTINE можно перенести в "2.3 Стандартные библиотеки". Но это уже по ходу дела. Хотелось бы услышать мнение сообщества. ------------------------------ У меня установлены свои версии, но качаем новейшие. Для пункта "1 Установка Lua" Качаем и устанавливаем Lua for Windows. Например отсюда : http://code.google.com/p/luaforwindows/downloads/list P.S. У меня проверенная, надёжная старушка 5.1.4-35. Но не суть. После установки у Вас (по умолчанию) на диске С в папке Program Files появиться папка lua. Далее по адресу C:\Program Files\Lua\5.1\ удаляем папку SciTE. Качаем SciTE. Тоже например отсюда : http://soft.softodrom.ru/ap/SciTE-p6800 Устанавливаем её в папку C:\Program Files\Lua\5.1\SciTE Далее идём на (как там Вам удобно) --> "Рабочий стол" --> "Мой компьютер"(Правый клик) --> "Свойства " --> "Дополнительно" --> "Переменные среды"(Параметры) --> в окне "Системные переменные" проверяем наличие полей : Имя переменной LUA_DEV Значение переменной C:\Program Files\Lua\5.1 Имя переменной LUA_PATH Значение переменной ;C:\Program Files\Lua\5.1\lua\?.luac Имя переменной Path Значение переменной (смотрим в конце после всего) ";C:\Program Files\Lua\5.1;C:\Program Files\Lua\5.1\clibs" Если каких то нет, то прописать как указано. После этого запустить SciTE, написать - print('Hello Word') В открывшейся консоли должно напечатать - Hello Word Если напечатало, то можно приступать к дальнейшим настройкам. ------------------------------ malandrinus Вот мои доводы. Только не многое захотят с этим разбираться, а на самом то деле... : http://scite-ru.googlecode.com/svn/trunk/p...u_Pack_rus.html А вот либы в сборке, а если нет, то можно легко подключить : http://code.google.com/p/luaforwindows/ Но это всё уже пойдёт в категорию "Ссылки" :-) Когда соберу до кучи.
  12. Nazgool

    Скриптование

    PavelSnork Про статики не буду говорить, т.к. в них я плаваю стилем топора. А вот про составление кода могу поболтать...
  13. Nazgool

    Скриптование

    *Shoker* Не переживай, всё удалиться нормально.
  14. Nazgool

    Скриптование

    Artos Тот код-то рабочий. Но вот и с твоим кодом нарвётся человек на random, который не пропустит, и будет говорить что твой вариант не годится :-) Я хочу гарантированно показать дроп, независимо от того бюрер это или какая другая тварь. А там пусть и с random-ом экспериментирует.
  15. Nazgool

    Скриптование

    Извиняюсь за свой предыдущий неясный ответ (чего то нашло). Если жизнь бюрера будет меньше 30, то код ниже (а значит и дроп) не сработает.
  16. Nazgool

    Скриптование

    panzyuza Ну тогда уж проследи за тем, чтобы бюрер не был дохлее чем 30 (self.object.health>=30) Про monster_berserk уже и не помню. Давно Сталкером не занимался, бывшие знания улетучиваются.
  17. Nazgool

    Скриптование

    panzyuza Ну раз ты пока ещё не разобрался с random, то убери все сравнения с силой и жизнью. И измени : if posit:distance_to(db.actor:position())<math.random(1,40) then -- На if posit:distance_to(db.actor:position())<40
  18. Nazgool

    Скриптование

    panzyuza А ты уверен что все сравнения с math.random проходят?
  19. Nazgool

    Скриптование

    panzyuza Мне тоже это интересно. В логике встречается ещё не один подобный параметр, на который я не смог найти описания. Когда-то написал скрипт, разбирающий все секции логики на всевозможные параметры, которые могут использоваться в конкретной схеме. Писал на скорую руку, поэтому результат несколько сумбурный. Много мусора, но мне на тот момент было достаточно и в таком виде. Даже начал "причёсывать" и... бросил. Может кому-нибудь будет интересно и полезно? http://ifolder.ru/25789460
  20. Nazgool

    Скриптование

    *Shoker*, panzyuza То, что вы спорите и "бьетесь", отстаивая своё мнение хорошо конечно. Сам любитель "подраться". Но в этом бою вы находитесь заведомо в проигрышной ситуации. Ваш оппонент обладает багажом разнообразных приемов и опытом их применения. Вам есть чем ответить? Может какой-нибудь туз в рукаве завалялся? Неизвестный приём? Не думаю. Так что нужно выбрать, либо готовиться к бою изучая приемы соперника, находить свои, либо броситься в драку и получить по всей программе.
  21. Nazgool

    Скриптование

    Artos Вот тут у тебя лишняя проверка and iFirstIdx == 1 : local iCnt = #tTbl --/ длина индексированной части таблицы local bList = iCnt > 0 and iFirstIdx == 1 and not next(tTbl,iCnt) Почему? Про вычислении длины таблицы local iCnt = #tTbl на самом деле мы прицеливается сразу в 2-х зайцев. Переменная iCnt может иметь (как бы логически) два значения (первый заяц) : 0 - в таблице не найдены поля списка. не 0 - в таблице найдено поле (последовательность полей) списка. Второй заяц : Если 0, то в таблице нет поля с индексом 1 Если не 0, то поле (поля) найдены, значит в этих полях не может не быть поля с индексом 1. В выражении bList = iCnt > 0 производим выстрел по этим зайцам. Спасибо! Ты прав. Просто вначале подстраховался, а потом пересмотрев кучу вариаций с различными структурами таблиц и, удостоверивщись в обязательном наличии 1-го индекса для 'списков', забыл убрать подстраховку. Подправил. Хотя ... в таких функциях, которые дают данные для сэйвов - необременительные перестраховки порой не помешали бы. --/ Artos
  22. Nazgool

    Скриптование

    Artos Да не стал я так уж лезть в оптимизации. Хотел и Actor-a вынести, да плюнул. За это стоит только зацепиться и ... :-)
  23. Nazgool

    Скриптование

    panzyuza Вынеси поиск имени локации в НЕТ-спавн. Нет смысла гонять его при каждом апдейте. Достаточно определить один раз при загрузке. CurrentLevel = level.name() Соответственно измени функцию : function level_spec_ops() if db.actor:dont_has_info("my2") and CurrentLevel == "zaton" then avs_info.zaton_spec_ops() end end В ней я поставил первой проверкой наличие инфопроции, расчитывая что она будет выдана в ближайшее время. Если же она, по задумке, будет "висеть" у тебя достаточно долго, то первой проверкой ставь CurrentLevel == "zaton". (Ну не могу не заставить себя "украсть" какую-то миллисекундочку :-)) Ну и измени оставшуюся функцию : function zaton_spec_ops() local actor = db.actor if actor:has_info("zat_bandit_vs_dolg") then avs_spawn_add.spawn_dolg_bandit_scene() actor:give_info_portion("my2") end end Хотя в твоём варианте было всего два обращения к глобальным данным db.actor, и сохранение этой таблицы локально вроде не очень то нужно, но будем учиться делать правильно. Ну и в конце концов уменьши частоту апдейтов (если не помешает задуманному)
  24. Nazgool

    Скриптование

    Поздно заметил, но всё же отвечу. Конечно ДА. Такой проверки достаточно. Именно это я пытался доказать всё это время.
  25. Nazgool

    Скриптование

    Как упомянул Аrtоs, некоторые заходят через двери - значит гость. А мне нравиться лазить через форточку - значит вор. Получай по чём попало. Я принял твои слова именно как совет ходить всё-таки через двери. Хоть и не ко мне обращался, но всё же каким-то боком касается. Цитата : Где в условиях задачи указана необходимось проверки на тип значений таблицы? Необходимо было выяснить тип самой таблицы. Иначе я сразу бы сказал что без перебора никак.
×
×
  • Создать...