MRN$
Вариантов ошибки три:
а) Ты передаешь на вход НЕ клиентский объект. Попытка применить к нему методы для клиентского объекта приводит к 'No such operator defined'.
b) Ошибка идет из другой функции. Возможно из вызывающей, где некорректно обрабатывается возвраженный аргумент(ы) ...
в) Неизвестный нам фактор ... может ты вообще в другую игру скрипт пихнул? :-G
P.S. По инвентарным боксам: Моя оценка: менее 25%.
Darien Fx , SkyLoader
Если бы клиентский объект НЕ был бы в онлайне иль еще где-то не зарегистрировался бы, то НЕ прошла бы проверка 'if obj then', т.к. нечего было бы передавать на вход ...
Гадаем поманеньку?! ;-)
SkyLoader
Ты опять в дебри полез, забыв дома азбуку?! :sarcastic:
Позиция камеры(device().cam_pos) и позиция актора (db.actor:position()) - разные вещи, хотя и взаимосвязанные. Не стОт их путать.
Сам вспомни, что есть еще в игре вид от 2-го и 3-го лица, где камера отделена от актора.
MRN$
Ну тогда возможно Darien Fx и SkyLoader частично правы!
Любой вызов твоей функции 'get()' при отсутствии объекта приводит к тому, что второй (fpos_y) и всем последующим (fpos_z, ..., fdir_z) функция 'get_object_param(nil)' ничего не возвращает. Даже nil'ов! Она возвр
этот код как-бы "в принципе" - реально он несколько другой... в общем - лопачу код на предмет казусов.
Artos, спасибо, буду разбираться...
=========================================
PS
А не может быть такого, что у предметов вообще нет методов direction и vertex-ов? Пробовал у O_INVBOX или аптечки получить дирекцию и вертексы - ничего, только id и position-ы.
Нужен предмет у которого можно получить текущую дирекцию и вертексы.
отредактировал(а) MRN$: 14-09-2010 04:48 GMT3 час. всё легко
MRN$
У объектов O_INVBOX, так же как и прочих и дирекция и вертексы (они то уж никак отсутствовать**500140b7e12bf63c3891**t:level_vertex_id(),
self.object:game_vertex_id(),
self.object:id()))
return object_binder.net_spawn(self, data)
end[/code]
вот результат: дирекция есть и у всех походу одна и таже
[code]! Cannot find saved game ~ direction = -0.0, 0.0, 1.0, position: x= 203.0, y=8.9, z=158.9 lvid = 499116 gvid = 149 id = 43520
! Cannot find saved game ~ direction = -0.0, 0.0, 1.0, position: x= 121.1, y=8.0, z=242.9 lvid = 424715 gvid = 240 id = 50432
! Cannot find saved game ~ direction = -0.0, 0.0, 1.0, position: x= 82.6, y=-11.7, z=250.6 lvid = 377462 gvid = 189 id = 50445
! Cannot find saved game ~ direction = -0.0, 0.0, 1.0, position: x= 76.3, y=1.8, z=345.1 lvid = 369409 gvid = 192 id = 51456[/code]
-------------------------------------------------------------------- VITOSSSSS
Есть такой файлик в папке config\misc - items.ltx называется.
а еще есть unique_items.ltx и quest_items.ltx
отредактировал(а) erlik: 14-09-2010 12:39 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Artos, да, но насколько я знаю device().cam_pos не изменяется, как же изменить позицию камеры? Имею ввиду, чтобы координаты вписал, и камера переместилась.
отредактировал(а) SkyLoader: 14-09-2010 16:39 GMT3 час.
TheDoktor, вроде, какой-то из этих параметров zoom_rotate_x и zoom_rotate_y, ещё, может быть, zoom_offset. Это всё в конфиге оружия в секции настройки hud'а. В данном случае, скорее всего, нужно менять zoom_rotate_y.
Подскажите, как подобные квесты выдавать несколько раз, тоесть просле прохождения этого квеста можно было его еще раз взять и пройти?Удаление инфопоршней не помогает.Или квесты в игре одноразовы?
Дайте пример функции, которая срабатывает при использовании предмета, т.е. из дропа так сказать. Просто забыл как это делается.
Нужно что бы при использовании предмета (например Хлеба) выводилось сообщение.
Я скaчaл рaпaковaный all.spawn и отрeдaктировaл тaм всe что мнe нaдо, включaю новую игру и мои измeнeния нe происходят. Можeт нaдо спaковaть aлл.спaвн? Или что то другоe?
VITOSSSSS А гугл для чего? Впиши в поиск all.spawn ТЧ или полностью сталкер тени...
Там и статью может найдешь...а вообще в архиве все есть как запак. и как разпак...
------------- karavan ;-)
karavan, blackraven6
Я уже гораздо проще делаю - ставлю ГГ калл**500140b7e12bf63c3891**k(callback.use_object, this.OnUseActorObject)[/code]
эту строчку надо вписать в любой скрипт который вызывается при загрузке игры. В bind_stalker например в метод reinit или reload или load или net_spawn.
а это функция которая будет вызываться на юзание ГГ любого предмета
[code]function OnUseObject(obj, who)
if obj then
-- делаем проверку на использование нужного предмета
if obj:section() =="communicator" then
alife():create("communicator", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спавним его обратно
level.start_stop_menu(this.my_message(), true) --запускаем меню
end
end
end
[/code]
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Если бы клиентский объект НЕ был бы в онлайне иль еще где-то не зарегистрировался бы, то НЕ прошла бы проверка 'if obj then', т.к. нечего было бы передавать на вход ...
Прошла бы, ведь серверный объект то (уже) есть! И в данном случае 'if obj then' сработает и для оффлайн аптечки с последующим приминением 'онлайн-методов' к ней и вылетом.
P.S. Гаданиями не занимаюсь, ибо проверено это :-).
Кстати нашел в справочнике malandrinusa один замечательный каллбек, который никто не использует хотя он очень удобен в некоторых ситуациях. Наверно многие (как впрочем и я) его просто проглядели.
Например мы спавним объект и нам тут же надо что-нить с этим объектом сотворить - убит**500240b7e12bf63c3891**n Spawn()
local pos = db.actor:position()
local lvid = db.actor:level_vertex_id()
local gvid= db.actor:game_vertex_id()
local obj = alife():create("объектi", pos, lvid, gvid)
--вызываем метод add класса client_spawn_manager() которому передаем айди нашего объекта
level.client_spawn_manager():add(obj.id, 0, spawn_callback, "дополнительный аргумент")
end
[/code]
аргументы метода: obj.id -- это айди объекта на который ставим каллбек 0 -- это айди эктора - нафиг не нужно, но нужно :-) spawn_callback -- имя функции которая вызовется при переходе объекта в онлайн "дополнительный аргумент" -- дополнительный аргумент для функции spawn_callback - что хотим то и передаем, если оно конечно надо, либо вообще ничего не пишем.
-- сюда ставим вызов нужного нам действия при переходе объекта в онлайн
[code]function spawn_callback(arg, iId, gObj)
news_manager.send_tip(db.actor, "Каллбек на переход в онлайн вызван", 0, "trader", 10000)
-- снимаем каллбек, чтобы он не вызывался каждый раз когда объект снова окажется в онлайне
level.client_spawn_manager():remove(iId, 0)
end[/code]
принимаемые параметры: arg - тот самый дополнительный аргумент iId - айди объекта на который поставлен каллбек gObj -- клиентская юзердата объекта на который поставлен каллбек
как видно один параметр явно лишний - вполне хватило бы одной юзердаты. Но раз разрабы так сделали, значит им зачем то это надо было.
отредактировал(а) erlik: 14-09-2010 19:26 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Это я так понимаю создается некое окошко и задаются его размеры. Но проблема в том что vector2 в ТЧ не сушествует в отличии от ЧН и ЗП. Как по другому задать размеры окошка?
Ma$ter
В ТЧ координаты и размер окон задаются через метод Init(number, number, number, number), или Init(Frect*) или SetWndRect(Frect) или SetWndRect(number, number, number, number);
Если только размеры - то есть метод SetWndSize(number, number). Но не помню работает ли он как надо - помню, что пробовал его использовать, в одном меню, но потом заменил.
Примеры смотри в геймдате или модах.
Хотя не думаю, что тебе это поможет засунуть меню из ЧН в ТЧ - так как чувствую там не одну строчку переписывать придется. Тем более, что раз параметр self.desc_item_fn_sz требует именно векторный массив из двух цифр, то замена vector2() методом из ТЧ вряд ли будет возможна.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
По прежнему, не могу получить с объекта вертексы и дирекцию... ни время, ни перевод онлайн-офлайн - не влияет... в общем, всё что знал - перепробовал. Тут какая-то тонкость, может даже элементарная, но моей компетенции, что-бы разобраться - не хватает. Здесь - всё как есть: файл scop.script, строки 138 и 153 - функция get_object_param() - не работает ни в каких вариантах: position - есть, а оба вертекса - всегда nil
:-(
Если у кого есть возможность - прошу помочь сделать эту функцию рабочей.
как проверять:
0. предмет в слоте 2.
1. активировать слот, ввести дистанцию, кнопка "тест", спавниться предмет, выход.
2. погулять вокруг предмета, сколько угодно - не влияет.
3. активировать слот, ввести имя, кнопка "сохранить тест", будет "новость" с параметрами где вертексы == nil
:(
MRN$
Посмотрел скрипт - у тебя там было две ошибки:
1) В функции get_object_param() ты пытался получить данные с серверной юзердаты заспавненного объекта не получив ее клиентскую копию.
2) в функции вывода данных экран была ошибка - свойства m_level_vertex_id и m_game_vertex_id были неверно указаны - без буквы m_ - потому и nil получал вместо вертексов.
В общем я там переписал две функции - под клиентскую юзердату. Посмотри - как будешь в итоге выводить и форматировать - тут уж сам выбирай.
ссыль
_http://narod.ru/disk/24909268000/scop.rar.html
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Darkscape
Ты по прикалываться решил?! :blink Берилл в игре на то и лечебный, потому что лечит, да и вообще, если самому было лень найти эту строчку, то вот:
health_restore_speed -- как-то так, :dry:
Новый проект в разработке, ищи в моём журнале.
В теории - всё легко, а вот на деле - гораздо сложнее.
Fantom2323
Ты не прав.
То, что написано ... не всегда работает!
Параметр 'health_restore_speed' и прочие 'ххх_restore_speed' на брониках НЕ работаею.
Они только для класса артефактов.
Для броников требуется писать скриптовую схему, которая и будет обрабатывать этот (эти) парамерт(ы), типа как в Zenobian-mod'е.
MRN$
Хотя erlik уже тебе подсказал ошибки, но все же глянь и этот вариант. И подправлено и подоптимизировано: <скрипт>
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.