Контент Garry_Galler - Страница 2 - AMK Team
Перейти к контенту

Garry_Galler

Опытные
  • Число публикаций

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

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

  • AMKoin

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

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

  1. _Призрак_ Не уверен, но мне кажется что он должен возвращать nil после выхода врага из определенного радиуса от объекта, к которому метод был применен. По крайне мере аналогичный метод monstr:get_corpse() возвращает юзердату ближайшего трупа только в определенном радиусе от монстра.
  2. Garry_Galler

    Выбрасываемый рюкзак

    Knight Предложишь вариант \скрипт для выяснения подходит ли предмет рюкзаку по габаритам? И еще: у меня там табличка объемов предметов имеется, которая настроена от балды. Каждый может ее подправить под себя ориентируясь на примерный объем предмета в жизни и его габариты. ...Игра, товарищи, требует условностей - не все можно сделать как в жизни.
  3. TRAMP14 Именно так. ----------------------------------------------------------------- wait(time) - это глобальная функция (находится в _g.script) задержки выполнения программы на указанное время (аналог Sleep() в других языках)). Для этого скрипт должен быть запущен как coroutine(подпрограмма) - что это такое читай в документации по lua. Работает ли в сталкере - трудно сказать, я пробовал ее использовать(давно это было), результатов уже не помню, но по всей видимости ничего полезного не получил :-).
  4. TRAMP14 Вариант с использованием файла amk.script
  5. TRAMP14 Мне почему то кажется, что ГГ скорее скушает антирад, если ты напишешь вот так: local obj = actor:object("antirad") if obj then actor:eat(obj) :-)
  6. _Призрак_ Тут все предельно просто- ты к обратился к полю db.storage[zone:id()], которого в таблице нет. Поэтому перед тем как обратиться к какому нибудь табличному полю объекта всегда проверяй и существование объекта и поля: if zone and db.storage[zone:id()] and db.storage[zone:id()].active_scheme then
  7. Полтергейст packet:w_stringZ(self.wounded) -- записать self.wounded = packet:r_stringZ(пусто) --считать Что то не очень как то понятно:по моему опыту вылет при удалении\дропе может быть разве что в том случае, если движок "потерял" серверную юзердату удаляемого объекта в момент операции удаления - и то имеет тогда вполне вменяемый лог - что entity not found. ищите проблемы в class_registrator.script, обычно просто ошибка синтаксиса. Ну уж туда то зачем лазить? Классов дефолтных и так 'вагон и маленькая тележка' - куда свои то создавать? На моей памяти одному матерому модмейкеру только один раз за все время моддинга понадобилось там зарегить свой класс. Как говорил один известный логик - "не стоит плодить сущности без необходимости". Неправильные операции с evaluator'ами или действиями А у меня к таким операциям лог прилагается - видимо эксклюзивно
  8. Полтергейст Мое уточнение было сугубо практическим: если нужно узнать находится ли ГГ в определенном рестрикторе, то обратиться к его имени (которое имеется в allspawn), куда проще, чем получить его объект.(разработчики сталкера, - если глянуть скрипты, - делали именно так). При переборе таблицы db.zone_by_name уже не имеет значения данный нюанс, так как по любому в переменных-итераторах key, value будут и имя и юзердата зоны. ЗЫ:npc_in_zone() это же не глобальная функция из _g.script , а ты уже вторично забываешь указать модуля, в котором она находится. Это тоже было причиной моего уточнения. -------------------------------- Кстати забыл добавить: смарт терейны находятся в табличке db.smart_terrain_by_id - отдельно от рестрикторов.
  9. Disord Смотри lua_help - C++ class clsid - там перечислены все clsid'ы объектов сталкеров. Список clsid - это перечисление (enum), делается в программировании для удобства использования, значение - определенное число, которое является идентификтором определенной группы объектов\ или одного объекта. Например clsid.obj_medkit это все виды аптечек, а clsid.obj_bolt - только болт. Проверяется так if obj:clsid()==clsid.obj_medkit then (где obj - это юзердата объекта).
  10. _Призрак_ У разных категорий зон во первых отличаются названия: вот например список зон из стораджа одного NPC bar_arena_restrictor,bar_dolg_bunker_restrictor,camp_fire_0000,camp_fire_0001,ca mp_fire_0002,camp_fire_0003,camp_fire_0004,camp_fire_0005,mil_camp_fire_res_0002 Как видишь тут не так уж сложно отделить парсингом строки рестрикторы от аномалий. Во вторых, никто не отменял возможность применить к юзердате зоны метод section() (или section_name()) и узнать что это - smart_terrain, space_restrictor или zone_xxx (аномалия). ---------------------------------------------- Полтергейст Не npc_in_zone(db.actor, zone), а utils.npc_in_zone(db.actor, db.zone_by_name[sZoneName])
  11. Disord У лнкс похоже какой то скрип конкатенирует две секции боеприпасов в одну и затем пытается что то сделать с этой псевдосекцией. Так что нужно искать и корректировать этот скрипт, но так как товарищ не указал мод, видимо сам решил искать. Roman82 buck_shot у патронов, frags у гранат (подствольных и ручных).
  12. Garry_Galler

    Выбрасываемый рюкзак

    Gandifil Для начала - лог вылета приложить. И что за мод указать. dragunof Закомментировать строчку ;belt = true в файле weapons.ltx - в оригинале она и так была закомментирована - я просто убрал точку с запятой перед строчкой . Для тех кто не в курсе - ; - это обычный символ комментирования строк в файлах конфигурации (родом он из асссемблера), - после данного символа любые данные при чтении файла игнорируются. Фейковые предметы обязательны - так как именно на них и строится технология использования предметов в новых слотах.
  13. Batment Можно использовать логику remark, в которой в параметре anim задать одну из анимок бармена: bar_head, bar_fas, bar_sleep, bar_right, bar_left и т.д. На обычном NPC точно работает анимка bar_sleep - NPC будет стоя спать, положив голову на руки. Остальные проверь сам.
  14. vavilov8 пост malandrinus'a #202 Читайте внимательно тему справочник по функциям и классам.
  15. Надуманная проблема -никогда ничего не пропадает, если спавнить правильно. И никаких переводов оффлайн\онлайн не требуется.(неверующие могут посмотреть мои тайники). Правда все это никакого отношения к проблеме мода "аммуниция на поясе" не имеет. Там коллизия (из-за отсутствия серверного объекта), по всей видимости, возникает в момент конвертации в инвентаре истинных патронов в фейковые. Другой причины для данного вылета - entity not found - в моде просто нет.
  16. Действительно, max_max_08, почему тебе просто не дописать тоже самое действие и на кнопку Esc? function my_message:OnKeyboard(dik, keyboard_action) CUIScriptWnd.OnKeyboard(self,dik,keyboard_action) if keyboard_action == ui_events.WINDOW_KEY_PRESSED then if dik == DIK_keys.DIK_ESCAPE then self:on_quit() --/ по нажатию ESC - активация указанного метода end end end Отключить ввод с клавиатуры тоже, конечно, можно - через level.disable_input() - но не знаю решит ли это твою проблему. Мышь тоже, по моему, не будет работать.
  17. TRAMP14 Уясни наконец разницу между юзердатой и строкой. И вспомни - когда ты использовал только юзердату, с чем ты ее сравнивал? С nil. То есть делал типа того: if db.actor:item_in_slot(6) ~= nil then - это просто проверка, что предмет в слоте(экземпляр класса) не nil (то есть что там есть хоть какой то предмет - не важно какой секции). Юзердата, которую возвращает метод item_in_slot(number) , в данном случае это просто экземпляр объекта определенного класса вообще. Как допустим ты - экземпляр класса homo sapiens. Но все люди разные и экземпляры объекта одного и того же класса тоже разные. Например у них разные имена - секции. И как раз метод section() их возвращает. Разница между юзердатой и строкой - огромная. Это совершенно разные типы. И их нельзя (потому что бессмысленно) сравнивать друг с другом. Поэтому когда тебе нужно сравнить секцию объекта с другой секцией (а это строки) нужно применять метод section(). (или section_name() для серверных объектов).
  18. TRAMP14 db.actor:item_in_slot(6) возвращает юзердату, а не строку. Так что твое сравнение дает false. Для того, чтобы получить строку с наименованием объекта по секции нужно предварительно применить к нему метод section(). if exza and exza:section()~= "exo_outfit" then if grena and (grena:section() == "wpn_gauss" и т.д.)
  19. Хантер У меня логика прекрасно работает. Использовал тот же простенький вариант, что и в статье. Вот секция машины в файле vehicles.ltx (где у меня все секции тачек прописаны - файл зарегистрирован в system.ltx) и в этой секции прописана custom_data с указанием файла логики. Машину спавнил, разумеется, скриптом. Важное условие работы схемы: в секции машины обязательно должна быть строчка script_binding = bind_physic_object.init Именно она биндит логику к каждой вышедшей в онлайн тачке.
  20. PGU_tk Я на инсайд-вики еще год назад выложил функцию для спавна любого набора объектов с указанием нужного кол-ва каждого объекта. Причем она спавнит как в инвентарь - ГГ или NPC (оффлайн\онлайн), так и по координатам. В качестве аргумента передается именно массив секций и прочие данные. ссылка
  21. Garry_Galler

    Выбрасываемый рюкзак

    Septimus У меня патроны вешаются на пояс простой правкой одной строчки в файле weapons.ltx и к реалиазции аммуниции на поясе моя разработка отношения не имеет. Там идет запрет на перезарядку, если патроны отсутствуют на поясе, у меня же ничего подобного нет, так как это не имело отношения к тому что я реализовывал. И патроны вешаются на пояс просто для удобства(чтобы при сбросе рюкзака не остаться без боеприпасов - предметы на поясе у меня не сбрасываются), но перезаряжаться (при активном рюкзаке) можно и при отсутствии патронов на поясе. Так что ты немного ошибся - если хотел именно реалиазции запрета на перезарядку. Все это реализовано, как я понял, в последней скриптовой версии "Аммуниции на поясе" (без багов с NPC). Недавно мне предложили совместить ее с моими рюкзаками (а в придачу еще и магазины kirag'a - что из этого выйдет, пока не знаю :-) Вердикт относительно возможности совмещения магазинов kirag'a и скриптового варианта "аммуниции на поясе": несовместимы. Впрочем оно и не нужно: данные разработки - это альтернативы, которые делают почти одно и тоже в плане геймплея, только в магазинном питании это сделано более продвинуто в плане приближения к реалистичности. Однако нужно отдать должное автору скриптового варианта "аммуниции на поясе" kstn - сделано гениально просто. Причем настолько просто, что сразу даже не понял в чем фокус . В общем вывод такой: по отдельности каждую из этих разработок можно совместить с моими рюкзаками, причем "аммуниция на поясе" совмещается проще. Там всего то нужно перенести из bind_stalker.script вызов функции мода в мой bind_stalker.script и сделать кой какие мелкие правки в конфиг-файлах в виде добавления инклуда #include "ammo_fake.ltx" в weapons.ltx и одной секции предмета(separator) из items.ltx в bag.ltx, а также не забыть добавить _g.script. ----------------------------------- --------------------------------------------------------------------------------------------------- Насчет использования моей разработки в своих модах: ограничений нет (разве что для Осознания). ------------------------------------------------------------------------------------------ Барсуков Герман Отпишусь в личку.
  22. Garry_Galler

    Худ

    По поводу возврата зависимостей - это к разрабам. Нам остается только имитировать их - сон уже давно сделан, жажду тоже кто то делал. А иконки можно вывести так:
  23. Garry_Galler

    Худ

    Не знаю интересно это кому-нибудь, но вот что еще можно добавить на худ: Аналоговые часы(справа) и аналоговый спидометр(внизу):
  24. Garry_Galler

    X-Ray extensions

    48celt48 Список имеющихся служебных инфопоршней - в том числе для вкладок ПДА - описан в теме "Справочник по функциям и классам". А узнать какой именно инфопоршень включается\выключается в конкретный момент времени можно через info_callback в эктор биндере (bind_stalker.script). По поводу возврата блудмарок уже писалось в теме "Редактирования движка X-Ray".
  25. Garry_Galler

    Выбрасываемый рюкзак

    Леня Баньши У меня подобные вещи и на чистой игре(+только магазины) иногда и происходили. Под новый фикс я делал адаптацию, но она у меня, увы, почему то не заработала. Пока руки не дошли разобраться в чем там дело - в общем непростое это дело совмещать подобные разработки :-) Ирбис Я подумаю над предложением. ----------------------------------------------------------------------------------------------- PS: Мне тут Geoset сделал новые модельки для пары рюкзаков - немного попозже выложу.
×
×
  • Создать...