Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Npc para o sistema de reset:

http://www.tibiaking.com/forum/topic/65646-sistema-de-resete/#comment-374457

 

 

data/npc/reseter.XML:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Reseter" script="reseter.lua">
    <health now="1000" max="1000"/>
    <look type="133" head="95" body="86" legs="86" feet="38" addons="3"/>
        <parameters>
            <parameter key="message_greet" value="Hello |PLAYERNAME|.I've been waiting for you to come.. Say 'reset' or 'quantity'" />
            <parameter key="message_farewell" value="Cya folk." />
            <parameter key="message_walkaway" value="How Rude!" />
        </parameters>
</npc> 

 

data/npc/scripts/reseter.lua:

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)


function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink()                  npcHandler:onThink()                  end


function creatureSayCallback(cid, type, msg)


if not npcHandler:isFocused(cid) then
return false
end


local player = Player(cid)
config = {


minlevel = 150, --- Level inical para resetar
price = 10000, --- Preço inicial para resetar
newlevel = 20, --- Level após reset
priceByReset = 0, --- Preço acrescentado por reset
percent = 10, ---- Porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total)
maxresets = 50, ---- Maximo de resets
levelbyreset = 0 --- Quanto de level vai precisar a mais no próximo reset 


}


function addReset(cid)
player = Player(cid)
resets = getResets(cid)
hp = player:getMaxHealth()
resethp = hp*(config.percent/100)
player:setMaxHealth(resethp)
mana = player:getMaxMana()
resetmana = mana*(config.percent/100)
player:setMaxMana(resetmana)
playerid = player:getGuid()
    player:remove() 
db.query("UPDATE `players` SET `resets`="..resets.. + 1",`experience`= 0 WHERE `players`.`id`= ".. playerid .."")
db.query("UPDATE `players` SET `level`="..config.newlevel..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."")
    return true
end 


local newPrice = config.price + (getResets(cid) * config.priceByReset)
local newminlevel = config.minlevel + (getResets(cid) * config.levelbyreset)


if msgcontains(msg, 'reset') then
if getResets(cid) < config.maxresets then
npcHandler:say('You want to reset your character? It will cost '..newPrice..' gp\'s!', cid)
npcHandler.topic[cid] = 1
else
npcHandler:say('You already reached the maximum reset level!', cid)
end
elseif msgcontains(msg, 'yes') and npcHandler.topic[cid] == 1 then
if player:getLevel() > newminlevel then
if player:removeMoney(newPrice) then
addEvent(function()
if isPlayer(cid) then
addReset(cid)
end
end, 3000)
local number = getResets(cid)+1
local msg ="---[Reset: "..number.."]-- You have reseted!  You'll be disconnected in 3 seconds."
player:popupFYI(msg) 
npcHandler.topic[cid] = 0
npcHandler:releaseFocus(cid)
else
npcHandler:say('Its necessary to have at least '..newPrice..' gp\'s for reseting!', cid)
npcHandler.topic[cid] = 0
end
else
npcHandler:say('The minimum level for reseting is '..newminlevel..'!', cid)
npcHandler.topic[cid] = 0
end
elseif(msgcontains(msg, 'no')) and isInArray({1}, talkState[talkUser]) == TRUE then
npcHandler.topic[cid] = 0
npcHandler:releaseFocus(cid)
npcHandler:say('Ok.', cid)
elseif msgcontains(msg, 'quantity') then
npcHandler:say('You have a total of '..getResets(cid)..' reset(s).', cid)
npcHandler.topic[cid] = 0
end
return true
end


npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new()) 

 

Para configurar mexa nessa parte do npc:

config = {


minlevel = 150, --- Level inical para resetar
price = 10000, --- Preço inicial para resetar
newlevel = 20, --- Level após reset
priceByReset = 0, --- Preço acrescentado por reset
percent = 10, ---- Porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total)
maxresets = 50, ---- Maximo de resets
levelbyreset = 0 --- Quanto de level vai precisar a mais no próximo reset 


}

Créditos: Flavio S

Editado por Azhaurn (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

51mutNo.png 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.

discord.pngDiscord: vankk #7765

Precisando de ajuda? Entre em contato comigo via Discord.

 

Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.

Link para o post
Compartilhar em outros sites

Olá boa tarde excelente sistema de reset vou testar.

Gostaria se possivel me ajudar a alterar a parte de porcentagem de mana/vida por reset
vamos supor que o player volta para o level 8 com a vida e mana de level 8, mas a cada reset acrecenta
vamos supor 100 de mana e 100 de vida por reset.

 

 

 

Link para o post
Compartilhar em outros sites

 

@neyko

config = {


minlevel = 150, --- Level inical para resetar
price = 10000, --- Preço inicial para resetar
newlevel = 20, --- Level após reset
priceByReset = 0, --- Preço acrescentado por reset
bonus = 100, ---- Bonus de vida e mana por reset
maxresets = 50, ---- Maximo de resets
levelbyreset = 0 --- Quanto de level vai precisar a mais no próximo reset 


}


function addReset(cid)
player = Player(cid)
resets = getResets(cid)
resethp = bonus * (resets + 1)
player:setMaxHealth(resethp)
resetmana = bonus * (resets + 1)
player:setMaxMana(resetmana)
playerid = player:getGuid()
    player:remove() 
db.query("UPDATE `players` SET `resets`="..resets.. + 1",`experience`= 0 WHERE `players`.`id`= ".. playerid .."")
db.query("UPDATE `players` SET `level`="..config.newlevel..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."")
    return true
end 

 

 

@mkmmkm

 

Tem alguns sistemas, o link no inicio do tópico é para fazer isso, mas pela modificação na distro,

 

Editado por Kemix (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
Em 17/12/2015 09:56:27, Kemix disse:


 

 

 

@mkmmkm

 

Tem alguns sistemas, o link no inicio do tópico é para fazer isso, mas pela modificação na distro,

 

 

Nessa parte desculpa a pergunta ele vai substituir onde mostra o level por reset?
ou vai mostrar o level mais o reset?

 

 

 

Link para o post
Compartilhar em outros sites
  • 2 weeks later...
Em 17/12/2015 09:56:27, Kemix disse:


 

@neyko


Amigo o script da erro nessas 2 partes do +1 o que faço, na parte do simbolo +

resethp = bonus * (resets + 1)
player:setMaxHealth(resethp)
resetmana = bonus * (resets + 1)

 

 

 

 

 

Link para o post
Compartilhar em outros sites
  • 1 month later...

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Henrique Gaudard
      Olá pessoal, primeiramente quero dizer que acho muito complicado mecher em monsters, poís qualquer erro, é fatal!! não sei porque quando fasso algumas modficações nos monsters/npcs que é quando eu modfico algumas coisas.., não entendo, só edito os nomes tipo assim;
      name "sfdsdfds" eu ponho "dhfudshgusopofkpsdakfgjid" (obs: não é no nome do arquivo lua mais sim o nome do monster mesmo já na edição) e dá erro. Se eu meche-se nas parada lá nos código todo doido de scripting tudo bem mais eu só quero editar e quando eu vou colocá-lo no mapa acontece o seguinte:
       
      Quando ligo aparece: "[Spawn : : addMonster] Cannot find "Ninja Star"" (ele está no presente no mapa e é um script obviamente). Falo!!
       
      Sistema Operacional: Windows 10

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo