Kirgudu 1 207 Опубликовано 1 Сентября 2014 Поделиться Опубликовано 1 Сентября 2014 (изменено) @Grif_on, не исключено, что ты используешь не то свойство. Попробуй назначить не строковый story_id в кастомдате, а числовой story_id, прописанный в свойствах объекта.Примерно так: [10997] ; cse_abstract properties section_name = level_changer name = val_to_desc_1 position = -44.5999984741211,1.79999995231628,-547.499877929688 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 1823 distance = 4.90000009536743 level_vertex_id = 119640 object_flags = 0xffffff3e story_id = 11111 ;<--/ тут указать нужный уникальный номер ; cse_shape properties shapes = shape0 shape0:type = box shape0:axis_x = 12.9620018005371,0,0 shape0:axis_y = 0,5.50719976425171,0 shape0:axis_z = 0,0,4.48839998245239 shape0:offset = 0,0,0 ; cse_alife_space_restrictor properties restrictor_type = 3 ; cse_alife_level_changer properties dest_game_vertex_id = 3763 dest_level_vertex_id = 47755 dest_position = -404.020355224609,1.17996001243591,624.253295898438 dest_direction = 0.00435000006109476,-2.5,0.00658199982717633 dest_level_name = darkscape dest_graph_point = desc_graph_point_actor_spawn_3 silent_mode = 1 ; se_level_changer properties [10998] ; cse_abstract properties section_name = space_restrictor name = close_level_changer position = 140.048614501953,-1.00104403495789,48.9994010925293 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 1677 distance = 0 level_vertex_id = 309793 object_flags = 0xffffff3e custom_data = <<END [logic] active = sr_idle@start [sr_idle@start] on_info = sr_idle@close1 %=disable_level_changer(11111)% ;<--/ числовой story_id объекта [sr_idle@close1] on_info = {+svoboda_leader_task_complete} sr_idle@end %=enable_level_changer(11111)% ;<--/ аналогично [sr_idle@end] END ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 2.5191171169281 ; cse_alife_space_restrictor properties restrictor_type = 3 Изменено 1 Сентября 2014 пользователем Kirgudu Инструмент Ссылка на комментарий
Serge! 127 Опубликовано 1 Сентября 2014 Поделиться Опубликовано 1 Сентября 2014 (изменено) Привет. Хочется получить число через вызов numpad. Сам вызов local numpad = ui_numpad.numpad(self)numpad:ShowDialog(true) отрабатывает, а обратно введённое значение получить ... ну никак не могу. Вызываю по клавише из main_menu (ЗП). Какие мысли у сообщества есть? где можно изменить содержимое тайника Коряги на Юпитере а зачем это надо?... если не секрет, конечно. Изменено 1 Сентября 2014 пользователем Serge! Ссылка на комментарий
Дормидонт 144 Опубликовано 1 Сентября 2014 Поделиться Опубликовано 1 Сентября 2014 зачем это надо? чтобы заспавнить некий "уникальный" ствол. Ссылка на комментарий
Jeka81 75 Опубликовано 1 Сентября 2014 Поделиться Опубликовано 1 Сентября 2014 При наведении курсора на квестовый предмет появляется надпись "Поднять предмет(а)". Сам предмет заспавнен с начала игры. Можно-ли сделать так, чтобы до получения определенного инфопоршня эта надпись не появлялась и предмет невозможно было бы подобрать? С#Н#Т#Р# (CoP 1.6.02) Ссылка на комментарий
Charsi 440 Опубликовано 2 Сентября 2014 Поделиться Опубликовано 2 Сентября 2014 @Serge!, при создании окна ui_numpad.numpad(self) у объекта self подразумевается наличие метода OnNumberReceive. Обычно это объект класса codepad, реализующего логическую схему ph_code. При нажатии Enter по окончании ввода отрабатывает метод numpad:OnButton_OK_clicked. В нем окно закрывается, получается текст из поля ввода и передается в метод OnNumberReceive объекта self, переданного в конструктор окна. Если ты запускаешь окно из главного меню, то в класс main_menu нужно добавить метод main_menu:OnNumberReceive(text). Тогда введенное значение будет в него передаваться. 1 Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий
Serge! 127 Опубликовано 3 Сентября 2014 Поделиться Опубликовано 3 Сентября 2014 (изменено) Привет.Появился ещё вопросик (предыдущий, благодаря Charsi решился легко и простенько)...Как узнать тип патронов в конкретном стволе? Перечень возможных для данного типа ствола можно получить из описания его секции, но ведь их может быть несколько. При движковой команде на разрядку это решается. Как? При наведении курсора на квестовый предмет появляется надпись "Поднять предмет(а)". Сам предмет заспавнен с начала игры. Можно-ли сделать так, чтобы до получения определенного инфопоршня эта надпись не появлялась и предмет невозможно было бы подобрать? Отвечу ещё раз (прошлый ответ не всем понравился) поэтому чуть подробнее.До получения инфопоршня (помним "Сам предмет заспавнен с начала игры.") выдаем для объектаобъект.set_tip_text("") -- возможно это можно и не делать. Не проверял, каюсь.объект.set_nonscript_usable(false)а после получения нужного инфопоршняобъект.set_tip_text_default()объект.set_nonscript_usable(true)Всё это, как говорил и раньше, надо править в логике работы с этим объектом. И что было не так? Изменено 3 Сентября 2014 пользователем Serge! 1 Ссылка на комментарий
Serj8949 0 Опубликовано 3 Сентября 2014 Поделиться Опубликовано 3 Сентября 2014 Кто знает как открыть файл thm то есть чем открыть файл thm? Ссылка на комментарий
AndreySol 215 Опубликовано 3 Сентября 2014 Поделиться Опубликовано 3 Сентября 2014 Как узнать тип патронов в конкретном стволе можно так (ф-ция принимает аргументом ID оружия): function Get_ammo_type(wpn_id) local sobj = alife():object(wpn_id) if not sobj then return nil end local np = net_packet() sobj:STATE_Write(np) local size = np:w_tell() np:r_seek(size - 1) local ammo_type = np:r_u8() -- 0 - 1-й тип боеприпасов, 1 - 2-й тип боеприпасов и т.д. return ammo_type end 1 Ссылка на комментарий
Serge! 127 Опубликовано 3 Сентября 2014 Поделиться Опубликовано 3 Сентября 2014 (изменено) можно так (ф-ция принимает аргументом ID оружия) т.е. я понимаю так, что на выходе этой функции получу индекс поля ammo_class из секции текущего ствола? Или не так? Если так, то это замечательно. Думал, что это возвожно через пакет, но не очень уверенно. Попробую. Задумка такова: подбираешь ствол, сразу его чинишь (это просто) и разряжаешь (это тоже просто). Патроны от него суммирутся (вот здесь был затык) и попадают в инвентарь отдельно от ствола. Подскажите как "работать" с enable/disable_level_changer (я так понял с помощью enable/disable_level_changer можно "разрешать/запрещать" переход Я бы вынес логику из all.spawn в отдельный скприпт с дополнениями makdm и учётом предположений Charsi об оф/он лайне. Изменено 3 Сентября 2014 пользователем Serge! Ссылка на комментарий
AndreySol 215 Опубликовано 4 Сентября 2014 Поделиться Опубликовано 4 Сентября 2014 Или не так Точно так. Думаю, сваять скрипт разбора строки ammo_class на составные и получение соответствия индекса конкретному значению сможете сами ? сразу его чинишь (это просто) Я не уверен.... Ссылка на комментарий
Serge! 127 Опубликовано 4 Сентября 2014 Поделиться Опубликовано 4 Сентября 2014 (изменено) сможете сами ? сам пробовать конечно буду, но от подсказки никогда не откажусь. Я не изобретаю велосипед, а просто пытаюсь его усовершенствовать. Если получится. Я не уверен.... Почему? Я обычно в actor_binder:on_item_take (obj) вставляю строчку obj:set_condition(1.0) и получаю в инвентарь полностью кондиционный объект Изменено 4 Сентября 2014 пользователем Serge! Ссылка на комментарий
AndreySol 215 Опубликовано 4 Сентября 2014 Поделиться Опубликовано 4 Сентября 2014 и получаю в инвентарь полностью кондиционный объект и после сэйв\лоад - то-же полностью кондиционный ? Ссылка на комментарий
Grif_on 9 Опубликовано 10 Сентября 2014 Поделиться Опубликовано 10 Сентября 2014 (изменено) Всех приветствую! Я решил попробовать в тестовом варианте начать заселять подключенные к ЗП болота, и сразу появились несколько глупых вопросов. 1. Как заставить нпс озвучивать приветствие: заспавнил проводника с такой логикой: [logic@mar_intro_guide] active = walker@guiderprior = 200suitable = {=check_npc_name(mar_intro_guide)} truelevel_spot = guider[walker@guider]path_walk = guide_intro_walkpath_look = guide_intro_lookdef_state_standing = guard_naon_actor_dist_le = 10 | walker@guider_hello meet = no_meetcombat_ignore_cond = truecombat_ignore_keep_when_attacked = trueinvulnerable = trueuse_camp = falsegather_items_enabled = falsehelp_wounded_enabled = falsecorpse_detection_enabled = false[walker@guider_hello]path_walk = guide_intro_walkpath_look = guide_intro_lookdef_state_standing = hello_wpnmeet = meet@guideon_actor_dist_ge = 10 | walker@guidercombat_ignore_cond = truecombat_ignore_keep_when_attacked = trueinvulnerable = trueuse_camp = falsegather_items_enabled = falsehelp_wounded_enabled = falsecorpse_detection_enabled = false[meet@guide]close_snd_hello = mar_csky_guider_meet_helloclose_snd_bye = nilclose_anim = nilclose_victim = actorfar_anim = guard_nafar_victim = actorclose_distance = 0far_distance = 10trade_enable = falseallow_break = falseclose_snd_distance = 3use = {=actor_enemy} false, truemeet_on_talking = falsemeet_dialog = mar_csky_guider_intro_dialog но он молчит как партизан и не воспроизводит mar_csky_guider_meet_hello, хотя в script_sound_marsh звуки прописаны, что я делаю не так? 2. Насчёт посиделок у костра. Можно ли как-нибудь сделать, чтоб сталкерки не только играли на гитаре, травили анекдоты, но и в это же время ели колбаску и пили водку у костра (как в ЧН). Как я понял в ЗП нет анимпойнта sit_ass? (sit_low беру, но сталкерки сидят как бы в воздухе, смотрится некрасиво)Как я понял для посиделок у костра можно не прописывать логику нпс? И ещё вопрос по скавадм: хочу у костра посадить 8 нпс, как лучше сделать, всех восмирых спавнить 1 сквадом или несколькими? (я новичок в этом деле, пожалуйста, не пинайте особо за тупые вопросы ) Изменено 10 Сентября 2014 пользователем BFG Ссылка на комментарий
Сталкер Лом 356 Опубликовано 10 Сентября 2014 Поделиться Опубликовано 10 Сентября 2014 Grif_on, Ну тогда "хаюшки", чтоль. Итак, на вопросы твои отвечу простыней, ибо сложность реализации в твоих вопросах идёт вразброс. Итак:1. Анимпоинтов sit_ass и sit_knee в ЗП нет, но можно их вернуть. Вот ссылка, где товарищ Nuclia это делал даже для СДК: http://stalker-2.com.ua/downloads.php?cat_id=3&download_id=11 2. Логику для посиделок у костра можно не делать. Просто делать всё по инструкциям и симуляционные сквады лагеря будут заполнять без особых проблем. (Если нужны ссылки на уроки, то стучи в ЛС) 3. Чтобы сталкеры не только материли сапоги и "салобонов шугали", а ещё и кусали колбаску, то для этого надо делать логику. [logic@esc_dog_leader]suitable = {=check_npc_name(esc_dog_leader)} true ;Проверка на то, что логика только для конкретного непися, если тебе нужно сделать условие для симулиционных сквадов, то поищи примеры в логике лагеря Скадовск.prior = 100 ;Приоритет, для симуляционных ставь меньше 50 или, как здесь, указывай куда неписю идти, если случится выбросactive = animpoint@esc_dog_leader ;Активная секция логики, ну, с этим я думаю, ты знаком[animpoint@esc_dog_leader]cover_name = escape_podval_animpoint_dog ;Имя анимапоинтаavail_animations = animpoint_sit_high_weapon ;Имя анимации - в данном случае будет высоко сидеть с оружием на перевес on_info = {=surge_started} animpoint@surge ;Что делать, если Выброс нагрянулon_info2 = {=is_heavy_rain} animpoint@home ;Что делать, если дождь пошёл (у меня непись уходил в подвальчик)use_camp = false ;Это для симуляционных отрядов не указывай - этот параметр запрещает балаболить неписю в пределах Кэмп-зоныmeet = meet ;Секция разговора[animpoint@home] ;Итак, у нас пошёл дождик и непись спустился в подвал...cover_name = escape_podval_animpoint_dog_1avail_animations = animpoint_sit_normal ;Сели на кровать...on_info = {!is_heavy_rain} animpoint@esc_dog_leader ;Если дождь закончился, то уходим сторожить новичков у костра (Логика была написана для брата Волка - для Пса, который у меня остался в лагере новичков управляющим на время)on_game_timer = 500 | animpoint@eat ;Итак, если прошло Nвремени (50 секунд), то пора бы пожрать колбаскиuse_camp = falsemeet = meet[animpoint@eat] ;Хаваемcover_name = escape_podval_animpoint_dog_1avail_animations = animpoint_sit_normal_eat_breadon_game_timer = 600 | animpoint@drink ;Минутку похавали, надо бы запитьuse_camp = falsemeet = meet[animpoint@drink] ;"Не пьём, а лечимся!" (с)cover_name = escape_podval_animpoint_dog_1avail_animations = animpoint_sit_normal_drink_vodkaon_game_timer = 120 | animpoint@home ;После двух минут возвращаемся в секцию логики, откуда мы можем выйти наружу, либо снова похаватьuse_camp = falsemeet = meet[animpoint@surge] ;Если выброс, то идём в подвальчик, вроде как укрытиеcover_name = escape_podval_animpoint_dog_1avail_animations = animpoint_sit_normalon_info = {=surge_complete} animpoint@esc_dog_leaderuse_camp = falsemeet = meet[meet] ;Секция разговораclose_anim = nil ;Не нарушаем текущую анимацию, т.е. не встаём для разговоров, а как сидели, так и сидимclose_victim = nilfar_anim = nilfar_victim = nilclose_distance = 0far_distance = 0use = {=actor_enemy} false, trueallow_break = false 4. Если у тебя новички сидят у костра "декорацией", то лучше делать одним сквадом, а вот если у тебя, допустим, один однажды уйдёт Хто Знает куда за хабаром, а другой следом, а третий к Сидору и т.д., то лучше каждого в отдельный сквад, либо те, которые уходят - в разные, а которые у костра всю жизнь просидят (утрирую, конечно, хе-хе) тех можно в один. 5. Ну и логику попробуй переписать сам по этой статейке: http://stalkerin.gameru.net/wiki/index.php?title=Настройка_логики._Часть_1#.D0.A1.D1.85.D0.B5.D0.BC.D0.B0_meet . Но навскидку посоветую Far_distance прировнять к нулю. 1 Работы на Artstation - https://www.artstation.com/artist/stalker_lom Ссылка на комментарий
Clayman 104 Опубликовано 10 Сентября 2014 Поделиться Опубликовано 10 Сентября 2014 (изменено) Grif_on, вообще НПС-ы и так пьют и едят в смарткаверах, которые идут как авто работы (имя_смарта_animpoint_номер) и накрыты кампом (camp), никакой логики не нужно. Если этого не происходит, возможно ты добавлял новые визуалы (модели) нпс-ов, которые нужно добавить в файл gamedata\scripts\xr_animpoint_predicates.script (по аналогии с существующими). Тех визуалов, которые в масках, добавлять туда не нужно (чтобы колбасу в шлем не тыкали ) Изменено 10 Сентября 2014 пользователем Clayman 2 Ссылка на комментарий
Serge! 127 Опубликовано 15 Сентября 2014 Поделиться Опубликовано 15 Сентября 2014 (изменено) можно так (ф-ция принимает аргументом ID оружия): можно, но не всегда. Некоторые авторы пополняют в своих модах пакеты, дописывая новые данные. У меня, например, чтобы такая функция отработала корректно пришлось позиционировать на np:r_seek(size - 2), т.к. в конец пакета дописывался ещё один байт. Гарантию, что в каком-нибудь другом будет по другому, никто дать не может. Поэтому вопрос остается. Нет ли чего более универсального для определения текущего типа патронов в стволе? Как-то ведь это делается для отображения на экране. Изменено 15 Сентября 2014 пользователем Serge! Ссылка на комментарий
AndreySol 215 Опубликовано 16 Сентября 2014 Поделиться Опубликовано 16 Сентября 2014 (изменено) Некоторые авторы пополняют в своих модах пакеты, дописывая новые данные...Поэтому вопрос остается. Нет ли чего более универсального для определения текущего типа патронов в стволе? Есть, конечно - вместо частной ф-ции, используемой на "чистых" стволах, использовать к примеру модуль нет-пакетов от Artos. Изменено 16 Сентября 2014 пользователем AndreySol Ссылка на комментарий
Clayman 104 Опубликовано 16 Сентября 2014 Поделиться Опубликовано 16 Сентября 2014 Подниму вопрос о Dialog Editor (если эта тема поднималась, не пинайте сильно). Сабж удобный и практичный, сложнейшие диалоги создаются за считанные минуты, но - отсутствует такой важный момент, как добавление precondition (скриптовую проверку) в сам диалог, а не в его ветки. Конечно, можно потом добавить в xml файл precondition на диалог вручную и все работает. Но когда в этом-же файле создается новый диалог, то нажимае в эдиторе кнопочку Save, все вручную созданные прекондишны на диалоги удаляются. А помнить где их все нужно добавлять - утомительно. Кто-то решал эту проблему? Ссылка на комментарий
Jeka81 75 Опубликовано 16 Сентября 2014 Поделиться Опубликовано 16 Сентября 2014 но - отсутствует такой важный момент, как добавление precondition (скриптовую проверку) в сам диалог, а не в его ветки. В программе с левой стороны список доступных диалогов. Если выбрать сам диалог (не ветку) - возможность добавить precondition сохраняется. Или это не то? С#Н#Т#Р# (CoP 1.6.02) Ссылка на комментарий
Clayman 104 Опубликовано 17 Сентября 2014 Поделиться Опубликовано 17 Сентября 2014 Нет, к сожалению это не то. precondition добавляется все равно только в фразу с id "0", в сам диалог (после тега <dialog id="....) не ставится. Только ручками, так что проблема остается. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти