Jump to content
  • 0
Sign in to follow this  
potinho

Scripting Tasks [7.6]

Question

potinho

Descreva em algumas palavras a base utilizada. (Nome do servidor / Nome do cliente / Nome do Website / etc).

TheOTXServer-76-win32

Base: 

7.6

 

Qual a sua pergunta?

Estou tentando adicionar monstros na script de task que já existe, porém ao adicionar uma nova linha, o NPC não reconhece a task, somente as que já existem. A linha da task de Demon foi a que eu adicionei manual, o restante veio no OTserv. Gostaria de adicionar novos monstros na task.

 

Você tem o código disponível? Se tiver poste-o na caixa de código que está dentro do spoiler abaixo:

Spoiler

<?xml version="1.0" encoding="UTF-8"?>  

<mod name="Simple Task" version="3.0" author="Vodkart" contact="************.com" enabled="yes">  

<config name="task_func"><![CDATA[


tasktabble = {

["troll"] = {monster_race={"troll","frost troll","furious troll","island troll","swamp troll","troll champion","troll legionnaire"}, storage_start = 200201, storage = 91001,count = 300,exp = 50000,money = 3000},

["globin"] = {monster_race={"goblin","goblin assassin","goblin leader"}, storage_start = 200202, storage = 91002,count = 300,exp = 70000,money = 3000},

["rotworm"] = {monster_race={"rotworm","carrion worm"}, storage_start = 200203, storage = 91003,count = 300,exp = 100000,money = 10000},

["cyclops"] = {monster_race={"cyclops","cyclops smith","cyclops drone"}, storage_start = 200204, storage = 91004,count = 500,exp = 200000,money = 15000},

["minotaur"] = {monster_race={"minotaur","minotaur archer","minotaur mage","minotaur guard"}, storage_start = 200209, storage = 91009,count = 600,exp = 100000,money = 5000},

["dragon"] = {monster_race={"dragon","dragon lord","frost dragon"}, storage_start = 200214, storage = 91014,count= 300, exp = 850000,money = 30000},

["giant spider"] = {monster_race={"giant spider"}, storage_start = 200215, storage = 91016,count = 500, exp = 500000, money = 15000},

["demon"] = {monster_race={"demon"}, storage_start = 200215, storage = 91016,count = 6666, exp = 10000000, money = 200000},

}

configbosses_task = {

{race = "cave rat",Playerpos = {x = 189, y = 57, z = 7}, FromPosToPos = {{x = 186, y = 54, z = 7},{x = 193, y = 60, z = 7}},time = 5},

}


function CheckTask(cid)

for k, v in pairs(tasktabble) do

if getPlayerStorageValue(cid,v.storage_start) >= 1 then return true end

end

return false

end

function finisheAllTask(cid)

local config = {

exp = {true,100000},

money = {true,200000},

items ={false,{{2124,2},{2173,1}}},

premium ={true,5}

}

local x = true

for k, v in pairs(tasktabble) do

if tonumber(getPlayerStorageValue(cid,v.storage)) then

x = false

end

end

if x == true then

setPlayerStorageValue(cid, 521456, 0)

local b = getGlobalStorageValue(63005) if b == -1 then b = 1 end

if b < 11 then

setGlobalStorageValue(63005,b+1)

doBroadcastMessage('[Task Mission Complete] '..getCreatureName(cid)..' was the '..b..' to finish the task!.')

doPlayerAddPremiumDays(cid, config.premium[1] == true and config.premium[2] or 0)

doPlayerAddExp(cid, config.exp[1] == true and config.exp[2] or 0)

doPlayerAddMoney(cid, config.money[1] == true and config.money[2] or 0)

if config.items[1] == true then doAddItemsFromList(cid,config.items[2]) end

doItemSetAttribute(doPlayerAddItem(cid, 7369), "name", "trophy "..getCreatureName(cid).." completed all the task.")

end

end

end

function HavePlayerPosition(cid, from, to)

    return isInRange(getPlayerPosition(cid), from, to) and true or false

end

function getRankStorage(cid, value, max, RankName) -- by vodka

local str =""

str = "--[".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."]--\n\n"

local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;")

if (query:getID() ~= -1) then k = 1 repeat if k > max then break end

str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") .. "]"

k = k + 1 until not query:next() end return doShowTextDialog(cid, 2529, str)

end

function getItemsInContainerById(container, itemid) -- Function By Kydrai

            local items = {}

            if isContainer(container) and getContainerSize(container) > 0 then

                            for slot=0, (getContainerSize(container)-1) do

                                            local item = getContainerItem(container, slot)

                                            if isContainer(item.uid) then

                                                            local itemsbag = getItemsInContainerById(item.uid, itemid)

                                                            for i=0, #itemsbag do

                                                                            table.insert(items, itemsbag)

                                                            end

                                            else

                                                            if itemid == item.itemid then

                                                                            table.insert(items, item.uid)

                                                            end

                                            end

                            end

            end

            return items

end

function doPlayerAddItemStacking(cid, itemid, quant) -- by mkalo

    local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid)

    local piles = 0

    if #item > 0 then

            for i,x in pairs(item) do

                    if getThing(x).type < 100 then

                            local it = getThing(x)

                            doTransformItem(it.uid, itemid, it.type+quant)

                            if it.type+quant > 100 then

                                    doPlayerAddItem(cid, itemid, it.type+quant-100)

                            end

                    else

                           piles = piles+1

                    end

            end

    else

            return doPlayerAddItem(cid, itemid, quant)

    end

    if piles == #item then

            doPlayerAddItem(cid, itemid, quant)

    end

end

function getItemsFromList(items) -- by vodka

local str = ''

if table.maxn(items) > 0 then

for i = 1, table.maxn(items) do

str = str .. items[2] .. ' ' .. getItemNameById(items[1])

if i ~= table.maxn(items) then str = str .. ', ' end end end

return str

end

function doAddItemsFromList(cid,items) -- by vodka

if table.maxn(items) > 0 then

for i = 1, table.maxn(items) do

local count = items[2]

while count > 0 do

if isItemStackable(items[1]) then

doPlayerAddItemStacking(cid, items[1], 1)

else

doPlayerAddItem(cid, items[1],1)

end

count = count - 1

end

end

end

end

        function pairsByKeys(t, f)

          local a = {}

          for n in pairs(t) do table.insert(a, n) end

          table.sort(a, f)

          local i = 0

          local iter = function ()

                i = i + 1

                if a == nil then return nil

                else return a, t[a]

                end

          end

          return iter

        end

]]></config>

<event type="login" name="TaskLogin" event="script"><![CDATA[

function onLogin(cid)

registerCreatureEvent(cid, "KillTask")

return true

end]]></event>    

<event type="kill" name="KillTask" event="script"><![CDATA[

domodlib('task_func')

function onKill(cid, target, lastHit)

if(isMonster(target) == true) then

local n = string.lower(getCreatureName(target))

for race, mob in pairs(tasktabble) do

if getPlayerStorageValue(cid,mob .storage_start) >= 1 then

for i = 1,#mob.monster_race do

if n == mob.monster_race then

local contagem = getPlayerStorageValue(cid, mob.storage)

if (contagem == -1) then contagem = 1 end

if not tonumber(contagem) then return true end

if contagem > mob.count then return true end

if contagem > mob.count then return true end

setPlayerStorageValue(cid, mob.storage, contagem+1)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,""..(contagem == mob.count and "Congratulations! You finished the task of "..race.."." or "defeated. Total [" .. contagem .. "/" .. mob.count .. "] " .. race .. ".").."")

end

end

end

end

end

return true

end]]></event>

</mod>

 

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, anexe-a dentro do spoiler abaixo:

Spoiler

 

 

Share this post


Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 0
Majesty

Hidden Content

    Sign In here or Sign Up here to see this hidden content.

A storage_start e storage da giant spider e demon estão iguais.

Altere a storage_start e storage para a task de demon.

Share this post


Link to post
Share on other sites
  • 0
potinho

+REP @Majesty, obrigado. Só pra entender, o que significa essas duas variáveis?

Aproveitando o tópico, se eu quiser colocar um item de reward ao invés de money, só colocar no final:

exp = 10000000, item = id_item},

?

Share this post


Link to post
Share on other sites
  • 0
Majesty

Storage é uma tabela usada para guardar certos tipos de informações do jogador enviando para o banco uma key numérica (serve como identificador ID) e seu value (valor). 

storage_start - se o jogador começou a task.

storage - valor da task.

Para colocar itens como recompensa, coloca assim:

reward = {{itemid,quantidade},{itemid,quantidade}},

Exemplo:

reward = {{2520,1},{2173,1}},

Share this post


Link to post
Share on other sites
  • 0
potinho

Então ficaria:

 

["orshabaal"] = {monster_race={"orshabaal"}, storage_start = 200218, storage = 91019,count = 500, reward = {{2520,1},{2173,1}},

 

Obrigado @Majesty

Edit:

Deu esse erro quando iseri a linha com o item e o NPC bugou.

image.png.a656e0f4509f24ef73b4a93161df8e8b.png

Share this post


Link to post
Share on other sites
  • 0
Majesty

Faltou uma } para fechar a tag antes de monster_race.

["orshabaal"] = {monster_race={"orshabaal"}, storage_start = 200218, storage = 91019,count = 500, reward = {{2520,1},{2173,1}}},

Share this post


Link to post
Share on other sites
  • 0
potinho

Obrigado

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×