erlik: Что такое файл логики? Просто набор конфигурационных параметров, которые считываются движком - парсером конфигов в движке - и далее производится их разбор и выполнение требуемых действий.
Alex-San по идее если в скрипте zzzz.script много функций и в другом скрипте используется одна из функций zzzz.script то игра не должна использовать остальные функции скрипта zzzz.script ?
(zzzz.script- это пример)
Artos
Спасибо за поправку :-)
---------------------------------
Супер) Вот бы сделать детекторы в руках отдельным минимодом.
Насчет мода - "детектор в руках" - уже сделано.
Смотрите здесь видео - от SkyLoader'a http://www.stalker-portal.ru/forums.php?m=posts&q=10663&d=210
На всякий случай - если ссылка не откроется - это топик S.T.A.L.K.E.R.: Secret of the Zone, 8 страница.
Правда не знаю - выкладывал ли он свою разработку или делал ее чисто для глоблаки.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Возникла задачка: Нужно передать параметр/знчение из главного меню перед стартом игры -> в запущенную игру. Т.е. при старте установить некий параметр, например в 'main_menu' и этот параметр нужно считать из игры.
Вариант с использованием 'user.ltx' или записью в файл аналогичным способом известен, но хотелось бы найти что-то попроще и не заморачиваться с файловыми операциями.
Итак вопрос: "Как передать значение переменной из стартового меню игры в запущенную игру без записи в какой-либо файл?"
Arist, они относятся к конкретному неписю.
Чтобы добавить такую функцию, надо править 2 файла (можно 1, но лучше 2): xr_effects.script и xr_gulag.script.
Через диалог можно, но если ты до**5001b67681f3126adde4** персонажам, которые в онлайне под указанным смартом
function set_gulag_friend_actor( actor, npc, p )
if p[1] then
xr_gulag.setGulagFriend(p[1], actor)
end
end[/code]
В xr_gulag.script пишешь:
[code]-- сделать указанного персонажа другом всех персонажей смарта
function setGulagFriend( name_or_sid, target_obj )
setGulagRelation( name_or_sid, game_object.friend, target_obj )
end[/code]
отредактировал(а) SkyLoader: 11-12-2010 00:53 GMT3 час.
Sapsan
Можно считать и аналогом AMK-опций. Более ближний аналог - симбионовские опции.
Только они работают уже в запущенной игре(!), а мне требуется до запуска игры иметь возможность поуправлять некоторыми опциями и их передать в игру.
Собственно частный пример применения:
Собрал свои наработки по инструментарию для модмейкера в единый пакет "STALKER Tools Kit". Пакет адаптирован под все три платформы (SHoC/CS/SCoP). Но пока не удается встроить чистильщик 'баговых' объектов, т.е. объектов, которые нужно удалять при запуске сэйва ...
Требуется ДО старта игры ввести идентификатор/имя и ... уже при запуске сэйва - удалить до его активизации.
Применения подобному (ввод пользовательских параметров в игру) можно найти немало ... Опций 'от 'разрабов игры' уже давно маловато.
Alex-San в конфиге, нужно было поставить клас артефакта и дальше все делать как у артефакта.
Наверное если бы не SkyLoader я бы до утра сидел разбирался
Ну ты блин и мазоохист) Модульня структура ЛУА и привязанная к ней типизация локальных переменных, на первых страницах букваря прописана. Простая и очивидная вещь для любого процердурного языка.
batment
Дык я скрипты то нужны были? И что там с отдельной секцией?
Блин ну как избавиться от вылета
Expression : sz<(tgt_sz-1)
Function : IReader::r_string
File : E:\stalker\patch_1_0004\xrCore\FS.cpp
Line : 349
Description : Dest string less than needed.
гамедаты нет модс нет все гамедаты.db на месте бин на месте фс гаме есть НУ ПОЧЕМУ ОН *** НЕ ЗАПУСКАЕТСЯ?!
Artos, за главное меню отвечает ui_main_menu.script. Вот в нём можно ведь и хранить локальную или глобальную таблицу с данными, которые будут введены до загрузки игры. Или после начала загрузки вся луа "перезапускается" и скрипт меню "забудет" данные ?
Artos, читал в туториалах о диалогах, что они после просчета не меняются (не пересчитываются) даже при загрузке сохранений пока опять полностью не перезапустишь игру. Тоесть данные можно сохранять, но только если уже был запущен сервер (или клиент). Так может при запуске игры принудительно стартовать игру (сервер или клиент) и тут же из неё выйти вернуться в главное меню, но так, чтобы это незаметно было...
отредактировал(а) Sapsan: 11-12-2010 12:55 GMT3 час.
Sapsan
Если бы все было бы так просто ... то и не спрашивал.
Сам попробуй и увидишь ... В логе между закрытием меню по кнопкам запуска и запуском игры имеется 'нечто', что все скрипты/модули сбрасывает в дефолт. Вот кусок лога:
До него все что нужно вычисляется/запоминается, после ... девственно чисто.
О 'хранении в _G иль _g.script' тоже можно не поминать ...
Могу еще подбросить материальчика для 'поломать голову' ;-)
(упрощенно!)
Имеется в головном модуле функция, из которой вызывается проверка скриптов (на синтаксис):
(_m.script) tScripts = nil
function on_game_init()
local bFlg = type(tScripts) ~= "table"
if not bFlg then--/ еще не проверялись
log(":on_game_init:Check_Scripts") tScripts = m_debug.Check_Scripts()
end
end
В модуле 'm_debug.script' соответственно ответная функция:
local tChecked = nil
function Check_Scripts()
log("Run:Tbl="..type(tChecked) )
if type(tChecked) ~= "table" then --/ проверки не было tChecked = {}
... --/ собственно процедура проверки
log("Checked ...")
else --/ проверка уже выполнена
log("Already_Executed="..type(tChecked) )
end
log("Return_Table="..type(tChecked))
return tChecked --/> возвращаем таблицу
end
Т.е. видны два(!) вызова функции проверки и два ее ответа ... причем ответы явно оказались вложены друг в друга по времени ... ???
Как будто запущены два независимых потока (треда) ... иль второе ядро процессора так разрабы "заиспользовали" ...
(вывод в лог естественно последовательно по времени)
Я подумал,что это четыре рестриктора в одной секции,поставил два аналогиным способом - работает только один.Есть два входа в деревню.Можно ли таким методом поставить два рестриктора?
Люди, здравствуйте.
Пару вопросов о патронах:
1) как узнать, что за тип руль в стволе находится? Есть обычные, бронебойные, снайперские и, может быть (если добавили), другие. А какие в стволе - не известно.
2) как подсчитать количество пуль в рюкзаке?
У нас, например, 100 пуль. В коробке пуль (той, что у торговцев покупаем) 30 пуль. Сколько пуль в инвентаре? Сто? Как это узнать?
Зачем доказывать кому-то, что ты настоящий мужик? Лучше потратьте это время на добрые дела!
адские задачки какие вы спрашиваете :blink
1. иконка внизу показывет какие в стволе патроны
2. над иконкой патронов в рюкзаке написано количество
До каких пор людей, по крохам собиравших державу и беспощадно каравших её врагов, мы будем обзывать палачами, а индивидов, разваливших страну и пустивших на ветер труды целых поколений, именовать реформаторами? (Ф.М. Достоевский)
vhodnoylogin
1)Тип патронов в стволе:
Аргумент на **5001b67681f3126adde4**:r_u8()
return iAmmoType
end
end [/code]
Возвращает 0 или 1. 0 - обычный патрон, 1- бронебойный\улучшенный.
Метод я тестил мало, поэтому точно не знаю возвращается ли что то еще кроме 0 и 1.
2) Методы получения числа патронов:
[code] local weapon = db.actor:active_item()
if isWeapon(weapon) then
local num = weapon:get_ammo_total() - вернет общее число патрон в рюкзаке к активному стволу .
end
[/code]
[code]get_ammo() - получить общее количество патронов в рюкзаке[/code]
Не знаю к какому объекту ее применять - наверно к db.actor. Не использовал.
--- кол-во патрон в конкретной пачке -- передаем объект пачки
[code]function get_ammo_size(obj)
local se_obj = alife():object(obj:id())
local packet = net_packet()
cse_alife_item_ammo.STATE_Write(se_obj, packet)
packet:r_seek(packet:w_tell() - 2)
return packet:r_u16()
end[/code]
PS:И на будущее - все эти функции есть в любом глобальном моде. Найти их - дело пяти минут.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Возвращается 'тип'/индекст, который читается из строки патронов ("ammo_class") конкретного оружия. Собственно это порядковы**5001b67681f3126adde4**d())
local packet = net_packet()
seObj:STATE_Write(packet)
local iSize = packet:w_tell()
packet:r_seek(iSize - 1)
local iAmmoType = packet:r_u8()
return iAmmoType --/> (0|1|2|...)
end
end
[/code]
добавить это:
[code]--/ определяем имя секции патронов (ammo_name) по типу (ammo_type) для конкретного оружия (sSection)
function Get_AmmoSection(sSection, iAmmoType) --/< ammo_type (0|1|2|...)
local tAmmoList = fReadFromIni(system_ini(), sSection, "ammo_class", {}, "table", ",")
local iAmmo = 1 + (iAmmoType or 0)
return tAmmoList[iAmmo] --/> "ammo_section"
end
[/code]
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.