Welcome to Сообщество игровых серверов NETZONA.ORG

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям. Зарегистрировавшись и войдя в систему, вы сможете создавать темы, публиковать ответы в существующих темах, давать репутацию другим участникам, получать собственный личный мессенджер и многое другое. Это также быстро и совершенно бесплатно, так чего же вы ждете?
  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами Публичной оферты Проекта NetZONA.org: https://netzona.org/help/public-offer/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами использования Ваших файлов cookie на Проекте NetZONA.org: https://netzona.org/help/cookies/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с Политикой конфиденциальности Проекта NetZONA.org: https://netzona.org/pages/privacy-policy/

  • Ответы на основные вопросы: https://netzona.org/threads/populjarnye-voprosy-i-otvety-na-nix.6122/

  • Приветствуем на сайте, Гость! Приобрести (купить) Информационную услугу (в том числе группу "Проверенный") на Проекте NetZONA.org: https://netzona.org/account/upgrades

Helix quests проблема с кодом

Vergjil

Пользователь
Регистрация
29 Авг 2014
Сообщения
40
Реакции
0
Баллы
15
Возраст
36
Пол
Пытался переписать плагин для квестов с НС на Helix. В итоге оно заработало, НО по какой-то причине не может понять строчку "HasItem", при сдаче квеста . Я понимаю что что-то упускаю, но не могу понять что именно.



Итоговый код:


sh_quests

local QUEST = {}
QUEST.uniqueID = "grant"
QUEST.name = "Honeya Hideout's Problem"
QUEST.desc = "Get %s of %s for Honeya Hideout." -- If you don't know how it's working, Just check in sh_advhandler.lua in dialogue.
QUEST.quickRewards = {
currency = 100,
items = {
{ uid = "terminal", amount = 1, data = {} },
}
}

QUEST.randomItem = { --
{ uid = "garnit", min = 1, max = 1 },
}
function QUEST:GenerateData( player )
local tbl = {}
for i = 0, 0 do
local idat = table.Random( self.randomItem )
tbl[ idat.uid ] = math.random( idat.min, idat.max )
print( 'inserted '.. idat.uid )
end
return tbl
end

function QUEST:CanComplete( player, data )
for uid, num in pairs( data ) do
if !player:HasItem ( uid, num ) then
print( Format( "lack of %s of %s", num, uid ) )
return false
end
end
return true
end

function QUEST:RemoveQuestItem( player, data )
for uid, num in pairs( data ) do
player:UpdateInv( uid, -num )
end
end

function QUEST:PostReward( player, data )
print( 'PostReward')
return true
end

PLUGIN:RegisterQuest( QUEST.uniqueID, QUEST )



sh_plugin

local PLUGIN = PLUGIN
PLUGIN.name = "Quest/Journals."
PLUGIN.author = "Black Tea"
PLUGIN.desc = "For someone who want to make server automatic game."

PLUGIN.curQuests = {}
PLUGIN.quests = {}

PLUGIN.journal = true -- If journal is active, you can see what you're doing now.
PLUGIN.maxQuestsim = 2 -- The number of the quest that player can do simultaneously.

local entityMeta = FindMetaTable("Entity")
local playerMeta = FindMetaTable("Player")

function PLUGIN:RegisterQuest( str, data )
if self.quests[ str ] then
print( 'Sorry, ' .. str .. ' is already exists.' )
return false
else
self.quests[ str ] = data
return true
end
end
ix.util.Include("sh_quests.lua")

-- Journal data form
-- [ uid ] = data >> data is for randomized quest.
-- desc will do like desc = "%s and shit"
-- derma will do like AddDesc( ... )
-- unpack( table )
-- Register quests

function playerMeta:GetQuests()
return self:GetNetVar( "questAssigned", {} )
end

function playerMeta:HasQuest( str )
return self:GetQuests()[ str ]
end
function playerMeta:GetQuest( str )
return self:GetQuests()[ str ]
end

function playerMeta:AddQuest( str, data ) -- if this returns false, the quest queue is full.
local quests = self:GetQuests()
data = data or {}
if #quests == maxQuestsim then
return false -- max quests reached.
else
quests[ str ] = data
self:SetNetVar( "questAssigned", quests )
return true
end
end

function playerMeta:CanCompleteQuest( str, data )
local d_qst = PLUGIN:GetQuest( str )
return d_qst:CanComplete( self, data )
end

function playerMeta:RemoveQuest( str )
local quests = self:GetQuests()
if quests[ str ] then
quests[ str ] = nil
self:SetNetVar( "questAssigned", quests )
return true
else
return false
end
end

function playerMeta:GiveQuestReward( str )
-- simple reward
-- and some custion functions
-- ( self, questtbl )
local d_qst = PLUGIN:GetQuest( str )
local d_rwd = PLUGIN:GetQuestReward( str )
local qdat = self:GetQuest( str )

if d_qst and d_rwd then
for k, dt in pairs( d_rwd ) do
if k == "currency" then
self:GiveMoney( dt )
elseif k == "items" then
for _, data in pairs( dt ) do
self:UpdateInv( data.uid, data.amount, data.data or {} )
end
end
end
d_qst:RemoveQuestItem( self, qdat )
d_qst:PostReward( self, qdat )
end

end

function PLUGIN:GetQuests()
return self.quests
end

function PLUGIN:GetQuest( str )
return self.quests[ str ]
end

function PLUGIN:GetQuestReward( str )
return self.quests[ str ].quickRewards
end

function PLUGIN:PlayerDisconnected( player )
if player:GetQuests() then
curQuests[ player:SteamID() ] = player:GetQuests()
end
end
 

Вложения

  • 1673005361520.png
    1673005361520.png
    14.5 KB · Просмотры: 4

danlimons

Пользователь
Регистрация
6 Фев 2018
Сообщения
97
Реакции
0
Баллы
19
Возраст
23
Веб-сайт
vk.com
if !player:GetCharacter():HasItem( uid, num ) then будет работать
HasItem - мета персонажа, а не игрока
 

Vergjil

Пользователь
Регистрация
29 Авг 2014
Сообщения
40
Реакции
0
Баллы
15
Возраст
36
Пол
Ага. Поменялось. Спасибо. Теперь он выдает ошибку из инвентаря... Что ж. Буду искать проблему там.
 

Вложения

  • 1673009410298.png
    1673009410298.png
    18.8 KB · Просмотры: 4

Vergjil

Пользователь
Регистрация
29 Авг 2014
Сообщения
40
Реакции
0
Баллы
15
Возраст
36
Пол
if !player:GetCharacter():GetInventory():HasItem( uid, num ) then
Не-а. Тоже не работает. Могу я скинуть исходники? Потому что уже третий день в две каски бьемся над этим и все никак (а других плагинов на квесты найти не удается)
 

danlimons

Пользователь
Регистрация
6 Фев 2018
Сообщения
97
Реакции
0
Баллы
19
Возраст
23
Веб-сайт
vk.com
Не-а. Тоже не работает. Могу я скинуть исходники? Потому что уже третий день в две каски бьемся над этим и все никак (а других плагинов на квесты найти не удается)
Запарно уж очень. Я вижу ты и сам хз, откуда ошибка.
Сообщение автоматически объединено:

Могу лишь порекомендовать взять плагин на квесты отсюда.
Он уже переписан под хеликс.
 

Vergjil

Пользователь
Регистрация
29 Авг 2014
Сообщения
40
Реакции
0
Баллы
15
Возраст
36
Пол
Запарно уж очень. Я вижу ты и сам хз, откуда ошибка.
Сообщение автоматически объединено:

Могу лишь порекомендовать взять плагин на квесты отсюда.
Он уже переписан под хеликс.
Понял. Сейчас будем тестировать. Спасибо больше за помощь.
 
Назад
Сверху Снизу