Bloodest
Проверенные-
Число публикаций
18 -
Регистрация
-
Последнее посещение
-
AMKoin
0 [Подарить AMKoin]
Баланс оценок
1Недавние посетители профиля
1 566 просмотров профиля
-
Обсуждение и вопросы по прохождению NLC 6.
Bloodest ответил на тему форума автора Седой в New Level Changer (NLC)
Docpet &Ko. Гармошка кореша Борова. Гыг, г-н Сяк не даром говорит, что Стрелок, он, перед экраном, а не за ним . Доцент, он ушлый малый - покуда Вы ждете его ответа, он ужо гонцов выслал с подменой - хабар будет уже не тот (примерно вчетверо хуже). Ответ доцента имеет мало чего общего, с тем что написано в записке (код - точно другой). Ворон, кроме прочего, дает подсказку на то как расшифровать. Да и в начале записки это написано, он просто разжевывает. (погуглите - "сдвиг шифр", листок бумаги, 10-15 минут и результат готов [в exel за 2 минуты, при соотв. навыке] ) Для того чтобы открыть дверь нужно иметь запись в ПДА о записке и знать код, сама гармошка не нужна. Если код от доцента - хабар дохленький, смостоятельно расшифрованный - "гут". -
[CoP] Ковыряемся в файлах
Bloodest ответил на тему форума автора Halford в Скрипты / конфиги / движок
1. Возможно используется для самой анамалии. 2. Параметры спавна из ТЧ - где не было путей для их движения - максимальное значение силы вбрасывающей арт из точки спавна.";" - означает комментарий - эта строчка отключена. 3. Наверное 2, мот через два выброса. 4. Собственно - эт и есть имя пути, по которому "бегает" арт. Количество путей >= макс кол-ву артов. Нужно рапаковать all.spawn - там будут файлы с объектами и с путями. Для полного понимания надоть найти объект содержащий jup_b211_anomal_zone. Те скорее всего часть параметров (для детальной юстировки) вытащили из all.spawn. Конкретный путь также надоть искать по его имени, он содержит координаты точек пути, а затем правила их обхода, объектом, поставленным в этот путь. -
Таксс... На чем писать и производить начальную отладку скриптов... предлагаю... Всемогуторный(с) редактор скрипотов и проч и проч. SciTE http://scite.ruteam.ru/ 1.Качаем 2.Ставим 3.Запускаем 4. Открываем, например ranks.script. Фи - все ч/б. Эт потому, что сталкере луа скрипты не с тем расширением. Самое простое, жмем - меню подсветка, а там выбираем lua. Текст раскрасился. Уже хорошо. Тут видим на квик-меню интереснейшую кнопочку (отпечатки стоп) - но она, зараза, серая - не жмется... 5. Правим мозги всемогутора. Ползем в меню - настройки - Открыть lua.properties. Открывается файлик -полный всякой тарбенью, ее и правим. Сразу бросается в глаза file.patterns.lua=*.lua;*.macro; добавляем file.patterns.lua=*.lua;*.macro;*.script Сохраняем lua.properties, закрываем ranks.script, открываем - сразу выскакивает цветным, с семантикой. Идем дальше command.go.*.lua=Lua-5.0.exe "$(FileNameExt)" # Lua 4.0 #command.go.*.lua=Lua-4.0.exe -c -f "$(FileNameExt)" # ========================================================= # Команда меню - Выполнить (F5) command.go.*.lua=dofile $(FilePath) command.go.subsystem.*.lua=3 command - управляем командой go - команда с меню - "выполнить" тоесть строки с command.go - относятся к этой команде. Следующий октет * - выполнить действие subsystem - субситема всемогутора Действий может быть несколько - выполняется одно - по порядку следования то которое выполнимо. Сейчас их в два - Lua-5.0.exe - внешний интепритатор, dofile - встроенный всемогутора. =3 - субситема скриптов LUA меняем здесь lua на script command.compile.*.script=LuaC-5.0.exe -o "$(FileName).luc" "$(FileNameExt)" # Lua 5.0 command.go.*.script=Lua-5.0.exe "$(FileNameExt)" # Lua 4.0 #command.go.*.lua=Lua-4.0.exe -c -f "$(FileNameExt)" # ========================================================= # Команда меню - Выполнить (F5) command.go.*.script=dofile $(FilePath) command.go.subsystem.*.script=3 Возвращаемся к ranks.script. "Выполнить" доступна - жмем - и ничего... Это от того что в "рядовых" скриптах сталкера нет действий окромя как внутри функций. Интепритаор инициализирует функции и все... Попрубуем сбить инициализацию. Возьмем кусок function parse_ranks( s, tbl ) s = "0," .. s .. ",10000" local t = parse_names( s ) local i = 2 while i < #t do tbl[t[i]] = { tonumber(t[i-1]), tonumber(t[i+1]) } i = i + 2 end return t[i-2] end допустим у while i < #t do забыли дописать "do" - сотрем, выполним - выскочит ...ranks.script:24: 'do' expected near 'tbl' >Lua: error occurred while processing command Тоже самое будет и в игре... Таким образом можно отловить много, но к ,сожалению, далеко не все ошибки. 6. Более сложный - открывем ui_numpad.script ...ui_numpad.script:14: attempt to call global 'class' (a nil value) Так будет со всеми скриптами, содержащими классы. Здесь Луа Сталкера отличается "дефолтного". В луа они есть, классы, но в Сталкере они расширены вполть до изменеия семантики скриптов, во что и уперся интепритатор. Для проверки "выполнением" во всемогуторе достаточно "спустится" к дефолту - здесь достаточно сделать так --class "numpad" (CUIScriptWnd) local numpad = {} Те образовать псевдо-класс - в игре конечно он работать не будет - но для проверки ошибок вполне достаточно. Другое дело править а затем вертать обратно оч муторно. Автоматизируем. 6.1. Ползем обратно в lua.properties и вставляем самопальную шняжку command.name.12.* = sTaLkEr claSS command.mode.12.*=savebefore:yes command.12.*=dofile D:/stalker_class.lua command.subsystem.12.*=3 command.shortcut.12.*=Ctrl+M Все тоже самое ток 12 - цифирь означает "самопальную" команду редактора нумбер 12 всего может быть до 50 штук. Соответственно она будет вызываться "Ctrl+M" и действием ее будет интепритация скрипта D:/stalker_class.lua. Естественно его можно покласть и обозвать как заблагорассудится. Тем более естественным является то что его надо еще написать.. Вот содержимое. trace("начали \n") local position = editor.CurrentPos local start = 0 local flag = true while true do local s,e = editor:findtext("class", SCFIND_WHOLEWORD,start) if( not s) then break end local lineS = editor:LineFromPosition(s) start = editor.LineEndPosition[lineS] local sb = editor:PositionFromLine(lineS) local ss,es = editor:findtext("--", 0, sb,s)-- Проверяем не задизейблено ли определение класса путем установки -- if( not ss) then local s1,e1 = editor:findtext("\"",0,e+1) local s2,e2 = editor:findtext("\"",0,e1+1) local name = editor:textrange(e1,s2) trace ("Строка: "..lineS+1 .." имя класса: " ..tostring(name) .. "\n") editor:InsertText(s,"local " .. name .. " = {} --AutoM1969M ") flag = false end end ---------------экзекуция trace("экзекуция!\n") local exec = editor:GetText() dostring(exec) trace("закончили экзекуциию...\n") --------------- trace ("Возврат\n") start = 0 local delta = 0 while true do local s3,ed = editor:findtext("--AutoM1969M", SCFIND_WHOLEWORD,start) if( not s3) then break end local line = editor:LineFromPosition(s3) start = editor.LineEndPosition[line] trace ("строка: " ..tostring(line)+1 .. "\n") local sd = editor:PositionFromLine(line) editor:remove(sd, ed+1) if(position > ed and flag == true) then -- борьба со смещением курсора delta = delta + (ed+1-sd) end end editor:GotoPos(position-delta) -- delta только если прозводили удаление без вставки Ну, достаточно все просто. Встроенный интепритатор имеет доступ к редактируемому тексту через шнягу "editor". Ее и пользуем. Исчем в тексте словечки "class", преверяем не заремлины ли они. если нет - вычитываем то что в кавычках - имя будущего псевдокдласса ну всталяем перед "class" псевдо и рем и все это на одной строке. те было class "numpad" (CUIScriptWnd) стало local numpad = {} --AutoM1969M class "numpad" (CUIScriptWnd) Засасываем весь текст в окне в строку и кидаем ее в изолированный экзекут. Затем обратно - ищем метки AutoM1969M и чикаем все что перед ними и их самих - получаем исходник. Ну если встретиться ошибка - она вывалится нескольок иной stalker_class.lua:40: [string "-- File: UI_NUMPAD.SCRIPT..."]:20: '<eof>' expected near 'end' но место то же что и на экране (эт я чикнул строчку function numpad:__init(owner) super() - видит что есть хвост (функции) а головы у хвоста нет) песводо с метками остаются - но ни чего - правим, если исправили - после очередного ctrl+M все встает в "как надо". --========================== Эт все к тому что Сталкер некоторые ошибки кушает "на ура" а всемогутор их ловит. Тут на днях ошибся в заголовке при написании оконной менюхи. Вызов коллбека по нажатию кнопки один self:AddCallback("btn_create", ui_events.BUTTON_CLICKED, self.OnButton_create_clicked, self а в объявлении function set_brain_dialog:OnButton_create_clicked() исправить класс (копированием писал) забыл, а класс этот был от предыдущего окна (ветвится управление у мну) и приехали - сталкер работает и кнопяра жмется - только вот результата ни какого... ============================ Упс... я по "глупости" думал что у пысов в скриптах словечко class это "ключевое слово" языка, дык оказывается нет. К сведению - ключевые слова запрещено использовать в качестве имен переменных. ТЕ если class ключевое в языке то написать local class нельзя, если очень хочется можно так local class_ Дык такие аномалии есть в inventory_upgrades.script sim_squad_generic.script Так что если придется работать с этими файлами то local class лудше просто перименовать - там их жизнь удивительно коротка - 2-3 строчки подряд.
-
А так вот шняжка, строящая графику исходя из распотрашенного all.spawn http://koavia.com/n1/spawnreader.rar(13.5 метров (картинки)) Например, арты в темной долине Исходиники (про недоделки читай read.me) http://koavia.com/n1/spawnreader_cpp.zip(10 метров (+data левел вертексов на 2 уровня))
-
Я бы предложил, наоборот, сделать хаотичную выдачу рецептов - так интереснее - каждый раз по-новому. Сделать "точки выдачи" с запасом для гарантии получения всех доступных рецептов. Избыток забить топовыми модификатами - те после получения всех рецептов "точки", если они остануться, быдут выдавить арты.
-
А поправить конструкцию в function offline_alife() ... for search = 1,search_intensivity do ... elseif table.getn(vdata.corpses.stalkers)>0 then amk.oau_reason="cn offline_alife chp11 "..tostring(victim and victim:name()) on_npc_corpses_found(victim, vdata) break ... elseif table.getn(vdata.inv_boxes)>0 then amk.oau_reason="cn offline_alife chp18 "..tostring(victim and victim:name()) on_inv_boxes_found(victim, vdata) break ... Брейк на трупе блокирует "прихватизацию" имущества из тайника... Чит - кладем труп на тайник ...
УЧИМСЯ МОДДИНГУ
ИГРАЕМ В МОДЫ НА ТЧ
ИГРАЕМ В МОДЫ НА ЧН И ЗП
- [ЧН] OGSM CS 1.8 CE Fixes
- [ЧН] HARDWARMOD 3.2
- [ЗП] The Long Road
- [ЧН] New vision of War
- [ЧН] Old Good Stalker Mod - Clear Sky
- [ЗП] Unofficial Patch
- [ЗП] Смерти вопреки
- [ЗП] Контракт на хорошую жизнь
- [ЗП] Shoker Weapon Mod 2.1
- [ЗП] Hardcore pack for SGM 2.2
- [ЗП] Контракт Синдиката
- [ЗП] Клондайк 2.0
- ...и другие моды
ПОЛЕЗНОЕ И РАЗНОЕ