Callisto 2 Опубликовано 26 Августа 2011 Поделиться Опубликовано 26 Августа 2011 Почитала я тему и ужаснулась, какие сложные для меня вещи тут обсуждаются, даже както-то стыдно со своими элементарными вопросами соваться, но все-таки... Возникла небольшая идея, но для ее реализации придется писать скрипт, решила сама попробовать, вдруг получится Так вот, вопрос (думаю не последний): можно ли проверить какие боеприпасы используются в активном слоте на данный момент? (ТЧ) Ссылка на комментарий
Artos 99 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 (изменено) speczadanie Вот если бы ты потрудился бы дать результаты своего 'метода логов', тогда бы может кто и подсказал бы, в чем дальше у тебя проблема ... Пока же можно дать одну рекомендацию: "Искать и разбираться самому в своих кодах или дать коды знакомому скриптеру/кодеру." Судя по первоначальной ошибке 'отсутствия объекта' и твоих выводов о отрицательном результате проверки функции коллбэка на спавн - тебе стОит искать причину исчезновения гейм-объекта только что заспавненного 1-ой функцией предмета (wpn). Т.к. 2-ая функция (коллбэк) срабатывает (судя по упомянутому 'методу логов') - предмет заспавнен в игру и появился в онлайне ... То, что его (предмета) клиентская юзердата исчезает - значит есть некая причина. Ее и предстоит тебе искать, т.к. в оригинальной игре такого нет и исчезать НЕ должен. Совет: Вставить во 2-ю функцию строки вывода в лог о наличии аргумента 'id', о наличии объекта с этим 'id' в игре (серверный объект) и в онлайне (гейм-объект) и о типе аргумента 'obj' на входе в функцию. Тогда может и будет возможность строить погадалки дальше ... Добавлено через 6 мин.: *Shoker* Разочарую, штатных иль иных, отличных от перебора, вариантов получить массив вертексов окружающих некую точку и тем бодее по заданной дистанции - нет (ИМХО. Помнится этим вопросом задавался singapur22 и были некие черновые наработки, но ... Добавлено через 37 мин.: Callisto: ... можно ли проверить какие боеприпасы используются в активном слоте на данный момент? Да, можно, но только не для слотов, а для оружия в нем. Для этого придется использовать методы чтения нет-пакетов. --/------------------------------------------------------------------- --/ Функции работы с патронами --/------------------------------------------------------------------- local iSSVer = script_server_object_version() --/ версия игры (6/7-SHoC, 8-SC, 12-CoP) local oPk = net_packet() --/ 'читалка' нет-пакетов --/ определяем название секции патронов в активном стволе NPC function Get_ActiveAmmoSection(oNPC) --/< (npc or nil) if not oNPC then oNPC = db.actor end local oItem = oNPC and oNPC:active_item() if oItem and isWeapon(oItem) then --/ проверка: оружие ли в руках? local soWeapon = sim:object(oItem:id()) if soWeapon then local iAmmoType = Get_AmmoType(soWeapon) --/< получаем тип патронов в стволе if iAmmoType then return Get_AmmoSection(oItem:section(),iAmmoType) --/> "ammo_section" (or nil) end end end return nil --/> end --/ определяем имя секции патронов по типу (iAmmoType) для секции (sSection) оружия function Get_AmmoSection(sSection, iAmmoType) --/< ammo_type (0|1|2|...) local sAmmoList = system_ini():r_string(sSection, "ammo_class") --/ читаем из конфиг-файла if sAmmoList and sAmmoList ~= "" then local tAmmoList = {} --/ заготовка для списка наименований патронов for sAmmo in sAmmoList:gmatch('%s*([^,]+)%s*') do --/ парсим строку по запятым table.insert(tAmmoList, sAmmo) end return tAmmoList[(iAmmoType or 0) +1] --/> "ammo_section" (or nil) end return nil --/> end --/ определяем текущий тип патронов (ammo_type) в стволе (weapon) function Get_AmmoType(soObj) --/< weapon (server_object) oPk:w_begin(0) cse_alife_item_weapon.STATE_Write(soObj,oPk) if iSSVer >= 8 then --/ for CS/CoP oPk:r_seek(oPk:w_tell()-3) else --/ for SHoC oPk:r_seek(oPk:w_tell()-1) end return oPk:r_u8() --/> "ammo_type" end --/------------------------------------------------------------------- Добавлено через 30 мин.: panzyuza 1. Не стОит без причины задавать адресные вопросы. Не все считают возможным отвечать на вопрос заданный конкретно кому-то ... 2. Спасибки и пр. - по правилам форума следует адресовать в ПМ, избегая засорения топиков неинформативным 'мусором'. 3. Не стОит задавать сразу кучу вопросов, что часто превращает обсуждение в кашу малу ... 4. Следует придерживаться правилам ТЕМАТИЧЕСКИХ разделов/тем, а не устраивать в одном место 'бюро справок'. Я не сторонник давать готовые рецепты и уж тем более не работник бюро справок. Если вижу, что модмейкер работает своей головой и действительно ему нужно помощь - помогаю (если могу). Но если вижу, что модмейкеру самому ЛЕНЬ почитать мануалы, ФАКи, примеры готовых кодов и т.п. - ни малейшего желания облегчить ему его труда и сэкономить время для лени - не испытываю. Т.о. задавая вопрос стОит подумать, а стОит ли его задавать, вместо потратить время на собственные поиск ответов? Ведь в следующий раз можно и не получить ответа даже на сложный вопрос, требующий и посторонней помощи ... Твоя фраза "Возможно ли через скрипт заставить в определенной точке(рестриктор, например) нпс проиграть анимацию напрямую из файла stalker_animation.omf" - для меня непонятна. Что же спавнить и при чем тут точка/рестриктор и анимация - не внял ... По анимации: Тебе следует почитать соответствующий топик, мануалы. То, что ты называешь анимацией, т.е. массив из 'state_mgr_animation_list' - это уже сложные (составные) анимации. То, что имеется в 'stalker_animation.omf' (и иже) - это элементы анимации, т.е. простые анимации. Разница между ними собственно вытекает из названия, составные представляют некий набор из простейших, что и описано в 'state_mgr_animation_list'. Т.е. если тебе требуется не просто чтобы НПС поднял руку, а поприветствоовал тебя, подняв ее, помахав и опустив - используется именно составная. Составные анимации используются схемами (например менеджером состояний) и скриптами. Простые можно конечно же тоже использовать в скриптах и в составе и 'по отдельности'. Для этого есть соответствующие методы, типа: 'add_animation', 'clear_animations' ... Смотри их применение в готовых кодах игры/модов. О методе 'berserk()' посмотри сам в теме "Справочник по функциям и классам". К тому что там - ничего не могу добавить. И не задавай, плз, подобных вопросов. И Справочники есть и в игре/кодах функций ой как не мало и по каждой давать толковалку - требуется штатный сотрудник тех.поддержки ... Да и глупо порой задаваться такими вопросами, т.к. а) немало 'мусора' в кодах игры и б) а для чего тебе самому дана голова и руки(?), как не взять и попробовать/проверить ... И последнее, не задавался вопросами переноса 'системы анипоинтов'. Могу только сказать, если очень хочется и есть навыки - очень многое возможно ... Изменено 27 Августа 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Shoker* 322 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 Callisto Если что, то вызывать функцию так: local ammo_sec = Get_ActiveAmmoSection() --\\ в скобках может быть любой персонаж, если они пустые, то тогда проверка идёт на игрока Вернёт название секции с патронами. Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
antreg 178 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 -=Krovosos=-, [smart_terrains] none = true [logic] active = camper@my_npc combat_ignore = combat_ignore on_hit = hit [camper@my_npc] path_walk = my_npc_walk path_look = my_npc_look meet = meet@my_npc danger = danger_condition@my_npc combat_ignore_cond = always [danger_condition@my_npc] ignore_distance = 0 ignore_distance_corpse = 0 [meet@my_npc] use = true use_wpn = false meet_talk_enabled = true [hit] on_info = %=actor_enemy% "Тайные Тропы 2" техподдержка "Ф.О.Т.О.Г.Р.А.Ф" техподдержка Ссылка на комментарий
Ulman 5 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 Люди, а какая функция проверяет визуал НПС? Ссылка на комментарий
Galil 18 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 (изменено) Есть кусок кода из amk_anoms.script level_arts={ l01_escape={2,4,{balb_1=24, balb_2=2, balb_3=0, gravi_1=23, gravi_2=5, gravi_3=0, mincer_1=25, mincer_2=0, mincer_3=0, electra_1=9, electra_2=1, electra_3=0, zharka_1=0, zharka_2=0, zharka_3=0, buzz_1=0, buzz_2=0, buzz_3=0, rusty_1=5, rusty_2=0, rusty_3=0, armor_1=1, babka_1=1, pudd_1=1, spirit_1=1, acumm=2}}, l02_garbage={2,4,{balb_1=19, balb_2=5, balb_3=0, gravi_1=25, gravi_2=5, gravi_3=0, mincer_1=20, mincer_2=5, mincer_3=0, electra_1=10, electra_2=0, electra_3=0, zharka_1=0, zharka_2=0, zharka_3=0, buzz_1=0, buzz_2=0, buzz_3=0, rusty_1=5, rusty_2=0, rusty_3=0, armor_1=1, cry_1=1, kol_1=1, pudd_1=1, acumm=2}}, l03_agroprom={3,6,{balb_1=12, balb_2=5, balb_3=0, gravi_1=13, gravi_2=5, gravi_3=0, mincer_1=10, mincer_2=5, mincer_3=0, electra_1=10, electra_2=5, electra_3=0, zharka_1=10, zharka_2=5, zharka_3=0, buzz_1=10, buzz_2=0, buzz_3=0, rusty_1=5, rusty_2=0, rusty_3=0, armor_1=1, babka_1=1, pudd_1=1, acumm=2}}, l04_darkvalley={6,8,{balb_1=1, balb_2=9, balb_3=0, gravi_1=5, gravi_2=8, gravi_3=0, mincer_1=5, mincer_2=10, mincer_3=0, electra_1=5, electra_2=9, electra_3=0, zharka_1=10, zharka_2=10, zharka_3=0, buzz_1=10, buzz_2=3, buzz_3=0, rusty_1=5, rusty_2=2, voron_1=1, armor_1=1, babka_1=1, dik_1=1, pudd_1=1, spirit_1=1, acumm=2}}, l05_bar={2,4,{balb_1=18, balb_2=7, balb_3=0, gravi_1=18, gravi_2=0, gravi_3=0, mincer_1=20, mincer_2=0, mincer_3=0, electra_1=10, electra_2=0, electra_3=0, zharka_1=0, zharka_2=0, zharka_3=0, buzz_1=5, buzz_2=3, buzz_3=0, rusty_1=5, rusty_2=3, rusty_3=0, dummy_1=1, dummy_2=1, dummy_3=0, dummy_4=1, dummy_5=1, babka_1=1, dik_1=1, spirit_1=1, acumm=4}}, l06_rostok={2,5,{balb_1=0, balb_2=2, balb_3=2, gravi_1=0, gravi_2=0, gravi_3=0, mincer_1=0, mincer_2=2, mincer_3=2, electra_1=8, electra_2=10, electra_3=0, zharka_1=20, zharka_2=10, zharka_3=5, buzz_1=5, buzz_2=0, buzz_3=0, rusty_1=10, rusty_2=10, rusty_3=5, dummy_1=0, dummy_2=1, dummy_3=1, dummy_4=1, dummy_5=0, babka_1=1, cry_1=1, pudd_1=1, spirit_1=1, acumm=2}}, l08_yantar={4,8,{balb_1=1, balb_2=3, balb_3=2, gravi_1=8, gravi_2=5, gravi_3=3, mincer_1=6, mincer_2=5, mincer_3=2, electra_1=8, electra_2=5, electra_3=2, zharka_1=8, zharka_2=5, zharka_3=2, buzz_1=8, buzz_2=5, buzz_3=1, rusty_1=9, rusty_2=3, rusty_3=2, armor_1=1, cry_1=1, dik_1=2, kol_1=1, pudd_1=1, spirit_1=1}}, l07_military={4,7,{balb_1=2, balb_2=4, balb_3=2, gravi_1=3, gravi_2=5, gravi_3=3, mincer_1=6, mincer_2=5, mincer_3=5, electra_1=8, electra_2=5, electra_3=2, zharka_1=6, zharka_2=5, zharka_3=3, buzz_1=8, buzz_2=2, buzz_3=0, rusty_1=8, rusty_2=5, rusty_3=2, dummy_1=0, dummy_2=1, dummy_3=1, dummy_4=0, dummy_5=1, armor_1=1, babka_1=1, cry_1=1, kol_1=1, pudd_1=1, spirit_1=1, acumm=2}}, l10_radar={4,8,{balb_1=3, balb_2=5, balb_3=5, gravi_1=4, gravi_2=3, gravi_3=3, mincer_1=6, mincer_2=6, mincer_3=5, electra_1=5, electra_2=4, electra_3=3, zharka_1=5, zharka_2=5, zharka_3=5, buzz_1=5, buzz_2=5, buzz_3=0, rusty_1=7, rusty_2=6, rusty_3=5, armor_1=1, babka_1=1, kol_1=1, pudd_1=1, spirit_1=1}}, l11_pripyat={4,7,{balb_1=3, balb_2=3, balb_3=3, gravi_1=3, gravi_2=3, gravi_3=3, mincer_1=4, mincer_2=4, mincer_3=3, electra_1=4, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=4, buzz_1=8, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=5, rusty_3=4, dummy_1=1, dummy_2=2, dummy_3=1, dummy_4=1, dummy_5=1, armor_1=2, cry_1=2, kol_1=1, pudd_1=1, acumm=2}}, l12_stancia={2,4,{balb_1=2, balb_2=3, balb_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=6, mincer_2=4, mincer_3=3, electra_1=7, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=3, buzz_1=7, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=4, rusty_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, dummy_5=1, armor_1=1, dik_1=1, pudd_1=1, acumm=2}}, puzir={2,4,{balb_1=3, balb_2=3, balb_3=0, gravi_1=5, gravi_2=5, gravi_3=0, mincer_1=10, mincer_2=5, mincer_3=0, electra_1=12, electra_2=5, electra_3=0, zharka_1=10, zharka_2=5, zharka_3=0, buzz_1=12, buzz_2=8, buzz_3=5, rusty_1=5, rusty_2=2, rusty_3=0, armor_1=1, babka_1=1, cry_1=1, kol_1=1, spirit_1=1}}, aver={4,8,{balb_1=2, balb_2=3, balb_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=5, mincer_2=4, mincer_3=1, electra_1=7, electra_2=5, electra_3=2, zharka_1=4, zharka_2=4, zharka_3=1, buzz_1=8, buzz_2=6, buzz_3=4, rusty_1=7, rusty_2=4, rusty_3=4, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, dummy_5=1, armor_1=1, babka_1=1, cry_1=1, kol_1=1, pudd_1=1, spirit_1=1, acumm=2}}, marsh={8,10,{balb_1=2, balb_2=3, balb_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=6, mincer_2=4, mincer_3=3, electra_1=7, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=3, buzz_1=7, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=4, rusty_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, voron_1=1, armor_1=1, babka_1=1, cry_1=1, kol_1=1, spirit_1=1}}, limansk={2,4,{balb_1=2, balb_2=4, balb_3=5, gravi_1=5, gravi_2=5, gravi_3=5, mincer_1=4, mincer_2=5, mincer_3=5, electra_1=5, electra_2=5, electra_3=5, zharka_1=5, zharka_2=5, zharka_3=5, buzz_1=5, buzz_2=5, buzz_3=0, rusty_1=5, rusty_2=5, rusty_3=5, armor_1=1, cry_1=1, pudd_1=1, spirit_1=2}}, hospital={2,4,{balb_1=3, balb_2=4, balb_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=6, mincer_2=4, mincer_3=3, electra_1=7, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=3, buzz_1=7, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=4, rusty_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, dummy_5=1, babka_1=1, dik_1=1, spirit_1=1}}, red_forest={4,8,{balb_1=3, balb_2=9, balb_3=5, gravi_1=4, gravi_2=3, gravi_3=3, mincer_1=6, mincer_2=6, mincer_3=5, electra_1=5, electra_2=4, electra_3=3, zharka_1=5, zharka_2=5, zharka_3=5, buzz_1=5, buzz_2=5, voron_1=1, rusty_1=6, rusty_2=6, armor_1=1, babka_1=1, cry_1=1, dik_1=1, kol_1=1, spirit_1=1}}, lost_village={3,6,{balb_1=6, balb_2=7, balb_3=5, gravi_1=7, gravi_2=3, gravi_3=3, mincer_1=8, mincer_2=7, mincer_3=5, electra_1=8, electra_2=7, electra_3=2, zharka_1=5, zharka_2=5, zharka_3=5, buzz_1=5, buzz_2=5, dummy_1=5, cry_1=1, kol_1=1}}, generators={4,8,{balb_1=2, balb_2=4, balb_3=3, gravi_1=4, gravi_2=3, gravi_3=3, mincer_1=5, mincer_2=4, mincer_3=3, electra_1=4, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=4, buzz_1=8, buzz_2=4, buzz_3=3, rusty_2=9, dummy_1=5, dummy_2=5, dummy_3=1, dummy_4=1, dummy_5=1, armor_1=1, babka_1=1, cry_1=1, dik_1=1, kol_1=1, spirit_1=1}}, atp_for_test22={4,8,{balb_1=2, balb_2=4, balb_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=4, mincer_2=4, mincer_3=1, electra_1=5, electra_2=5, electra_3=2, zharka_1=6, zharka_2=4, zharka_3=1, buzz_1=8, buzz_2=6, buzz_3=4, rusty_1=7, rusty_2=4,dummy_1=5, dummy_2=1, dummy_3=1, dummy_4=1, voron_1=1, armor_1=1, babka_1=1, cry_1=1, dik_1=1, pudd_1=1, acumm=3}}, dead_city={3,6,{balb_1=4, balb_2=4, balb_3=3, gravi_1=4, gravi_2=3, gravi_3=3, mincer_1=5, mincer_2=4, mincer_3=3, electra_1=4, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=4, buzz_1=8, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=5, rusty_3=4, dummy_1=1, dummy_2=2, dummy_3=1, dummy_4=1, dummy_5=1, armor_1=1, cry_1=1, kol_1=1, pudd_1=1}}, zaton={6,10,{balb_1=2, balb_2=3, balb_3=3, gravi_1=4, gravi_2=4, gravi_3=3, mincer_1=4, mincer_2=4, mincer_3=3, electra_1=7, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=3, buzz_1=7, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=4, rusty_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, voron_1=1, armor_1=1, babka_1=2, cry_1=1, kol_1=1, spirit_1=2, acumm=2}}, jupiter={4,8,{balb_1=2, balb_2=3, balb_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=6, mincer_2=4, mincer_3=3, electra_1=7, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=3, buzz_1=7, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=4, rusty_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, voron_1=1, armor_1=1, babka_1=1, cry_1=1, kol_1=1, spirit_1=1}}, pripyat={4,8,{balb_1=2, balb_2=3, balb_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=6, mincer_2=4, mincer_3=3, electra_1=7, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=3, buzz_1=7, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=4, rusty_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, voron_1=1, armor_1=1, babka_1=1, cry_1=1, kol_1=1, spirit_1=1}} } Вопрос - возможно ли через скрипт добавить в таблицу новые значения? Чтобы, например, в pripyat={4,8,{balb_1=2, balb_2=3, balb_3=3, gravi_1=6, gravi_2=4, gravi_3=3, mincer_1=6, mincer_2=4, mincer_3=3, electra_1=7, electra_2=4, electra_3=3, zharka_1=7, zharka_2=4, zharka_3=3, buzz_1=7, buzz_2=4, buzz_3=3, rusty_1=7, rusty_2=4, rusty_3=3, dummy_1=1, dummy_2=1, dummy_3=1, dummy_4=1, voron_1=1, armor_1=1, babka_1=1, cry_1=1, kol_1=1, spirit_1=1}} добавить spirit_2=1. Если возможно, то подскажите как. *Shoker* это артефакты, просто они переведены под локальные переменные. Все это относится к спавну артефактов после выброса. Я же хочу добавить новые артефакты, но чтобы они начали спавниться только после определенного события. Или лучше сделать новую дополнительную таблицу со своим скриптом спавна? temakonkin если неошибаюсь, то он просит что-то дописать в acdc.pl. Ифнформация связанная с wpn_ak74_m1 Изменено 27 Августа 2011 пользователем Galil Cold Zone *** Youtube *** Стволы *** SC2TV Ссылка на комментарий
*Shoker* 322 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 (изменено) Ну наверно можно, только сперва надо понять что обзначают в скрипте эти названия - balb\gravi и прочее. А дальше по аналогии. Ulman В ЗП get_visual_name() В ЧН/ТЧ по моему разбирают пакет до части визуала. Тоесть если у тебя есть в моде скрипт для разбора нет-пакетов по типу АМК\Симбиона, то проблем не будет, еже ли хочешь наглядный вариант, то в ОГСМе глянь скрипт который в трупах броню спавнит, там как раз определение визуала через пакет. И да, игра вернёт тебе полный путь до визуала, поэтому надо ещё его обрезать до названия модели. Опять таки это можешь в ОГСМе глянуть, или в Интелектуал Марадёр Мод (IMM) ну и вообще в других модах где есть снятие. Изменено 27 Августа 2011 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
temakonkin 0 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 (изменено) при распаковке all.sapwn возникла проблема... после запуска батника, ACDC начинает ругаться, говорит что- physic_destroyable_object physic_destroyable_object physic_destroyable_object ......................... physic_destroyable_object physic_destroyable_object physic_destroyable_object physic_destroyable_object wpn_ak74_m1 update data left [12] in kat_wpn_ak74_m1 at D:\acdc\acdc.pl line 2319. D:\acdc>pause Для продолжения нажмите любую клавишу . . . Perl у меня имеется.... ACDC скачал с Wiki -это написано в bat, который запускает сам acdc acdc.pl -d all.spawn pause Вопрос: в чём проблема, и как её исправить? и что значит строка update data left [12] in kat_wpn_ak74_m1 at D:\acdc\acdc.pl line 2319. Проблема: Втайнике ничего не спавнится.... Делал по этой статье Вопрос: вчём проблема? Изменено 27 Августа 2011 пользователем temakonkin Сталкер в душе - сталкер по жизни! Ссылка на комментарий
*Shoker* 322 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 Ты распаковывал от ориг. игры или от какого то мода? Версию игры не спутал? У тя АСДС по идее для ЧН должен быть, или ты от мода разбираешь? Ругается на потерю данных. Скорее всего разбираешь all.spawn от мода, и там у него свои предметы. Нужно найти ACDC под этот мод. Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Ulman 5 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 *Shoker*, спасибо, вроде нашел. Вот у меня имеется во такой кусок скрипта: if string.find(vis,"stalker_bandit_") then return section end if string.find(vis,"stalker_bandit_veteran") then return section end if string.find(vis,"stalker_bandit_master") then return section end if string.find(vis,"stalker_bandit_borov") then return section end if string.find(vis,"stalker_bandit_exoskeleton") then return section end Можно ли его заменить на вот такой: local stalker_gopnik = {"stalker_bandit_", "stalker_bandit_veteran", "stalker_bandit_master", "stalker_bandit_exoskeleton"} if string.find(vis,"stalker_gopnik") then return section end И если да, то я понял возвращаться будет "section", даже если хоть одна из переменных, из stalker_gopnik подходит? Ссылка на комментарий
_Призрак_ 11 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 Можно, но код у тебя не правильный Нужно так: local stalker_gopnik = {"stalker_bandit_", "stalker_bandit_veteran", "stalker_bandit_master", "stalker_bandit_exoskeleton"} for i=1,#stalker_gopnik do if string.find(vis,stalker_gopnik) then return section end end Freedom Ссылка на комментарий
s.t.e.p.l.e.r 0 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 (изменено) Всем привет ! Возникла такая проблема при попытке прописывания НПС в Алл спавне (cop) не происходит упаковка ал спавна - то есть понятно что у меня ошибка , помогите понять что не так пробовал уже разные варианты - результат тот же ,это для ЗП , локации присоеденены там всё в порядке [escape_39 ] ; cse_abstract properties section_name = stalker name = sidor position = -139.440231,-29.689821,-353.661438 direction = -0.012388,0.000000,0.999923 ; cse_alife_trader_abstract properties money = 5000 character_profile = sidor ; cse_alife_object properties game_vertex_id = 1501 distance = 0 level_vertex_id = 114867 object_flags = 0xffffffff custom_data = <<END [logic] cfg = scripts\escape\sidor.ltx END ; cse_visual properties visual_name = actors\trader ; cse_alife_creature_abstract properties g_team = 8 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 = -139.440231,-29.689821,-353.661438 upd:o_model = 0 upd:o_torso = 0,0,0 upd:g_team = 8 upd:g_squad = 0 upd:g_group = 0 ; cse_alife_monster_abstract properties base_in_restrictors = yan_bunker_door_zomby_restrictor upd:next_game_vertex_id = 65535 upd:prev_game_vertex_id = 65535 upd:distance_from_point = 0 upd:distance_to_point = 0 ; cse_alife_human_abstract properties predicate5 = 2,2,1,1,2 predicate4 = 1,0,0,1 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties Изменено 27 Августа 2011 пользователем s.t.e.p.l.e.r -------- Все-таки в дерьме что-то есть, миллион мух не может ошибаться. Ссылка на комментарий
Artos 99 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 Ulman, _Призрак_ Все же стОит читать и понимать написанные скрипты, а не заученно применять шаблоны ... Строка: if string.find(vis,"stalker_bandit_") делает все последующие ваши (не)правильные проверки бестолковым баластом, т.к. если уж эта проверка НЕ сработает - то уж последующие и подавно. А если сработает - последующие просто игнорируются. Именно подобные бездумные коды, которые явно не выдают ошибок, и приводят (при их накоплении в кодах игры) зачастую к лагам и проблемам с переполнениями стеков. Добавлено через 9 мин.: Galil "через скрипт добавить в таблицу новые значения?" - можно, если таблица в области видимости скрипта, т.е. если коды скрипта могут с нужной таблицей работать (таблица глобальна или в этом же скрипт файле ...). Однако(!), дать конкретный ответ 'как и что нужно' для добавления может только тот, кто знает о какой конкретно версии мода ты ведешь речь. Исходно (AMK-мод v1.3(4)x) скрипт 'amk_anoms.script' не имеет ничего общего с приведенной тобою фрагментом, а точнее - это уже результат изменения в некоем моде ... Ну а результат 'добавления' в таблицу - напрямую зависит от кодов, которые эту таблицу далее используют. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Ulman 5 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 (изменено) Artos, то есть лучше так оставить? if string.find(vis,"stalker_bandit_") then return section end if string.find(vis,"stalker_bandit_veteran") then return section end if string.find(vis,"stalker_bandit_master") then return section end if string.find(vis,"stalker_bandit_borov") then return section end if string.find(vis,"stalker_bandit_exoskeleton") then return section end И почему способ Призрака неправильный? Я вот в одном уроке видел такой способ: --Проверка на взятие нескольких разных предметов и выдача инфопоршня: local t_wpn = {"ПРЕДМЕТ1", "ПРЕДМЕТ1", "ПРЕДМЕТ1"} function search_ALL_weapons_complete() local gg = db.actor if gg then for i=1,#t_wpn do if not gg:object(t_wpn[i]) then return false end end gg:give_info_portion("ПОРШЕНЬ") return true end return false end Изменено 27 Августа 2011 пользователем Ulman Ссылка на комментарий
strelok200 0 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 Как сделать, чтобы функция срабатывала только один раз? Куда её надо вставить в бинд сталкер? Создаю глобальный мод с новыми локациямЭ Ссылка на комментарий
Desertir 202 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 strelok200, смотря что ты хочешь сделать. Один из вариантов (возможно не самый удачный) - проверять на не наличие инфопоршня, после выполнения скрипта выдать этот поршень. После этого условие не выполниться и скрипт не пойдет. ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Artos 99 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 Ulman Мой комментарий, втод как, был обращен И тебе. Перепрочти его пару раз! Я не сказал 'не правильно', а употребил термин 'бессмысленный баласт'. Твой вариант _Призрак_ назвал неправильным, и он в этом прав. Но дав свой вариант, не имеющий ошибки - он все равно наступил на те же грабли (тобоою установленные). Бессмысленно прокручивать таблицу, если первый же ее индекс либо верен, либо нет. Приведенный тобою пример кода из уроока - имеет с твоим только то, что в нем тоже применяются операторы циклов ... Могу только повторить уже сказанную фразу (видно ее не прочел и/или не понял): "Все же стОит читать и понимать написанные скрипты, а не заученно применять шаблоны ..." "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Shoker* 322 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 (изменено) Ulman Я не Артос, но отвечу. Так лучше не оставлять тоже. Ты распиши что ты хочешь получить, и тебе подскажут более грамотный способ как это реализовать. Насчёт: if string.find(vis,"stalker_bandit_") then return section end if string.find(vis,"stalker_bandit_veteran") then return section end ... Ты наверно не до конца понял смысл функции string.finde Она принимает строку, и проверяет есть ли в этой строке КУСОК указанного текста. Тоесть если ты передал строку "stalker_bandit_na_svalke" то уже тут: if string.find(vis,"stalker_bandit_") then return section end Функция вернёт переменную section (сработает условие) , т.к в тексте stalker_bandit_na_svalke есть искомая фраза. Еже ли такая проверка не сработает, то и остальные не сработают тем более, поскольку в них тоже есть элемент stalker_bandit_, который скрипт УЖЕ не нашёл в строке. Тоесть если по простому. Если ты ищешь в тексте слово "Бандит" и не находишь, то и фразу "Бандит в плаще" ты в том файле тоже не найдёшь. Изменено 27 Августа 2011 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 (изменено) strelok200 1. Класс: 'бинд сталкер' - это далеко не один метод/функция. Ответ на твой вопрос зависит от того, что же ты туда захотел добавить и в какое место (в какое событие). 2. "срабатывала только один раз?" - имеет как минимум две трактовки: 'один раз за всю игру' и 'один раз в выбранном методе' биндера (оидн раз после каждого запуска игры). Добавлено через 2 мин.: *Shoker*, мой ник Artos, и прошу его не употреблять иначе (без вестких на то причин)! Изменено 27 Августа 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Ulman 5 Опубликовано 27 Августа 2011 Поделиться Опубликовано 27 Августа 2011 (изменено) *Shoker*, на счёт stalker_bandit_ то я ошибся, там должно быть название модели экзоскелета, хоть это теперь и не важно. А вообще мне надо, что бы была проверка на визуалы НПС, и если хоть один из визуалов одет на НПС то возвращался true. И вот я думал, что по примеру как в OGSE можно сделать, там вот так это всё выглядит, вот кусок: function vis_to_armor(npc) local section if npc then local obj = alife():object(npc:id()) if not obj then return "novice_outfit" end local stalk = xrs_utils.read_stalker_params(obj) local vis = tostring(stalk.visual) if vis then if npc:character_community()=="bandit" then -- bandits if string.find(vis,"stalker_bandit_") then section = "bandit_outfit" end if string.find(vis,"stalker_bandit_veteran") then section = "bandit_veteran_outfit" end if string.find(vis,"stalker_bandit_master") then section = "bandit_master_outfit" end if string.find(vis,"stalker_bandit_borov") then section = "bandit_master_outfit" end if string.find(vis,"stalker_bandit_exoskeleton") then section = "exo_bandit_outfit" end ... Изменено 27 Августа 2011 пользователем Ulman Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти