SkyLoader 53 Опубликовано 21 Августа 2010 Поделиться Опубликовано 21 Августа 2010 (изменено) Народ, как после переделывания нет-пакета непися в онлайн вынести его, а то амк скрипт его в оффлайн вынес? Что-то у меня не выходит. (Если был вопрос, извините) Изменено 21 Августа 2010 пользователем SkyLoader Ссылка на комментарий
Kirag 39 Опубликовано 22 Августа 2010 Поделиться Опубликовано 22 Августа 2010 F.O.B.O Народ, помогите пожалуйста : мне требуется создать скрипт по смене холодного оружия. Ковырял Народную солянку - там ничего подобного не нашёл. Посмотри в моей подписи мод "Ночные прицелы", там в конце шапки есть ссылка на смену оружия в ножевом слоте для ТЧ. Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
ALEXMANLEO 1 134 Опубликовано 23 Августа 2010 Поделиться Опубликовано 23 Августа 2010 Подскажите пожалуйста, как сделать, чтобы держа определенное оружие в руках, прибавлялась пси-защита и уменьшалась выносливость (это мне для курения ). Мне "Винторез" - единственный друг, надежда, опора и сила. Уродов сегодня так много вокруг, патронов бы только хватило. (с) Официальный Discord-сервер по NS OGSR. Неофициальный филиал "У Костра", но тоже Discord-сервер. Ссылка на комментарий
Stalk15 27 Опубликовано 23 Августа 2010 Поделиться Опубликовано 23 Августа 2010 ALEX BOY Например, можно так: local active_item = db.actor:item_in_slot(слот_сигареты) if (active_item:section() == "секция_сигареты") then db.actor.power = -0.0009 --/Постепенное именьшение выносливости db.actor.psy_health = 0.0007 --/Постепенное прибавление пси-защиты end Ссылка на комментарий
Massaraksh 0 Опубликовано 23 Августа 2010 Поделиться Опубликовано 23 Августа 2010 Подскажите, пожалуйста, как должен выглядеть скрипт в такой ситуации: есть два предмета, назовём их "item1" и "item2", нужно, чтобы при выбрасывании из рюкзака и при продаже item1 выкидывался и продавался item2, а при покупке и подбирании item2 в рюкзаке он превращался в item1. Ссылка на комментарий
Charsi 440 Опубликовано 23 Августа 2010 Поделиться Опубликовано 23 Августа 2010 Massaraksh, включи логику.Если при подборе item2 превратить его в item1, то при потере item1 нельзя будет выкинуть item2,ибо этот самый item2 уже не будет существовать. ALEX BOY, local aitem = db.actor:active_item() if (aitem and aitem:section() == "секция_сигареты") then db.actor.power = -0.0009 --/Постепенное именьшение выносливости db.actor.psy_health = 0.0007 --/Постепенное прибавление пси-защиты end Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий
Massaraksh 0 Опубликовано 23 Августа 2010 Поделиться Опубликовано 23 Августа 2010 Charsi, я, наверное, немного запутанно объяснил. Я имел в виду вот что: в рюкзаке, допустим, есть "АК-74"; если его выкинуть, то на земле появляется "Абакан", а при подборе "Абакана" в рюкзаке опять появляется "АК-74". Ну и с торговлей то же самое. Ссылка на комментарий
_Призрак_ 11 Опубликовано 23 Августа 2010 Поделиться Опубликовано 23 Августа 2010 по идее можно сделать так - в бинд_сталкере на он_итем дроп пишел скрипт на удаление ак74 и на спавн абакана по координатам актора. На он_итем_тэйк пишем скрипт на удаление абакана и на спавн ак74 в рюкзак актору Freedom Ссылка на комментарий
Гость Greh921 Опубликовано 23 Августа 2010 Поделиться Опубликовано 23 Августа 2010 (изменено) Помогите! В ЗП не работает sr_sound в space_restrictor-ах Чем заменить или как восстановить эту функцию? Хочу сделать так: active = sr_sound [sr_sound] snd = characters_voice\human_02\stalker\alife\defence\request_help_vs_mutant_1_pda P.S. В LUA нуб! Изменено 24 Августа 2010 пользователем Greh921 Ссылка на комментарий
jboo7 0 Опубликовано 24 Августа 2010 Поделиться Опубликовано 24 Августа 2010 Здравствуйте! Возник вопрос: как с помощью скриптовых функций узнать какие предметы в данный момент на поясе у ГГ? Извините, если вопрос уже задавался) Ссылка на комментарий
_Призрак_ 11 Опубликовано 24 Августа 2010 Поделиться Опубликовано 24 Августа 2010 Вот что написанно у сингапура в журнале по этому поводу: Исправлено! Достаточно долго бытовало мнение, что определить предмет на поясе невозможно. Теоретически так оно и есть, так как слот belt нигде не отслеживается. Но благодаря ПЫСам, которые наконец соизволили объяснить, пусть не прямой, а косвеный, но всётаки способ определения нахождения предмета на поясе. Давайте сначала разберём как мы это будем делать, чтобы в дальнейшем не было глупых вопросов. Итак, мы имеем инвентарь актора. Чтобы определить список всего инвентаря, который имеется у актора в наличии, нужно использовать метод db.actor:inventory_for_each(ScanInventory) Где ScanInventory --имя функции которая вызывается для каждого объекта инвентаря. Спросите, и как же мы определим какие предметы из них на поясе, а какие нет?! Вот это я щас и попытаюсь описать. Массив инвентаря актора состоит из нескольких субмассивов, которые запрашиваются в фиксированном порядке. А порядок здесь такой: 1. Массив рюкзака. 2. Массив пояса. 3. Первый слот. 4. Второй слот. и т. д. Чтобы при итерации всего списка инвентаря выудить именно массив пояса, нужно определить последний элемент в массиве рюкзака и ближайший элемент в одном из слотов. Предметы находящиеся между ними и будут являться предметами навешанными на пояс belt. Если с предметами находяшимися в слотах проблем нет, их определение свободно производится через проверку нахождения онных в слотах по их нумерации. То с последним предметом в рюкзаке немного сложнее, тут нету никаких особенных данных различающих их от предметов на поясе. Но... В связи с тем, что подбираемые или заспавненные предметы в инвентарь, добавляются именно в конец массива рюкзака, можно определять путём спавна/удаления предмета разделителя, по которому мы и будем узнавать конец массива рюкзака. Тоесть порядок действий такой: 1. Спавним предмет-разделитель в инвентарь актора. 2. Производим итерацию предметов инвентаря. 3. Как только итератор дойдёт до предмета-разделителя включаем ключ добавления инвентаря во внешнюю таблицу. 4. После включения ключа, следующие предметы после разделителя будут добавляться в таблицу. 5. По мере добавления, производим проверку на нахождение онных в одном из слотов. И как только один из них окажется предметом находящемся в слоте, завершаем пополнение таблицы. После всех этих действий, внешняя таблица будет содержать только список предметов находящихся на поясе. Вот собственно и весь принцип. Итак создаём в скриптах новый файл с именем bind_belt.script, и вставляем в него код: Код: belt = {} --//внешняя таблица пояса local separator = nil --//переменная для сохранения userdata разделителя local del_separator = false --//ключь удаления разделителя local start_add_belt = false --//ключь начала заполнения таблицы db.belt local open_inventory = false --//ключь открытия/закрытия инвентаря local stop_update = false local start_function = true --основная функция итерации инвентаря --(привязана к функции update() в файле bind_stalker.script) function IterateInventory() if stop_update then return end --//удаление всех случайно-сохранённых разделителей if start_function then db.actor:inventory_for_each(function(item) if item:section() == "separator" then alife():release(item, true) end end) separator = nil del_separator = false start_function = false end --//удаление разделителя (третий цикл) if del_separator and separator then this.DeleteSeparator() stop_update = true return end --//итерация инвентаря (второй цикл) if separator then db.belt = {} db.actor:inventory_for_each(ScanInventory) del_separator = true start_add_belt = false else --//спавн разделителя (первый цикл) separator = alife():create("separator", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end end --функция удаления разделителя function DeleteSeparator() alife():release(separator, true) separator = nil del_separator = false end --функция сканирования инвентаря function ScanInventory(item) local section = item:section() if start_add_belt and not DetermineSlot(item:id()) then if not db.belt[section] then db.belt[section] = 1 else db.belt[section] = db.belt[section] + 1 end end if item:section() == "separator" then start_add_belt = true end end --функция определения привязки объекта к одному из слотов function DetermineSlot(item_id) for i=0, 12 do local obj = db.actor:item_in_slot( i ) if obj and obj:id() == item_id then return true end end return false end --функция запуска обновления таблицы при закрытии инвентаря --(привязана к колбэку info_callback() в файле bind_stalker.script) function InventoryInfo(info) if info == "ui_inventory" or info == "ui_car_body" or info == "ui_trade" then open_inventory = true if separator then this.DeleteSeparator() end elseif info == "ui_inventory_hide" or info == "ui_car_body_hide" or info == "ui_trade_hide" then open_inventory = false stop_update = false end end --функция запуска обновления таблицы при взятии/выбрасывании предметов. --(привязана к колбэкам on_item_take() и on_item_drop () в файле bind_stalker.script) function TakeAndDrop(item) if item:section() == "separator" then return end if not open_inventory then if separator then this.DeleteSeparator() end stop_update = false end end Создаём объект в конфигах (файл config/misc/items.ltx) с именем секции [separator]: Код: [separator]:identity_immunities GroupControlSection = spawn_group discovery_dependency = $spawn = "" $prefetch = 32 class = II_BANDG cform = skeleton visual = equipments\item_bandage.ogf description = inv_name = inv_name_short = inv_weight = 0 inv_grid_width = 0 inv_grid_height = 0 inv_grid_x = 0 inv_grid_y = 0 eat_health = 0 eat_satiety = 0 eat_power = 0 eat_radiation = 0 wounds_heal_perc = 0 eat_portions_num = 1 cost = 0 animation_slot = 4 Затем в файле bind_stalker.script производим пропись всех нужных привязок функций: 1. Функция actor_binder:info_callback(npc, info_id): вписываем в конец тела функции: bind_belt.InventoryInfo(info_id) 2. Функция actor_binder:on_item_take (obj): вписываем в конец тела функции: bind_belt.TakeAndDrop(obj) 3. Функция actor_binder:on_item_drop (obj) вписываем в конец тела функции: bind_belt.TakeAndDrop(obj) 4. Функция actor_binder:update(delta) вписываем в конец тела функции: bind_belt.IterateInventory() Вот собственно и всё. Freedom Ссылка на комментарий
Massaraksh 0 Опубликовано 24 Августа 2010 Поделиться Опубликовано 24 Августа 2010 Ещё один вопрос: в all.spawn есть такое понятие, как physic_object, то есть физический объект, при спавне которого указывается модель, а не секция. Существует ли скрипт для спавна physic_object с указанием визуала, причём с параметром ignore_static? Ссылка на комментарий
Charsi 440 Опубликовано 24 Августа 2010 Поделиться Опубликовано 24 Августа 2010 (изменено) _Призрак_, и ещё нужно parent_id потерянного объекта проверять.Если 65535 или nil,то значит выкинули и новый предмет нужно спавнить под ноги ГГ.Иначе переложили и спавнить нужно в туда,куда переложили. На получение Абакана нужно подвешивать спавн в инвентарь АК74.А на получение АК74 - удаление из инвентаря Абакана.Иначе биндер не успеет отработать и зависнет. Изменено 24 Августа 2010 пользователем Charsi Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий
iDreD 5 Опубликовано 24 Августа 2010 Поделиться Опубликовано 24 Августа 2010 Massaraksh, да. Просто такой объект придётся спаунить с заносом в spawn_sections.ltx тобишь: [korobka_s_othodami]:physic_object $spawn = "respawn\korobka_s_othodami" visual = objects\dynamics\box\box_1c А physic_object это секция в system.ltx, так же там есть physic_destroyable_object (вроде так), к такому объекту можно ещё и написать логику с секцией [spawn], тобишь: [spawn] bandage antirad wpn_pb А модельку нужно прописать, например от ящика деревянного обыкновенного (разрушаемого) или железного ящика. Добавлено через 13 мин.: Вопрос - как скриптово нанести хит нпс'у? Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
djslavikoz 0 Опубликовано 24 Августа 2010 Поделиться Опубликовано 24 Августа 2010 (изменено) Читал тутор по спауне вертолётов через скрипт. Не могу понять как ето сделать??? Как вызывать функцию скрипта. Вот монстров знаю как , там функцию прописываеш в диалог. А с вертолётами не получается. Кто сможет обясните пожалуста. Может в есть пример функции рад буду посмотреть. Добавлено через 4 мин.: Svoboда, попробуй в смарт террейн написать [smart_terrains] none = true по идеи он не должен попадать под смарт террейн Добавлено через 7 мин.: Svoboда, p0:links = p1(1) p1:links = p2(1) p1:links = p0(1) Ети линкы предназначены поочерёдности тоисть с 0 ты можеш перейти сразу на 2 или на 3 схему а в конце можеш закольцовать ними свою схему. Судя по твоей схеме [esc_patrul_1_walk] points = p0,p1,p2 p0:name = name00---тут name 0 p0:position = -226.22203063965,-20.156566619873,-146.0369720459 p0:game_vertex_id = 47 p0:level_vertex_id = 28501 p0:links = p1(1) p1:name = name02|p=90|t=10000---- а вот тут 2 почему должен же быть один p1:position = -204.38716125488,-20.550384521484,-145.06907653809 p1:game_vertex_id = 57 p1:level_vertex_id = 48482 p1:links = p2(1) p2:name = name03---тоже самое p2:position = -169.30325317383,-20.079622268677,-144.25030517578 p2:game_vertex_id = 55 p2:level_vertex_id = 80666 p2:links = p0(1) У тебя сдесь закольцовано. Изменено 24 Августа 2010 пользователем djslavikoz Ссылка на комментарий
jboo7 0 Опубликовано 24 Августа 2010 Поделиться Опубликовано 24 Августа 2010 _Призрак_, спасибо огромное!) Строгое предупреждение от модератора n6260 Изучите пункт 2.1.2 правил форума. Ссылка на комментарий
DiXares 1 Опубликовано 25 Августа 2010 Поделиться Опубликовано 25 Августа 2010 (изменено) Здравствуйте Все! Появилась идея создать спавн объектов(нпс и т.д.) по одному методу: Имеется файл ("basb.ltx") с текстом: [options] num_i=1 [wpn_pm1] --//(1=индекс) x=234.2365340 y=3.547351333 z=0.34643600 v=0 g=3252 --//xyz координаты, vg вертексы. При старте игры делаем следующее: Парсим этот файл ini: [секция]~отрубаем секцию объекта(сис. имя), индекс заносим в таблицу запретных(то есть больше этот объект не заспавнится). читаем координаты ==>> спавним, следующая секция... и т.д.. Если это получится реализовать, то скажу как делать дальше, что бы расставлять быстрее раз в 10-20. Вобщем парсим типа так: for i=1, ini_file("basb.ltx"):r_s32("options", "num_i") do проверили, нет ли в игноре... прочли координаты, заспавнили, занесли в игнор лист... end Данный метод эффективен тем, что не нужно замерять координаты спавна в игре... прям спавним, и всё запоминается в базу)) Не проверял, но должно получиться. Изменено 25 Августа 2010 пользователем TREWKO Ссылка на комментарий
Stalk15 27 Опубликовано 27 Августа 2010 Поделиться Опубликовано 27 Августа 2010 НПС'у прописал точку, где он должен остановиться, проиграть анимку, и что-то прборматать: p2:name = name03|a=stoya_boltaet|s=bar_arena_public|t=18000 p2:flags = 0x4 p2:position = -443.18,-5.74,-141.41 p2:game_vertex_id = 3906 p2:level_vertex_id = 264079 Все работает, но звука от НПС не слышно, нету его.Подскажите, что я не правильно сделал? Ссылка на комментарий
Gektor 0 Опубликовано 29 Августа 2010 Поделиться Опубликовано 29 Августа 2010 (изменено) Здраствуйте товарищи. У меня такой вопрос: как правильно уводить NPC в офлайн в Зове Припяти. И никто не пробовал востановить секцию [spawner] в логике npc в Зове Припяти? А то как ни пробовал она там работать отказалась. P.S. В скриптах соображаю оочень мало. Помогите разобратся пожайлуста. Зарание спасибо. Методами теней черныбыля не получается. Работа_в_offline_и_online со сталкер вики не катит. [spawner] не пашет в зове припяти как ни крути. Изменено 30 Августа 2010 пользователем Gektor Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу. Ссылка на комментарий
iDreD 5 Опубликовано 30 Августа 2010 Поделиться Опубликовано 30 Августа 2010 как правильно уводить NPC в офлайн в Зове Припяти. http://stalkerin.gameru.net/wiki/index.php...e_%D0%B8_online Vito$, так же как всех остальных: function spawn_bloodsucker() alife():create("bloodsucker_strong",vector():set(4.5661993026733,4.5522308349609,36.743591308594),953834,19) end И смотрим тут http://stalkerin.gameru.net/wiki/index.php...%B0%D1%82%D1%8B Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти