Boofer 0 Опубликовано 4 Января 2012 (изменено) Кто может подсказать почему этот скрипт срабатывает только когда его вызывают 2 раз? Тоесть по правильному этот скрипт должен работать так: При первом вызове он должен заспаунить объект в 1 слот и сделать его активным. Но при первом вызове лишь создаёт объект в инветарь, а уже при втором и последующих вызовах работает как надо. function use_cigarette() give_info("ui_inventory_hide") local weapon = db.actor:item_in_slot(1) finished("cigarette") if weapon~=nil then if weapon:section()~="cigarette" then this.drop_item_to_inventory(1) end db.actor:activate_slot(1) if db.actor:object("cigarette")==nil then mn_script.spawn_item_in_inv("cigarette") end db.actor:activate_slot(1) end if weapon==nil then db.actor:activate_slot(1) if db.actor:object("cigarette")==nil then mn_script.spawn_item_in_inv("cigarette") end db.actor:activate_slot(1) end db.actor:activate_slot(1) end Для 'портянок' кодов/логов используем спойлеры! --/Artos Изменено 4 Января 2012 пользователем Artos Поделиться этим сообщением Ссылка на сообщение
Boofer 0 Опубликовано 4 Января 2012 (изменено) 1. Перемещением в слот у меня занимается отдельная функция трансфера. Всё работает. Т.о. заспавнив объект, ты никогда не получишь этот клиентский объект в той же самой функции и в том же самом вызове. Artos, жаль... И это никак нельзя исправить? Изменено 4 Января 2012 пользователем Boofer Поделиться этим сообщением Ссылка на сообщение
Boofer 0 Опубликовано 4 Января 2012 (изменено) Artos, да нет не приспичило) Можете ещё подсказать как сделать таймер по реальному времени на использование объекта, чтобы по истечению некоторого времени после использования объект удалялся? P.S. На ТЧ. Таймеры уже заезженная тема. Посмотри как это сделано в АМК моде, там есть два таймера: по игровому и реальному времени. ColR_iT Добавлено через 21 мин.: В АМК смотрел, по такому же принципу сделать не получилось, увы, поэтому и спрашиваю. P.S. Вылетает игра и ругается на "pstor". Изменено 4 Января 2012 пользователем Boofer Поделиться этим сообщением Ссылка на сообщение
Boofer 0 Опубликовано 4 Января 2012 (изменено) Artos, нет, у меня объект с анимацией, что-то типа активация артефакта. Только она (активация артефакта) у меня идёт бесконечно, анимация каждый раз повтаряется и повторяется. А можно ссылку хотя бы на одну статью по созданию таймера? Извини ... я не справочное бюро и потрудить сам поискать. Ссылки на вики-сайты в шапке топика. --/Artos Изменено 4 Января 2012 пользователем Artos Поделиться этим сообщением Ссылка на сообщение
Boofer 0 Опубликовано 4 Января 2012 (изменено) Вот скрипт старта таймера реального времени. Не мой. function start_timer(name,delay,action) if not delay then return false end if not action then action = "" end local time = game.time() --time in seconds since 1970 local a=1 while db.storage[db.actor:id()].pstor["rt"..a] do a=a+1 if a>100 then return false end end save_variable("rt"..a, name) save_variable("rt"..a.."d", time+delay*10000) save_variable("rt"..a.."p", action) return true end После вызова этой функции игра вылетает с логом: Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...ing\s.t.a.l.k.e.r\gamedata\scripts\new_script.script:32: attempt to index field 'pstor' (a nil value) Строчку типа while db.storage[db.actor:id()].pstor["rt"..a] do я никогда раньше не видел и даже не представляю что в ней может быть не так. Изменено 4 Января 2012 пользователем Boofer Поделиться этим сообщением Ссылка на сообщение
Boofer 0 Опубликовано 11 Февраля 2012 (изменено) Как должна выглядеть логика моба при таком раскладе действий? После спавна моб ждёт 10 игровых минут и потом направляется в заданную точку, но при этои игнорируя ГГ. Изменено 11 Февраля 2012 пользователем Boofer Поделиться этим сообщением Ссылка на сообщение
Boofer 0 Опубликовано 11 Февраля 2012 *Shoker*, если так, тогда уж combat_ignore в активную писать. И не combat_ignore = true, а combat_ignore = combat_ignore [combat_ignore] И тут уже параметры. Да и вообще работает схема combat_ignore у мобов? И где бы ещё эти готовые примеры найти... Поделиться этим сообщением Ссылка на сообщение
Boofer 0 Опубликовано 11 Февраля 2012 (изменено) gruber, нашёл тутор, спасибо, попробую. Добавлено через 43 мин.: В туторе такого не нашёл. Кто знает как через логику убить моба, или это невозможно? А вот с этим, плз, в соответствующий топик: "[XXX] Ковыряемся в файлах". Собственно возьми готоую логику/скрипты для "учебной" плоти с Кордона (ТЧ), в которой и пауза (хотя и по рестриктору) и игнор и убийство ... --/Artos Изменено 11 Февраля 2012 пользователем Artos Поделиться этим сообщением Ссылка на сообщение
Boofer 0 Опубликовано 22 Февраля 2012 (изменено) Из за чего может быть такая проблема? Заспавнил мутанта и задал ему логику направится в определённую точку. Но вместо того чтобы двигаться к точке, мутант тупо стоит на месте с анимацией бега. Добавлено через 8 мин.: Вот что я действительно упустил, забыл сказать важную вещь - мутант спавнится на новой локации. Секция спавна собаки(моего мутанта) из all.spawn. ; cse_abstract properties section_name = dog_normal name = dog_normal_1 position = 179.759155273438,20.1181125640869,79.2889633178711 direction = 5.63856360713544e-007,-1.32480001449585,-1.41571035783272e-007 ; cse_alife_object properties game_vertex_id = 0 distance = 40.5999984741211 level_vertex_id = 383716 object_flags = 0xffffffbf custom_data = <<END [logic] active = mob_walker@dog_walk_1 [mob_walker@dog_walk_1] path_walk = dog_walk_1 on_timer = 10 | mob_walker@dog_walk_2 [mob_walker@dog_walk_2] path_walk = dog_walk_2 END ; cse_visual properties visual_name = monsters\dog\dog_red ; cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 health = 1 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 1 upd:timestamp = 0 upd:creature_flags = 0 upd:position = 179.759155273438,20.1181125640869,79.2889633178711 upd:o_model = 0 upd:o_torso = -1.32480001449585,5.63856360713544e-007,0 upd:g_team = 0 upd:g_squad = 0 upd:g_group = 0 ; cse_alife_monster_abstract properties upd:next_game_vertex_id = 65535 upd:prev_game_vertex_id = 65535 upd:distance_from_point = 0 upd:distance_to_point = 0 ; cse_ph_skeleton properties ; cse_alife_monster_base properties ; se_monster properties Точки я думаю писать уже не нужно? Не думаю что они чем-то помогут, но вот если что: [dog_walk_1] points = p0 p0:name = name00 p0:position = 218.416305541992,21.7092933654785,91.9415588378906 p0:game_vertex_id = 0 p0:level_vertex_id = 421092 [dog_walk_2] points = p0 p0:name = name00 p0:position = 88.924103,-10.092127,118.739883 p0:game_vertex_id = 1 p0:level_vertex_id = 301145 Изменено 22 Февраля 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
Boofer 0 Опубликовано 23 Февраля 2012 А на мой вопрос так и не ответили... Неужели никто не знает решения? Не поверю... Если это поможет, то у меня были следующие подозрения: У сталкеров есть секции такого типа: [stalker_terrain] 255,000,255,255 008,001,255,255 ;Разрешено ходить по опасным местам на баре 012,001,255,255 ;Разрешено ходить по опасным местам на Милитари У собак же она одна, но может быть она не подходит для моей новой локации или что-то типа этого? Поделиться этим сообщением Ссылка на сообщение
Boofer 0 Опубликовано 23 Февраля 2012 Artos, ну тогда меня может смущать только сама логика мутанта. Рабочая ли вообще схема mob_walker? Поделиться этим сообщением Ссылка на сообщение
Boofer 0 Опубликовано 24 Февраля 2012 (изменено) Artos, выяснил что виновата именно логика. Когда мутант находится под действием логики, то зависает в истерическом бегу на месте, но стоит ему заметить врага, он выходит из под действия логики и нападает на врага (передвигается). Но стоит врагу пропасть, он снова продолжает выполнять незаконченную логику и зависает... Менял и координаты точек и координаты спавна самого мутанта. Даже прописывал новую локацию в скрипте xr_gulag. Безрезультатно. Уже даже не представляю что ещё можно сделать... Пробовал без логики. Всё нормально. Изменено 24 Февраля 2012 пользователем Boofer Поделиться этим сообщением Ссылка на сообщение
Boofer 0 Опубликовано 25 Февраля 2012 (изменено) Artos, в том то и дело что сделал логику почти точ в точ как у той учебной плоти, а всё равно никак. Уже даже укоротил... Сделал самую простейшую. [logic] active = mob_walker1 [mob_walker1] path_walk = dog_walk_1 path_look = dog_look_1 Изменено 25 Февраля 2012 пользователем Boofer Поделиться этим сообщением Ссылка на сообщение