Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

ACABOU A MOLEZA! Você que sempre fez os NPC's trabalharem dia e noite, disponíveis a qualquer momento mesmo que seja apenas para receber um "hi, buy rope, yes". A COISA MUDOU! Agora você vai ter que ralar. E olhe que os monstros estão com muito gold para gastar devido às mortes de aventureiros, despreparados de AOL ou de bençãos, que acabam por deixar dinheiro nas suas backpacks. VÁ TRABALHAR, SEU VAGAB..! 

 

Depois dessa ladainha toda, estava eu testando algumas funções, umas coisitas aqui e ali e ao misturar tudo saiu isso aí meio que sem querer. Tem uns pontos que podem ser melhorados, mas como disse serviu apenas como uns testes para mim, mas resolvi compartilhar, mesmo sendo simplesinho. Acho que será útil para servidor com um pouquinho de RPG. Testado em TFS 0.4 e versão 8.60.

 

O Job System é um sistema no qual o player atenderá pedidos dos monstros. Cada pedido correto, o player ganha 1 job point que pode ser utilizado para comprar itens no npc ou como você queira fazer, em quests, acessos, seja lá o que for. O funcionamento é demonstrado no vídeo abaixo:

 

 

 

Segue o código do sistema (MOD) e do NPC.

 

jobsystem.xml

 

Mostrar conteúdo oculto

 

 

CONFIGURAÇÃO:

 

Desde que configure corretamente o mapa, não tem praticamente nada para modificar. 

monsters = {
[1] = {"Amazon", "Dwarf", "Elf Scout"},
[2] = {"Barbarian Bloodwalker", "Dwarf Guard", "Warlock"},
[3] = {"Vampire Bride", "Dwarf Geomancer", "Infernalist"}
}

 

times = {
deal = 30,
lever = 2
}

Aqui deal é o tempo em segundos entre cada pedido. Lever é o tempo em minutos para poder usar a alavanca novamente. Aconselho deixá-los nesses valores, já testei e funcionou certinho assim.

 

A configuração ocorre praticamente no mapa:

 

1 - Crie uma "loja" do mesmo tamanho e com a mesma configuração que as mostradas no vídeo e na imagem abaixo. Apenas com a posição do meio livre.

 

YKtCVeV.png

 

Não importa a "orientação" da loja. A única exigência é que a alavanca sempre esteja do lado do braço direito do char, conforme a imagem.

 

MUITO IMPORTANTE: NÃO USE ITENS STACKABLES NA LOJA

 

zKDk80q.png

 

2. Definindo o rank da loja:

ALAVANCA DE ACTION ID:

 

4421 - Rank Apprentice

4422 - Rank Merchant

4423 - Rank Rashid

 

3. Todos os itens que não devem ser arrastados (itens da loja ou de decoração que não devam ser arrastados como o royal axe que mostrei lá no vídeo) devem receber o actionid 4420.

 

4. Os pisos onde os monstros serão criados devem ter actionid 4420. Além disso, ser área no-pvp e no logout (apenas por precaução).

 

5. Toda a área restante deve ser Protection Zone (PZ). Além disso, os locais do centro da loja onde os players ficarão devem ser No Logout Area.

 

 

Dwarfer.xml

 

Mostrar conteúdo oculto

 

 

job.lua

 

Mostrar conteúdo oculto

 

 

Configuração do NPC:

 

promote = {tomerchant = 50, torashid = 100},

tomerchant = 50 -> São necessários 50 pontos no rank Apprentice para avançar

torashid = 100 -> São necessários 100 pontos no rank Merchant para avançar

 

entice_rank = {-- Apprentice
[2154] = {price = 1}, 
[2158] = {price = 3},
[2155] = {price = 7},
[2156] = {price = 100}
},

merchant_rank = { -- Merchant
[1998] = {price = 15}, 
[5950] = {price = 25},
[1987] = {price = 70},
[2402] = {price = 100}
},

rashid_rank = { -- Rashid
[9993] = {price = 15}, 
[9992] = {price = 25},
[9992] = {price = 70},
[7399] = {price = 100}}
}

 

[id_do_item] = {price = preço do item}  que aparecerá na lista do NPC. 

 

É isso aí, seus vagal's :) 

Editado por Dwarfer (veja o histórico de edições)

Contato:

  • Email: dwarfer@sapo.pt
  • Discord: Dwarfer#2715

 

  • Respostas 13
  • Visualizações 2.8k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Valeu  Espero que seja útil ao pessoal. 

  • Acho que você tentou usar com menos de 3 monstros para algum rank, não foi? Altere a linha: local name = monsters[number][math.random(1, #monsters)] Para: local name = monsters[number][math

  • caralho, tu é muito cabeçudo de nerd.

Posted Images

Postado

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Mostrar conteúdo oculto

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

  • 7 months later...
Postado

Dwarfer o sistema está incrível. Mas estou recebendo o seguinte erro quando o monstro surge:

 [Error - Action Interface]
[15:49:04.826] In a timer event called from:
[15:49:04.829] function onUse(cid, item, fromPosition, itemEx, toPosition)

[15:49:04.832] domodlib('Job_func')
[15:49:04.834] local n = getNamesByItemDesc(item)

[15:49:04.836] if n[1] ~= nil and n[1] ~= getPlayerName(cid) then
[15:49:04.838]     return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You can not work now here. "..n[1].." is working or was working recently.")
[15:49:04.845] end

[15:49:04.847] local info = getSysPos(cid, toPosition)
[15:49:04.849] local center = info.c
[15:49:04.851] local monster_pos = info.m
[15:49:04.853] local order_pos = info.o
[15:49:04.855] local p = getPlayerPosition(cid)
[15:49:04.856] local rank = tonumber(item.actionid - 4420)
[15:49:04.858] local text = "{"..getPlayerName(cid).."} is working here."


[15:49:04.861] if getPlayerStorageValue(cid, stor.rank) < rank then
[15:49:04.865]     return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your rank is not enough to work here. Join or promote.")
[15:49:04.872] end

[15:49:04.874] if getPlayerStorageValue(cid, stor.main_tab) ~= -1 then
[15:49:04.877]     setPlayerStorageValue(cid, stor.lever, times.lever*60 + os.time())
[15:49:04.880]     if isPlayer(cid) then
[15:49:04.882]         stopEvent(event[cid])
[15:49:04.883]         table.remove(event,cid)
[15:49:04.885]     end
[15:49:04.886]     addEvent(function()
[15:49:04.888]     if isPlayer(cid) then
[15:49:04.890]     doItemSetAttribute(getThingFromPos(toPosition).uid, "description", "")
[15:49:04.892]     end
[15:49:04.893]     end,(times.deal+2)*1000)
[15:49:04.895]     setPlayerStorageValue(cid, stor.main_tab, -1)
[15:49:04.898]     setPlayerStorageValue(cid, stor.scroll, -1)
[15:49:04.900]     setPlayerStorageValue(cid, stor.comp_tab, -1)
[15:49:04.902]     local newpos = info.c
[15:49:04.904]     doTeleportThing(cid, newpos)
[15:49:04.907]     doSendMagicEffect(newpos, CONST_ME_TELEPORT)
[15:49:04.909]     doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
[15:49:04.912]     return true
[15:49:04.913] end

[15:49:04.915] if getPlayerStorageValue(cid, stor.lever) - os.time() > 0 then
[15:49:04.919]     return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need to wait "..(getPlayerStorageValue(cid, stor.lever)-os.time()).." seconds to work again.")
[15:49:04.925] end

[15:49:04.927] for i, v in pairs (getStockItens(cid, toPosition)) do
[15:49:04.931]     addItemTable(cid, {v, 0}, stor.main_tab)
[15:49:04.934] end

[15:49:04.936] for k, j in pairs(getStockItens(cid, toPosition)) do
[15:49:04.939]     addItemTable(cid, {j, 0}, stor.comp_tab)
[15:49:04.942] end

[15:49:04.943] doCleanTile(center)
[15:49:04.944] doCleanTile(order_pos)
[15:49:04.946] doItemSetAttribute(item.uid, "description", text)
[15:49:04.948] setPlayerStorageValue(cid, stor.lever, times.lever*60 + os.time())
[15:49:04.951] doTeleportThing(cid, center)
[15:49:04.953] doSendMagicEffect(center, CONST_ME_TELEPORT)
[15:49:04.955] doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
[15:49:04.957] addEvent(doActions, 2000, cid, p, center, monster_pos, order_pos, rank)

[15:49:04.960] end:onUse
[15:49:04.961] Description:
[15:49:04.962] data/lib/050-function.lua:241: attempt to index a boolean value
[15:49:04.965] stack traceback:
[15:49:04.966]  data/lib/050-function.lua:241: in function 'getItemNameById'
[15:49:04.972]  [string "event = {}..."]:102: in function 'createOrder'
[15:49:04.974]  [string "event = {}..."]:21: in function <[string "event = {}..."]:15>

Poderia me ajudar? Desde-já agradeço :) 

547657261_assinaturatibiaking.jpg.c1cc2728d9b7e7142cd10bf237f3370d.jpg

'' Uma ideia é apenas uma ideia, até ser desenvolvida, mastigada, retratada, analisada e por fim se tornar uma boa ideia. ''

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo