-
Число публикаций
618 -
Регистрация
-
Последнее посещение
-
Дней в топе
1 -
AMKoin
37 [Подарить AMKoin]
Весь контент пользователя Nazgool
-
Язык Lua. Общие вопросы программирования
Nazgool ответил на тему форума автора Malandrinus в Скрипты / конфиги / движок
При тех настройках что я дал должно работать. Т.е. по адресу меню "Tools" --> "script" --> должно появиться поле "Выполнить выделенное Ctrl+4" В файле lua.properties должна быть запись file.patterns.lua=*.lua;*.wlua;*.lexe;*.glua;*.gluaw;*.mlua;*.clua;*.macro;*.script Иначе не работает Portable вариант нужно ещё подготовить. Может завтра? -
Язык Lua. Общие вопросы программирования
Nazgool ответил на тему форума автора Malandrinus в Скрипты / конфиги / движок
Может я не так понял вопрос? Это работает только в контексте активного открытого файла. Открываешь файл *.script в SciTE, выделяешь нужную часть, нажимаешь "Ctrl+4". -
Язык Lua. Общие вопросы программирования
Nazgool ответил на тему форума автора Malandrinus в Скрипты / конфиги / движок
Вот чувствовал что забыл что-то. У меня, например, это в отдельной строке (эксперименты знаете ли) command.go.*.script=lua "$(FilePath)" Кстати выполнять выделенную часть кода можно комбинацией "Ctrl + 4" -
Язык Lua. Общие вопросы программирования
Nazgool ответил на тему форума автора Malandrinus в Скрипты / конфиги / движок
Написал Через точку с запятой конечно. Исправьте если можно и удалите, плз, этот пост. -
Язык Lua. Общие вопросы программирования
Nazgool ответил на тему форума автора Malandrinus в Скрипты / конфиги / движок
malandrinus Про новые версии сказать ничего не могу. У меня 2.25 .93Ru и интерфейс русский, и настройки не в виде текстового файла, а виде файла properties(это для SciTE то же самое, что и ini) А это значит что поддерживается фолдинг. Так, не буду забегать вперёд. Сейчас как раз пишу о настройках редактора. Там пытаюсь кое что рассказать. Добавлено через 43 мин.: Для пользователей SciTE. Настройка редактора. -
Язык Lua. Общие вопросы программирования
Nazgool ответил на тему форума автора Malandrinus в Скрипты / конфиги / движок
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/ Но это всё уже пойдёт в категорию "Ссылки" :-) Когда соберу до кучи. -
PavelSnork Про статики не буду говорить, т.к. в них я плаваю стилем топора. А вот про составление кода могу поболтать...
-
*Shoker* Не переживай, всё удалиться нормально.
-
Artos Тот код-то рабочий. Но вот и с твоим кодом нарвётся человек на random, который не пропустит, и будет говорить что твой вариант не годится :-) Я хочу гарантированно показать дроп, независимо от того бюрер это или какая другая тварь. А там пусть и с random-ом экспериментирует.
-
Извиняюсь за свой предыдущий неясный ответ (чего то нашло). Если жизнь бюрера будет меньше 30, то код ниже (а значит и дроп) не сработает.
-
panzyuza Ну тогда уж проследи за тем, чтобы бюрер не был дохлее чем 30 (self.object.health>=30) Про monster_berserk уже и не помню. Давно Сталкером не занимался, бывшие знания улетучиваются.
-
panzyuza Ну раз ты пока ещё не разобрался с random, то убери все сравнения с силой и жизнью. И измени : if posit:distance_to(db.actor:position())<math.random(1,40) then -- На if posit:distance_to(db.actor:position())<40
-
panzyuza А ты уверен что все сравнения с math.random проходят?
-
panzyuza Мне тоже это интересно. В логике встречается ещё не один подобный параметр, на который я не смог найти описания. Когда-то написал скрипт, разбирающий все секции логики на всевозможные параметры, которые могут использоваться в конкретной схеме. Писал на скорую руку, поэтому результат несколько сумбурный. Много мусора, но мне на тот момент было достаточно и в таком виде. Даже начал "причёсывать" и... бросил. Может кому-нибудь будет интересно и полезно? http://ifolder.ru/25789460
-
*Shoker*, panzyuza То, что вы спорите и "бьетесь", отстаивая своё мнение хорошо конечно. Сам любитель "подраться". Но в этом бою вы находитесь заведомо в проигрышной ситуации. Ваш оппонент обладает багажом разнообразных приемов и опытом их применения. Вам есть чем ответить? Может какой-нибудь туз в рукаве завалялся? Неизвестный приём? Не думаю. Так что нужно выбрать, либо готовиться к бою изучая приемы соперника, находить свои, либо броситься в драку и получить по всей программе.
-
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
-
Artos Да не стал я так уж лезть в оптимизации. Хотел и Actor-a вынести, да плюнул. За это стоит только зацепиться и ... :-)
-
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, и сохранение этой таблицы локально вроде не очень то нужно, но будем учиться делать правильно. Ну и в конце концов уменьши частоту апдейтов (если не помешает задуманному)
-
Поздно заметил, но всё же отвечу. Конечно ДА. Такой проверки достаточно. Именно это я пытался доказать всё это время.
-
Как упомянул Аrtоs, некоторые заходят через двери - значит гость. А мне нравиться лазить через форточку - значит вор. Получай по чём попало. Я принял твои слова именно как совет ходить всё-таки через двери. Хоть и не ко мне обращался, но всё же каким-то боком касается. Цитата : Где в условиях задачи указана необходимось проверки на тип значений таблицы? Необходимо было выяснить тип самой таблицы. Иначе я сразу бы сказал что без перебора никак.
-
-
Artos Что-то мы говорим на разных языках. Попробую ещё раз. По типу построения между этими таблицами нет никакой разницы. На самом деле они же выглядят так : {[1]='a', [2]='b', [3]='c', [4]='d'} и {[1]=1, [2]=5, [3]=2, [4]=4, [5]=3} Т.е. оператор # определит ВСЕ! поля этих таблиц. Если добавить в любой из списков поле, не соответствующее продолжению "списка", например {[1]='a', [2]='b', [3]='c', [4]='d', [7]='e'}, либо 'занилить' значение, после чего поле удалиться из списка {[1]='a', [2]='b', [3]=nil, [4]='d'}, то список перестанет быть таковым и станет хэшем на общих основаниях. Теперь оператор # определит в первом случае из 6-ти фактических полей только 5 (от индекса 1 до индекса 5). Во втором случае только 2 (т.к. поле с индексом 3 исчезло, и следующий индекс после 2 будет индекс 4), вместо фактических 3-х. !!! Для того, чтобы не нарушать строение таблицы как списка (который работает быстрее чем любой другой тип таблиц) нужно пользоваться специально созданными для этого функциями table.insert и table.remove, а не заниливанием и непонятно каким добавлением. Теперь о 'дырах' и собственно моем варианте без перебора. Имеется 3 типа таблиц : t1 = {a='p', k=6, [12]='s'} t2 = {'a', 'b', k=6} t3 = {'a', 8, 'c'} Хотя в таблице t2 и есть элеметы списка, но и она, и таблица t1 не являются списками. Это комбинированые хэш-таблицы. Получается что для списка нужно определить, равна ли длина таблицы фактическому количеству полей. Вот я и пошел таким путем. if #tаb~=0 Определяю, есть ли в таблице элементы списка (индексов от 1 и до упора). Если нет, то это уже не список. Ответ - хэш. Если есть такие элементы, то последний из них по любому найдется. И теперь проверяя nехt(tаb,#tа смотрю, есть ли за этим последним элементом списка ещё поля, характерные для хэша? Если нет (nil), то фактическая длина таблицы равна количеству полей, что означает одно - таблица является списком. Ну а если есть ещё поля, то это смешанная таблица, а по сути НЕ список. Добавлено через 48 мин.: В варианте с заниливанием внутри таблицы ([3]=nil) допустил неточность. Читать 'заниливанием извне', например t[3] = nil
-
Может я не так понял. Может вы имеете в виду таблицы с целочисленными индексами, но произвольными? Но ведь в условии были даны варианты таблиц именно индексируемые с 1 и по порядку.Все другие варианты рассматриваются как хэш-ы. С ними нельзя работать ни оператором #, ни table.concat. Также в условии стояла задача узнать тип таблицы. Я предложил вариант не только без пайрсов, но и без for i=1,#t. Условия выполнены. Что не так? Не пойму.
-
После if-а #t определит наличие/отсутствие ключей, начинающихся с 1 и до последнего целочисленного поступательно нарастающего. Если есть такие, то проверяем, есть ли ещё какие-либо записи (nехt). Если есть - значит хэш, если нет, то индексный массив. Прогоните код в SсiТЕ. Не пойму, чего вы хотите от iраirs? Всё происходит так как и положено. Какому-то индексу присвоили значение nil. Сборщик мусора удалил это поле. Осталось дырка в индексах. Вот он и тормознул на этом поле. Совершенно правильно работает.
-
Полагаю что это уже мелочи, учитывая сказанное мною слово "набросок". Тем не менее ты прав в плане сравнения с нулем. Проверку с nехt делать всё равно прийдется. Например если есть и индексы от 1 до ... и не натуральные индексы.
УЧИМСЯ МОДДИНГУ
ИГРАЕМ В МОДЫ НА ТЧ
ИГРАЕМ В МОДЫ НА ЧН И ЗП
- [ЧН] OGSM CS 1.8 CE Fixes
- [ЧН] HARDWARMOD 3.2
- [ЗП] The Long Road
- [ЧН] New vision of War
- [ЧН] Old Good Stalker Mod - Clear Sky
- [ЗП] Unofficial Patch
- [ЗП] Смерти вопреки
- [ЗП] Контракт на хорошую жизнь
- [ЗП] Shoker Weapon Mod 2.1
- [ЗП] Hardcore pack for SGM 2.2
- [ЗП] Контракт Синдиката
- [ЗП] Клондайк 2.0
- ...и другие моды
ПОЛЕЗНОЕ И РАЗНОЕ