Влад 9 Опубликовано 27 Июня 2010 Поделиться Опубликовано 27 Июня 2010 (изменено) TREWKO, не знаю правильно,или нет,но пробуй так: local tbls = {"wpn_pm_1","wpn_fn2000","wpn_ksvk","wpn_ak74"} local sec = "wpn_fn2000" function test() for i=1,#tbls do if tbls[i] == sec then --'действия end end end Изменено 27 Июня 2010 пользователем Влад Мои работы Не бойтесь совершенства. Вам его не достичь. C. Дали Ссылка на комментарий
DiXares 1 Опубликовано 27 Июня 2010 Поделиться Опубликовано 27 Июня 2010 (изменено) С чем может быть связан следующий вылет, при использовании LootMoneyMod?: FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: d:\stalker_sx\gamedata\scripts\lootmoney.script:28: bad argument #1 to 'random' (number expected, got nil) stack trace: В lootmoney.script, 24-28 строки, это: local DeafMoneyExperienced = ini_file("DiXarConfiguration\\SLDiXarConfiguration.dxfi"):r_string("SFDeathLootMoney", "SFDeafMoneyStalker") local parse_table2 = parse_data(DeafMoneyExperienced) local DeafMoneyExperiencedMin = tonumber(parse_table2[1]) local DeafMoneyExperiencedMax = tonumber(parse_table2[2]) elseif npc_rank == "experienced" and deadmoney >=500 then deadmoney=math.random(DeafMoneyExperiencedMin,DeafMoneyExperiencedMax) -------------------------------------------------------------------------------------------------------- Влад, функция работает, но как то странно выдаёт значения, сделал так: function test() for i=1,#tbls do if tbls[i] == sec then ODS("Тестовая функция сработала сразу и без помех") else ODS("Тестовая функция не сработала! ERROR!!! 404") end end end А в консоли ответ: Тестовая функция не сработала! ERROR!!! 404 Тестовая функция сработала сразу и без помех Тестовая функция не сработала! ERROR!!! 404 Тестовая функция не сработала! ERROR!!! 404 Аааа... всё понял! Просто не по назначению использую))) --------------------------------------------------------------------------------- И как правильно записать скрипт, что-бы заспавнить каждый из предметов в таблице? Установил причину вылета лутмани мода... читаю число денег из ini файла и надеюсь получить 4000, а получаю "4000". То есть скрипт получает nil и пытается сделать из него рандом... вылет... Дак всё таки, как эти скобки убрать? НО! Скрипт читает секцию для ранга новичок, без проблем! Как так может быть? Что за жесть? --------------------------------------------------------------------------------- И в чём отличие: Скобок: "wp", от скобок: 'wp'? Изменено 27 Июня 2010 пользователем TREWKO Ссылка на комментарий
Darien 0 Опубликовано 27 Июня 2010 Поделиться Опубликовано 27 Июня 2010 (изменено) И в чём отличие: Скобок: "wp", от скобок: 'wp'? Ни в чём - можешь использовать оба варианта, лишь бы в начале и в конце выделения были одинаковыми. Хотя есть нюанс, что бы сделать строку с цитатой, придётся использовать оба варианта : print(" строка с 'цитатой' ") или так: print(' строка с "цитатой" ') Изменено 27 Июня 2010 пользователем Darien Ссылка на комментарий
Garry_Galler 7 Опубликовано 28 Июня 2010 Поделиться Опубликовано 28 Июня 2010 TREWKO когда читаю r_s32 значение(цифру: 32) из ini файла, то оно преобразовывается в скрипте в "32", вообще то метод возвращает целое число ( тип Int32 если я не ошибаюсь ) так же как и метод r_u32(string, string), а никак не строку, которую возвращает r_string(string, string) с чего ты взял что у тебя возвращается число в кавычках? а в лутмани добавь в скрипт перед считыванием секции из ini файла проверку на существование секции и ключа в данной секции - и если nil то верни рандому какое -нибудь дефолтное значение. И насчет преобразования "4000" (строка ) в число 4000 - для этого существует lua метод tonumber() -- конвертирует строковое представление числа в number. И он в моде как я вижу задействован. Ссылка на комментарий
iDreD 5 Опубликовано 28 Июня 2010 Поделиться Опубликовано 28 Июня 2010 Верна ли эта функция? if obj:section() == "digger_pda" and not has_alife_info("find_instr") then db.actor:give_info_portion("find_instr") news_manager.send_tip(db.actor, "digger_tip", 0, "stalker", 10000) local snd_obj = xr_sound.get_safe_sound_object([[characters_voice\scenario\military\digger_msg]]) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) alife():create("agr_krot_fake",vector():set(1.480,7.499,16.865),241837,488) end end Вставлял в бинд_сталкер на апдейт взятия итема. Если использовать её целиком, то получаю принудительный вылет из функции аборта в _g скрипте, НО. Если использую её без этих строк: news_manager.send_tip(db.actor, "digger_tip", 0, "stalker", 10000) local snd_obj = xr_sound.get_safe_sound_object([[characters_voice\scenario\military\digger_msg]]) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) то вылета нет. Подскажите в чём проблема? Добавлено через 221 мин.: И как поставить отметку на карту на созданный мною тайник? Отметку как на кордоне, ну там где сгинул браток. Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
меченый(стрелок) 5 Опубликовано 28 Июня 2010 Поделиться Опубликовано 28 Июня 2010 (изменено) кровоSTALKER, про отметку "пространство имён" - level ищи по слову spot. Также советую почитать lua_help.script и тему про Функциям сталкера на этом форуме - многие вопросы уйдут сами собой. Первый вопрос решается курением "порядка" вызыва методов апдейтов актёра. В общем : вставь перед теми строками из-за которых вылет(которые ты удалил) проверку что уровень загружен.опять таки методы "пространства имён" level, если вылет исчезнет,то думаю поймешь почему(хотя бы примерно). PS:Epic Fail.Не читайте это сообщение! Изменено 29 Июня 2010 пользователем меченый(стрелок) Ссылка на комментарий
DiXares 1 Опубликовано 28 Июня 2010 Поделиться Опубликовано 28 Июня 2010 (изменено) Товарищи! Тут такое дело, где то читал, что если тайник забить под завязку, то при приближении к нему начинаются фризы. То появилась идея: Где хранятся дынные о содержимом тайниках? Если отключить хранение данных о содержимом тайников в памяти и при открытии тайника читать содержимое тайника из ini файла, то фризы теоретически могут пропасть? Ini файл будет тупо лежать на жестаке и не функционировать, пока его не потревожат. А уже при ползаньи в тайнике и выходе из него - сохранять содержимое тайника в ini снова... и тут обнуляем информацию о содержимом тайников из памяти. Сделать ini файл по типу: [Treasures] esc_treasure_012=wpn_pn, wpn_toz34 bar_treasure_014=wpn_fn2000 Изменено 28 Июня 2010 пользователем TREWKO Ссылка на комментарий
Министр 3 Опубликовано 28 Июня 2010 Поделиться Опубликовано 28 Июня 2010 (изменено) кровоSTALKER, функция верна, только что затестил подобную (без спавна непися и выдачи инфопоршна). Единственное что в твоей ф-ии меня заинтересовал вот этот вот end: if obj:section() == "digger_pda" and not has_alife_info("find_instr") then db.actor:give_info_portion("find_instr") news_manager.send_tip(db.actor, "digger_tip", 0, "stalker", 10000) local snd_obj = xr_sound.get_safe_sound_object([[characters_voice\scenario\military\digger_msg]]) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) alife():create("agr_krot_fake",vector():set(1.480,7.499,16.865),241837,488) end end Что он делает и какого его предназначение мне не известно. Видимо он и создает ошибку. По отметкам: Добавляются они такой ф-ей - level.map_add_object_spot(number, string, string) Где number - id того на кого/чего хочешь ставить метку Где 1-ый string - икона метки (список иконок дам ниже) Где 2-ой string - всплывающая подсказка о метки в ПДА (текст берется из XMLок) Пример использования - level.map_add_object_spot(obj.id, "level_changer", "to_agroprom"), это стандартная ф-ия из level_tasks.script, она добавляет иконку перехода в Агропром. crlc_small green_location level_changer treasure Это не весь список, а те которые я помню TREWKO, в ТЧ такой способ точно не получится из-за невозможности писать в файлы. P.S. И если не ошибаюсь, то фризы бывают из-за чего-то другого... Изменено 28 Июня 2010 пользователем Министр Ссылка на комментарий
DiXares 1 Опубликовано 29 Июня 2010 Поделиться Опубликовано 29 Июня 2010 (изменено) Кто сказал, что нельзя писать ini? Вы только скажите, где лежит юзанье тайника и я попробую сделать. Что то я не понял... а как заюзать каллбэк смерти? Пробовал вывести в скрипт, но получаю вылет: [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: d:\stalker_sx\gamedata\scripts\dixarsestalker.script:7: attempt to index local 'npc' (a nil value) Скрипт такой: function DeathCallback(npc, killer) local sactor = alife():actor() local cactor = level.object_by_id(sactor.id) cactor:give_game_news( "%c[255,255,1,1]DiXarDeathCallback\\n%c[255,1,255,1]"..killer.." убил "..npc:section(), "ui\\ui_iconstotal", Frect():set(1245,517,83,47), math.random(1, 1), 50000 ) end Вызываю из se_stalker.script(функция: se_stalker:on_death(killer)) Изменено 29 Июня 2010 пользователем TREWKO Ссылка на комментарий
Министр 3 Опубликовано 29 Июня 2010 Поделиться Опубликовано 29 Июня 2010 TREWKO, наверное это мне сказал мой мозг который не увидел в ТЧ пространства имен io. И опять трабла о том, что юзеры перестали юзать поиск. Вот пост от Колмогора с решением твоей проблемы. P.S. И всего-лишь требовалось поискать по слову death_callback. Ссылка на комментарий
iDreD 5 Опубликовано 29 Июня 2010 Поделиться Опубликовано 29 Июня 2010 По отметкам:...Спасибо, но я хотел узнать ещё кое что: Как определить ид? Правильно ли я его определил в заданной мною функции? level.map_add_object_spot(unusual_treasure.id, "crlc_small", "unusual_spot") Как удалить отметку с карты? Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
DiXares 1 Опубликовано 29 Июня 2010 Поделиться Опубликовано 29 Июня 2010 (изменено) Министр, а я скажу, что писать в ТЧ можно! WriteIni(ini, section, key, param) Всё это делается через перехват движка dll. Попробовал: local sactor = alife():actor() local cactor = level.object_by_id(sactor.id) cactor:give_game_news( "%c[255,255,1,1]DiVares\\n%c[255,1,255,1]"..obj:section(), "ui\\ui_iconstotal", Frect():set(1245,517,83,47), math.random(1, 1), 5000 ) Вставил это в xr_motivator.script(каллбэк смерти). В игре 0 реакции... Изменено 29 Июня 2010 пользователем TREWKO Ссылка на комментарий
Министр 3 Опубликовано 29 Июня 2010 Поделиться Опубликовано 29 Июня 2010 (изменено) кровоSTALKER, ну если у тебя unusual_treasure это тайник, то по идее верно. А вообще лучше самим в игре проверить. Удаляются метки такой ф-ей - level.map_remove_object_spot(number, string). Где number - id того с чего хочешь удалить метку Где string - тип метки (т.е. ее иконка) И как всегда пример. level.map_remove_object_spot(box:id(), "treasure") - это стандартная ф-ия из treasure_manager.script, она удаляет метку treasure с ящика-тайника по id. Изменено 29 Июня 2010 пользователем Министр Ссылка на комментарий
Darien 0 Опубликовано 29 Июня 2010 Поделиться Опубликовано 29 Июня 2010 TREWKO После каждой строки выводи инфу в лог, что бы знать наверняка где проблема. Ссылка на комментарий
iDreD 5 Опубликовано 29 Июня 2010 Поделиться Опубликовано 29 Июня 2010 кровоSTALKER, ну если у тебя unusual_treasure это тайник, то по идее верно. А вообще лучше самим в игре проверить. smile.gifПопробовал, но, к сожалению, результата не поимел(. Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
Министр 3 Опубликовано 29 Июня 2010 Поделиться Опубликовано 29 Июня 2010 (изменено) TREWKO, значит криво пробуешь. Только что тестил, все работает без нареканий. Код такой: news_manager.send_tip(db.actor, victim:id(), 0, "stalker", 10000) При убийстве приходит id жертвы. А насчет WriteIni(ini, section, key, param) подробнее расскажи. В lua_help.script ничего подобного не нашел. ---------------------- кровоSTALKER, хоть покажи откуда и как ты эту ф-ию вызываешь, а то так не понятно что к чему и в частности, что именно такое unusual_treasure. Изменено 29 Июня 2010 пользователем Министр Ссылка на комментарий
iDreD 5 Опубликовано 29 Июня 2010 Поделиться Опубликовано 29 Июня 2010 (изменено) Вызываю из апдейта на взятие итема: if obj:section() == "unusual_pda" and not has_alife_info("treasure_1") then db.actor:give_info_portion("treasure_1") --затычка alife():create("unusual_treasure",vector():set(61.661,4.864,101.872),251059,904) news_manager.send_tip(db.actor, "unusual_tip", 0, "stalker", 10000) end unusual_treasure это рюкзак со шмотом: [treasure_1] GroupControlSection = spawn_group discovery_dependency = $spawn = "devices\inventory box" class = O_INVBOX cform = skeleton visual = physics\box\expl_dinamit.ogf script_binding = bind_physic_object.init [unusual_treasure]:treasure_1 visual = equipments\item_rukzak radius = 1 custom_data = scripts\m_taynik.ltx [spawn];Список шмота af_night_star wpn_bm16_full antigaz Собсна вот. Изменено 29 Июня 2010 пользователем кровоSTALKER Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
Министр 3 Опубликовано 29 Июня 2010 Поделиться Опубликовано 29 Июня 2010 кровоSTALKER, вот как-то так: if obj:section() == "unusual_pda" and not has_alife_info("treasure_1") then db.actor:give_info_portion("treasure_1") --затычка local sobj = alife():create("unusual_treasure",vector():set(61.661,4.864,101.872),251059,904) local id = sobj.id news_manager.send_tip(db.actor, "unusual_tip", 0, "stalker", 10000) level.map_add_object_spot(id, "crlc_small", "unusual_spot") end Здесь сразу у свежезаспауненной нычки узнается id и используется в создании метки. Ссылка на комментарий
iDreD 5 Опубликовано 29 Июня 2010 Поделиться Опубликовано 29 Июня 2010 (изменено) О, даже так?! Круть. Спасибо, попробую. ============================ Министр, по твоему совету попробовал так как ты указал, но заметил странную особенность: если написать описание в текстовых файлах, то отметка не ставится, а если написать в самом файле, то ставится. Чудеса в решете . Изменено 30 Июня 2010 пользователем кровоSTALKER Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
Министр 3 Опубликовано 30 Июня 2010 Поделиться Опубликовано 30 Июня 2010 кровоSTALKER, смотри как отметки делали ПЫСы и сделай по аналогии. Например, если в том же level_tasks.script название комментария выглядет таким образом: level.map_add_object_spot(obj.id, "level_changer", "to_rostok") То в XMLке string_table_level_tips.xml все должно выглядеть также (даже ковычки должны быть): <string id="to_rostok"> <text>На дикую территорию</text> </string> P.S. А вообще если работает, то уже хорошо. P.S.S. Объедини свои посты (удали новый, отредактируй старый). А то модерация предупреждениями закидает. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти