MUS9222, Если бы перевел на русский, то сразу бы понял, где ошибка. В файле string_table_includes.xml ошибка чтения тегов. Проверяй что ты туда дабовлял, где-то ты "намудрил" с тегами.
Привет уважаемые Сталкеры! Это Sal. Понимаю, что повторять вопросы "н и з я"! Поэтому переформулирую вопрос - как сделать так, что бы при выстреле разбивались осветительные приборы (светильники, лампочки, прожектора)? Да, ещё догоночка - "hit_power = 1.50, 1.32, 1.32, 1.30" - понятно, что это номиналы (размеры) пулевого отверстия головы, туловища, рук и ног - но какая группа за что отвечает, то есть где тут ноги, где тут руки и т.д.!?
Только Зона способна в полной мере показать "Тебе" - каков "Ты" есть,... на самом деле!!!
Сообщение отредактировал sal777 - Понедельник, 21.11.2011, 14:48:10
Вот такая штука в солянке 2011, нельзя вешать на пояс >2 артов одного вида, вот скрипт:
--оставляет на поясе по одному(фиг,теперь двум) артефакту каждого вида function remove_duplicate() local t = check_duplicate() for k, v in pairs(belt_id) do local sobj = alife():object(k) if sobj then local sect = sobj:section_name() -- if is_unique(sobj:clsid()) and t[sect] ~= nil and t[sect] > 0 then --if is_unique(sect) and t[sect] ~= nil and t[sect] > 0 then if unique_sect[sect] and t[sect] ~= nil and t[sect] > 0 then alife():release(sobj, true) local text="Убраны лишние артефакты "..game.translate_string(amk.get_inv_name(sect)).." с пояса" news_manager.send_tip(db.actor, text, nil, nil, nil) amk.spawn_item_in_inv(sect, db.actor) t[sect] = t[sect] - 1 end end end end
--собирает инфу о дупликатах на поясе --возвращает таблицу вида [секция арта] = <количество лишних артов> function check_duplicate() local result = {} for k, v in pairs(belt) do if v > 2 then result[k] = v - 2 end end return result end
--возвращает true, если предмет должен быть на поясе в единственном числе --function is_unique(section) --[[local result = false for i=1,table.getn(unique_sect) do if section == unique_sect[i] then result = true break end end]]
--return (section ~= nil and unique_sect[section] == true) --return result --end
Подскажите пожалста, что бы тут изменить, чтобы нельзя было вешать, скажем, более пяти артов одного вида?
--собирает инфу о дупликатах на поясе --возвращает таблицу вида [секция арта] = <количество лишних артов> function check_duplicate() local result = {} for k, v in pairs(belt) do if v > 2 then result[k] = v - 2 end end return result end
sal777,
Quote (sal777)
"hit_power = 1.50, 1.32, 1.32, 1.30"
По-моему это рандомные значения. А попадания по частям тела вычисляются из файла damages.ltx по лампочкам надо у маперов спросить это ведь LE
Ёрик, вылета не стало, анимация начинает работать, но как и в прошлый раз - не перестаёт.
MUS9222, уверен что не трогал? Из-за чего тогда по твоему вылет?
sal777, если ты спросил, не означает, что тебе тут же ответят. Смотри, как Ёрик сказал, в damages.ltx. Там вроде только для НПС, если хочешь изменить у монстров - открывай их конфиги.
Истинный путь MOD ver. 1.3.0 (ТЧ) готов! Истинный путь v2.0 (ТЧ) готов!
Сообщение отредактировал Vova-VIP - Понедельник, 21.11.2011, 20:57:59
Уверен на все сто, кстати если у кого есть обычный ТЧ без модов версия 1004 Скиньте этот файлик string_table_includes.xml Только не тронутый
Добавлено (21.11.2011, 21:12:55) --------------------------------------------- Как установить чтобы бойцы группировки созданной мной, спавнились имеено там шде я хочу?????? Как нормально отснять координаты???7 Только не через rs_stats, а как нибудь по другому подскажите, только чтобы точно верно и нормально
MUS9222, уже какой раз говорю об этих вещах: 1. Раз уж делаете моды, то имейте при себе полный оригинальный набор файлов из gamedata, ибо вы так и будете из форумов вытягивать по одному файлу, пока всем не надоест этого делать. 2. Координаты снимай через Position Informer. В первый и в последний раз скидываю тебе файл из gamedat'ы: Скачать Насчет вылета сам разбирайся, никто кроме тебя не знает, что ты там конкретно у себя делал. Всё что мы смогли - перевести ошибку с английского, что ты кстати сам мог сделать.
Истинный путь MOD ver. 1.3.0 (ТЧ) готов! Истинный путь v2.0 (ТЧ) готов!
Vova-VIP, Проверь функцию timer_n_minutes() точно прописал в function actor_binder:update(delta) это она отключает таймер. Пробуй другой эффект ставить может он виноват. больше не знаю в чом причина.
MUS9222, Смотри секцию своего созданного НПС, ошибка может вылазить и из-за того, что ты накосячил в одном из перечисленных инклудах в этом файле. А еще лучше выложи код твоего НПС, иогда тебе подскажут где ошибка. И используй текстовый редактор с подсветкой синтаксиса, тогда сразу будешь видеть свои ошибки в тегах.
Quote
А как пользоваться им????
Если все правильно добавил, то вся информация будет на экране постоянно, и не надо ничего нажимать.
Еще для снятия координат мржно использовать Mobile Manager, адаптировать чуть-чуть сложнее, но для начинающих там очень много полезного ССылка и описание
Quote
Да, ещё догоночка - "hit_power = 1.50, 1.32, 1.32, 1.30" - понятно, что это номиналы (размеры) пулевого отверстия головы, туловища, рук и ног - но какая группа за что отвечает, то есть где тут ноги, где тут руки и т.д.!?
Это не рендомные значения. Эти значения используются при различной сложности игры (новичок, сталкер, ветеран, мастер). Только тут они как папало прописаны, вот из оригинала АК-74:
Code
hit_power = 0.35, 0.39, 0.42, 0.45
Если поставить только одну цифру, то это значение hit_power будет использоваться на всех уровнях сложности.
Сообщение отредактировал Callisto - Вторник, 22.11.2011, 01:58:02
MUS9222, мне интересно при чем тут string_table_includes.xml на сколько я знаю при создании нового нпс этот файл вообще не затрагивается но вообще смотри где накоясячил
Все кому я нужен могут найти меня по этому адресу : #EGGO_TM в общем буду рад пообщаться )
MUS9222, зачем ты лишний раз спрашиваешь? Position Informer идёт точнее как "аддон", а не программа. Поставил бы себе эти файла, да проверил бы
Ёрик, я прописал в эту функцию таким образом:
Code
ip_sounds2.timer_n_minutes()
Теперь при использовании предмета вылет. Жалуется на первую строку функции timer_n_minutes: Попытка сравнить nil с числом. Другой эффект ставить уже пробовал, не помогло.
Истинный путь MOD ver. 1.3.0 (ТЧ) готов! Истинный путь v2.0 (ТЧ) готов!
Можете объяснить, почему когда я удаляю скрипт, он продолжает работать, и игра в зонах, где этот скрипт работает не вылетает?
Народная Солянка 2011, имя скрипта ded_moroz, это скрипт, вызывающий разрыв рюкзака при большом весе. Вот он[spoiler]-- Автор - sapsan local weight_normal = 100 -- базовый нормальный переносимый вес, ниже которого уже ничего не выпадает local weight_max = 350 -- вес рюкзака, выше которого начнётся вытрясание предметов local items_dropped_max = 100 -- максимальное количество предметов выброшенное за раз
local kolco = {from = 10, to = 11} local visota = {from = 2, to = 10}
local sim local actor local weight_rukzak local weight_item local ini local items = {} local items_dropped = {} local item_active_id -- предмет в руках игнорируется, но вес его учитывается local current_outfit_id -- одетый бронежилет игнорируется, но вес его учитывается
function vibros() sim = alife() actor = db.actor if sim and actor then calc_inventory_weight(actor) --get_console():execute("load ~~~ вес всего, что на и у ГГ: "..weight_rukzak) if weight_rukzak > weight_max then -- выбрасываем предметы рандомно local items_count = #items local iterations = 0 local items_dropped_count = 0 local koef = weight_rukzak / weight_max -- вероятность вылета предмета local i while weight_rukzak > weight_normal and iterations < items_count and items_dropped_count < items_dropped_max do if math.random() < koef then i = math.random(items_count) -- случайный предмет if not items_dropped[i] then -- если он еще не был выброшен items_dropped[i] = true items_dropped_count = items_dropped_count + 1 vector_add = calc_vector_add() actor:drop_item_and_teleport(items[i][1], actor:position():add(vector_add)) weight_rukzak = weight_rukzak - items[i][2] koef = weight_rukzak / weight_max -- вероятность вылета предмета end end iterations = iterations + 1 end end end end
function calc_inventory_weight(npc) items = {} items_dropped = {} weight_rukzak = 0 ini = system_ini()
if npc and npc.inventory_for_each then local item_active = npc:active_item() if item_active then item_active_id = item_active:id() else item_active_id = 0 end local current_outfit = npc:get_current_outfit() if current_outfit then current_outfit_id = current_outfit:id() else current_outfit_id = 0 end npc:inventory_for_each(process_calc) -- не будет просматривать скрытые слоты end end
function process_calc(item, npc) if item then local section = item:section() if section ~= "arc_ballast" -- непонятная хрень весом в 500 кг!!! and ini:section_exist(section) and ini:line_exist(section, "inv_weight") then weight_item = ini:r_float(section, "inv_weight") --get_console():execute("load ~~~ в рюкзаке: "..section.." весом: "..weight_item) if weight_item > 0 then local item_id = item:id() -- игнорируем предмет в руках, одетый бронежилет или "защищённый" предмет if not (ini:line_exist(section, "quest_item") and ini:r_bool(section, "quest_item")) and item_active_id ~= item_id and current_outfit_id ~= item_id and protected_items.obj_is_protected(item, "items_protected", "exactly") == false then table.insert(items, {item, weight_item}) table.insert(items_dropped, false) end -- но вес его учитываем weight_rukzak = weight_rukzak + weight_item end end end end
function calc_vector_add() local a = math.random() * 2 * math.pi local r = kolco.from + math.random() * math.abs(kolco.to - kolco.from) local x = math.cos(a) * r local z = math.sin(a) * r local y = visota.from + math.random() * math.abs(visota.to - visota.from) return vector():set(x, y, z) end
-- Для тестирования! -- Вызывать из апдейтера local timer = 0
function update(delta) timer = timer+delta if timer>1000000 then timer = 1000000 end local hud = get_hud() if hud:GetCustomStatic("main_task") and timer>1000 then vibros() timer = 0 end end
И главное, когда я изменяю weight_max и weight_normal, ничего в игре не изменяется! Эти переменные в игре так и остаються на своих старых значениях! Что за парадокс? Возможно ли вписать что-нибудь куда-нибудь, чтобы этот скрипт не загружался при лоаде сейва/начале новой игры?[/spoiler]
Расплата за глупость - жизнь.
Сообщение отредактировал Prosecutor - Вторник, 22.11.2011, 19:02:39
Prosecutor, вероятней всего этот скрипт тестовый и нерабочий.
Ёрик, если ты так и не понимаешь в чем моя ошибка, то ладно. Буду учится писать скрипты сам, мне это пригодится, но всё равно спасибо за подсказки.
Ну а теперь наверное вопрос не совсем касающийся фалов gamedata: Где есть хороший учебник, по которому можно научится писать скрипты? Видел тутор, но прочтя его я так понял он для тех, кто хоть что-нибудь в них уже мыслит.
Истинный путь MOD ver. 1.3.0 (ТЧ) готов! Истинный путь v2.0 (ТЧ) готов!
MUS9222, Смотри секцию своего созданного НПС, ошибка может вылазить и из-за того, что ты накосячил в одном из перечисленных инклудах в этом файле. А еще лучше выложи код твоего НПС, иогда тебе подскажут где ошибка. И используй текстовый редактор с подсветкой синтаксиса, тогда сразу будешь видеть свои ошибки в тегах. QuoteА как пользоваться им???? Если все правильно добавил, то вся информация будет на экране постоянно, и не надо ничего нажимать. Еще для снятия координат мржно использовать Mobile Manager, адаптировать чуть-чуть сложнее, но для начинающих там очень много полезного ССылка и описание
А какой код скинуть моего НПС???? Точнее код из какого файла показать
Добавлено (22.11.2011, 18:58:08) --------------------------------------------- Как сделать чтобы бойцы созданной мной группировки спавнились именно в том месте, где я хочу
MUS9222, мне кажется, или ты уже этот вопрос 3 раз спрашиваешь? Position Informer ставь, качай ACDC, вычисляй координаты, и ставь где тебе угодно. В секции спавна можешь и направление к классу нового профиля сделать, а в нём и свою группировку сделаешь. Как? Сначала обычного НПС (скажем как новичка на Кордоне) поставь туда, куда тебе нужно через ACDC (можно и через скрипт, но НПС по моему легче через ACDC ставить).
Истинный путь MOD ver. 1.3.0 (ТЧ) готов! Истинный путь v2.0 (ТЧ) готов!
Да странно почему у меня работает а у тебя нет ну ладно учись читай статьи, пиши простенькие функции на них поймешь что да как, есть много книг для “чайников” но в них даются лишь основные понятия и это надо прочитать всю книгу а это 300-400 страниц и не чего полезного для игры. В статьях на инсайде гораздо больше полезного и нужного для игры. Вот статья Vano_Santuri по моему достаточно чтобы понять азы скриптов.