Kirgudu 1 240 Опубликовано 10 Июля 2014 Поделиться Опубликовано 10 Июля 2014 И вот здесь меня мучат сомнения: допустим, кровососы убиты в порядке 4,2,1,3, будет ли в таком случае k = 4? Разумеется. Поскольку в функции sosyci_proverka() нет преждевременных возвратов после каждой проверки, результат будет накапливаться. В итоге получишь правильную сумму вне зависимости от порядка. Вообще, это больше относится к азам программирования, чем к скриптам конкретно Сталкера. Инструмент Ссылка на комментарий
Карлан 1 049 Опубликовано 10 Июля 2014 Поделиться Опубликовано 10 Июля 2014 (изменено) @Призрачный, может с такими вопросами лучше на ап-про? Там ребят твоего уровня побольше, ну и людей, которые на такие вопросы любят отвечать тоже. Конкретно у тебя вопрос, если так можно сказать, "туториальный", зайди в Справочник по функциям и классам, там ну очень подробно расписан класс effector, с помощью него реализовать тобою задуманное весьма не сложно. @Музафир, вешаешь на дез колбек убил ли ты кровососа, прибавляешь единичку (или сколько тебе надо) к числовой переменной, ее хранишь в сейве сколько нужно, хоть всю игру, хоть пока идет квест, ну в целом готово. Опять же скажу за себя, у меня в модуле доп. рангов за убийства монстров прибавляются очки и, если убито должное количество, повышается сам ранг, обе эти переменные хранятся подобным образом: for i=1, #clsIDMobs do if not has_alife_info(aRankData.monster_data[clsIDMobs[i]][#aRankData.monster_data[clsIDMobs[i]]].sInfo) then packet:w_u8(aRankData.monster_data[clsIDMobs[i]].index or 0) packet:w_u32(aRankData.monster_data[clsIDMobs[i]].count or 0) end endТебе нужно сделать что-то подобное, только проще раз в 10. Тебе достаточно использовать w_u8. Изменено 10 Июля 2014 пользователем Карлан Ссылка на комментарий
demon96 8 Опубликовано 12 Июля 2014 Поделиться Опубликовано 12 Июля 2014 (изменено) Как сделать срабатывание функции через некоторое время после вызова? Например,чтоб сообщение приходило через 15сек.У меня возникает странный вопрос: внутрь bind_stalker.script хоть раз доводилось заглядывать, или "не царское это дело" ? dc Изменено 12 Июля 2014 пользователем Dennis_Chikin Ссылка на комментарий
AndreySol 215 Опубликовано 12 Июля 2014 Поделиться Опубликовано 12 Июля 2014 (изменено) Как сделать срабатывание функции через некоторое время после вызова Никак, если вызвал ф-цию - она отработает все свое содержимое и завершится. Судя по Например,чтоб сообщение приходило через 15сек. тебе видимо требуется это ? void give_game_news( -- выдать на экран сообщениеstring, -- само сообщение. Может содержать некоторые форматирующие элементы string, --текстура, из которой берется аватара "отправителя" Frect, --координаты и размеры вырезаемого из текстуры изображения int, --начало показа сообщения с текущего момента (в миллисекундах) -- поставь 15000 и сообщение прийдет через 15 секунд после вызова ф-ции в которой это сообщение будет послано. int --длительность показа сообщения (в миллисекундах) ) Если-же требуется из одной ф-ции вызвать другую, но с какой-то временной задержкой - тогда юзай таймеры... Изменено 12 Июля 2014 пользователем AndreySol Ссылка на комментарий
demon96 8 Опубликовано 12 Июля 2014 Поделиться Опубликовано 12 Июля 2014 (изменено) @AndreySol,Ситуация такова: function teleport(actor, npc) level.add_cam_effector("camera_effects\\empty.anm", 160608, false,"tp.teleportate") level.add_pp_effector("peace_fade.ppe", 160608, false) end function teleportate() level.add_pp_effector ("teleport.ppe", 16060800, false) db.actor:set_actor_position( vector( -241.71509460448, -26.742816052856, -304.54711914063 ) ) sms_guider() end function sms_guider() news_manager.send_tip(db.actor, "%c[255,255,128,128] Ну вот и добрались, я развязываю тебе глаза и ухожу. Не пытайся меня искать, удачи! %c[default]", nil, "stalker", nil, 30000) endНужно, чтоб после телепорта спустя 15 сек. приходило сообщение. Таймер так и не понял как применять, может вписал не правильно. Изменено 12 Июля 2014 пользователем demon96 Ссылка на комментарий
FantomICW 678 Опубликовано 12 Июля 2014 Поделиться Опубликовано 12 Июля 2014 @demon96, тебе же @AndreySol, конкретно указал на функцию и значение, которые нужно выставить...Вообще, можно, конечно, и движковую give_game_news использовать, но мне лично удобней просто задать третье значения в send_tip: news_manager.send_tip(db.actor, "%c[255,255,128,128] Ну вот и добрались, я развязываю тебе глаза и ухожу. Не пытайся меня искать, удачи! %c[default]", 15000, "stalker", nil, 30000) Ссылка на комментарий
demon96 8 Опубликовано 12 Июля 2014 Поделиться Опубликовано 12 Июля 2014 (изменено) Получилось, только в таком случае в фкнкции указываются секунды, а не милисекунды, тоесть не 15000, а 15. Изменено 12 Июля 2014 пользователем demon96 Ссылка на комментарий
NiKi BoY 18 Опубликовано 13 Июля 2014 Поделиться Опубликовано 13 Июля 2014 Не знал куда обратиться, но за что отвечает в AMK моде функция amk.start_timer??? Живу, дышу, да-да я существую. Ссылка на комментарий
AndreySol 215 Опубликовано 13 Июля 2014 Поделиться Опубликовано 13 Июля 2014 Ну тут уж из самого названия, даже не глядя в содержимое ф-ции - старт\запуск таймера.... Ссылка на комментарий
NiKi BoY 18 Опубликовано 13 Июля 2014 Поделиться Опубликовано 13 Июля 2014 Как адаптировать данный скрипт к оригиналу https://yadi.sk/d/j6bt1PmTWVt5z Живу, дышу, да-да я существую. Ссылка на комментарий
AndreySol 215 Опубликовано 13 Июля 2014 Поделиться Опубликовано 13 Июля 2014 (изменено) Лучше спросить у автора(ов) скрипта. К какому оригиналу: ТЧ, ЧН, ЗП. Откуда скрипт взят ? Что он вообще делает -какие-то бомбы\мины\детонаторы... Судя по использованию таймеров - сначала надоадаптировать эти самые таймеры на не указаный оригинал. Надо знать - а есть-лисвязанные с этим скриптом другие скрипты, их тоже адаптировать. Конфиги незабыть... Изменено 13 Июля 2014 пользователем AndreySol Ссылка на комментарий
Vadyanchikus 5 Опубликовано 18 Июля 2014 Поделиться Опубликовано 18 Июля 2014 Люди, прошу помощи с одним скриптом. Бывалым скриптерам это труда не доставит. Суть скрипта в чём: мне нужно принести Сидоровичу один из артефактов: Выверт или Грави. За это он мне 1500 даёт. Если у игрока только Выверт - Сидор забирает Выверт, если только Грави - забирает Грави. Если и то, и другое - забирает Выверт. Проблема вот в чём: Сидор забирает у меня Грави, хотя его у меня нет в инвентаре, но есть Выверт, который так и остаётся в рюкзаке. Помимо этого он даёт 1500, получается, что ни за что. Помогите исправить эту проблему, пожалуйста. Вот код: function give_esc_art(first_speaker, second_speaker) local artefact=first_speaker:object("af_vyvert") if artefact==nil then dialogs.relocate_item_section(second_speaker, "af_gravi", "out") else dialogs.relocate_item_section(second_speaker, "af_vyvert", "out") end dialogs.relocate_money(second_speaker, 1500, "in") end Заранее спасибо. Ссылка на комментарий
Kirgudu 1 240 Опубликовано 18 Июля 2014 Поделиться Опубликовано 18 Июля 2014 (изменено) function give_esc_art(first_speaker, second_speaker) if db.actor:object("af_vyvert") ~= nil then dialogs.relocate_item_section(second_speaker, "af_vyvert", "out") elseif db.actor:object("af_gravi") ~= nil then dialogs.relocate_item_section(second_speaker, "af_gravi", "out") else return end dialogs.relocate_money(second_speaker, 1500, "in") end Изменено 18 Июля 2014 пользователем Kirgudu Инструмент Ссылка на комментарий
Vadyanchikus 5 Опубликовано 18 Июля 2014 Поделиться Опубликовано 18 Июля 2014 (изменено) Увы, помогло только частично. Теперь Сидорович забирает нужный артефакт (Выверт), но он всё ещё остаётся в рюкзаке. А, проблема в самой функции relocate_item_section. Я посмотрел скрипт, отвечающий за передачу водки механику "Свободы" - там функция relocate_item. Хотя она указана, как устаревшая. Я посмотрел функцию relocate_item_section, и в ней есть пометка, что она перемещает только квестовые предметы. Вот функция: function relocate_item_section(victim, section, type) if db.actor and victim then if type == "in" then --' Трансферить нужно только квестовые предметы. if quest_section[section] == true and victim:object(section) ~= nil then victim:transfer_item(victim:object(section), db.actor) else alife():create(section, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end elseif type == "out" then db.actor:transfer_item(db.actor:object(section), victim) end news_manager.relocate_item(db.actor, type, section) end end Наверное, из-за этого артефакт из моего рюкзака и не отбирается. Может, кто-нибудь подскажет, как сделать эту функцию универсальной, то есть не только квестовые предметы перетаскивать? Напоминаю: портянки убираем под спойлер. Kirgudu Изменено 18 Июля 2014 пользователем Kirgudu Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 18 Июля 2014 Поделиться Опубликовано 18 Июля 2014 local sim = alife() local actor -- db.actor local t_quest = {} -- квестовые предметы local news_relocate_item -- вывод сообщения о потере/получении предмета function relocate_item_section( who, sect, d, n ) -- todo: составить таблицы, потом перемещать local r = 0 if d == "in" then for i = 1, n or 1 do if who and t_quest[sect] and i == 1 then -- квестовые предметы перемещаем local item = who:object( sect ) if item then who:transfer_item( item, actor ) else sim:create( sect, vector(), 0, 0, 0 ) end r = r + 1 else sim:create( sect, vector(), 0, 0, 0 ); r = r + 1 end end elseif who and d == "out" then for i = 1, n or 1 do local item = actor:object( sect ) if item then actor:transfer_item( item, who ) r = r + 1 end end end if r ~= 0 then news_relocate_item( actor, d, sect, r ) end return r end переменные перед функцией определить на свои значения Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Kirgudu 1 240 Опубликовано 18 Июля 2014 Поделиться Опубликовано 18 Июля 2014 local news_relocate_item -- вывод сообщения о потере/получении предмета Здесь стоит добавить для тех, кто не в теме, что news_relocate_item - функция или ссылка на функцию. Инструмент Ссылка на комментарий
Vadyanchikus 5 Опубликовано 18 Июля 2014 Поделиться Опубликовано 18 Июля 2014 Я в скриптах пока не очень понимаю, только если по шаблону писать. То есть этот скрипт на перемещение предметов подойдёт на ТЧ 1.0006? Ссылка на комментарий
Карлан 1 049 Опубликовано 18 Июля 2014 Поделиться Опубликовано 18 Июля 2014 (изменено) @Vadyanchikus, в сталкере есть непонятная лично мне особенность, сначала нужно забирать итем у актора, а потом дальше че-нить фигарить, иначе у актора нифига забираться не будет, несмотря на появленное сообщение. Так что переставь порядок функций и отпишись заработало или нет.Замечательно забирается. dc Эмпирически доказал для себя обратное, спорить я конечно не буду, у меня такой косяк имел место быть, хотя логики в нем не видно. Не забирается. Изменено 18 Июля 2014 пользователем Карлан Ссылка на комментарий
aleksn09 2 Опубликовано 18 Июля 2014 Поделиться Опубликовано 18 Июля 2014 (изменено) Приветствую! У меня тут такой вопрос. Как можно сделать условие, чтобы при наличии артефакта в инвентаре, повышался уровень радиации у ГГ, а когда убираешь артефакт в ячейку для артефактов, радиация переставала повышаться?А вот функция, которую я сделал. Но когда арт убираешь в ячейку для слотов, радиация все равно повышается. function artefact_radiation() if time_global() - flag_timer < 10000 then return end if db.actor.radiation <= 0.5 then flag_timer = time_global() if db.actor:object("af_oasis_heart") and db.actor:item_in_slot(11) ~= "af_oasis_heart" then local actor = db.actor local h = hit() h.draftsman = actor h.power = 0.3 h.type = hit.radiation actor:hit(h) end end end db.actor:item_in_slot(11) ~= "af_oasis_heart", как минимум... dc В том и прикол, что даже когда артефакт в ячейке, функция работает. Даже сделал функцию вывода сообщения, если артефакт в слоте, так сообщение не выводится.P.S. Надеюсь пост ниже не относится ко мне? Я всего-то задал вопрос, а отвечать или нет, ваше дело. Просто реально уже все перепробовал. Изменено 18 Июля 2014 пользователем aleksn09 Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 18 Июля 2014 Поделиться Опубликовано 18 Июля 2014 А вообще опять становится грустно... С одной стороны, вроде радоваться надо, что появляются люди, которым еще что-то интересно, а с другой - все сводится к дичайшему примитиву, и опять таки: "вот, я тут наделал - исправьте мне", и "дайте мне, чтобы все было"... 8( То есть, какой-то собственной работы не видно совсем. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти