TRAMP14 1 Опубликовано 14 Февраля 2011 Поделиться Опубликовано 14 Февраля 2011 (изменено) Спасибо за обьяснение! Вот я ещё какое нашёл: local obje_sec = db.actor:object("skaner") if obje_sec == nil then Как думаете будет работать? Я уже с пол часа пытаюсь проверить но с XML появилось куча проблем, вот по 1 исправляю Изменено 14 Февраля 2011 пользователем TRAMP14 Ссылка на комментарий
ColR_iT 171 Опубликовано 14 Февраля 2011 Поделиться Опубликовано 14 Февраля 2011 (изменено) TRAMP14, данная функция db.actor:object("skaner") - вернет экземпляр класса из инвентаря по секции skaner, и если его нет, то что-то можно будет сделать. Синтаксически это правильно, но работать будет, если это уместно применить! В теме "справочник по функциям и классам" вот, что написано по поводу этой функции: game_object* object(string) - возвращает объект из инвентаря по секции, т.е. ты получишь тоже самое, что и local obj = db.actor:item_in_slot(6), только разница в том, что первый раз ты получаешь объект из инвентаря, а во втором из слота. Изменено 14 Февраля 2011 пользователем Куфзук Ссылка на комментарий
TRAMP14 1 Опубликовано 14 Февраля 2011 Поделиться Опубликовано 14 Февраля 2011 Спасибо! Всё заработало! Ещё вопрос а через db.actor:position() можно сравнивать и получать координаты? Или нужно чтото ещё дописывать? Ссылка на комментарий
_Призрак_ 11 Опубликовано 14 Февраля 2011 Поделиться Опубликовано 14 Февраля 2011 Можно, но удобней сравнивать координаты по x,y,z. Для этого нужно просто написать db.actor:position().x, db.actor:position().y, db.actor:position().z Freedom Ссылка на комментарий
ColR_iT 171 Опубликовано 14 Февраля 2011 Поделиться Опубликовано 14 Февраля 2011 TRAMP14, таким образом ты получишь позицию актора, но только координаты, левел и гейм вертексы нужно находить отдельно. Присваеваешь переменной: local actor_position = db.actor:position() и можешь манипулировать. Например так: local actor_position = db.actor:position() if actor_position.x > 100 then получаем условие, если позиция актора, по координате Х, больше 100, производим действия. Ссылка на комментарий
TRAMP14 1 Опубликовано 15 Февраля 2011 Поделиться Опубликовано 15 Февраля 2011 (изменено) А, допустим, можно снять 4 координаты и сделать квадрат и проставить все условия (типо 100 по x, 5 по y) чтобы при входе в квадрат что то происходило? Или для етого есть другие способы? И ещё в условии if obje_sec == nil then можно поставить if obje_sec == true then ? p/s/ Извините за глупые вопросы, я только учусь Изменено 15 Февраля 2011 пользователем TRAMP14 Ссылка на комментарий
Гость max_max_08 Опубликовано 15 Февраля 2011 Поделиться Опубликовано 15 Февраля 2011 TRAMP14, if obj == nil --если обьект равен нил,это проберка на НЕ существование обьекта. Тоже самое что if not obj --или if obj == false -- все это проверки на отсутствие какого либо значения у переменной obj. Вот проверки на существование: if obj then if obj == true then if obj ~= nil --это все одно и тоже у обьекта можно проверить многое, например состояние if obj:conditon() > 0.5 then --если состояние не менее половины то... Проверим группировку if obj:community() == "bandit" then Если нужно сделать несколько проверок используй операторы and (логическое "и") or (логическое "или"). Ссылка на комментарий
_Призрак_ 11 Опубликовано 15 Февраля 2011 Поделиться Опубликовано 15 Февраля 2011 А, допустим, можно снять 4 координаты и сделать квадрат и проставить все условия (типо 100 по x, 5 по y) чтобы при входе в квадрат что то происходило? Это уже давно сделали ПЫС. И называется это спейс_рестриктор Freedom Ссылка на комментарий
TRAMP14 1 Опубликовано 16 Февраля 2011 Поделиться Опубликовано 16 Февраля 2011 Конечно глупый вопрос. но - можно ли по ID непися узнать его имя? Ссылка на комментарий
Stalk15 27 Опубликовано 16 Февраля 2011 Поделиться Опубликовано 16 Февраля 2011 (изменено) TRAMP14 --/Если ид НПС присвоен в аллспавне: local npc = level_object_by_sid(ИД) иначе: npc = level.object_by_id(ИД) local npc_name = npc:name() -- получили имя непися Изменено 16 Февраля 2011 пользователем Stalk15 Ссылка на комментарий
ZeeK 57 Опубликовано 16 Февраля 2011 Поделиться Опубликовано 16 Февраля 2011 Вопрос к знающим: как прописать что бы сталкер был враг, но Гг не трогал, пока тот не начнет бой или не подойдет ближе х метров +что бы сталкер продолжал ходить под симуляцией? Не соответствует. N6260 Ссылка на комментарий
stunder 12 Опубликовано 16 Февраля 2011 Поделиться Опубликовано 16 Февраля 2011 Попробуй так: [logic] active = walker [walker] combat_ignore_cond = always или [logic] active = walker [walker] combat_ignore = combat_ignore [combat_ignore] Просто точно уже не помню. Мод "Жесть" В команду Two Team ("Жесть") требуется моделлер. Ссылка на комментарий
Painter 3 368 Опубликовано 17 Февраля 2011 Поделиться Опубликовано 17 Февраля 2011 ZeeK, если для ЗП, попробуй так: [logic] active = remark [remark] combat_ignore_cond = {=is_enemy_actor -info} true combat_ignore_keep_when_attacked = false [combat_ignore] on_hit = hit [hit] on_info = {=hit_npc_from_actor } %+info% Портфолио Ссылка на комментарий
vavilov8 0 Опубликовано 18 Февраля 2011 Поделиться Опубликовано 18 Февраля 2011 (изменено) Извините за тупой вопрос! Что нужно написать чтобы была проверка ранга ГГ? Ну например если он новичок то.. если ветеран то ... и т.д.? Сообщение от модератора Куфзук local actor_rank = db.actor:rank() if actor_rank == 100 then -- тут пишешь то, что будет, если ранг актера равен 100 end в переменной actor_rank у тебя будет числовое значение, это и будет ранг ГГ. Добавлено через 164 мин.: Народ правильно я написал function test() local satiety= db.actor:satiety() if satiety == <= 0.5 then news_manager.send_tip(db.actor, пора хавать, 0, "Текст:", 17000) end Сообщение от модератора Куфзук Нет! Функции satiety() не существует, разве, что ты сам ее написал!? В файле _g.script есть функция on_actor_satiety(), но как она работает, я не знаю. Изменено 18 Февраля 2011 пользователем Куфзук Проц: Intel Core x2 2.4 Ггц. Разогнаный до 3.9 Ггц. ОС: Windows 7 Максимальная x64 bit ОЗУ: 4000 мб. Видеокарта: Nvidia 8600 GT Ссылка на комментарий
Disord 1 Опубликовано 19 Февраля 2011 Поделиться Опубликовано 19 Февраля 2011 Здравствуйте! Уже 3 день бьюсь с одной проблемой. [spoiler=Проблема ]У учёных на Янтаре создаю предмет (4 предмета, просто разница в имени секции и позиции): [13159] ; cse_abstract properties section_name = inventory_box name = komnata_yantar_divan3 position = 30.264,-10.982,-279.780 direction = 0.015,0,-1.000 ; cse_alife_object properties game_vertex_id = 1480 distance = 0 level_vertex_id = 54978 object_flags = 0xffffff3b custom_data = <<END [logic] cfg = scripts\son_yantar_uch.ltx END ;story_id = 12079 ; cse_visual properties visual_name = physics\equipment_cache\equipment_box_02_case С логикой: [logic] active = ph_idle [ph_idle] tips = spi_spoki on_use = %+budu_v_bunkere_spat% В том же месте делаю спейс_рестриктор: [13170] ; cse_abstract properties section_name = space_restrictor name = komnata_restrictor_son position = 28.974,-11.688,-279.474 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 1480 distance = 0 level_vertex_id = 54978 object_flags = 0xffffffff custom_data = <<END [logic] cfg = scripts\bunker_uchen.ltx END ; cse_shape properties shapes = shape0 shape0:type = box shape0:axis_x = 12.0,0,0 shape0:axis_y = 0,10.0,0 shape0:axis_z = 0,0,12.0 shape0:offset = 0,0,0 ; cse_alife_space_restrictor properties restrictor_type = 3 С логикой: [logic] active = sr_idle@pwork [sr_idle@pwork] on_actor_inside = sr_idle@work [sr_idle@work] on_actor_outside = sr_idle@pwork on_info = {+budu_v_bunkere_spat} %=son_yan_sleep% В xr_effects добавляю функцию: function son_yan_sleep() local stype=nil if has_alife_info("budu_v_bunkere_spat") then stype="matras" end if stype~=nil then amk.start_timer("sleep_"..stype,0.1,matras) end if has_alife_info("budu_v_bunkere_spat") then db.actor:disable_info_portion("budu_v_bunkere_spat") end end Вся проблема в том, что функция son_yan_sleep никак не хочет вызываться. Не могу понять, где ошибка. В Баре делал всё также, работало. Всё отличие было в том, что в Баре использовал уже существующий рестриктор - bar_bar_room_area. Подскажите, в чём дело? Ссылка на комментарий
@"StreloK" 2 Опубликовано 19 Февраля 2011 Поделиться Опубликовано 19 Февраля 2011 ZeeK глянь этот пост - http://www.amk-team.ru/forum/index.php?s=&...st&p=558471 Prefiero morir de pie, que vivir siempre arrodillado. Ссылка на комментарий
AKKK1 6 Опубликовано 19 Февраля 2011 Поделиться Опубликовано 19 Февраля 2011 (изменено) Disord [logic] active = ph_idle [ph_idle] tips = spi_spoki on_use = %+budu_v_bunkere_spat% и сдесь имя функции из xr_effects tips = spi_spoki зарегестрированн в string_table_ui.xml ? <?xml version="1.0" encoding="windows-1251" ?> <string_table> <string id="cant_walk"> <text>Вы слишком истощены, чтобы двигаться</text> </string> <string id="cant_walk_weight"> <text>Вы слишком перегружены, чтобы двигаться</text> </string> <string id="dar_poltergeist_hold_the_door"> <text>Кто-то удерживает дверь.</text> </string> <string id="Global Map"> <text>Глобальная карта</text> </string> <string id="gun_jammed"> <text>Оружие заклинило. Нужно перезарядить.</text> </string> <string id="inventory_box_use"> <text>Обыскать ящик ($$ACTION_USE$$)</text> </string> <string id="Local Map"> <text>Локальная карта</text> </string> <string id="st_game_saved"> <text>игра сохранена</text> </string> <string id="tip_car_locked"> <text>Заблокировано</text> </string> <string id="tip_car_use"> <text>Открыть дверь ($$ACTION_USE$$)</text> </string> <string id="tip_door_close"> <text>Нажмите ($$ACTION_USE$$), чтобы закрыть дверь</text> </string> <string id="tip_door_coded"> <text>Дверь закодирована</text> </string> <string id="tip_door_decode"> <text>Нажмите ($$ACTION_USE$$), чтобы декодировать дверь</text> </string> <string id="tip_door_decoding"> <text>Идет процесс декодирования</text> </string> <string id="tip_door_locked"> <text>Дверь заперта</text> </string> <string id="tip_door_open"> <text>Нажмите ($$ACTION_USE$$), чтобы открыть дверь</text> </string> <string id="tip_gate_close"> <text>Нажмите ($$ACTION_USE$$) для того, чтобы закрыть ворота</text> </string> <string id="tip_gate_locked"> <text>Ворота заблокированы</text> </string> <string id="tip_gate_open"> <text>Нажмите ($$ACTION_USE$$) для того, чтобы открыть ворота</text> </string> <string id="tip_monolith"> <text>ЗАГАДАТЬ ЖЕЛАНИЕ ($$ACTION_USE$$)</text> </string> </string_table> Грубо говоря при юзе обьекта срабатывает функция . Ну и для примера вот [8388] ; cse_abstract properties section_name = physic_object name = sar_monolith position = 24.0560283660889,58.6652679443359,42.6767501831055 direction = 0,0.00899999216198921,0 ; cse_alife_object properties game_vertex_id = 2402 distance = 0 level_vertex_id = 9864 object_flags = 0xffffff3a custom_data = <<END [collide] ignore_static [logic] cfg = scripts\sar_monolith.ltx END ; cse_visual properties visual_name = physics\anomaly\artefact_monolit ; cse_ph_skeleton properties ; cse_alife_object_physic properties physic_type = 0x3 mass = 10 fixed_bones = link логика [logic] active = ph_idle [ph_idle] tips = tip_monolith on_use = nil %+sar2_monolith_miracle =sar_monolith_miracle% функция в xr_effects function sar_monolith_miracle(actor, npc) --' Убил лидеров группировок if has_alife_info("mil_lukash_dead") and has_alife_info("bar_voronin_dead") then game.start_tutorial("mov_desire_3") return end --' Много денег if db.actor:money() >= 50000 then game.start_tutorial("mov_desire_2") return end --' Хорошая репутация if db.actor:character_reputation() >= 1000 then game.start_tutorial("mov_desire_1") return end --' плохая репутация if db.actor:character_reputation() <= -1000 then game.start_tutorial("mov_desire_4") return end game.start_tutorial("mov_desire_5") end Изменено 19 Февраля 2011 пользователем AKKK1 Ссылка на комментарий
Disord 1 Опубликовано 19 Февраля 2011 Поделиться Опубликовано 19 Февраля 2011 AKKK1, я и пробовал делать и через рестриктор, и так: on_use = %=my_function% Ничего. Вообще. Теперь и в Баре этот способ тупит - иногда срабатывает, иногда нет. spi_spoki конечно зарегестрировал в файле с текстами. Да это и не было бы причиной неправильной работы. Ссылка на комментарий
demover123 0 Опубликовано 19 Февраля 2011 Поделиться Опубликовано 19 Февраля 2011 Привет всем! Можите подсказать как сделать так чтоб при виде гг, нпц сам начал с ним диалог? Ссылка на комментарий
Scarabay 98 Опубликовано 19 Февраля 2011 Поделиться Опубликовано 19 Февраля 2011 Disord, по-моему, должно быть так [logic] active = ph_idle [ph_idle] tips = spi_spoki on_use = use [use] on_info = %+budu_v_ bunkere_spat% Мой YouTube-канал Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти