pathfinder 1 Опубликовано 26 Июля 2010 Поделиться Опубликовано 26 Июля 2010 Oxygenium, а где сама функция? function give_weapon_to_actor (trader, actor) dialogs.relocate_item_section(trader, "wpn_pm", "in") dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in") dialogs.relocate_item_section(trader, "wpn_addon_silencer", "in") dialogs.relocate_item_section(trader, "wpn_knife", "in") dialogs.relocate_item_section(trader, "wpn_hk53", "in") dialogs.relocate_item_section(trader, "ammo_5.56x45_ap", "in") dialogs.relocate_item_section(trader, "ammo_5.56x45_ap", "in") dialogs.relocate_item_section(trader, "ammo_5.56x45_ap", "in") dialogs.relocate_item_section(trader, "ammo_5.56x45_ap", "in") dialogs.relocate_item_section(trader, "ammo_5.56x45_ap", "in") dialogs.relocate_item_section(trader, "ammo_5.56x45_ap", "in") dialogs.relocate_item_section(trader, "wpn_aug_a3", "in") dialogs.relocate_item_section(trader, "ammo_5.56x45_ap", "in") dialogs.relocate_item_section(trader, "ammo_5.56x45_ap", "in") dialogs.relocate_item_section(trader, "ammo_5.56x45_ap", "in") dialogs.relocate_item_section(trader, "wpn_sig552", "in") dialogs.relocate_item_section(trader, "ammo_5.56x45_ap", "in") dialogs.relocate_item_section(trader, "ammo_5.56x45_ap", "in") dialogs.relocate_item_section(trader, "ammo_5.56x45_ap", "in") dialogs.relocate_item_section(trader, "sigaret", "in") dialogs.relocate_item_section(trader, "sigaret", "in") dialogs.relocate_item_section(trader, "sigaret", "in") dialogs.relocate_item_section(trader, "sigaret", "in") dialogs.relocate_item_section(trader, "sigaret", "in") dialogs.relocate_item_section(trader, "sigaret", "in") end забыто и уничтожено. Ссылка на комментарий
lexer125 0 Опубликовано 26 Июля 2010 Поделиться Опубликовано 26 Июля 2010 function mazafaka(first_speaker, second_speaker) dialogs.relocate_item_section(first_speaker, "medkit", "in") end зачем function mazafaka (trader, actor) dialogs.relocate_item_section(trader, "medkit", "in") end Ссылка на комментарий
Министр 3 Опубликовано 26 Июля 2010 Поделиться Опубликовано 26 Июля 2010 Oxygenium, в логе сказано, что ошибка произошла из-за сравнения какого-то числа с nil. Так что по идее, передача вещей не причем. lexer125, название аргументов (или как там их) ничего не меняет. Тем более в оригинале (trader, actor). Ссылка на комментарий
DimOriN 35 Опубликовано 26 Июля 2010 Поделиться Опубликовано 26 Июля 2010 (изменено) попробуй if npc_stalker:is_talking()==false p.s. if npc_stalker:is_talking() then --тут код, если мы общаемся else --тут если не общаемся end блин, не красиво удалять сообщения Как будто написал "вникуда" Изменено 26 Июля 2010 пользователем DimOriN Ссылка на комментарий
Unnamed Black Wolf 4 Опубликовано 26 Июля 2010 Поделиться Опубликовано 26 Июля 2010 там может ошибка в написание какого-нить предмета или отсутствия .... Так-что проверяй. Ещё странно, если это ТЧ, а это ТЧ, т.к. функция говорит об этом. То откуда в диалог менджере 393 строка ? Хотелось на нее взглянуть.... В оригинале там кажись 370 строк кажись, и чуть поболее... Ссылка на комментарий
Stalk15 27 Опубликовано 26 Июля 2010 Поделиться Опубликовано 26 Июля 2010 (изменено) Я ничайно сообщение удалил ...Вот оно: npc_stalker:is_talking() - проверяет разговариваем ли или нет. not npc_stalker:is_talking() - проверяет, не разговариваем ли мы. Как правилно проверить не разговариваем ли мы? Попробоал оба варианта - не получилось.Значит это из-за моего скрипта: local talking = false function drhyrd() for k, v in pairs (db.storage) do local npc_stalker = level.object_by_id(k) if npc_stalker and IsStalker(npc_stalker) and npc_stalker:is_talking() then local Community = npc_stalker:character_community() -- talking = true if not talking then if Community and Community == "stalker" then news_manager.send_tip(db.actor, "Говорим со Сталкером", 0, "freedom", 5000) talking = true elseif Community == "freedom" then news_manager.send_tip(db.actor, "Говорим со Свободовцем", 0, "freedom", 5000) talking = true elseif Community == "ecolog" then news_manager.send_tip(db.actor, "Говорим с Экологом", 0, "freedom", 5000) talking = true elseif Community == "dolg" then news_manager.send_tip(db.actor, "Говорим с Долговцем", 0, "freedom", 5000) talking = true end if npc_stalker and IsStalker(npc_stalker) and npc_stalker:is_talking() == false then if talking then talking = false end end end end end При разговоре с НПС дейсвие срабатывает, но только один раз.Хотя флаг должен восстановится, если разговора нет.Не подскажете, в чем дело? Изменено 26 Июля 2010 пользователем Stalk15 Ссылка на комментарий
Unnamed Black Wolf 4 Опубликовано 26 Июля 2010 Поделиться Опубликовано 26 Июля 2010 Если ЗП, двиг отрубил функцию.... Ссылка на комментарий
pathfinder 1 Опубликовано 26 Июля 2010 Поделиться Опубликовано 26 Июля 2010 Спасибо всем, буду исследовать вылет и его причины Кстати 393 строки на самом деле нету забыто и уничтожено. Ссылка на комментарий
Министр 3 Опубликовано 26 Июля 2010 Поделиться Опубликовано 26 Июля 2010 (изменено) Stalk15, local coms_text = { stalker = "со Сталкером", freedom = "со Свободовцем", dolg = "с Долговцем", ecolog = "с Экологом" } function ololo() if db.actor:is_talking() then --проверяем разговариет ли актор for k, v in pairs (db.storage) do --если разговариет, то перебираем неписей в поисках собеседника local npc = level.object_by_id(k) if IsStalker(npc) and npc:is_talking() and coms_text[npc:character_community()] ~= nil then news_manager.send_tip(db.actor, "Говорим "..coms_text[npc_stalker:character_community()], 0, "freedom", 5000) end end end end Ф-ию использовать в апдейте бинд_сталкера. Работает нормально, кроме одного но - при разговоре сообщение присылается постоянно, но это исправить легко, можно сделать тот же флаг. Думаю ты разберешься. Изменено 26 Июля 2010 пользователем Министр Ссылка на комментарий
Gektor 0 Опубликовано 26 Июля 2010 Поделиться Опубликовано 26 Июля 2010 Народ подсобите пожайлуста . Нужно заспавненого скриптом персонажа в зове припяти увести в офлайн после получения определённого инфо_пошня. Как это осуществить, ума не приложу (опыта не хватат). Методами теней чернобыля не получается. Секция spawner в логике нцп вообще отказалась на чо либо влиять. На сталкер вики смотрел но это мне не помогло . Заранее спасибо. Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу. Ссылка на комментарий
Stalk15 27 Опубликовано 26 Июля 2010 Поделиться Опубликовано 26 Июля 2010 (изменено) Министр Спасибо за функцию, но на ней тоже флаг не восстанавливается, действие срабатывает только один раз: local coms_text = { stalker = "со Сталкером", freedom = "со Свободовцем", dolg = "с Долговцем", ecolog = "с Экологом" } local stope = false function drhyrd() if db.actor:is_talking() then for k, v in pairs (db.storage) do local npc = level.object_by_id(k) if IsStalker(npc) and npc:is_talking() and coms_text[npc:character_community()] ~= nil then if not stope then news_manager.send_tip(db.actor, "Говорим "..coms_text[npc:character_community()], 0, "freedom", 5000) stope = true end if not db.actor:is_talking() then if stope then stope = false end end end end end end Флаги всегда вроде работали, но в этой функции не понимаю, почему не работает. Изменено 26 Июля 2010 пользователем Stalk15 Ссылка на комментарий
Министр 3 Опубликовано 26 Июля 2010 Поделиться Опубликовано 26 Июля 2010 (изменено) Stalk15, Во-первых: ты делаешь проверку на то, что актор не разговаривает в данный момент и если она проходит, то присваиваешь переменной stope false, все бы нормально, если не опять одно "но" - ты вставляешь свою проверку в усл-ие которые выполняется только когда актор разговаривает. И поэтому ничего удивительного, что вся конструкция у тебя выполняется только один раз. Во-вторых: не надо делать без особой надобности усл-ия в усл-ях, например, тот же код: if IsStalker(npc) and npc:is_talking() and coms_text[npc:character_community()] ~= nil then if not stope then... Можно представить в виде одной строки: if IsStalker(npc) and npc:is_talking() and not stope and coms_text[npc:character_community()] ~= nil then... По-моему так более читабельно, хотя решать тебе, это всего-лишь совет. Изменено 26 Июля 2010 пользователем Министр Ссылка на комментарий
Stalk15 27 Опубликовано 27 Июля 2010 Поделиться Опубликовано 27 Июля 2010 Министр ты вставляешь свою проверку в усл-ие которые выполняется только когда актор разговаривает. Вот за это спасибо .Поставил вместо одного энда три - все заработало ...А теперь у меня возник вопрос:почему в этой функции после stope = true нужно ставить три энда?Как это можно опредилить, что именно три надо, обьясните кто-нибудь?Ведь если поставить один энд - игра не вылетает, типа все работает : local coms_text = { stalker = "со Сталкером", freedom = "со Свободовцем", dolg = "с Долговцем", ecolog = "с Экологом" } local stope = false function drhyrd() if db.actor:is_talking() then for k, v in pairs (db.storage) do local npc = level.object_by_id(k) if IsStalker(npc) and npc:is_talking() and not stope and coms_text[npc:character_community()] ~= nil then --if not stope then news_manager.send_tip(db.actor, "Говорим "..coms_text[npc:character_community()], 0, "freedom", 5000) stope = true end end end if not db.actor:is_talking() then if stope then stope = false end end end Ссылка на комментарий
Stalk15 27 Опубликовано 27 Июля 2010 Поделиться Опубликовано 27 Июля 2010 (изменено) Как правильно проверить ранг ГГ.Не "цифровой" ранг, а, например, Мастер или Опытный или Новичок? Пробовал так: if db.actor:character_rank() == "novice" then ... И так тоже пробовал: if db.actor:rank() == "novice" then ... Но не работает. Изменено 27 Июля 2010 пользователем Stalk15 Ссылка на комментарий
Charsi 440 Опубликовано 27 Июля 2010 Поделиться Опубликовано 27 Июля 2010 (изменено) Stalk15,попробуй if ranks.get_obj_rank_name(db.actor)=="novice" then ... Проверку коммьюнити нпс, с которым разговариваешь, можно попробовать повесить на выдачу инфопорции ui_talk. Выдается при открытии диалогового окна. Биндер актора зависает? А если попробовать инициализацию звуковых объектов по функциям распихать. local tbl={путь1,путь2,путь3,..,путь8} function lyayawwe() local j=math.random(1,4) local snd_obj = xr_sound.get_safe_sound_object(tbl[j]) snd_obj:play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d) --или одной строкой --xr_sound.get_safe_sound_object(tbl[math.random(1,4)]):play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d) end function lyayawwewew() local j=math.random(5,8) local snd_obj = xr_sound.get_safe_sound_object(tbl[j]) snd_obj:play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d) end Изменено 27 Июля 2010 пользователем Charsi Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий
Stalk15 27 Опубликовано 27 Июля 2010 Поделиться Опубликовано 27 Июля 2010 Charsi Спасибо, работает. ------------------------------------------------- У меня вопрос: Тут давали функцию для определения визуала НПС: function egegege() local se_obj = alife():object(id) -- , где id айдишник непися local t = amk.read_stalker_params(se_obj) if t ~= nil then local vis = t.visual vis = amk.str_explode("\\",vis) vis = vis[3] -- теперь vis есть визуал объекта get_console():execute(vis) end end Я вызываю эту функцию через диалог, но ни чего не происходит и в логе ни чего не появляется, хотя должно.Что я делаю не так? Ссылка на комментарий
SkyLoader 53 Опубликовано 27 Июля 2010 Поделиться Опубликовано 27 Июля 2010 (изменено) Кто-нибудь знает: как неписю назначить смарт через скрипт и сделать его эксклюзивным для смарта, т.е. чтобы он выталкивал обычных неписей из смарта, если места на нем нету? Пытался разными способами это сделать - без результата. P.s. Министр, я надеюсь, что ты не будешь опять меня минусить, ведь я учусь скриптингу и спрашиваю знающих людей, а мне за это репу портят, и прям обидно как-то стало. Изменено 27 Июля 2010 пользователем SkyLoader Ссылка на комментарий
Arhara 32 Опубликовано 27 Июля 2010 Поделиться Опубликовано 27 Июля 2010 SkyLoader, Каждая непись и так эксклюзивна, и пока она жива - никто не займёт её место, даже имея выше приоритет в списках работ. Мой вам совет - делайте нормальные, а не скриптовые гулаги. Потом споткнётесь, но падать будете долго и мучительно. Да и не зачем напрягать память игры тем, что можно сделать так, чтобы её вообще не использовать. Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка Ссылка на комментарий
SkyLoader 53 Опубликовано 28 Июля 2010 Поделиться Опубликовано 28 Июля 2010 (изменено) Arhara, мне надо хотя бы назначить его на любой гулаг. Я получал название гулага по функции get_npc_gulag(obj) (если еще .name дописать). Пробовал addobject(obj) - он стал нилить работу гулага, пробовал в get_npc_gulag имя сменить - я думал, что если для непися сменить имя гулага, то он на другой пойдет , не вышло. В лагере новичков эксклюзивными являются Волк и Фанат, а остальные - обычные. Разве не так? Изменено 28 Июля 2010 пользователем SkyLoader Ссылка на комментарий
AKKK1 6 Опубликовано 28 Июля 2010 Поделиться Опубликовано 28 Июля 2010 (изменено) В лагере новичков Волк и Фанат кроме того что эксклюзивные занимают работу предназначенную только для них А остальные просто эксклюзивные т.к у них в алл спавне прописанно выделенное [137] ; cse_abstract properties section_name = stalker name = esc_lager1 position = -209.067367553711,-19.7512016296387,-132.083114624023 direction = 0.062321275472641,0.00316426996141672,0.0140644172206521 ; cse_alife_trader_abstract properties money = 5000 character_profile = esc_stalker_novice ; cse_alife_object properties game_vertex_id = 61 distance = 9.80000019073486 level_vertex_id = 43968 object_flags = 0xffffffbf custom_data = <<END [smart_terrains] esc_lager = true [spawn] conserva END ; cse_visual properties visual_name = actors\novice\green_stalker_2 ; cse_alife_creature_abstract properties g_team = 0 g_squad = 1 g_group = 5 health = 1 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 1 upd:timestamp = 0x617a6b75 upd:creature_flags = 0x6b upd:position = -209.067367553711,-19.7512016296387,-132.083114624023 upd:o_model = 0 upd:o_torso = 0.00316426996141672,0.062321275472641,0 upd:g_team = 0 upd:g_squad = 1 upd:g_group = 5 ; 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_alife_human_abstract properties predicate5 = 2,2,0,1,1 predicate4 = 0,2,0,2 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties ЗЫ Я удалял выделенное в алл спавне и неписи прекрасно занимают работы только гулаг уже не является для них эксклюзивным Изменено 28 Июля 2010 пользователем AKKK1 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти