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. [Мод] Система контрактов Данная система представляет собой квест типа: "Охота на монстров", целью которого является добыча персонажем игрока некоторого количества определенных монстров. Игроку выдается специальный предмет - "Контракт", в котором указано на какого монстра и в каком количестве игроку предстоит охотиться. По мере охоты, в контракте обновляется текущий прогресс игрока. После добычи необходимого числа монстров контракт считается выполненным, и игрок может получить награду, использовав предмет "Контракта". Система состоит из двух частей: модификация pkodev.mod.loader для игрового клиента (Game.exe) и Lua-скрипт для игрового сервера (GameServer.exe). Модификация клиента необходима для визуализации заданных характеристик предмета в поле-подсказке для предмета "Контракта" при наведении на него курсора мыши. ID монстра-цели, количество добытых монстров и количество монстров, необходимых для завершения "Контракта", записываются в следующие характеристики предмета: ITEMATTR_VAL_STR, ITEMATTR_VAL_DEX и ITEMATTR_VAL_AGI соответственно. Задачей мода является отображение этих характеристик в понятном для игрока виде. Например, если ITEMATTR_VAL_STR = 103, ITEMATTR_VAL_DEX = 5, а ITEMATTR_VAL_AGI = 10, то игрок при наведении мыши на "Контракт" увидит следующую информацию: Охота: 'Лесной дух' x 10 Добыто: 5 / 10 Lua-скрипт для игрового сервера является ядром Системы контрактов, в котором содержатся настройки системы и логика её работы. Например, при добыче очередного монстра, скрипт будет искать в инвентаре персонажа подходящий активный "Контракт", и если такой предмет будет найден, то Система обновит его состояние. Важной настройкой скрипта является функция, которая необходима для выдачи награды после успешного завершения "Контракта" игроком. Некоторые особенности системы: 1) "Контракт" можно подобрать, выбросить, передать другому игроку, положить в банк или продать; 2) Если у игрока в инвентаре несколько "Контрактов" на охоту на одного и того же монстра, то при добыче данного монстра "Контракт" выбирается случайным образом; 3) Для получения награды после завершения "Контракта", игрок должен использовать предмет "Контракта", например, с помощью двойного клика мыши по нему. Если "Контракт" еще не завершен, то игрок увидит соответствующее сообщение в систему; 4) Состав и количество награды определяются администратором в специальной функции скрипта системы; 5) ID и тип предмета для "Контракта" должны быть уникальными и задаются администратором в настройках Системы. Тип предмета по умолчанию равен 99, ID предмета по умолчанию не определен. Информация о модификации Название: pkodev.mod.contract; Версия: 1.1; Автор: V3ct0r; Тип: для игрового клиента (Game.exe); Поддерживаемые исполняемые файлы (.exe): GAME_13X_0, GAME_13X_1, GAME_13X_2, GAME_13X_3, GAME_13X_4 и GAME_13X_5. Установка Системы контрактов Игровой сервер 1. Добавьте в файл GameServer\resource\ItemInfo.txt предмет для "Контракта". Для этого выберите подходящий ID (XXXX) и тип предмета (по умолчанию 99): XXXX Контракт n0184 10130005 0 0 0 0 0 00 99 0 0 0 0 0 1 1 1 1 1 1 0 -1 0 -1 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 10,10 0,0 0 0 0 0 0 0 0 0 0 ItemUse_PKOdevContract 0 0 0 0 0 0 После завершения Вы получите награду! где XXXX - любой незанятый ID. 2. Поместите Lua-скрипт pkodev.contract.lua в директорию GameServer\resource\script\calculate\mods (при необходимости создайте каталог mods). Примечание: Скрипт pkodev.contract.lua отправляет игрокам различные сообщения на английском языке. Вероятно, Вам будет необходимо перевести эти сообщения на русский язык. 3. Откройте файл pkodev.contract.lua и настройте его следующим образом: 3.1 В переменную item_id запишите ID предмета из ItemInfo.txt (XXXX): item_id = XXXX, 3.2 В функции CompletionCallback() запишите код, который будет выдавать игроку награду после выполнения "Контракта". По умолчанию функция выдает игроку 1,000 золотых монет, случайный предмет (Очищающий самоцвет x 1, или Самоцвет ярости x 2, или Кекс x 60, или Фея удачи x 1) и запускает фейерверк: CompletionCallback = function(role, item) -- Выдать 1,000 золотых монет AddMoney (role, 0, 1000) -- Список предметов local arr = { {id = 885, count = 1 }, -- Очищающий самоцвет x 1 {id = 863, count = 2 }, -- Самоцвет ярости x 2 {id = 1849, count = 60}, -- Кекс x 60 {id = 231, count = 1 } -- Фея удачи x 1 } -- Выдать случайный предмет local idx = math.random(1, table.getn(arr)) GiveItem(role, 0, arr[idx].id , arr[idx].count, 4) -- Запустить фейерверк PlayEffect(role, 361) end 3.3 Откройте файл GameServer\resource\script\calculate\SkillEffect.lua и в самом начале запишите строку: dofile(GetResPath("script\\calculate\\mods\\pkodev.contract.lua")) 4. Система контрактов была успешно установлена на Ваш сервер. Поздравляю! Также обратите внимание на реализацию скрипта Системы контрактов от @Angelix. Она более гибкая и продвинутая по сравнению с той, что предлагается выше. Описание скрипта и инструкцию по установке можно найти в соответствующей теме: Игровой клиент 1. Добавьте в файл Клиент\scripts\table\ItemInfo.txt предмет для "Контракта" (см. выше "Установка Системы контрактов" > "Игровой сервер" > пункт 1. Скомпилируйте ItemInfo.txt. 2. Добавьте в файл Клиент\scripts\table\StringSet.txt следующие строки, которые увидит игрок при наведении курсора мыши на предмет "Контракта": [1000] "(Выполнен)" [1001] "(Выполняется)" [1002] "Охота: '{0}' x {1}" [1003] "Добыто: {0} / {1}" Примечание 1: Если ID строк 1000 - 1003 уже заняты, то вместо них запишите свободные ID. Примечание 2: После добавления данных строк в файл StringSet.txt, удалите файл StringSet.bin, если он существует, иначе изменения не применятся. Примечание 3: В строке 1002 маркер {0} обозначает название монстра, а {1} - количество монстров, которое необходимо добыть. В строке 1003 маркер {0} обозначает число уже добытых монстров, маркер {1} по значению аналогичен строке 1002. 3. Установите систему загрузки модов pkodev.mod.loader, если она не была установлена ранее. 4. Поместите файл DLL-библиотеки мода pkodev.mod.contract.client.13x_{ID}.dll для Вашей версии Game.exe и файл настроек мода pkodev.mod.contract.json в папку mods\pkodev.mod.contract игрового клиента. 5. Откройте файл настроек мода pkodev.mod.contract.json и запишите в него следующие параметры по Вашему усмотрению: 1. itemType - тип предмета "Контракта", указанный в ItemInfo.txt. По умолчанию 99. 2. colorCompleted - Цвет метки "(Выполнен)" во всплывающей подсказке предмета "Контракта" в формате 0xAARRGGBB. По умолчанию 0xFF00FF00 (Зеленый). 3. colorActive - Цвет метки "(Выполняется)" во всплывающей подсказке предмета "Контракта" в формате 0xAARRGGBB. По умолчанию 0xFFFFA500 (Оранжевый). 4. STRING_001 - ID строки для метки "(Выполнен)" из файла StringSet.txt. По умолчанию 1000. 5. STRING_002 - ID строки для метки "(Выполняется)" из файла StringSet.txt. По умолчанию 1001. 6. STRING_003 - ID строки для метки "Охота: '{0}' x {1}" из файла StringSet.txt. По умолчанию 1002. 7. STRING_004 - ID строки для метки "Добыто: {0} / {1}" из файла StringSet.txt. По умолчанию 1003. Примечание: Данный файл можно не редактировать, если Вы использовали значения по умолчанию в файлах ItemInfo.txt и StringSet.txt. 6. Настройка клиента завершена! Создание "Контрактов" и их выдача игрокам "Контракты" создаются с помощью функции contract.create(), которая в качестве своих аргументов принимает дескриптор персонажа, которому выдается контракт, ID монстра, на которого игроку предстоит охотиться, и количество монстров, которое игрок должен добыть. В результате функция возвращает кортеж из трех элементов: флаг успеха, дескриптор созданного предмета и номер ячейки в инвентаре персонажа. Синтаксис: local <Результат (LUA_TRUE или LUA_FALSE)>, <Дескриптор предмета>, <Ячейка в инвентаре> = contract.create(<Дескриптор персонажа>, <ID монстра>, <Число монстров>) Пример: local ret, item, pos = contract.create(role, 103, 7) Синтаксис: local <Результат LUA_TRUE|LUA_FALSE>, <Дескриптор предмета>, <Ячейка предмета> = contract.create(<Дескриптор персонажа>, <ID монстра>, <Число монстров>) В результате будет создан "Контракт" на охоту на семерых Лесных духов, который появится в инвентаре персонажа role. В случае ошибки функция вернет в переменную ret значение LUA_FALSE и запишет лог в файл pkodev.contract.txt. Примечание: Выдачу "Контрактов" можно организовать, например, через специального NPC или другой предмет. Полезные ссылки 1) Lua-скрипт системы для игрового сервера; 2) ItemInfo.txt с примером предмета "Контракта"; 3) Строки для файла StringSet.txt; 4) Бинарные файлы модификации для клиента (.dll); 5) Файл с настройками модификации для клиента; 6) Репозиторий на GitHub с исходным кодом модификации для Visual Studio 2022 Community на языке C++; 7) Система загрузки модов pkodev.mod.loader. Если Вы столкнулись с какой-либо проблемой, багом или у Вас возникли вопросы, то пишите в данной теме.
×
×
  • Create New...