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 3 results

  1. [Мод] Время сервера Мод добавляет в игру текстовую метку с часами - текущее время сервера. Время сервера берется из пакета ID: 940, который сервер отправляет клиенту при подключении, например: [01-17 10:44:47:879] Метка с часами привязывается к форме миникарты "frmMinimap" из файла GUI-скриптов "\scripts\lua\forms\minimap.clu". Требования Установленный Загрузчик модов для сервера и клиента (PKOdev.NET mod loader). Информация о моде Название: pkodev.mod.clock; Версия: 1.0; Автор: V3ct0r; Тип: для клиента (Game.exe); Поддерживаемые исполняемые .exe файлы: GAME_13X_0, GAME_13X_1, GAME_13X_2, GAME_13X_3, GAME_13X_4 иGAME_13X_5). Установка 1) В директории "mods" Вашего клиента создайте папку "pkodev.mod.clock"; 2) Поместите в неё файл DLL-библиотеки мода "pkodev.mod.clock.client.13x_<x>.dll" для Вашей версии Game.exe. 3) Поместите в неё файл настроек мода "pkodev.mod.clock.cfg" и запишите в него желаемый формат вывода времени сервера в соответствии с документацией на функцию strftime(). Например, формат: Время сервера: %H:%M:%S %d.%m.%y Может дать следующий вывод: Время сервера: 10:51:20 17.01.2022 4) В файл GUI-скриптов "\scripts\lua\forms\minimap.clu" добавьте код для текстовой метки "labClock", которая будет отвечать за вывод времени сервера: ------------------------------------------------------------------------------------------ -- Clock label ------------------------------------------------------------------------------------------ labClock = UI_CreateCompent(frmMinimap, LABELEX_TYPE, "labClock", 20, 15, 20, 220) UI_SetCaption(labClock, "Clock") UI_SetTextColor(labClock, COLOR_WHITE) UI_SetLabelExFont(labClock, DEFAULT_FONT, TRUE, COLOR_BLACK) ------------------------------------------------------------------------------------------ Скачать 1) Бинарные файлы мода (.dll); 2) Исходный код мода для Visual Studio 2019 Community (C++). Если Вы столкнулись с какой-либо проблемой, багом или у Вас возникли вопросы, то пишите в данной теме.
  2. Диалог с 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. По такому же принципу можно делать любые проверки, например, на расу и профессию персонажа игрока.
  3. [FYI] Разному времени суток - разный дроп Автор: @insider Итак, добавляем в дроп лист кальмарчика некий предмет. Шанс выпадения предмета ставим 0. Далее, идем в skilleffect.lua, ищем функцию Check_Baoliao и следующий кусок в ней: if arg[i] >= 100 then mf = math.min ( 1, 100 / arg[i] * bsmf ) * MF_RAID * MF_RAID_STATE a = Percentage_Random(mf) if a == 1 then count = count + 1 item[count] = i end end И меняем на что-то вроде: if arg[i] >= 100 then mf = math.min ( 1, 100 / arg[i] * bsmf ) * MF_RAID * MF_RAID_STATE a = Percentage_Random(mf) if a == 1 then count = count + 1 item[count] = i end elseif arg[i] == 0 if время >= 7 часов and время <= 8 часов and id_моба == кальмарчик mf = math.min ( 1, 100 / настоящий_%_дропа * bsmf ) * MF_RAID * MF_RAID_STATE a = Percentage_Random(mf) if a == 1 then count = count + 1 item[count] = i end end end В итоге кальмарчик каждый день с 7 до 8ми будет дропать некий предмет с заданным шансом (шанс рассчитывается как для таблицы), а в остальное время - не будет. Сюда можно добавить проверку не только на время, но и на наличие у игрока определенного предмета или части экипировки, его уровень, принадлежность к определенной гильдии, да и вообще на что только фантазии хватит. Вопросы приветствуются. Enjoy! © insider
×
×
  • Create New...