Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Garry_Galler 7 Опубликовано 11 Декабря 2009 Поделиться Опубликовано 11 Декабря 2009 (изменено) Gonarh посылать меня курить маны не стоит - все существующие мануалы по lua я и так прочитал. И тебе должно быть хорошо известно что в том же руководстве по lua не поясняется как работать с многомерными массивами (есть ли это в книге Роберта Иерусалимского - не знаю - так как читал только ее частичный перевод - полный перевод в инете not exist). Как такового понятия многомерного массива в lua вообще не существует (как например в паскале или визуал бейсике) - однако есть возможность создавать их через таблицы разных уровней. И соотвественно чем больше у таблицы уровней тем сложнее ее итерировать (особенное если это хэш массив). И если ты не знаешь как с ними работать, то так и скажи - а посыл оставь для других. Изменено 11 Декабря 2009 пользователем Garry_Galler Ссылка на комментарий
Gonarh 5 Опубликовано 11 Декабря 2009 Поделиться Опубликовано 11 Декабря 2009 (изменено) Для начала, скажу только один раз и больше повторяться не буду. Я никого никуда не посылал, я тебе (равно как и ты мне) ничего не должен и ничем не обязан, поэтому недовольные идут лесом. Если ты всерьез хочешь заняться программированием, читай мануалы на английском а не ищи переводы. Потому как все равно практически вся тех. документация на нем. По сабжу: когда я делал трехуровневую таблицу - там все итемсы выводились как надо - но полным списком - если у непися 20 пачек патронов - то все 20 пачек построчно и выводились - хотелось бы избавиться от этого, чтобы было только имя предмета и его кол-во. они у тебя и будут выводится построчно, потому что у каждой пачки свой :id() а ты добавляешь в свою таблицу айдишник для каждого итема, своего рода ключ, тут уже придётся выбирать или показывать все 20 пачек с их айдишниками или добавлять в таблицу без айдишника, либо завесть подтаблицу и упаковать по имени секции количество итемов, выбирать тебе Добавлено через 20 мин.: Как такового понятия многомерного массива в lua вообще не существует (как например в паскале или визуал бейсике) в паскале и визуалбейсике реализации n-мерного массива, через array как таковой тоже не существует. Есть коллекции, деревья, но не аррэй. Про си не скажу, я его знаю на уровне "хэлловорд". Кстате знаю что в ЛУА есть связанные списки(linked lists если Иерусалимский не врет), я про них не читал, попробуй посмотри в их сторону - может пригодится Изменено 11 Декабря 2009 пользователем Gonarh 118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105 Ссылка на комментарий
Malandrinus 615 Опубликовано 12 Декабря 2009 Поделиться Опубликовано 12 Декабря 2009 И если ты не знаешь как с ними работать, то так и скажи - а посыл оставь для других. Чего ты кипятишься? Форматируй свой код получше, да комментарии ставить не ленись - тогда больше найдётся желающих работать с ТВОИМ кодом. У тебя банальная ошибка во второй части. Всё работает и все таблицы читаются. Я так понимаю, ты хочешь установить для каждого сталкера метку со списком предметов. Однако вместо этого ты много раз устанавливаешь надпись на метке, состоящую только из текущего предмета, затирая предыдущую. Естественно, остаётся последняя метка - последний предмет из инвентаря. У тебя там так: str = name:character_name()....... т.е. str затирается на каждой итерации а надо было так str = str..name:character_name()...... т.е. строка накапливается ну и level.map_add_object_spot() само собой надо сделать один раз, а не столько, сколько предметов Вот только если ты хотел сделать метку из всех предметов инвентаря, то это не получится. Такой длинный текст движок не переваривает и рушится. в паскале и визуалбейсике реализации n-мерного массива, через array как таковой тоже не существует. Есть коллекции, деревья, но не аррэй. Про си не скажу, я его знаю на уровне "хэлловорд". Кстате знаю что в ЛУА есть связанные списки(linked lists если Иерусалимский не врет), я про них не читал, попробуй посмотри в их сторону - может пригодится В Паскале как раз имеются родные многомерные массивы. В СИ многомерные массивы имитируются с помощью парадигмы "массив массивов", что впрочем смотрится достаточно естественно. В Lua нет никаких иных коллекций и структур данных (встроенных), кроме таблиц. На них строится всё: линейные и ассоциативные массивы, структуры (паскалевские записи) и объекты, множества, деревья и графы вообще. Упомянутый список (см. здесь) в языке не присутствует, а имитируется также, как графы (в принципе списки - это вырожденные графы). Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Gonarh 5 Опубликовано 12 Декабря 2009 Поделиться Опубликовано 12 Декабря 2009 (изменено) В Паскале как раз имеются родные многомерные массивы. ты сможешь при помощи них создать n-мерный массив? Т.е массив с заранее неизвестным количество измерений. Вот смотри при n=2 это матрица, при n=3 - это куб. Покажи код создания n-мерного массива с заранее неизвестным n. Можно в личку, просто интересно ЗЫ. Как жаль что нам не преподавали в свое время теорию графов Изменено 12 Декабря 2009 пользователем Gonarh 118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105 Ссылка на комментарий
iDreD 5 Опубликовано 12 Декабря 2009 Поделиться Опубликовано 12 Декабря 2009 Ответте на мой вопрос(((... Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
Garry_Galler 7 Опубликовано 12 Декабря 2009 Поделиться Опубликовано 12 Декабря 2009 (изменено) malandrinus банальную ошибку я уже исправил - пришлось правда что бы понять ее, в scite создать имитацию моей таблицы. все как ты и указал - был неправильный вывод инфы в итоговую строку. и for k, data in pairs(db.storage[npc:id()].inventory) do local text_inv = "\\nинвентарь:".."\\n"..data.inv local text_count = " ["..tostring(data.count).."]" str = name:character_name()..text_inv..text_count.."\\n" level.map_add_object_spot(id, "alife_presentation_smart_ready", str) надо бы исправить на этот: local id = npc:id() local name = level.object_by_id(id):character_name() str = name.."\\n".."инвентарь:".."\\n" for k, data in pairs(db.storage[npc:id()].inventory) do local text_inv = data.inv local text_count = "["..tostring(data.count).."]" str = str..text_inv..text_count.."\\n" level.map_add_object_spot(id, "alife_presentation_smart_ready", str) я бы не кипятился если бы Gonarh просто сразу указал бы (как сделал ты) на вероятную ошибку в коде (или сказал что не знает причину или просто ничего не писал так как "я тебе (равно как и ты мне) ничего не должен и ничем не обязан", а не посылал меня как совсем не рубящего в теме к тому руководству, которое у меня и так лежит распечатанное на раб. столе. Изменено 12 Декабря 2009 пользователем Garry_Galler Ссылка на комментарий
valdemar093 0 Опубликовано 12 Декабря 2009 Поделиться Опубликовано 12 Декабря 2009 Вопрос: что надо сделать, чтобы НПС не считали "костёр" аномалией, а то я поставил мод обход аномалий, так НПС теперь к костру не могут подойти Сталкер v 1.004 + Народная Солянка от 14.06 + патч № 0.1 (на 19.06) + ВСЕ ДОПОЛНЕНИЯ СОЛЯНКИ ПО 08.08 + ДОПОЛНЕНИЕ ОТ 10.09 + патч от 17.09 + мод от Monnoroch ( v 1.5.2) + фикс для него Ссылка на комментарий
Gonarh 5 Опубликовано 12 Декабря 2009 Поделиться Опубликовано 12 Декабря 2009 добавить в список исключаемых из обхода аномалий - zone_flame_small 118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105 Ссылка на комментарий
Monnoroch 6 Опубликовано 12 Декабря 2009 Поделиться Опубликовано 12 Декабря 2009 Gonarh, Мне!!! Мне в личку!Как в паскале Н-мерный массив создать!Я уже давно бьюсь Ссылка на комментарий
Malandrinus 615 Опубликовано 12 Декабря 2009 Поделиться Опубликовано 12 Декабря 2009 ты сможешь при помощи них создать n-мерный массив? Т.е массив с заранее неизвестным количество измерений. Смотря в какой версии. В исходном языке нельзя, и число размерностей задаётся заранее. В последних версиях, которые базируются на .NET, уже используются типы дотнетовские. Там и многомерные динамические массивы есть. За подробностями - в какую-либо книжку. Я сам Delphi не использую, так что просто заглянул в первую попавшуюся. Вот к примеру "Архангельский А.Я. - Delphi 2006. Справочное пособие" банальную ошибку я уже исправил - пришлось правда что бы понять ее, в scite создать имитацию моей таблицы. Рекомендую осваивать нормальные техники отладки. Первое, как раз для таких экспериментов есть удобный тестовый полигон. Я его описывал здесь. Второе, такие вещи надо отлаживать, выводя в лог. Все возможные способы это сделать под ЧН я также разжевал здесь. Я взял твой код без изменений и сразу нашел ошибку, просто выведя информацию в консоль. Ещё. Для множественных конкатенаций строк рекомендую использовать функцию string.format. Это на порядок производительней, плюс дополнительные возможности по форматированию. лежит распечатанное на раб. столе. А я никогда не печатаю, мне деревьев жалко =) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Garry_Galler 7 Опубликовано 12 Декабря 2009 Поделиться Опубликовано 12 Декабря 2009 malandrinus полигон то есть. И время от времени я им пользуюсь, а тут решил без него обойтись. Да и через имитацию созданию таблицы мне как то понятнее стал алгоритм обращения к элементам многомерных таблиц. Так что у каждого свои методы - кому что удобнее. Лично мне наглядность нужна, а не абстракция - я ведь не программист (и даже близко отношения к ним не имею и вообще никогда не думал, что займусь изучением хоть какого то языка, но вот сталкер привел на эту дорожку). а string.format'oм я позже отформатирую. Вопрос тут созрел - спрашиваю не для себя - челу одному на SP нужно - аномалии скриптовые как удалять? лично я припоминаю что есть disable_anomaly() но сам им не пользовался. Если все сгенерированные аномалии в табличку занести, а потом их через disable по айди удалять - сработает? Если да, то скрипт я ему накидаю. И кстати чем отличается clsid.wpn_ak74_s от clsid.wpn_ak74 - этот к примеру просто. а то захотел создать функцию для проверки объектов на класс аномалий - наподобие isWeapon() или isStalker() но пока не разобрался какие идентификаторы классов мне использовать. Ссылка на комментарий
Malandrinus 615 Опубликовано 12 Декабря 2009 Поделиться Опубликовано 12 Декабря 2009 ...кому что удобнее. Лично мне наглядность нужна, а не абстракция Поверь мне, все инструменты отладки призваны именно повышать наглядность. Я вот вывел информацию в консоль и увидел ошибку. А вывод в метку непися эту ошибку скрывал. Впрочем, каждый усложняет себе жизнь по собственному вкусу. Вопрос тут созрел - спрашиваю не для себя - челу одному на SP нужно - аномалии скриптовые как удалять? лично я припоминаю что есть disable_anomaly() но сам им не пользовался. Удалять любые объекты можно функцией alife():release(). disable_anomaly() будет, как понятно из названия, только отключать аномалии, но не будет удалять объекты. И кстати чем отличается clsid.wpn_ak74_s от clsid.wpn_ak74 clsid.wpn_ak74 - идентификатор встроенного класса, clsid.wpn_ak74_s - для скриптового класса, зарегистрированного с помощью object_factory. Почитай об этом в теме "справочник по классам" Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Гость max_max_08 Опубликовано 13 Декабря 2009 Поделиться Опубликовано 13 Декабря 2009 Товарищи скриптеры, к Вам вопросец. Нужен простенький скрипт который при наличии определенного предмета присваивает локальной переменной true. При отсутствии этого предмета false. Ссылка на комментарий
Gonarh 5 Опубликовано 13 Декабря 2009 Поделиться Опубликовано 13 Декабря 2009 (изменено) у кого у непися или у ГГ? если у ГГ то так: local has_item = db.actor:object("af_electra_moonlight") --проверяем наличие арта Лунный свет если у непися - local has_item = npc:object("af_electra_moonlight") --npc - это объект непися Изменено 13 Декабря 2009 пользователем Gonarh 118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105 Ссылка на комментарий
Garry_Galler 7 Опубликовано 13 Декабря 2009 Поделиться Опубликовано 13 Декабря 2009 malandrinus благодарю за пояснения. Окей буду стараться впредь по уму ошибки искать. то что удалять аномалии нужно именно alife():release() (как и все прочие объекты) я так и предполагал, но меня сбивало с толку наличие метода disable_anomaly() с действием которого я не был знаком - теперь все понятно. Ссылка на комментарий
iDreD 5 Опубликовано 13 Декабря 2009 Поделиться Опубликовано 13 Декабря 2009 (изменено) Gonarh Нужен простенький скрипт который при наличии определенного предмета присваивает локальной переменной true. При отсутствии этого предмета false. Самого этот вопрос интересует вот и решил поддержать его. И еще вот функция: function global_bind_clock() if db.actor ~= nil then return db.actor:object("clock") ~= nil then db.actor:give_info_portion("clock_activ") end return false end Где здесь ошибка? Изменено 13 Декабря 2009 пользователем кровоSTALKER Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
Gonarh 5 Опубликовано 13 Декабря 2009 Поделиться Опубликовано 13 Декабря 2009 (изменено) смотри внимательней вместо then ... else ты написал then ... then ладно, раз пошли такие пляски вот функция function has_item(item_name, npc) if npc == nil then npc = db.actor end return npc:object(item_name) ~= nil end юзать так: has_item("af_blood") - для ГГ has_item("af_blood", npc) - для непися, где npc это объект того сталка у которого хотим прверить наличие предмета Изменено 13 Декабря 2009 пользователем Gonarh 118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105 Ссылка на комментарий
iDreD 5 Опубликовано 13 Декабря 2009 Поделиться Опубликовано 13 Декабря 2009 (изменено) О... Да да, точно... UPD: Мне нужно вынести ту фунцию ( function global_bind_clock() if db.actor ~= nil then return db.actor:object("clock") ~= nil then db.actor:give_info_portion("clock_activ") end return false end ) в глобальный апдейт ака апдейт через бинд_сталкер.скрипт, но когда я добавляю ее в апдейт (в функции актор_биндер_апдэйт(дельта)) при начале новой игры игра зависает. Как с этим бороться? Итем за именем clock был создан. Изменено 13 Декабря 2009 пользователем кровоSTALKER Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
Gonarh 5 Опубликовано 13 Декабря 2009 Поделиться Опубликовано 13 Декабря 2009 (изменено) потому что ты неправильно её написал, вот смотри function global_bind_clock() if db.actor ~= nil then return db.actor:object("clock") ~= nil else --получается по условию у тебя тут db.actor равен nil а ты пытаешься юзнуть метод give_info_portion нила db.actor:give_info_portion("clock_activ") end return false end перечитай еще раз что я написал Изменено 13 Декабря 2009 пользователем Gonarh 118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105 Ссылка на комментарий
iDreD 5 Опубликовано 13 Декабря 2009 Поделиться Опубликовано 13 Декабря 2009 (изменено) Ну, я её исправил еще когда ты первый раз мне сказал. function global_bind_clock_update() if db.actor ~= nil then return db.actor:object("clock") ~= nil else db.actor:give_info_portion("clock_activ") end return false end Изменено 13 Декабря 2009 пользователем кровоSTALKER Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти