Search the Community
Showing results for tags 'миссия'.
Found 2 results
-
[Скрипт] Для завершения квеста должно пройти X часов Привет! В этой теме я выложу пример скрипта, который позволит проверять следующее условие завершения квеста: после взятия игроком данного квеста, должно пройти некоторое время. Данный вопрос обсуждался ранее в англоязычном разделе нашего форума: Пример использования MisResultCondition(MissionTimeExpired, <ID_квеста>, <время_в_секундах>) Установка Добавьте следующий код в файл 'variable.lua': -- Table with the time of taking quests by characters if (quest_table_guard == nil) then quest_table_guard = true quest_table = { } end В файл 'functions.lua' запишите: -- Quest added event AddMission__Original = AddMission AddMission = function(role, id, param) -- Call original AddMission function local ret = AddMission__Original(role, id, param) -- Check the result if ( ret == LUA_TRUE ) then -- Add the quest to the table quest_table[id] = quest_table[id] or {} -- Remember the time when the character took the quest quest_table[id][ GetRoleID(role) ] = os.time() end -- Return original result return ret end -- Check that some time expired since character taken the quest function MissionTimeExpired(role, id, t) -- Check that quest exists in the table if ( quest_table[id] == nil ) then -- Quest not found return LUA_TRUE end -- Get character ID local cha_id = GetRoleID(role) -- Check that the character has the quest if ( quest_table[id][cha_id] == nil ) then -- Character doesn't have the quest ?! return LUA_TRUE end -- Calculte time delta local delta = ( os.time() - quest_table[id][cha_id] ) -- Check that t seconds expired since quest started if ( delta >= t ) then -- Remove character from table quest_table[id][cha_id] = nil -- Condition is completed return LUA_TRUE end -- Condition is not completed return LUA_FALSE end И, наконец, зарегистрируйте новую функцию в файле 'MissionSdk.lua' (функция 'ConditionsTest'): . . . elseif conditions[i].func == MissionTimeExpired then local ret = MissionTimeExpired( character, conditions[i].p1, conditions[i].p2 ) if ret ~= LUA_TRUE then PRINT( "ConditionsTest: MissionTimeExpired = false" ) return LUA_FALSE end . . . Примечания: 1) При перезапуске GameServer.exe данные о времени взятия квестов персонажами будет потеряно. Если это критично для Вашего применения, то Вам необходимо придумать механизм сохранения таблицы 'quest_table' в файл или базу данных; 2) NPC, которые выдают и принимают квест с условием по времени, должны находится в пределах одного и того же экземпляра GameServer.
-
Ребята , кто может помочь и объяснить как создать простой квест самому. Напишите пожалуйста в вк: vk.com/mrsereewa Буду очень благодарен, возможно вознаграждение