singapur22, цель? Мне нужно на время (около минуты) куда-то скинуть хабар гг, но чтобы его никто не видел и не брал. Просто переспавн - это не решение.
SkyLoader Ну и для какой цели тебе здесь точные координаты? Спавни его с координатой по Y, значительно ниже, или выше, чем ГГ.
Для предотвращения перехода его в оффлайн, пока ГГ находится на текущей локации, имеются соответствующие методы: can_switch_online(boolen) и can_switch_offline(boolen).
P.S. Кажется в АМК есть некие inventory_box, для подобных манипуляций, на каждой локации. Смотри, и делай по аналогии.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
SkyLoader
Не морочь себе и другим голову.
1. Делаешь объект класса инвентарного ящика с прозрачной моделью (можно на базе нычки-рюкзака из АМК-мода). Так никто (даже ты не увидят ни ящик ни предметы в нем где бы он ни был).
2. Спавнишь этот объект где-тебе удобно (хоть в небесах).
Т.о. получаешь невидимый никому он-лайновый ящик для складывания туда всякой всячины.
Конкретный пример см. в Симбионе, там этот ящик даже таскается постоянно за ГГ с локации на локацию (дабы не плодить их в игре) и туда постоянно что-то складируется (менеджер оружия, перчатки, поясной сепаратор, ...).
singapur22
В АМК подобного нет. Фейковый ящик появился в моде менеджера оружия (by Bak) и по одному на каждой локации (точнее спавнятся по мере появления ГГ на новой локации).
Спавнить проще по координатам актора, взяв на сотню метров выше (так точно не попадешь в недоступное для спавна место).
SkyLoader
Не требуется ничего переключать, играясь с оффлайном. Ящик, будучи заспавненым (иль после загрузки сэйва) сам никогда не уходит в оффлайн. Вот если тебе потребуется, положив в него что-то (заспавнив/переместив), иметь это после сохранения - то придется позаботиться с переводом ->off->on line , иначе испарится из ящика.
SkyLoader
Непредвиденных для кодера ситуаций НЕ бывает. Бывает его некомпетентность или ротозейство. ;-) . На то он и программер, чтобы написать так, чтобы все что ему нужно - предвидеть, а 'непредвиденное' запретить (по принципу: все что не разрешено - запрещено.).
Повторяю и объясняю:
1. Ящик(и) всегда в он-лайне.
2. Если игрок кладет через интерфейс использования ящика - движок обновляет состояние ящика (предметы будут запомнены) и при загрузке сохранения все будет на месте (в ящике).
3. Если спавнить/перемещать/... предметы скриптами - ящики (без логики) не апдейтятся (у них нет биндера) и все, что было в них заспавнено, после загрузки сэйва исчезнет из ящика.
Так что смотри сам (нам твои задумки неведомы), нужно ли и когда заморачиваться с состояниями ящика.
(я бы сделал проще - один раз по коллбэку на сохранение актора делать манипуляции с офф-он-лайном).
SkyLoader
Если ты достиг того, чего хотелось - считай достиг.
В отличии от тебя, меня не интересуют некие частные случаи ... дабы не сетовать и не тратить время в дальнейшем на поиск причин коллизий/ошибок. :-G
Аррр.. :obstenu: Что ж такое?
В общем, я написал **5001618d69873ce82a42**fer_item(item,victim)
end
end
, who)
end[/code]
Пытаюсь ей пользоваться, но происходят какие-то чудеса:
1) Перенос из инвентаря непися в инвентарь гг работает нормально, а наоборот - нет. Также не получилось трансферить в ящик (только один раз, когда я вызвал ее из меню).
2) Ф-ция медленно обрабатывается. После вызова этой ф-ции у меня стоит перенос позиции ГГ. Так вот, если вместо метода трансфера (ну он не работает) поставить просто выкидывание из рюкзака, то сначала выполнится перенос позиции, а потом уже все выбросит.
SkyLoader
Бывает 2D, бывает 3D, а бывает и 4D ...
Если ты привык кодить в 'плоскости' и ли даже в 'объеме', то теперь начинаешь сталкиваться и с четвертым измерением - временем.
Ты когда-нибудь задумывался: "А что в 'реале' происходит при работе моих кодов с точки зрения ООП?". Что означает твоя функция трансфера 'transfer_item' ты догадываешься, но(!) это всего лишь команда, а не само дейстыие. И это действие растянуто во времени. Предмет не мгновенно оказывается ы другом месте, а спустя циклы апдейта актора и твоего непися.
Можно наблюдать, что в следующем цикле апдейта актора после цикла отдачи команды тренсфера предмет оказывается у непися, но его 'parent_id' - еще акторский, в следующем вроде как уже все на месте, но многие методы отказываются работать. Т.о. на одно действие по трансферу требуется 3-4 цикла апдейтов актора.
Так что не удивительно, что одновременно (в одном цикле) отдав комадну 'выкинуть + переместиться' - твой ГГ начинает выкидывать предметы будучи уже на новом месте.
В общем это еще долго пояснять, а я сейчас подустал ... повозись до завтра самостоятельно.
В поясном скрипте (m_belt.script OnUpdate) из Симбиона можно посмотреть достаточно подробно процесс передачи сепаратора из ящика к ГГ и обратно. Там я использую каждый цикл, поэтому достаточно подробно прокомментировано.
Товарищи, а кто-то пытался добавить в игру новый ранг? **5001618d69873ce82a42** = 0
experienced = 0
veteran = 0
master = 0
[/code]
И почему здесь все значения равны нулю?
И еще за всю историю моддинга сталкер кто-то пытался менять параметры файла game_relations.ltx?
Я вот только могу вспомнить добавление новой группировки и увеличение таблиц со списками группировок, а вот изменений коофициентов отношений с НУЛЯ на какие либо другие значения не помню.
З.Ы.: Поменял значение таблицы [communities_relations], чисто ради эксперимента, отношения, группировки stalker к самой этой группировки с "0" на "-5000", так новички друг дружку перестреляли. :-)
Вот бы сделать такого монстра, типо контролера, что бы при его приближении менялась группировка на враждебную самой себе. :prankster:
Люди хотел сделать выброс ну сделал он в начале начанается и все он кончился я иду документы из лаборотории класть украл перехажу на другую локацию и вылет ругается на этот файл db.script
Нужна помощь. Сделал мод. Скинул его другу, но там просто не мод, а ужас получается.
Вот снимок с моего мода:
А вот картинка с компа друга:
Тут различий просто куча и я не знаю почему так. Я понимаю экран широкий, но не в этом то дело. Я так же пробывал передавать мод к другому другу, у него все нормально, так же как и у меня. Версии совпадают кстати. Вот что это такое?
отредактировал(а) VOva-VIP: 01-07-2011 14:53 GMT3 час.
VOva-VIP Играете на разных разрешениях экрана. Правя файл inventory_new.xml, мог бы поднапрячься, и проделать ту же операцию с файлом inventory_new_16.xml, отвечающего за инвентори-меню на широких разрешениях.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Помогите плиз! Недавно появилась ошибка. Уж не знаю от куда. Нашел причину этой ошибки. Вылет возникает, если вызывать функции из моего файла swamp_spawn_new
Раньше вылетов не было. С какого фигу взялись непонятно. Пробовал в файле xr_logic переисывать фрагмент функции по новой.
Хоть сам фрагмент небольшой, но выложу всю функцию на всякий случай (мож не там вставил)
function pick_section_from_condlist(actor, npc, condlist)
local rval = nil -- math.random(100)
--printf("_bp: pick_section_from_condlist: rval = %d", rval)
local newsect = nil
local infop_conditions_met
for n, cond in pairs(condlist) do
infop_conditions_met = true -- изначально считаем, что все условия переключения удовлетворены
for inum, infop in pairs(cond.infop_check) do
if infop.prob then
if not rval then
rval = math.random(100)
end
if infop.prob < rval then
infop_conditions_met = false -- инфопоршен есть, но он не должен присутствовать
break
end
elseif infop.func then
--printf("_bp: infop.func = %s", infop.func)
if not xr_conditions[infop.func] then
abort("object '%s': pick_section_from_condlist: function '%s' is " ..
"not defined in xr_conditions.script", npc:name(), infop.func)
end
--if xr_conditions[infop.func](actor, npc) then
if infop.params then
if xr_conditions[infop.func](actor, npc, infop.params) then
if not infop.expected then
infop_conditions_met = false -- инфопоршен есть, но не должен присутствовать
break
end
else
if infop.expected then
infop_conditions_met = false -- инфопоршен есть, но не должен присутствовать
break
end
end
else
if xr_conditions[infop.func](actor, npc) then
if not infop.expected then
infop_conditions_met = false -- инфопоршен есть, но не должен присутствовать
break
end
else
if infop.expected then
infop_conditions_met = false -- инфопоршен есть, но не должен присутствовать
break
end
end
end
elseif has_alife_info(infop.name) then
if not infop.required then
--'printf("FAILED: actor has infop '%s', which is NOT needed [%s]", infop.name, tostring(has_alife_info(infop.name)))
infop_conditions_met = false -- инфопоршен есть, но он не должен присутствовать
break
else
--'printf("PASSED: actor has infop '%s', which is needed [%s]", infop.name, tostring(has_alife_info(infop.name)))
end
else
if infop.required then
--'printf("FAILED: actor has NO infop '%s', which is needed [%s]", infop.name, tostring(has_alife_info(infop.name)))
infop_conditions_met = false -- инфопоршена нет, но он нужен
break
else
--'printf("PASSED: actor has NO infop '%s', which is not needed [%s]", infop.name, tostring(has_alife_info(infop.name)))
end
end
end
--printf("_bp: infop_cond_met = %s", utils.to_str(infop_conditions_met))
if infop_conditions_met then
-- Условия выполнены. Независимо от того, задана ли секция, нужно проставить требуемые
-- infoportions:
for inum, infop in pairs(cond.infop_set) do
if db.actor == nil then
abort("TRYING TO SET INFOS THEN ACTOR IS NIL")
end
if infop.func then
local func=nil
local module,fname=string.match(infop.func,"(.+)[.](.+)")
if not fname then
func=xr_effects[infop.func]
else
if _G[module] and _G[module][fname] then
func=_G[module][fname]
end
end
if not func then
abort("object '%s': pick_section_from_condlist: function '%s' is " ..
"not defined in xr_effects.script", if_then_else(npc, npc:name(), "nil"), infop.func)
end
if infop.params then
func(actor, npc, infop.params)
else
func(actor, npc)
end
elseif infop.required then
if not has_alife_info(infop.name) then
actor:give_info_portion(infop.name)
end
else
if has_alife_info(infop.name) then
actor:disable_info_portion(infop.name)
end
end
end
if cond.section == "never" then
return nil
else
return cond.section
end
end
end
--printf("_bp: pick_section_from_condlist: nil")
return nil
end
Ошибка всегда такая.
Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ...er - Зона поражения\gamedata\scripts\xr_logic.script:602: attempt to call local 'func' (a nil value)
очень нужно исправить вылет, так как вызов функций из других файлов в логике у меня используется часто.
Разумеется. И неоднократно. Расписывать не буду - все банально(по аналогии с имеющимися - главное не забыть про скрипты, где используются имена рангов).
rank_kill_points - возможно неиспользуемая вовсе секция параметров (не проверял), так как очки рейтинга начисляются из соседней секции action_points.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Ответ на мой же собственный вопрос. (может кому пригодится).
Если вы изменили в файле xr_logic кое-какие строчки и умеете вызывать функции в логике из других файлов, то ошибка
Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ...er - Зона поражения\gamedata\scripts\xr_logic.script:602: attempt to call local 'func' (a nil value)
может быть вызвана вовсе не вашей ошибкой в файлах. Когда много функций в одном и том же файле, то по какой-то причине может возникнуть эта ошибка. Для её исправления просто создайте ещё один файл и переместите туда пару функций из предыдущего файла ну и вызывайте их теперь из этого.
Mehanik Yar Чёт ты бред какойто написал. Не имеет значения, сколько функций имеется в том, или ином файле. Хоть все функции игры, запихай в один скриптовый файл. Разбиенеие по типовым файлам, производится лишь для удобства.
attempt to call local 'func' (a nil value)
Данное описание ошибки говорит о том, что вызываемая функция или не существует, или просто напросто, не была загружена в окружение. Причина может быть даже не в самой функции, а в том, что находится перед ней (выше, по телу файла). Если, над функцией имеется малейшая ошибка (не приводящая к крашу игры), то всё, что находится под ... не читается, и не загружается в окружение. Соответственно, смотри последние коды, файла xr_logic.script
Как видно по логу, ты работаешь с модификацией "Зона поражения". В этом вся проблема всех новичков. Лично я не рекомендую работать поверх других модов. Так как, ошибки могут быть именно в них, что в некоторых случаях приводит к подобным багам и глюкам. А после, и к неверным выводам.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
вуу4 1. Что сделал?
2. Как сделал?
3. Код, отвечающий за желаемое действие!
Это минимальный набор пунктов, которые нужно выкладывать изначально, чтобы получить хоть какойто ответ. Иначе, тебя просто все будут игнорировать. Что собственно и происходит в настоящий момент.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.