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/
Kirgudu 1 328 Опубликовано 12 Ноября 2014 Поделиться Опубликовано 12 Ноября 2014 Снова для тех, кто пользуется модулями от Artos. На этот раз под прицел попали: скрипт «Общие функции» (m_helper) от 28.09.2013 из этого поста; модуль «Универсальные таймеры» (m_timers) от 23.09.2013 из этого поста. В обоих модулях (в m_timers постольку, поскольку этот модуль содержит в себе m_helper) обнаружена и исправлена ошибка, приводившая к вылету при попытке определения типа патронов в стволе и режима стрельбы из подствольника. Какие-либо другие изменения авторского кода не производились. Ссылки на скачивание архивов с исправленной ошибкой: https://yadi.sk/d/HYBcS9iccfWMV - «Общие функции» https://yadi.sk/d/DPa6ZiGscfWeY - «Универсальные таймеры» 2 1 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-890529
Dennis_Chikin 3 665 Опубликовано 13 Ноября 2014 Поделиться Опубликовано 13 Ноября 2014 (изменено) А проверьте-ка меня, кто читать умеет (xr_gulag.script): Первый акт марлезонского балета: function gulag:availJob(job) if job.begin == nil or game.time() - job.begin > job.idle then ... end return false end- если на работу кто-то назначен, у нее есть idle, и этот idle не вышел - возвращается false Второй акт марлезонского балета: function gulag:prepare_available_jobs() local Job_avail = {} for i, job in ipairs( self.Job_avail_in_state ) do if self:availJob( job ) then if not self:availCurrent( job ) or not self.Object_begin_job[job.object] then self:free_obj_and_reinit( job.object ) end table.insert( Job_avail, job ) end end return Job_avail end- если у работы есть таймаут, то если задано idle, и idle не истекло, он здесь не проверяется, и, соотвественно, obj с работы никогда не освобождается.А если idlе не задан или вышел - то когда obj будет освобожден по таймауту, работа попадет в список доступных, и obj тут же снова будет на нее назначен. Так ? А тетьим актом марлезонского балета будет попытка осовободить obj'а с id nil со всех доступных работ, поскольку ЭТОТ obj до них явно еще не дошел. Вопрос: где я не прав, а если прав, то гуманности ли ради ? Изменено 13 Ноября 2014 пользователем Dennis_Chikin Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-891044
7.9 174 Опубликовано 13 Ноября 2014 Поделиться Опубликовано 13 Ноября 2014 (изменено) Нарисовал-бы диаграммой этот "xr_gulag.script", тогда, и не умеющие читать увидели-бы... И вообще, кто какие сталкерские менеджеры хорошо знает - опубликовали-бы их алгоритмы, для "эффективности прогресса". Изменено 13 Ноября 2014 пользователем 7.9 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-891064
Dennis_Chikin 3 665 Опубликовано 15 Ноября 2014 Поделиться Опубликовано 15 Ноября 2014 (изменено) А этим занимаются в очередном, хе-хе, антисоветском подполье. Да, кстати, о птичках: Йож, как известно, птица - гордая. Пока не пнешь - не полетит.Для неписей в офлайне таким магическим пинком являетсяfunction se_smart_terrain:task( obj ) ... return CALifeSmartTerrainTask( self.gulag.ObjectJobPathName[obj.id] ) endПри этом непись рывком перемещается на некое расстояние по-ближе к первой точке пути работы. Откуда оно вообще вызывается, и каким образом оно связано с освобождением/назначением непися на работу, я лично нифига не понял. Но как-то связано. По крайней мере, с частотой.А теперь читаем мой пост выше в части, касающейся, хе-хе, первого акта марлезонского балета. Результат, хе-хе, немного, хе-хе, предсказуем. Изменено 15 Ноября 2014 пользователем Dennis_Chikin 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-891482
Карлан 1 050 Опубликовано 15 Ноября 2014 Поделиться Опубликовано 15 Ноября 2014 (изменено) @Kirgudu, за луа_хелпер могу сказать, что некоторые функции там не дописаны, и некоторые приводят к вылетам, их тоже следует дополнить и/или поправить. Artos сам говорил, что это далеко не окончательный вариант, и каждый в праве править под себя все функции. Кое-что мне у него не нравится и я пишу по своему, т.е... ну неофициальной доработкой этого заниматься как-то глупо. Кто их использует - тот доделает, а кто не использует - тому и не нужно. Так же можно функционал таймеров расширить и т.п. Ошибок таких как у тебя не ловил, за исправления спасибо, заберу. @7.9, у всех типов менеджеров структура одна и та же, пойми один и поймешь все. Такое расписывать - дело не благодарное, а время прогрессов прошло, кто что хотел уже все давно сделали. Изменено 15 Ноября 2014 пользователем Карлан Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-891494
Хемуль36рус 1 790 Опубликовано 16 Ноября 2014 Поделиться Опубликовано 16 Ноября 2014 (изменено) Господа, может кто встречался. Хотел адаптировать свой мод под 6патч. Диалог медеджер у меня не используется. Игра запускается, все работает, в начале сохранения все грузятся, но потом через какое-то время сохранки бьются вот с таким логом. FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...s\s.t.a.l.k.e.r\gamedata\scripts\xr_motivator.script:374: attempt to index a nil value stack trace: у мня это вот такая строка self.npc_script_version = alife():object(self.object:id()).script_version Из-за чего это может быть? Использую проводников, но они есть под 6 патч. Скрипты Сяка используются. Единственное, что здесь может дать такой вылет - отсутствие self.object - что, в общем-то, странно. А скрипт показать (на дропбокс или еще какой ЯД) ? dc Изменено 16 Ноября 2014 пользователем Dennis_Chikin Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-891899
Struck 61 Опубликовано 16 Ноября 2014 Поделиться Опубликовано 16 Ноября 2014 @Хемуль36рус, надо адаптировать мотиватор от 6 патча, там есть разности в сохранениях, поэтому и вылеты при загрузке. так же еще таск менеджер и диалог менеджер. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-891903
Хемуль36рус 1 790 Опубликовано 16 Ноября 2014 Поделиться Опубликовано 16 Ноября 2014 (изменено) Может это.https://www.dropbox.com/s/9xrmf89huigsocm/xr_motivator.script?dl=0 Да, он. Сейчас смотреть буду. Вылет постоянный, или время - от - времени ? Попробуй посмотреть, где что портится: get_console():execute( "load ~ self: ".. ( ( self.object and "ok" ) or "error" ) ) xr_logic.load_obj(self.object, reader) get_console():execute( "load ~ self: ".. ( ( self.object and "ok" ) or "error" ) ) self.npc_script_version = alife():object(self.object:id()).script_version dc Нет, он не то что постоянный, он появляется через некоторое время игры. В начале все нормально и сохранки грузятся. Может что влияет. Есть ремонт из OGSM. Кроме Проводников никаких скриптовых диалогов нет. Извини, я же говорил со скриптами туго, куда прописать этот код нужно, вместо того что в мотиваторе.? Скорее всего - битые сэйвы. Прежде чем разгребать дальше, просто добавляем 2 одинаковых строчки, с выводом в лог: перед попыткой битый сэйв прочитать, и перед той, где собственно вылет. dc Заметил такою вещь. Сохранки начинают биться после того, как выполним квет на нахождение флешки. Вернее как только она попадает к ГГ, сохранки бьются. Сюжет переделан, квест работает нормально на 4 патче. Перед этим квестом брал другой, все было нормально, игра сохранялась и загружалась. Что с этим не так, без понятия. А в логе кроме того что было (вылет), все вроде нормально. Мне Chasi говорил, что адаптировать не получится, а вот почему, не сказал. Возможно он знает, в чем причина. Входим в зону отчуждения... * phase time: 10 ms * phase cmem: 360555 K * [win32]: free[1915088 K], reserved[80212 K], committed[2198940 K] * [ D3D ]: textures[1116343 K] * [x-ray]: crt heap[360227 K], process heap[10703 K], game lua[23780 K], engine lua[158 K], render[5164 K] * [x-ray]: economy: strings[7035 K], smem[35900 K] [16-9] get_xml_name for[game_tutorials.xml] returns [game_tutorials.xml] [16-9] get_xml_name for[ui_credits.xml] returns [ui_credits.xml] [16-9] get_xml_name for[ui_movies.xml] returns [ui_movies.xml] sv destroy object [1768][stalker:esc_factory_bandit_7] [55796] sv destroy object [1776][wpn_iz54:wpn_iz541776] [55796] sv reject. id_parent [1768][stalker:esc_factory_bandit_7] id_entity [1776][wpn_iz54:wpn_iz541776] [55796] sv destroy object [23044][ammo_9x18_fmj:ammo_9x18_fmj23044] [55796] sv reject. id_parent [1768][stalker:esc_factory_bandit_7] id_entity [23044][ammo_9x18_fmj:ammo_9x18_fmj23044] [55796] sv destroy object [1756][stalker:esc_factory_bandit4] [55796] sv destroy object [22295][ammo_9x18_fmj:ammo_9x18_fmj22295] [55796] sv reject. id_parent [1756][stalker:esc_factory_bandit4] id_entity [22295][ammo_9x18_fmj:ammo_9x18_fmj22295] [55796] ! Cannot find saved game ~ self: ok ! Cannot find saved game ~ self: ok ! Cannot find saved game ~ self: ok ! Cannot find saved game ~ self: ok ! Cannot find saved game ~ self: ok ! Cannot find saved game ~ self: ok ! Cannot find saved game ~ self: ok ! Cannot find saved game ~ self: ok ! Cannot find saved game ~ self: ok ! Cannot find saved game ~ self: ok ! Cannot find saved game ~ self: ok ! Cannot find saved game ~ self: ok FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : [error]Arguments : LUA error: ...s\s.t.a.l.k.e.r\gamedata\scripts\xr_motivator.script:375: attempt to index a nil value stack trace: @Dennis_Chikin, вот погляди. Я уже говорил, диалог менеджер не задействован в моде. Таск менеджер тоже.http://rghost.ru/59118436 Изменено 17 Ноября 2014 пользователем Dennis_Chikin Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-891965
Zander_driver 10 348 Опубликовано 16 Ноября 2014 Поделиться Опубликовано 16 Ноября 2014 Может быть я чего то не понимаю, но... вопрос на тему области видимости переменных.был такой код function trader_init(obj, data) local id = obj:id() local ft = function(tb) local oid = tb[1] local dtt = tb[2] local tobj = level.object_by_id(oid) if tobj then xr_logic.pstor_store(tobj, "assort", data) else end end events.add_fn1000(ft, {id, data}, nil) end На вход подается клиентский объект нпс, и некая строка. events.add_fn1000(ft, {id, data}, nil) -- это вызов функции ft через 1000 мс. В качестве аргумента ей будет передан второй аргумент этой, т.е. {id, data}Смотрим внимательно на структуру функции ft. входной аргумент у нее называется tb. А в пстор непися записывается - data. Которой здесь вроде бы взяться совершенно неоткуда. Это опечатка. Странный и непонятный лично мне факт заключается в том, что это работало. Поданные на вход trader_init данные в аргументе дата, оказывались со временем записаны в пстор этого нпс, и в последующем успешно оттуда читались. Потом я случайно эту неувязку заметил - поменял код так function trader_init(obj, data) local id = obj:id() local ft = function(tb) local oid = tb[1] local dtt = tb[2] local tobj = level.object_by_id(oid) if tobj then xr_logic.pstor_store(tobj, "assort", dtt) else end end events.add_fn1000(ft, {id, data}, nil) end Все так же все работает... то что подается в аргумент data, нигде во всех скриптах более не встречалось и не встречается. Если во втором варианте код вполне работоспособен, то вот почему он работал в 1-м варианте - я не понимаю... Есть этому какое то объяснение? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-892040
Dennis_Chikin 3 665 Опубликовано 17 Ноября 2014 Поделиться Опубликовано 17 Ноября 2014 function trader_init(obj, data) xr_logic.pstor_store(tobj, "assort", data) Ну вот оно и записалось. Или я чего-то не понимаю ? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-892042
Zander_driver 10 348 Опубликовано 17 Ноября 2014 Поделиться Опубликовано 17 Ноября 2014 (изменено) Вторая строка находится внутри локально объявленной функции ft. И эту функцию как аргумент передали другой функции, чтобы там уже ее вызвать. Внутри этой ft - data никак не объявлена. Она (ft) что, прихватывает с собой все namespace того модуля, в котором была локально объявлена внутри другой функции? Изменено 17 Ноября 2014 пользователем Zander_driver Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-892043
Desertir 202 Опубликовано 17 Ноября 2014 Поделиться Опубликовано 17 Ноября 2014 (изменено) Lua поддерживает замыкания. Я бы удивился, если бы первый вариант не работал. Вполне нормальная ситуация, как и передача функции в качестве аргумента, у кого то это вызывает непонимание. Так что в таких ситуациях (когда мы создаем функцию гдето в другой функции и т.п.) использовать замыкания самое то. Одно из назначений замыканий - асинхронный код. Т.е. мы вызываем функцию, в нее передаем т.н. коллбэк (или каллбэк, как угодно) - другую функцию, но мы не можем с уверенностью сказать, в какой момент времени будет вызван этот коллбэк. При этом мы можем использовать замыкания - использовать в коллбэке переменные из области видимости, где он сам создается. Весьма банальный пример есть на википедии. Изменено 17 Ноября 2014 пользователем Desertir 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-892054
Zander_driver 10 348 Опубликовано 17 Ноября 2014 Поделиться Опубликовано 17 Ноября 2014 А если я делаю так class "my_SMALL_class" ... function my_SMALL_class:Get_f() local f = function() return self end return f end Потом где-нибудь вызову у объекта моего класса метод Get_f, полученную функцию куда-то там передам, потом ее вызову опосля local my_obj = my_script.my_SMALL_class() local my_F = my_obj:Get_f() local x = my_F() - она мне вернет ссылку на этот объект класса, так чтоли? Вроде такое не работало насколько я помню... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-892213
Barmolini 1 Опубликовано 17 Ноября 2014 Поделиться Опубликовано 17 Ноября 2014 Вроде как да. До тех пор, пока будет существовать ссылка на переменную f - будет доступен объект в котором этот f был создан. Кстати, можно и так вызывать функцию f: local my_obj = my_script.my_SMALL_class() local my_F = my_obj:Get_f()() 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-892216
Desertir 202 Опубликовано 17 Ноября 2014 Поделиться Опубликовано 17 Ноября 2014 @Zander_driver, у меня все прекрасно сработало. class "my_SMALL_class" function my_SMALL_class:__init() self.test_field = 5 end function my_SMALL_class:Get_f() local f = function() return self end return f end local con = get_console() local my_obj = my_SMALL_class() local my_F = my_obj:Get_f() local x = my_F() con:execute("~~~"..tostring(x.test_field)) Код весьма странный, можно вполне замкнуть my_obj. Кстати, я считал, что не будет работать, пока не вспомнил, что это луабинд, и по факту селф это переменная. В яваскрипте например такое сканает только с объявлением переменной или с выкрутасами типа apply или bind, но не суть. Сборщик мусора вполне сам позаботится про замкнутые переменные. Это же не объект луа, а юзердата. Луа выполняет функцию "удерживания ссылки на замкнутую переменную". Но если по ссылке записать невесть что (из двигла) и пытаться чтото потом сделать с полученной переменной (метод вызвать), получится вылет, и скрипты тут ни при чем. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-892224
Хемуль36рус 1 790 Опубликовано 17 Ноября 2014 Поделиться Опубликовано 17 Ноября 2014 (изменено) @Dennis_Chikin, sistem исправлен, там вроде в строке [script] current_server_entity_version = 6 вместо 6 прописано 7 и больше ничего. Пробовал загрузит на 4 патче, вообще не понятно что за лог. * Detected CPU: GenuineIntel P3 family, F6/M14/S5, 2675.00 mhz, 54-clk 'rdtsc' * CPU Features: RDTSC, MMX, SSE, SSE2Initializing File System...using fs-ltx fsgame.ltx--found external arch mp_military_2.xdb0FS: 41258 files cached, 5519Kb memory used.Init FileSystem 1.054415 sec'xrCore' build 3116, Aug 15 2007Initializing Engine...Executing config-script "user.ltx"...[c:\users\public\documents\mody\user.ltx] successfully loaded.Starting INPUT device...Loading DLL: xrRender_R2.dllLoading DLL: xrGame.dll* [win32]: free[4068860 K], reserved[52944 K], committed[72436 K]* [ D3D ]: textures[0 K]* [x-ray]: crt heap[9486 K], process heap[670 K], game lua[0 K], engine lua[0 K], render[0 K]* [x-ray]: economy: strings[3176 K], smem[0 K]Executing config-script "f:\stalker4\gamedata\config\default_controls.ltx"...! cant convert dik_name for dik[16], prop=[! cant convert dik_name for dik[17], prop=[! cant convert dik_name for dik[18], prop=[! cant convert dik_name for dik[19], prop=[! cant convert dik_name for dik[20], prop=[! cant convert dik_name for dik[21], prop=[! cant convert dik_name for dik[22], prop=[! cant convert dik_name for dik[23], prop=[! cant convert dik_name for dik[24], prop=[! cant convert dik_name for dik[25], prop=[! cant convert dik_name for dik[26], prop=[! cant convert dik_name for dik[27], prop=[! cant convert dik_name for dik[30], prop=[! cant convert dik_name for dik[31], prop=[! cant convert dik_name for dik[32], prop=[! cant convert dik_name for dik[33], prop=[! cant convert dik_name for dik[34], prop=[! cant convert dik_name for dik[35], prop=[! cant convert dik_name for dik[36], prop=[! cant convert dik_name for dik[37], prop=[! cant convert dik_name for dik[38], prop=[! cant convert dik_name for dik[39], prop=[! cant convert dik_name for dik[40], prop=[! cant convert dik_name for dik[41], prop=[! cant convert dik_name for dik[44], prop=[! cant convert dik_name for dik[45], prop=[! cant convert dik_name for dik[46], prop=[! cant convert dik_name for dik[47], prop=[! cant convert dik_name for dik[48], prop=[! cant convert dik_name for dik[49], prop=[! cant convert dik_name for dik[50], prop=[! cant convert dik_name for dik[51], prop=[! cant convert dik_name for dik[52], prop=[! cant convert dik_name for dik[144], prop=[[f:\stalker4\gamedata\config\default_controls.ltx] successfully loaded.Executing config-script "user.ltx"...Executing config-script "f:\stalker4\gamedata\config\rspec_extreme.ltx"...! Unknown command: r__dtex_range! Unknown command: r__ssa_glod_end! Unknown command: r__ssa_glod_start! Unknown command: r__wallmark_ttl! Unknown command: rs_detail! Unknown command: rs_skeleton_update! Unknown command: vid_bpp[f:\stalker4\gamedata\config\rspec_extreme.ltx] successfully loaded.Executing config-script "f:\stalker4\gamedata\config\default_controls.ltx"...[f:\stalker4\gamedata\config\default_controls.ltx] successfully loaded.[c:\users\public\documents\mody\user.ltx] successfully loaded.SOUND: OpenAL: enumerate devices...SOUND: OpenAL: EnumerationExtension Presentdevices Generic SoftwareSOUND: OpenAL: system default SndDevice name is Generic SoftwareSOUND: OpenAL: All available devices:1. Generic Software, Spec Version 1.1 (default)SOUND: OpenAL: SelectBestDevice is Generic Software 1.1SOUND: OpenAL: Required device: Generic Software. Created device: Generic Software.* sound: EAX 2.0 extension: absent* sound: EAX 2.0 deferred: absent* sound : cache: 65538 kb, 7609 lines, 8820 bplStarting RENDER device...* GPU [vendor:10DE]-[device:11C0]: NVIDIA GeForce GTX 660* GPU driver: 9.18.13.2018* CREATE: DeviceREF: 1* Vertex Processor: PURE HARDWARE* Texture memory: 4027 M* DDI-level: 9.0* GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30)* GPU vertex cache: unrecognized, 16* DVB created: 4096K* DIB created: 512K! Version conflict in shader 'def_shaders\def_aref'! Version conflict in shader 'def_shaders\def_aref_v'! Version conflict in shader 'def_shaders\def_trans'! Version conflict in shader 'def_shaders\def_trans_v'! Version conflict in shader 'def_shaders\def_trans_v_tuchi'! Version conflict in shader 'def_shaders\lod_old'! Renderer doesn't support blender 'effects\blur'! Renderer doesn't support blender 'effects\screen_gray'! Renderer doesn't support blender 'effects\shadow_world'! Version conflict in shader 'effects\watertest-1'! Version conflict in shader 'flora\leaf'! Version conflict in shader 'flora\leaf_lm'! Version conflict in shader 'flora\leaf_sux'! Version conflict in shader 'flora\trunk_lm'! Renderer doesn't support blender 'models\blur'! Renderer doesn't support blender 'test\bbbbbbbbb'count of .thm files=660load time=70 ms* NULLRT supported* ...and used* HWDST/PCF supported and used* NV-DBT supported and used- r__tf_aniso 6- r2_tf_mipbias 0.Starting engine...[16-9] get_xml_name for[ui_mp_icon_rank.xml] returns [ui_mp_icon_rank.xml][16-9] get_xml_name for[ui_icons_map.xml] returns [ui_icons_map.xml][16-9] get_xml_name for[ui_common.xml] returns [ui_common.xml][16-9] get_xml_name for[ui_old_textures.xml] returns [ui_old_textures.xml][16-9] get_xml_name for[ui_ingame.xml] returns [ui_ingame.xml][16-9] get_xml_name for[ui_map_description.xml] returns [ui_map_description.xml][16-9] get_xml_name for[ui_models_multiplayer.xml] returns [ui_models_multiplayer.xml][16-9] get_xml_name for[ui_team_logo.xml] returns [ui_team_logo.xml][16-9] get_xml_name for[ui_team_logo_small.xml] returns [ui_team_logo_small.xml][16-9] get_xml_name for[ui_mainmenu.xml] returns [ui_mainmenu.xml][16-9] get_xml_name for[ui_mp_main.xml] returns [ui_mp_main.xml][16-9] get_xml_name for[ui_statistics.xml] returns [ui_statistics.xml][16-9] get_xml_name for[ui_hud.xml] returns [ui_hud.xml][16-9] get_xml_name for[ui_numpad.xml] returns [ui_numpad.xml][16-9] get_xml_name for[ui_inventory.xml] returns [ui_inventory.xml][16-9] get_xml_name for[ui_inventory2.xml] returns [ui_inventory2.xml][16-9] get_xml_name for[ui_iconstotal.xml] returns [ui_iconstotal.xml][16-9] get_xml_name for[ui_pda.xml] returns [ui_pda.xml][16-9] get_xml_name for[ui_icons_npc.xml] returns [ui_icons_npc.xml][16-9] get_xml_name for[ui_npc_monster.xml] returns [ui_npc_monster.xml][16-9] get_xml_name for[ui_npc_unique.xml] returns [ui_npc_unique.xml][16-9] get_xml_name for[ui_buy_menu.xml] returns [ui_buy_menu.xml][16-9] get_xml_name for[ui_asus_intro.xml] returns [ui_asus_intro.xml][16-9] get_xml_name for[amk_pda.xml] returns [amk_pda.xml][16-9] get_xml_name for[amk_pda_blank.xml] returns [amk_pda_blank.xml][16-9] get_xml_name for[amk_ui_base.xml] returns [amk_ui_base.xml][16-9] get_xml_name for[color_defs.xml] returns [color_defs.xml][16-9] get_xml_name for[hint_item.xml] returns [hint_item.xml]Loading DLL: xrGameSpy.dll[16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[ui_mm_main.xml] returns [ui_mm_main.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[ui_mm_load_dlg.xml] returns [ui_mm_load_dlg.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml]* DVB created: 4096K* DIB created: 512K- r__tf_aniso 6- r2_tf_mipbias 0.* GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30)* GPU vertex cache: recognized, 24*** RESET [387 ms]"f:\stalker4\bin\xr_3da.exe" -nointro* phase time: 0 ms* phase cmem: 126840 KСобираюсь в дорогу...Loading objects...Loading models...* [prefetch] time: 13075 ms* [prefetch] memory: 114965Kb* phase time: 13098 ms* phase cmem: 232473 KНАЧАЛО...* phase time: 51 ms* phase cmem: 221076 KЗона наполняется жизнью...* phase time: 7 ms* phase cmem: 221076 KГотов выйти из "t.sav"...* Loading spawn registry...* 11119 spawn points are successfully loaded* Loading objects...* 20322 objects are successfully loaded[16-9] get_xml_name for[map_spots.xml] returns [map_spots.xml][16-9] get_xml_name for[map_spots_escape.xml] returns [map_spots_escape.xml][16-9] get_xml_name for[map_spots_garbage.xml] returns [map_spots_garbage.xml][16-9] get_xml_name for[map_spots_agroprom.xml] returns [map_spots_agroprom.xml][16-9] get_xml_name for[map_spots_darkvalley.xml] returns [map_spots_darkvalley.xml][16-9] get_xml_name for[map_spots_bar.xml] returns [map_spots_bar.xml][16-9] get_xml_name for[map_spots_military.xml] returns [map_spots_military.xml][16-9] get_xml_name for[map_spots_radar.xml] returns [map_spots_radar.xml][16-9] get_xml_name for[map_spots_mp.xml] returns [map_spots_mp.xml][16-9] get_xml_name for[map_spots_relations.xml] returns [map_spots_relations.xml][16-9] get_xml_name for[map_spots_lchangers.xml] returns [map_spots_lchangers.xml]* Game t is successfully loaded from file 'c:\users\public\documents\mody\savedgames\t.sav' (2.505s)* phase time: 2504 ms* phase cmem: 256614 KКонтакт...MaxPlayers = 32* phase time: 79 ms* phase cmem: 256630 KКлиент: Соединение с localhost...Player not found* client : connection accepted - <>* phase time: 28 ms* phase cmem: 256654 KОткрытие потока...* phase time: 25 ms* phase cmem: 256654 KПора выходить...* phase time: 2746 ms* phase cmem: 316508 KПроверяю снарягу...* phase time: 424 ms* phase cmem: 321059 KПроверяю оружие...* [Loading VB] 65532 verts, 2047 Kb* [Loading VB] 65530 verts, 2047 Kb* [Loading VB] 65531 verts, 2047 Kb* [Loading VB] 65532 verts, 2047 Kb* [Loading VB] 60327 verts, 1885 Kb* [Loading VB] 65531 verts, 2047 Kb* [Loading VB] 65534 verts, 2047 Kb* [Loading VB] 65535 verts, 2047 Kb* [Loading VB] 65534 verts, 2047 Kb* [Loading VB] 65534 verts, 2047 Kb* [Loading VB] 65534 verts, 2047 Kb* [Loading VB] 46354 verts, 1448 Kb* [Loading VB] 65533 verts, 2047 Kb* [Loading VB] 65535 verts, 2047 Kb* [Loading VB] 65535 verts, 2047 Kb* [Loading VB] 65530 verts, 2047 Kb* [Loading VB] 65532 verts, 2047 Kb* [Loading VB] 65535 verts, 2047 Kb* [Loading VB] 53153 verts, 1661 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 670515 indices, 1309 Kb* [Loading VB] 65533 verts, 767 Kb* [Loading VB] 65533 verts, 767 Kb* [Loading VB] 65535 verts, 767 Kb* [Loading VB] 65535 verts, 767 Kb* [Loading VB] 65535 verts, 767 Kb* [Loading VB] 65534 verts, 767 Kb* [Loading VB] 65528 verts, 767 Kb* [Loading VB] 16089 verts, 188 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048572 indices, 2047 Kb* [Loading IB] 784818 indices, 1532 Kb* phase time: 890 ms* phase cmem: 321468 KСобираю вещи...* phase time: 1970 ms* phase cmem: 325493 KПрисяду на дорожку...* [DETAILS] VertexConsts(256), Batch(61)* [DETAILS] 40687 v(20), 26352 p* [DETAILS] Batch(61), VB(794K), IB(154K)* phase time: 134 ms* phase cmem: 325503 KЗагрузка секторов и порталов...* Loading HOM: f:\stalker4\gamedata\levels\l01_escape\level.hom* phase time: 27 ms* phase cmem: 325696 KГотовлюсь к походу...- Loading music tracks from 'l01_escape_musics'...* phase time: 190 ms* phase cmem: 325730 KЯ готов......- Game configuring : Started- Game configuring : Finished[16-9] get_xml_name for[maingame.xml] returns [maingame_16.xml][16-9] get_xml_name for[zone_map.xml] returns [zone_map_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[car_panel.xml] returns [car_panel_16.xml][16-9] get_xml_name for[motion_icon.xml] returns [motion_icon_16.xml][16-9] get_xml_name for[messages_window.xml] returns [messages_window.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[ui_custom_msgs.xml] returns [ui_custom_msgs.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[inventory_new.xml] returns [inventory_new_16.xml][16-9] get_xml_name for[inventory_item.xml] returns [inventory_item_16.xml][16-9] get_xml_name for[af_params_16.xml] returns [af_params_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[inventory_new.xml] returns [inventory_new_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[pda.xml] returns [pda.xml][16-9] get_xml_name for[pda_map.xml] returns [pda_map.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[hint_item.xml] returns [hint_item.xml][16-9] get_xml_name for[pda_contacts_new.xml] returns [pda_contacts_new.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[events_new.xml] returns [events_new.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[news.xml] returns [news.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[encyclopedia.xml] returns [encyclopedia.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[actor_statistic.xml] returns [actor_statistic.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[pda_dialog_character.xml] returns [pda_dialog_character_16.xml][16-9] get_xml_name for[stalkers_ranking.xml] returns [stalkers_ranking.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[stalkers_ranking_character.xml] returns [stalkers_ranking_character_16.xml][16-9] get_xml_name for[pda_events.xml] returns [pda_events.xml][16-9] get_xml_name for[pda_events.xml] returns [pda_events.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[hint_item.xml] returns [hint_item.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[job_item.xml] returns [job_item.xml][16-9] get_xml_name for[talk.xml] returns [talk_16.xml][16-9] get_xml_name for[trade_character.xml] returns [trade_character_16.xml][16-9] get_xml_name for[trade_character.xml] returns [trade_character_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[trade.xml] returns [trade_16.xml][16-9] get_xml_name for[trade_character.xml] returns [trade_character_16.xml][16-9] get_xml_name for[trade_character.xml] returns [trade_character_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[trade_item.xml] returns [trade_item_16.xml][16-9] get_xml_name for[af_params_16.xml] returns [af_params_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[carbody_new.xml] returns [carbody_new_16.xml][16-9] get_xml_name for[trade_character.xml] returns [trade_character_16.xml][16-9] get_xml_name for[trade_character.xml] returns [trade_character_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[carbody_item.xml] returns [carbody_item_16.xml][16-9] get_xml_name for[af_params_16.xml] returns [af_params_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[inventory_new.xml] returns [inventory_new_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml]* phase time: 576 ms* phase cmem: 334571 KЗакурю и в путь......* t-report - base: 2192, 1063952 K* t-report - lmap: 7, 7168 K* phase time: 10148 ms* phase cmem: 334573 KВходим в зону отчуждения...* phase time: 76 ms* phase cmem: 334573 K* [win32]: free[2161916 K], reserved[95900 K], committed[1936424 K]* [ D3D ]: textures[1071121 K]* [x-ray]: crt heap[334572 K], process heap[12244 K], game lua[24029 K], engine lua[148 K], render[0 K]* [x-ray]: economy: strings[6064 K], smem[35100 K][16-9] get_xml_name for[game_tutorials.xml] returns [game_tutorials.xml][16-9] get_xml_name for[ui_credits.xml] returns [ui_credits.xml][16-9] get_xml_name for[ui_movies.xml] returns [ui_movies.xml]FATAL ERROR[error]Expression : hFile>0[error]Function : FileDownload[error]File : E:\stalker\patch_1_0004\xrCore\FS.cpp[error]Line : 106[error]Description : f:\stalker4\gamedata\config\stack trace: вот с 6 пачта, две загрузки и вылет * Detected CPU: GenuineIntel P3 family, F6/M14/S5, 2675.00 mhz, 24-clk 'rdtsc'* CPU Features: RDTSC, MMX, SSE, SSE2Initializing File System...using fs-ltx fsgame.ltxFS: 41488 files cached, 6033Kb memory used.Init FileSystem 1.082964 sec'xrCore' build 3312, Feb 27 2008Initializing Engine...Executing config-script "user.ltx"...[c:\users\public\documents\stalker-shoc\user.ltx] successfully loaded.Starting INPUT device...Loading DLL: xrRender_R2.dllLoading DLL: xrGame.dll* [win32]: free[4068752 K], reserved[52928 K], committed[72560 K]* [ D3D ]: textures[0 K]* [x-ray]: crt heap[9626 K], process heap[671 K], game lua[0 K], engine lua[0 K], render[0 K]* [x-ray]: economy: strings[3176 K], smem[0 K]Executing config-script "d:\games\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx"...! cant convert dik_name for dik[16], prop=[! cant convert dik_name for dik[17], prop=[! cant convert dik_name for dik[18], prop=[! cant convert dik_name for dik[19], prop=[! cant convert dik_name for dik[20], prop=[! cant convert dik_name for dik[21], prop=[! cant convert dik_name for dik[22], prop=[! cant convert dik_name for dik[23], prop=[! cant convert dik_name for dik[24], prop=[! cant convert dik_name for dik[25], prop=[! cant convert dik_name for dik[26], prop=[! cant convert dik_name for dik[27], prop=[! cant convert dik_name for dik[30], prop=[! cant convert dik_name for dik[31], prop=[! cant convert dik_name for dik[32], prop=[! cant convert dik_name for dik[33], prop=[! cant convert dik_name for dik[34], prop=[! cant convert dik_name for dik[35], prop=[! cant convert dik_name for dik[36], prop=[! cant convert dik_name for dik[37], prop=[! cant convert dik_name for dik[38], prop=[! cant convert dik_name for dik[39], prop=[! cant convert dik_name for dik[40], prop=[! cant convert dik_name for dik[41], prop=[! cant convert dik_name for dik[44], prop=[! cant convert dik_name for dik[45], prop=[! cant convert dik_name for dik[46], prop=[! cant convert dik_name for dik[47], prop=[! cant convert dik_name for dik[48], prop=[! cant convert dik_name for dik[49], prop=[! cant convert dik_name for dik[50], prop=[! cant convert dik_name for dik[51], prop=[! cant convert dik_name for dik[52], prop=[! cant convert dik_name for dik[144], prop=[[d:\games\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx] successfully loaded.Executing config-script "user.ltx"...Executing config-script "d:\games\s.t.a.l.k.e.r\gamedata\config\rspec_extreme.ltx"...! Unknown command: r__dtex_range! Unknown command: r__ssa_glod_end! Unknown command: r__ssa_glod_start! Unknown command: r__wallmark_ttl! Unknown command: rs_detail! Unknown command: rs_skeleton_update! Unknown command: vid_bpp[d:\games\s.t.a.l.k.e.r\gamedata\config\rspec_extreme.ltx] successfully loaded.Executing config-script "d:\games\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx"...[d:\games\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx] successfully loaded.[c:\users\public\documents\stalker-shoc\user.ltx] successfully loaded.SOUND: OpenAL: enumerate devices...SOUND: OpenAL: EnumerationExtension Presentdevices Generic SoftwareSOUND: OpenAL: system default SndDevice name is Generic SoftwareSOUND: OpenAL: All available devices:1. Generic Software, Spec Version 1.1 (default)SOUND: OpenAL: SelectBestDevice is Generic Software 1.1SOUND: OpenAL: Required device: Generic Software. Created device: Generic Software.* sound: EAX 2.0 extension: present* sound: EAX 2.0 deferred: present* sound : cache: 65538 kb, 7609 lines, 8820 bplStarting RENDER device...* GPU [vendor:10DE]-[device:11C0]: NVIDIA GeForce GTX 660* GPU driver: 9.18.13.2018* CREATE: DeviceREF: 1* Vertex Processor: PURE HARDWARE* Texture memory: 4027 M* DDI-level: 9.0* GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30)* GPU vertex cache: unrecognized, 16* DVB created: 6144K* DIB created: 512K! Version conflict in shader 'def_shaders\def_aref'! Version conflict in shader 'def_shaders\def_aref_v'! Version conflict in shader 'def_shaders\def_trans'! Version conflict in shader 'def_shaders\def_trans_v'! Version conflict in shader 'def_shaders\def_trans_v_tuchi'! Version conflict in shader 'def_shaders\lod_old'! Renderer doesn't support blender 'effects\blur'! Renderer doesn't support blender 'effects\screen_gray'! Renderer doesn't support blender 'effects\shadow_world'! Version conflict in shader 'effects\watertest-1'! Version conflict in shader 'flora\leaf'! Version conflict in shader 'flora\leaf_lm'! Version conflict in shader 'flora\leaf_sux'! Version conflict in shader 'flora\trunk_lm'! Renderer doesn't support blender 'models\blur'! Renderer doesn't support blender 'test\bbbbbbbbb'count of .thm files=657load time=68 ms* NULLRT supported* ...and used* HWDST/PCF supported and used* NV-DBT supported and used- r__tf_aniso 6- r2_tf_mipbias 0.Starting engine...[16-9] get_xml_name for[ui_mp_icon_rank.xml] returns [ui_mp_icon_rank.xml][16-9] get_xml_name for[ui_icons_map.xml] returns [ui_icons_map.xml][16-9] get_xml_name for[ui_common.xml] returns [ui_common.xml][16-9] get_xml_name for[ui_old_textures.xml] returns [ui_old_textures.xml][16-9] get_xml_name for[ui_ingame.xml] returns [ui_ingame.xml][16-9] get_xml_name for[ui_map_description.xml] returns [ui_map_description.xml][16-9] get_xml_name for[ui_models_multiplayer.xml] returns [ui_models_multiplayer.xml][16-9] get_xml_name for[ui_team_logo.xml] returns [ui_team_logo.xml][16-9] get_xml_name for[ui_team_logo_small.xml] returns [ui_team_logo_small.xml][16-9] get_xml_name for[ui_mainmenu.xml] returns [ui_mainmenu.xml][16-9] get_xml_name for[ui_mp_main.xml] returns [ui_mp_main.xml][16-9] get_xml_name for[ui_statistics.xml] returns [ui_statistics.xml][16-9] get_xml_name for[ui_hud.xml] returns [ui_hud.xml][16-9] get_xml_name for[ui_numpad.xml] returns [ui_numpad.xml][16-9] get_xml_name for[ui_inventory.xml] returns [ui_inventory.xml][16-9] get_xml_name for[ui_inventory2.xml] returns [ui_inventory2.xml][16-9] get_xml_name for[ui_iconstotal.xml] returns [ui_iconstotal.xml][16-9] get_xml_name for[ui_pda.xml] returns [ui_pda.xml][16-9] get_xml_name for[ui_icons_npc.xml] returns [ui_icons_npc.xml][16-9] get_xml_name for[ui_npc_monster.xml] returns [ui_npc_monster.xml][16-9] get_xml_name for[ui_npc_unique.xml] returns [ui_npc_unique.xml][16-9] get_xml_name for[ui_buy_menu.xml] returns [ui_buy_menu.xml][16-9] get_xml_name for[ui_asus_intro.xml] returns [ui_asus_intro.xml][16-9] get_xml_name for[amk_pda.xml] returns [amk_pda.xml][16-9] get_xml_name for[amk_pda_blank.xml] returns [amk_pda_blank.xml][16-9] get_xml_name for[amk_ui_base.xml] returns [amk_ui_base.xml][16-9] get_xml_name for[color_defs.xml] returns [color_defs.xml][16-9] get_xml_name for[hint_item.xml] returns [hint_item.xml]Loading DLL: xrGameSpy.dll[16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml][16-9] get_xml_name for[ui_mm_main.xml] returns [ui_mm_main.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[ui_mm_load_dlg.xml] returns [ui_mm_load_dlg.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml]* DVB created: 6144K* DIB created: 512K- r__tf_aniso 6- r2_tf_mipbias 0.* GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30)* GPU vertex cache: recognized, 24*** RESET [1496 ms]"d:\games\s.t.a.l.k.e.r\bin\xr_3da.exe" -nointro* phase time: 0 ms* phase cmem: 128478 KСобираюсь в дорогу...Loading objects...Loading models...* [prefetch] time: 13908 ms* [prefetch] memory: 112184Kb* phase time: 13930 ms* phase cmem: 231330 KНАЧАЛО...* phase time: 62 ms* phase cmem: 219917 KЗона наполняется жизнью...* phase time: 7 ms* phase cmem: 219917 KГотов выйти из "t.sav"...* Loading spawn registry...* 11119 spawn points are successfully loaded* Loading objects...* 20322 objects are successfully loaded[16-9] get_xml_name for[map_spots.xml] returns [map_spots.xml][16-9] get_xml_name for[map_spots_escape.xml] returns [map_spots_escape.xml][16-9] get_xml_name for[map_spots_garbage.xml] returns [map_spots_garbage.xml][16-9] get_xml_name for[map_spots_agroprom.xml] returns [map_spots_agroprom.xml][16-9] get_xml_name for[map_spots_darkvalley.xml] returns [map_spots_darkvalley.xml][16-9] get_xml_name for[map_spots_bar.xml] returns [map_spots_bar.xml][16-9] get_xml_name for[map_spots_military.xml] returns [map_spots_military.xml][16-9] get_xml_name for[map_spots_radar.xml] returns [map_spots_radar.xml][16-9] get_xml_name for[map_spots_mp.xml] returns [map_spots_mp.xml][16-9] get_xml_name for[map_spots_relations.xml] returns [map_spots_relations.xml][16-9] get_xml_name for[map_spots_lchangers.xml] returns [map_spots_lchangers.xml]* Game t is successfully loaded from file 'c:\users\public\documents\stalker-shoc\savedgames\t.sav' (2.111s)* phase time: 2111 ms* phase cmem: 256162 KКонтакт...MaxPlayers = 32* phase time: 21 ms* phase cmem: 256194 KКлиент: Соединение с localhost...# Player not found. New player created.* client : connection accepted - <>* phase time: 12 ms* phase cmem: 256218 KОткрытие потока...* phase time: 9 ms* phase cmem: 256218 KПора выходить...* phase time: 2450 ms* phase cmem: 316057 KПроверяю снарягу...* phase time: 280 ms* phase cmem: 318072 KПроверяю оружие...* [Loading VB] 65532 verts, 2047 Kb* [Loading VB] 65530 verts, 2047 Kb* [Loading VB] 65531 verts, 2047 Kb* [Loading VB] 65532 verts, 2047 Kb* [Loading VB] 60327 verts, 1885 Kb* [Loading VB] 65531 verts, 2047 Kb* [Loading VB] 65534 verts, 2047 Kb* [Loading VB] 65535 verts, 2047 Kb* [Loading VB] 65534 verts, 2047 Kb* [Loading VB] 65534 verts, 2047 Kb* [Loading VB] 65534 verts, 2047 Kb* [Loading VB] 46354 verts, 1448 Kb* [Loading VB] 65533 verts, 2047 Kb* [Loading VB] 65535 verts, 2047 Kb* [Loading VB] 65535 verts, 2047 Kb* [Loading VB] 65530 verts, 2047 Kb* [Loading VB] 65532 verts, 2047 Kb* [Loading VB] 65535 verts, 2047 Kb* [Loading VB] 53153 verts, 1661 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 670515 indices, 1309 Kb* [Loading VB] 65533 verts, 767 Kb* [Loading VB] 65533 verts, 767 Kb* [Loading VB] 65535 verts, 767 Kb* [Loading VB] 65535 verts, 767 Kb* [Loading VB] 65535 verts, 767 Kb* [Loading VB] 65534 verts, 767 Kb* [Loading VB] 65528 verts, 767 Kb* [Loading VB] 16089 verts, 188 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048575 indices, 2047 Kb* [Loading IB] 1048572 indices, 2047 Kb* [Loading IB] 784818 indices, 1532 Kb* phase time: 52 ms* phase cmem: 318512 KСобираю вещи...* phase time: 1919 ms* phase cmem: 322432 KПрисяду на дорожку...* [DETAILS] VertexConsts(256), Batch(61)* [DETAILS] 40687 v(20), 26352 p* [DETAILS] Batch(61), VB(794K), IB(154K)* phase time: 42 ms* phase cmem: 322474 KЗагрузка секторов и порталов...* Loading HOM: d:\games\s.t.a.l.k.e.r\gamedata\levels\l01_escape\level.hom* phase time: 15 ms* phase cmem: 322667 KГотовлюсь к походу...- Loading music tracks from 'l01_escape_musics'...* phase time: 11 ms* phase cmem: 322701 KЯ готов......- Game configuring : Started- Game configuring : Finished[16-9] get_xml_name for[maingame.xml] returns [maingame_16.xml][16-9] get_xml_name for[zone_map.xml] returns [zone_map_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[car_panel.xml] returns [car_panel_16.xml][16-9] get_xml_name for[motion_icon.xml] returns [motion_icon_16.xml][16-9] get_xml_name for[messages_window.xml] returns [messages_window.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[ui_custom_msgs.xml] returns [ui_custom_msgs.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[inventory_new.xml] returns [inventory_new_16.xml][16-9] get_xml_name for[inventory_item.xml] returns [inventory_item_16.xml][16-9] get_xml_name for[af_params_16.xml] returns [af_params_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[inventory_new.xml] returns [inventory_new_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[pda.xml] returns [pda.xml][16-9] get_xml_name for[pda_map.xml] returns [pda_map.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[hint_item.xml] returns [hint_item.xml][16-9] get_xml_name for[pda_contacts_new.xml] returns [pda_contacts_new.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[events_new.xml] returns [events_new.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[news.xml] returns [news.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[encyclopedia.xml] returns [encyclopedia.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[actor_statistic.xml] returns [actor_statistic.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[pda_dialog_character.xml] returns [pda_dialog_character_16.xml][16-9] get_xml_name for[stalkers_ranking.xml] returns [stalkers_ranking.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[stalkers_ranking_character.xml] returns [stalkers_ranking_character_16.xml][16-9] get_xml_name for[pda_events.xml] returns [pda_events.xml][16-9] get_xml_name for[pda_events.xml] returns [pda_events.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[hint_item.xml] returns [hint_item.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[job_item.xml] returns [job_item.xml][16-9] get_xml_name for[talk.xml] returns [talk_16.xml][16-9] get_xml_name for[trade_character.xml] returns [trade_character_16.xml][16-9] get_xml_name for[trade_character.xml] returns [trade_character_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[trade.xml] returns [trade_16.xml][16-9] get_xml_name for[trade_character.xml] returns [trade_character_16.xml][16-9] get_xml_name for[trade_character.xml] returns [trade_character_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[trade_item.xml] returns [trade_item_16.xml][16-9] get_xml_name for[af_params_16.xml] returns [af_params_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[carbody_new.xml] returns [carbody_new_16.xml][16-9] get_xml_name for[trade_character.xml] returns [trade_character_16.xml][16-9] get_xml_name for[trade_character.xml] returns [trade_character_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[carbody_item.xml] returns [carbody_item_16.xml][16-9] get_xml_name for[af_params_16.xml] returns [af_params_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[inventory_new.xml] returns [inventory_new_16.xml][16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml][16-9] get_xml_name for[message_box.xml] returns [message_box.xml]* phase time: 329 ms* phase cmem: 331677 KЗакурю и в путь......* t-report - base: 2193, 1063312 K* t-report - lmap: 7, 7168 K* phase time: 630 ms* phase cmem: 331678 KВходим в зону отчуждения...* phase time: 13 ms* phase cmem: 331678 K* [win32]: free[2150368 K], reserved[97568 K], committed[1946304 K]* [ D3D ]: textures[1070481 K]* [x-ray]: crt heap[331677 K], process heap[12245 K], game lua[24298 K], engine lua[153 K], render[0 K]* [x-ray]: economy: strings[6066 K], smem[35100 K][16-9] get_xml_name for[game_tutorials.xml] returns [game_tutorials.xml][16-9] get_xml_name for[ui_credits.xml] returns [ui_credits.xml][16-9] get_xml_name for[ui_movies.xml] returns [ui_movies.xml]sv destroy object [1746][stalker:esc_factory_bandit1] [5024]sv destroy object [1757][wpn_pm:wpn_pm1757] [5024]sv reject. id_parent [1746][stalker:esc_factory_bandit1] id_entity [1757][wpn_pm:wpn_pm1757] [5024]sv destroy object [22016][ammo_9x18_fmj:ammo_9x18_fmj22016] [5024]sv reject. id_parent [1746][stalker:esc_factory_bandit1] id_entity [22016][ammo_9x18_fmj:ammo_9x18_fmj22016] [5024]sv destroy object [4356][skuns:skuns4356] [5024]sv destroy object [10286][ammo_9x19_fmj:ammo_9x19_fmj10286] [5024]sv reject. id_parent [4356][skuns:skuns4356] id_entity [10286][ammo_9x19_fmj:ammo_9x19_fmj10286] [5024]! Cannot find saved game ~ self: ok! Cannot find saved game ~ self: okFATAL ERROR[error]Expression : fatal error[error]Function : CScriptEngine::lua_error[error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp[error]Line : 73[error]Description :[error]Arguments : LUA error: ...s\s.t.a.l.k.e.r\gamedata\scripts\xr_motivator.script:375: attempt to index a nil valuestack trace: Что вообще та строка значит, по которой вылет. Изменено 17 Ноября 2014 пользователем Хемуль36рус Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-892312
Dennis_Chikin 3 665 Опубликовано 17 Ноября 2014 Поделиться Опубликовано 17 Ноября 2014 (изменено) Хемуль36рус, все, понял, что у тебя происходит. Короче, xr_motivator трогать вообще не нужно. Верни все как было до "адаптации". Нужно править 2 других файла, и делать конвертер сейвов. Попозже распишу, что и как. https://dl.dropboxusercontent.com/u/27871782/dialog_manager46.script Вот так вот выглядит универсальный файл диалогов. Причем сохранение/восстановление на самом деле не нужно совсем. С заданиями - чуть сложнее, с одной стороны, но при этом не нужны архисложные преобразования. save/load к версии вообще не привязан: function CRandomTask:save( p ) -- снесен "старый формат", вместе с ключом "нового" local n, tm local a = self.active_task_by_type for k, v in pairs( self.task_info ) do n = status_to_num[ v.status ] or abort( "CRandomTask:save, wrong status [%s], task: %s", v.status, k ) if v.enabled then n = n + 64 end if v.enabled_props then n = n + 32 end if a[v.complex_type] == k then -- вообще-то надо вычислять по типу n = n + 16 -- но все как-то мутно, поэтому сохраняем явно log( "info", "CRandomTask:save, id: %s, ct: %s, active", k, v.complex_type ) end tm = v.last_task_time -- нужно ли писать время ? if tm then tm = game_time_sec - tm if tm < v.idle_time then n = n + 8 else tm, v.last_task_time = false, 0 end end if v.selected_target then p:w_u8( n + 128 ) p:w_u32( v.selected_target ) log( "info", "CRandomTask:save, id: %s, status: %s, target: %s", k, v.status, v.selected_target ) else p:w_u8( n ) end p:w_u16( id_to_hash[k] or abort( "CRandomTask:save, no hash for id: %s", k ) ) if tm then p:w_u32( tm ) end -- пишем время end p:w_u8( 0 )endfunction CRandomTask:load( p ) local n, id, v, g, tm local t = self.task_info local a = self.active_task_by_type while true do n = p:r_u8() if n == 0 then return end -- оно кончилось if n >= 128 then g, n = p:r_u32(), n - 128 -- есть target, читаем else g = nil -- нет target'а end id = hash_to_id[ p:r_u16() ] v = t[id] or abort( "CRandomTask:load, invalid entry: %s", tostring( id ) ) if n >= 64 then v.enabled, n = true, n - 64 else v.enabled = false end if n >= 32 then v.enabled_props, n = true, n - 32 else v.enabled_props = false end if n >= 16 then a[v.complex_type], n = id, n - 16 end -- активный if n >= 8 then tm, n = true, n - 8 end -- нужно ли будет читать время ? if n == 2 and v.type == "defend_lager" then v.selected_target = g or abort( "CRandomTask:load, no target (id: %s)", id ) g = sim:object( g ) if g then v.defend_target = g:spawn_ini():r_u32( "random_task", "defend_target" ) end else v.selected_target = g end v.status = num_to_status[ n ] if tm then v.last_task_time, tm = p:r_u32() + game_time_sec, false end endend Изменено 27 Ноября 2014 пользователем Dennis_Chikin Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-892336
Хемуль36рус 1 790 Опубликовано 17 Ноября 2014 Поделиться Опубликовано 17 Ноября 2014 (изменено) @Dennis_Chikin, то-есть тот, из 4 патча? Интересно, обычно адаптировали только эти скрипты. Если честно, я вообще не понимаю, с какой целью трогали мотиватор. Все изменения нужно вносить в диалоги и таски. Причем по большому счету и там половина не нужна. Все равно в id ни кто полнотекстовые строки не использует, так же, как и номера по 10 цифр. dc @Dennis_Chikin, извини не совсем понял. То что по ссылке, этим можно диалог менеджер заменит, а тот кусок что в спойлере, нужно вставить в таск, вместо оригинального куска.Так? Нет, это для примера. Чтоб работали, надо откатить до твоего мода. Или твой мод поправить. Не сейчас. Пока просто верни все как есть, и занимайся чем нибудь еще на 4-й версии. dc @Dennis_Chikin, то есть Charsi прав, адаптировать не получится. Интересно, те скрипты не трогались, а адаптировать их нужно. Вообще не понятно, зачем пысы такую процедуру провели, ведь проблем то вроде не было с диалогами. Все получится, но не с разбегу. А поменяли они ид фраз с цифровых под строки. Типа, "на будущее". Я сейчас в небольшой отпуск уйду, от чтения форума, и попробую что-то как-то подробно расписать, а потом куда-нибудь выложить. Сам же скрипт приведен как пример, что можно делать такое, что от версий вообще не зависит. Но когда я его переделывал - тоже не заботился о том, чтобы его можно было вот так взять, и скопировать в чей-то мод. Просто по тому, что иначе овчинка выделки не стоит - тянуть нелепую "совместимость" с сэйвами сталкера версии 2003-го года, которой по факту все равно не существует даже у оригинала. dc Изменено 27 Ноября 2014 пользователем Dennis_Chikin Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-892344
Nazgool 250 Опубликовано 22 Ноября 2014 Поделиться Опубликовано 22 Ноября 2014 (изменено) dc Наверняка человек мало что понял. Меня самого выражение ( ( ( n1:id() ~= 0 ) and n1 ) or n2 ) несколько смутило. В том смысле, что необходимо некоторое время, чтобы сопоставить - кто такой n1 и n2 по отношению к first и second speaker-ам. Да и столько скобок, что ... ну на любителя конечно. Наверное просто стоило сказать что speaker-ы поменялись местами, и чтобы далее не заморачиваться на эту тему, нужно написать дополнительную функцию, которая сама будет ставить first_speaker-ом actor-а. Типа : function normalize_speakers(first_speaker, second_speaker) local is_actor = first_speaker:id() == 0 return is_actor and first_speaker or second_speaker, is_actor and second_speaker or first_speaker end function give_kolbasa(first_speaker, second_speaker) first_speaker, second_speaker = normalize_speakers(first_speaker, second_speaker) -- ну и далее по тексту end ........ dc 10000. Ну а как по-другому контролировать speaker-ов? Вызовы из логики ещё можно поправить в xr_logic. А из xml и скриптов как? Изменено 22 Ноября 2014 пользователем Nazgool Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-893741
Dennis_Chikin 3 665 Опубликовано 22 Ноября 2014 Поделиться Опубликовано 22 Ноября 2014 Скобок можно меньше, но так - нагляднее. А простыни о 10000 однотипных строк городить - зачем ? Вот уж действительно где запутаться нефиг делать. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/295/#findComment-893745
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти