Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/
naxac 2 595 Опубликовано 29 Мая 2019 Поделиться Опубликовано 29 Мая 2019 @AndreySol, проблема в том, что при AddWindow в такой скролл весь гуй виснет. Можешь привести рабочий пример, может, я что-то не так делаю? Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1266505
lordmuzer 743 Опубликовано 29 Мая 2019 Поделиться Опубликовано 29 Мая 2019 @naxac попробуй вместо AddWindow делать AttachChild Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1266509
naxac 2 595 Опубликовано 29 Мая 2019 Поделиться Опубликовано 29 Мая 2019 @lordmuzer, нет, тогда окно не добавится в скроллбар, а просто статически приаттачится к контролу, т.е. прокрутить его нельзя будет. Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1266514
lordmuzer 743 Опубликовано 29 Мая 2019 Поделиться Опубликовано 29 Мая 2019 (изменено) Точно, туплю. Как раз для CUIScrollView нужно делать AddWindow А как именно виснет ? Высота есть у всех UI элементов ? И работает ли если CUIScrollView инитить из xml в таком случае. Изменено 29 Мая 2019 пользователем lordmuzer Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1266515
naxac 2 595 Опубликовано 29 Мая 2019 Поделиться Опубликовано 29 Мая 2019 @lordmuzer, если делать с xml, то всё работает, да. Виснет на том месте, где делаю AddWindow (list, true), по-тихому, без вылета, просто окно не показывается совсем. Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1266533
Norman Eisenherz 354 Опубликовано 29 Мая 2019 Поделиться Опубликовано 29 Мая 2019 Тот же вопрос по счетчику хилок… Потестил оригинальный мод – после 3-й или 4-й загрузки (не важно, один сейв или разные) случается безлоговый вылет. Судя по результатам частичного исключения кода, ошибка все-таки не в таблице, а в выводе статиков. Знаю, что мод написан еще под ТЧ 1.0004 – может, с тех пор что-то поменялось в способе вывода? В текущей версии (Steam 1.0006) повыключал все скриптовые моды, и все равно вылет после нескольких загрузок. Кто-нибудь, попробуйте повесить у себя на апдейт оригинальный мод (hud_med) – случается ли вылет? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1266534
lordmuzer 743 Опубликовано 30 Мая 2019 Поделиться Опубликовано 30 Мая 2019 @naxac если есть возможность - скинь скрипты. Аж интересно стало. У меня в скриптах есть AddWindow - ничего не зависает. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1266665
AndreySol 215 Опубликовано 31 Мая 2019 Поделиться Опубликовано 31 Мая 2019 @naxac Если еще интересно, насчет CUIScrollView, то глянул я в исходники: при скриптовом создании конторла не вызывается метод Init. Соответственно, имеем зависание\вылет при вызове AddWindow. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1266813
Norman Eisenherz 354 Опубликовано 4 Июня 2019 Поделиться Опубликовано 4 Июня 2019 (изменено) Здрасьте. Можно ли проверить наличие открытых диалоговых окон без перебора инфо-поршней ui_…? Видел упоминания о функции level.main_input_receiver, но где бы найти пример ее использования (кроме закрытия текущего окна через GetHolder():start_stop_menu)? Может, просто есть какая-то проверка на отображение HUD? Изменено 4 Июня 2019 пользователем Norman Eisenherz Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1267483
naxac 2 595 Опубликовано 5 Июня 2019 Поделиться Опубликовано 5 Июня 2019 @Norman Eisenherz, проверка того, что все движковые окна закрыты: if level.main_input_receiver() == nil then Цитата проверка на отображение HUD? В X-Ray Extensions для этого есть функция level.has_indicators(). В обычной ТЧ вроде никак не проверить. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1267512
AndrewMor 534 Опубликовано 6 Июня 2019 Поделиться Опубликовано 6 Июня 2019 (изменено) Всем привет, возник вопрос. Спавню скриптово аномалии (всякие Жарки, Электры и прочие). Код спавна: Скрытый текст local obj = alife():create(section, pos, lv, gv) local rad_new_anom = math.random(2,4) create_anom(obj, rad_new_anom, "anom_on) function create_anom(p_obj, rad_anom, mode) local packet = net_packet() p_obj:STATE_Write(packet) local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_u32 = packet:r_s32() local level_vertex_id = packet:r_s32() local object_flags = packet:r_s32() local custom_data = packet:r_stringZ() local story_id = packet:r_s32() local cse_alife_object__unk3_u32 = packet:r_s32() local shape_count = packet:r_u8() for i=1,shape_count do local shape_type = packet:r_u8() if shape_type == 0 then local center = packet:r_vec3() local radius = packet:r_float() else local box = packet:r_matrix() end end local restrictor_type = packet:r_u8() local cse_alife_custom_zone__unk1_f32 = packet:r_float() local cse_alife_custom_zone__unk2_u32 = packet:ru8( _s32() local on_off_mode_enabled_time = packet:r_s32() local on_off_mode_disabled_time = packet:r_s32() local on_off_mode_shift_time = packet:r_s32() local offline_interactive_radius = packet:r_float() local artefact_spawn_places_count = packet:r_u16() local cse_alife_anomalous_zone__unk1_u32 = packet:r_s32() local last_spawn_time_present = packet:r_u8() if packet:r_elapsed() ~= 0 then abort("left=%d", packet:r_elapsed()) end packet:w_u16(game_vertex_id) packet:w_float(cse_alife_object__unk1_f32) packet:w_s32(cse_alife_object__unk2_u32) packet:w_s32(level_vertex_id) packet:w_s32(object_flags) if mode~=nil then custom_data = mode end packet:w_stringZ(custom_data) packet:w_s32(story_id) packet:w_s32(cse_alife_object__unk3_u32) packet:w_u8(1) packet:w_u8(0) local sphere_center = vector() sphere_center:set(0, 0, 0) packet:w_vec3(sphere_center) radius = rad_anom packet:w_float(radius) packet:w_u8(restrictor_type) packet:w_float(cse_alife_custom_zone__unk1_f32) cse_alife_custom_zone__unk2_u32 = bit_not(0) packet:w_s32(cse_alife_custom_zone__unk2_u32) packet:w_s32(on_off_mode_enabled_time) packet:w_s32(on_off_mode_disabled_time) packet:w_s32(on_off_mode_shift_time) packet:w_float(offline_interactive_radius) packet:w_u16(artefact_spawn_places_count) packet:w_s32(cse_alife_anomalous_zone__unk1_u32) packet:w_u8(last_spawn_time_present) p_obj:STATE_Read(packet, packet:w_tell()-packet:r_tell()) return p_obj end Все прекрасно спавнится ( в данном случае в Предбаннике). Но когда дело доходит до радиации, начинается фигня. Радиация спавнится, но почему-то не в Предбаннике, а где-то между Кордоном и Болотами. См. скрин Вот в чем здесь причина? Или Радиацию надо как-то по-другому спавнить? upd: пробовал спавнить аномалии на Свалке - все то же самое. Аномалии спавнятся на Свалке, радиация - между Кордоном и Болотами. Изменено 6 Июня 2019 пользователем AndrewMor Сталкер - наше всё! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1267727
temass 0 Опубликовано 6 Июня 2019 Поделиться Опубликовано 6 Июня 2019 Приветствую всех! Подскажите пожалуйста, как заспавнить чего либо(бочки, мутни, нпс) вокруг ГГ, в радиусе ну скажем 10м.? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1267764
Space.Marine 466 Опубликовано 6 Июня 2019 Поделиться Опубликовано 6 Июня 2019 4 часа назад, temass сказал: как заспавнить чего либо(бочки, мутни, нпс) вокруг ГГ Повелитель Зоны от Shoker-а. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1267786
naxac 2 595 Опубликовано 7 Июня 2019 Поделиться Опубликовано 7 Июня 2019 (изменено) @AndrewMor, радиоактивные зоны относятся к классу cse_alife_anomalous_zone, а разные жарки, электры, воронки и т.д. - это se_zone_anom. Пакеты, соответственно, немного отличаются, у радиации нет последнего поля, которое у тебя зовётся last_spawn_time_present. Может, дело в этом? Поставь проверку перед чтением/записью local last_spawn_time_present if not packet:r_eof() then last_spawn_time_present = packet:r_u8() end ... if last_spawn_time_present then packet:w_u8(last_spawn_time_present) end А ещё вот перед этим p_obj:STATE_Read(packet, packet:w_tell()-packet:r_tell()) Нужно сначала поставить чтение пакета на начало: packet:r_seek(0) Изменено 7 Июня 2019 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1267802
AndrewMor 534 Опубликовано 7 Июня 2019 Поделиться Опубликовано 7 Июня 2019 @naxac, Спасибо, попробую. Сталкер - наше всё! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1267808
AndrewMor 534 Опубликовано 7 Июня 2019 Поделиться Опубликовано 7 Июня 2019 (изменено) @naxac, Попробовал для начала вот это: Нужно сначала поставить чтение пакета на начало: packet:r_seek(0) Радиация спавнится по нужным координатам, но все без исключения аномалии перестают наносить урон. Спавнятся, на детекторе видны, но - пустышки. А вот конструкции if not packet:r_eof() then last_spawn_time_present = packet:r_u8() end ... if last_spawn_time_present then packet:w_u8(last_spawn_time_present) end сработали. Все спавнится и наносит урон, как и задумано. Спасибо за помощь, может еще кому пригодится. Изменено 7 Июня 2019 пользователем AndrewMor 1 Сталкер - наше всё! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1267814
AndreySol 215 Опубликовано 7 Июня 2019 Поделиться Опубликовано 7 Июня 2019 (изменено) @AndrewMor Ты бы лучше, вместо прямой работы с нет-пакетом, использовал какой-нить модуль, ну хотя бы того же Artos'а. Меньше проблем бы было... Изменено 7 Июня 2019 пользователем AndreySol Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1267828
aka_sektor 1 480 Опубликовано 7 Июня 2019 Поделиться Опубликовано 7 Июня 2019 Подскажет кто, что нужно изменить в логике дверей бункера Сидоровича, чтобы они изначально были октрыты? [logic] active = ph_door@locked [ph_door@locked] locked = true snd_open_start = trader_door_unlock on_info = {+esc_trader_can_leave} ph_door@closed %=play_snd(device\door_servomotor)% [ph_door@closed] closed = true locked = false on_use = ph_door@open %-esc_close_door% snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop [ph_door@open] closed = false locked = false on_use = ph_door@closed on_info = {+esc_close_door} ph_door@closed snd_open_start = trader_door_open_start snd_close_start = trader_door_close_start snd_close_stop = trader_door_close_stop - Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1267909
naxac 2 595 Опубликовано 7 Июня 2019 Поделиться Опубликовано 7 Июня 2019 (изменено) @aka_sektor, наверное, имеешь в виду, разблокированы? Тогда так [logic] active = ph_door@closed Изменено 7 Июня 2019 пользователем naxac 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1267912
aka_sektor 1 480 Опубликовано 7 Июня 2019 Поделиться Опубликовано 7 Июня 2019 (изменено) @naxac блин, думал только дверью обойтись, но если её пробежать, голос Сидоровича в башке. Может подскажешь, что в логике Сидоровича изменить, чтобы пропустить туториал? [logic] active = {+esc_trader_hello_played} mob_trader@new_idle1, mob_trader@new_start_wait on_trade = mob_trade@new trade = misc\trade_trader.ltx ; ------------------------------------------------------------------------------------------------------ ; ÑÒÀÐÒ ; ------------------------------------------------------------------------------------------------------ ; Æäåì íåìíîãî [mob_trader@new_start_wait] anim_global = chair_hack_idle on_timer = 5000| mob_trader@new_start_intro1 can_talk = false tip_text = ;Ïîäâèãàåìñÿ ê èãðîêó [mob_trader@new_start_intro1] anim_global = chair_hack_to_desk on_signal = animation_end| mob_trader@new_start_intro2 %+esc_trader_hello_played% can_talk = false tip_text = ;Ïåðâàÿ ôðàçà "ÿ òåáÿ ñïàñ..." [mob_trader@new_start_intro2] anim_global = first_phrase anim_head = first_phrase sound_phrase = trader_monolog1 on_signal = animation_end| mob_trader@new_start_intro3 can_talk = false tip_text = ; Æäåì íåìíîãî, âêëþ÷àåì óïðàâëåíèå [mob_trader@new_start_intro3] anim_global = desk_idle tip = tips_esc_trader_how_to_talk on_info = {=talking} mob_trader@new_idle1 on_timer = 5000 | mob_trader@new_start_intro4 ; Ãîâîðèì âòîðóþ ôðàçó (÷òî ñòîèøü? ïîäõîäè) [mob_trader@new_start_intro4] anim_global = desk_talk anim_head = normal sound_phrase = trader_come_here2 on_signal = sound_phrase_end | mob_trader@new_idle1 ;on_info = {=talking} mob_trader@new_idle1 ; îáðûâàòü ôðàçó on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played% ;---------------------------------- ;------------- Idle --------------- ;---------------------------------- ;Îñíîâíîé idle (1) - çà ñòîëîì [mob_trader@new_idle1] anim_global = desk_idle on_signal = animation_end| {~25} mob_trader@new_idle1_to_idle3, {~50} mob_trader@new_idle1_to_idle5, {~75} mob_trader@new_idle1_to_idle2, mob_trader@new_idle1_to_idle1 on_info = {=talking} mob_trader@new_idle1_to_idle3 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played% on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait ; Idle (2) - ïî äèàãîíàëè [mob_trader@new_idle2] anim_global = diagonal_idle on_signal = animation_end| {~25} mob_trader@new_idle2_to_idle3, {~50} mob_trader@new_idle2_to_idle4, {~75} mob_trader@new_idle2_to_idle1, mob_trader@new_idle2_to_idle2 on_info = {=talking} mob_trader@new_idle2_to_idle3 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played% on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait ; Idle (3) - îòêèíóâøèñü íà ñïèíêó [mob_trader@new_idle3] anim_global = chair_hack_idle on_signal = animation_end| {~30} mob_trader@new_idle3_to_idle2, {~70} mob_trader@new_idle3_to_idle1, mob_trader@new_idle3_to_idle3 on_info = {=talking} mob_trader@new_talking on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played% on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait ; Idle (4) - çà êîìïüþòåðîì [mob_trader@new_idle4] anim_global = compute_idle on_signal = animation_end| {~40} mob_trader@new_idle4_to_idle2, mob_trader@new_idle4_to_idle4 on_info = {=talking} mob_trader@new_idle4_to_idle2 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played% on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait ; Idle (5) - ÷èòàåò [mob_trader@new_idle5] anim_global = listen_idle on_signal = animation_end| {~45} mob_trader@new_idle5_to_idle1, mob_trader@new_idle5_to_idle5 on_info = {=talking} mob_trader@new_idle5_to_idle1 on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played% on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait ;---------------------------------- ;-------- Àâòîïåðåõîäû -------- ;---------------------------------- ; Ñòîë - ñòîë (ïðîìåæóòî÷íàÿ) [mob_trader@new_idle1_to_idle1] anim_global = desk_idle on_signal = animation_end| mob_trader@new_idle1 ; Äèàãîíàëü - äèàãîíàëü (ïðîìåæóòî÷íàÿ) [mob_trader@new_idle2_to_idle2] anim_global = diagonal_idle on_signal = animation_end| mob_trader@new_idle2 ; Ñïèíêà - ñïèíêà (ïðîìåæóòî÷íàÿ) [mob_trader@new_idle3_to_idle3] anim_global = chair_hack_idle on_signal = animation_end| mob_trader@new_idle3 ; Êîìïüþòåð - êîìïüþòåð (ïðîìåæóòî÷íàÿ) [mob_trader@new_idle4_to_idle4] anim_global = compute_idle on_signal = animation_end| mob_trader@new_idle4 ; ×èòàåò - ÷èòàåò (ïðîìåæóòî÷íàÿ) [mob_trader@new_idle5_to_idle5] anim_global = listen_idle on_signal = animation_end| mob_trader@new_idle5 ;---------------------------------- ;----- Ïåðåõîäû ìåæäó idle-ìè ---- ;---------------------------------- ; Äèàãîíàëü - êîìïüþòåð [mob_trader@new_idle2_to_idle4] anim_global = diagonal_to_compute on_signal = animation_end| mob_trader@new_idle4 ; Êîìïüþòåð - äèàãîíàëü [mob_trader@new_idle4_to_idle2] anim_global = compute_idle_to_diagonal on_signal = animation_end| mob_trader@new_idle2 ; Äèàãîíàëü - ñïèíêà [mob_trader@new_idle2_to_idle3] anim_global = diagonal_to_chair_hack on_signal = animation_end| {=talking} mob_trader@new_talking, mob_trader@new_idle3 ; Ñïèíêà - äèàãîíàëü [mob_trader@new_idle3_to_idle2] anim_global = chair_hack_to_diagonal on_signal = animation_end| mob_trader@new_idle2 ; Ñòîë - ñïèíêà [mob_trader@new_idle1_to_idle3] anim_global = desk_to_chair_hack on_signal = animation_end|{=talking} mob_trader@new_talking, mob_trader@new_idle3 ; Ñïèíêà - ñòîë [mob_trader@new_idle3_to_idle1] anim_global = chair_hack_to_desk on_signal = animation_end| mob_trader@new_idle1 ; Ñòîë - äèàãîíàëü [mob_trader@new_idle1_to_idle2] anim_global = desk_to_diagonal on_signal = animation_end| mob_trader@new_idle2 ; Äèàãîíàëü - ñòîë [mob_trader@new_idle2_to_idle1] anim_global = diagonal_to_desk on_signal = animation_end| mob_trader@new_idle1 ; Ñòîë - ÷èòàåò [mob_trader@new_idle1_to_idle5] anim_global = desk_to_listen on_signal = animation_end| mob_trader@new_idle5 ; ×èòàåò - ñòîë [mob_trader@new_idle5_to_idle1] anim_global = listen_to_desk on_signal = animation_end| mob_trader@new_idle1 ;-------------------------------------- ;------------- Ðàçãîâîð --------------- ;-------------------------------------- [mob_trader@new_talking] anim_global = chair_hack_talk anim_head = normal on_info = {!talking} mob_trader@new_idle3 ;-------------------------------------- ;------------ Òîðãîâëÿ ---------------- ;-------------------------------------- [mob_trade@new] anim_global = chair_hack_idle on_info = {=trading =trade_exchanged} mob_trader@new_trade_exchanged on_info2 = {!trading =trade_exchanged} mob_trader@new_trade_good on_info3 = {!trading !trade_exchanged} mob_trader@new_trade_bad [mob_trader@new_trade_bad] ;anim_global = diagonal_talk anim_global = chair_hack_idle anim_head = angry sound_phrase = trader_bad_trade on_signal = sound_phrase_end | mob_trader@new_idle2 on_actor_dist_ge_nvis = 12 | mob_trader@new_wait [mob_trader@new_trade_exchanged] ;anim_global = diagonal_talk anim_global = chair_hack_idle anim_head = normal sound_phrase = trader_exchanged on_signal = sound_phrase_end | mob_trader@new_idle2 on_actor_dist_ge_nvis = 12 | mob_trader@new_wait [mob_trader@new_trade_good] ;anim_global = diagonal_talk anim_global = chair_hack_idle anim_head = good sound_phrase = trader_good_trade on_signal = sound_phrase_end | mob_trader@new_idle2 on_actor_dist_ge_nvis = 12 | mob_trader@new_wait ;------------------------------------- ;---------- Ïðèâåòñòâèÿ -------------- ;------------------------------------- [mob_trader@new_hello] anim_global = hello anim_head = normal sound_phrase = trader_hello_what_have_you_got on_signal = animation_end | mob_trader@new_idle2 [mob_trader@new_bye] on_actor_dist_ge_nvis = 12 |mob_trader@new_wait anim_global = hello anim_head = normal sound_phrase = trader_bye on_signal = animation_end | mob_trader@new_wait [mob_trader@new_wait] anim_global = diagonal_idle_short on_actor_dist_le_nvis = 3 | {-esc_trader_hello_played} mob_trader@new_hello %+esc_trader_hello_played% on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played% on_actor_dist_ge_nvis2 = 12 | %-esc_trader_hello_played -esc_trader_bye_played% Изменено 7 Июня 2019 пользователем aka_sektor - Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/492/#findComment-1267915
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти