God Mythera
Veteran OT User
Hello and im trying to fix this npc, i want to add it to my server incase players get bored and it might be something cool to have.
data/npc/reseter.XML:
data/npc/scripts/reseter.lua:
To configure this part of the npc:
data/npc/reseter.XML:
Code:
<?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:
Code:
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 = 80, --- Level to reset
price = 1000000, --- Start price for reset
newlevel = 8, --- Level after reset
priceByReset = 1500000, --- Added price for reset
percent = 15, ---- Percentage of life / mana you will have to reset (in relation to its former full life)
maxresets = 2, ---- Maximum of resets
levelbyreset = 100 --- As the level will need more in the next 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())
To configure this part of the npc:
Code:
config = {
minlevel = 80, --- Level to reset
price = 1000000, --- Start price for reset
newlevel = 8, --- Level after reset
priceByReset = 1500000, --- Added price for reset
percent = 15, ---- Percentage of life / mana you will have to reset (in relation to its former full life)
maxresets = 2, ---- Maximum of resets
levelbyreset = 100 --- As the level will need more in the next reset