Jump to content

Search the Community

Showing results for tags 'диалог'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Russian Section
    • Новости и объявления
    • Пиратия: Документация
    • Пиратия: Релизы
    • Пиратия: Разработка
    • Пиратия: Web
    • Пиратия: Помощь
    • Совместные проекты / набор команды
    • Доска объявлений
    • Программирование
    • Оффтопик
    • Корзина
  • English Section
    • News & Announcements
    • Guides
    • Releases
    • Development
    • Web
    • Questions & Help
    • Shared Projects / Team search
    • Paid services & Requests
    • Programming
    • Offtopic
    • Recycle bin
  • Portuguese Section
    • Dúvidas & Ajuda
  • Spanish Section
    • Preguntas y Ayuda
  • Servers
    • Russian servers
    • English servers

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Found 1 result

  1. Диалог с NPC в определенное время Привет! В данном гайде я расскажу как можно сделать диалог с NPC доступным только в определенное время. Например, с 18:00 до 19:45. Для начала напишем скелет скрипта NPC, который для примера назовем pn_FuncName: function pn_FuncName() InitTrigger() TriggerCondition(1, CheckTime, 1800, 1945) TriggerAction(1, JumpPage, 1) TriggerFailure(1, JumpPage, 2) Start(GetMultiTrigger(), 1) Talk( 1, "Я буду с тобой говорить!" ) Talk( 2, "Я НЕ буду с тобой говорить! Приходи в другое время!" ) end В самом начале скрипта мы определяем условие времени TriggerCondition(1, CheckTime, 1800, 1945) Для этого служит функция CheckTime(t1, t2), которую мы опишем позже. Она принимает два параметра: t1 - начальное время; t2 - конечное время. В данном примере, t1 и t2 соответствуют значения 1800 и 1945, что означает интервал времени от 18:00 до 19:45 включительно. Как Вы могли догадаться, время кодируется следующим образом: t = часы * 100 + минуты Итак, мы определили условие времени. Если оно выполняется, то игрок попадает на страницу 1 и видит сообщение "Я буду с тобой говорить!", в противном случае, игрок попадает на страницу 2 и видит сообщение "Я НЕ буду с тобой говорить! Приходи в другое время!". Все просто! Далее нам необходимо написать функцию CheckTime(t1, t2). Для этого открываем файл functions.lua (GameServer\resource\script\calculate) и помещаем в него следующий код: -- Функция для проверки времени -- Если текущее время попадает в интервал [t1, t2] -- , то функция возвращает true, в противном случае -- функция возвращает false function CheckTime(character, t1, t2) -- Получим текущее время local hour = tonumber(os.date("%H")) * 100 local minute = tonumber(os.date("%M")) -- Закодируем его по формуле -- t = часы * 100 + минуты local check = hour + minute -- Определяем, находится ли текущее время -- в интервале [t1, t2] if (check >= t1 and check <= t2) then -- Время находится в интервале return LUA_TRUE end -- Время не находится в интервале return LUA_FALSE end Чтобы функцию можно было использовать в диалогах NPC, а именно в функции TriggerCondition(...), которая определяет различные условия, её необходимо зарегистрировать в файле MissionSdk.lua (GameServer\resource\script\MisSdk). Найдите в этом файле функцию ConditionsTest(...), а в ней следующий код: if conditions[i].func == NoMission then PRINT( "ConditionsTest:NoMission, p1 = ", conditions[i].p1 ) local Ret = NoMission( character, conditions[i].p1 ) if Ret ~= LUA_TRUE then PRINT( "ConditionsTest: NoMission = false" ) return LUA_FALSE end После данного блока кода вставьте код для функции CheckTime(t1, t2): elseif conditions[i].func == CheckTime then PRINT( "ConditionsTest: CheckTime") local ret = CheckTime(character) if ret ~= LUA_TRUE then PRINT( "ConditionsTest: CheckTime = false" ) return LUA_FALSE end На этом все, теперь Вы можете создать NPC c функцией pn_FuncName (название взято для примера) и протестировать его. P.S. За идею были взяты NPC с о. Весны, которые говорят с игроком, только когда он прошел квест "Языковой барьер"; P.S.S. В функцию CheckTime(t1, t2) можно так же добавить проверку на день недели. См. Справочное руководство по языку Lua 5.1 - 5.8 – Функции операционной системы; P.S.S.S. По такому же принципу можно делать любые проверки, например, на расу и профессию персонажа игрока.
×
×
  • Create New...