Ir para conteúdo

Posts Recomendados

Acabei de acabar, este npc bem interessante, ele pode usar em você mana shield, invisible, haste, te curar, aumentar skills melee, distance, shield e magic por um tempo e uma quantia de dinheiro.

 

Primeiro faça um arquivo chamado Buff NPC.xml em data/npc contendo:

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

<npc name="Buff NPC" script="data/npc/scripts/buff.lua" walkinterval="2000" floorchange="0">

<health now="100" max="100"/>

<look type="132" head="20" body="39" legs="45" feet="7" addons="0"/>

<parameters>

<parameter key="message_greet" value="Hello, |PLAYERNAME|. I can 'heal', 'haste', 'mana shield', invisible', upgrade your 'melee', 'magic', 'distance' and 'shield' skills."/>

</parameters>

</npc>

 

Salve, faça outra arquivo chamado buff.lua em npc/scripts contendo:

-- configs

pricetobuff = 1000

hasteseconds = 120

invisibleseconds = 120

magicshieldseconds = 120

skillsseconds = 200

skillsupgrade = {}

skillsupgrade['fist'] = 20

skillsupgrade['club'] = 20

skillsupgrade['sword'] = 20

skillsupgrade['axe'] = 20

skillsupgrade['distance'] = 20

skillsupgrade['shield'] = 20

skillsupgrade['ml'] = 10

-- end configs

 

 

-- heal combat

local combatHeal = createCombatObject()

setCombatParam(combatHeal, COMBAT_PARAM_TYPE, COMBAT_HEALING)

setCombatParam(combatHeal, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)

setCombatParam(combatHeal, COMBAT_PARAM_AGGRESSIVE, FALSE)

setCombatParam(combatHeal, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)

setCombatFormula(combatHeal, COMBAT_FORMULA_LEVELMAGIC, 99, 99, 99, 99)

 

-- haste combat

local combatHaste = createCombatObject()

setCombatParam(combatHaste, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)

setCombatParam(combatHaste, COMBAT_PARAM_AGGRESSIVE, 0)

local condition = createConditionObject(CONDITION_HASTE)

setConditionParam(condition, CONDITION_PARAM_TICKS, hasteseconds*1000)

setConditionFormula(condition, 99, 99, 99, 99)

setCombatCondition(combatHaste, condition)

 

-- invisible combat

local combatInvisible = createCombatObject()

setCombatParam(combatInvisible, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)

setCombatParam(combatInvisible, COMBAT_PARAM_AGGRESSIVE, 0)

local condition = createConditionObject(CONDITION_INVISIBLE)

setConditionParam(condition, CONDITION_PARAM_TICKS, invisibleseconds*1000)

setCombatCondition(combatInvisible, condition)

 

-- utamo combat

local combatUtamo = createCombatObject()

setCombatParam(combatUtamo, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)

setCombatParam(combatUtamo, COMBAT_PARAM_AGGRESSIVE, 0)

 

local condition = createConditionObject(CONDITION_MANASHIELD)

setConditionParam(condition, CONDITION_PARAM_TICKS, magicshieldseconds*1000)

setCombatCondition(combatUtamo, condition)

 

-- melee condition

local conditionMelee = createConditionObject(CONDITION_ATTRIBUTES)

setConditionParam(conditionMelee, CONDITION_PARAM_TICKS, skillsseconds*1000)

setConditionParam(conditionMelee, CONDITION_PARAM_SKILL_FIST, skillsupgrade['fist'])

setConditionParam(conditionMelee, CONDITION_PARAM_SKILL_CLUB, skillsupgrade['club'])

setConditionParam(conditionMelee, CONDITION_PARAM_SKILL_SWORD, skillsupgrade['sword'])

setConditionParam(conditionMelee, CONDITION_PARAM_SKILL_AXE, skillsupgrade['axe'])

 

-- distance condition

local conditionDistance = createConditionObject(CONDITION_ATTRIBUTES)

setConditionParam(conditionDistance, CONDITION_PARAM_TICKS, skillsseconds*1000)

setConditionParam(conditionDistance, CONDITION_PARAM_SKILL_DISTANCE, skillsupgrade['distance'])

 

-- shield condition

local conditionShield = createConditionObject(CONDITION_ATTRIBUTES)

setConditionParam(conditionShield, CONDITION_PARAM_TICKS, skillsseconds*1000)

setConditionParam(conditionShield, CONDITION_PARAM_SKILL_SHIELD, skillsupgrade['shield'])

 

-- ml condition

local conditionMagic = createConditionObject(CONDITION_ATTRIBUTES)

setConditionParam(conditionMagic, CONDITION_PARAM_TICKS, skillsseconds*1000)

setConditionParam(conditionMagic, CONDITION_PARAM_STAT_MAGICPOINTS, skillsupgrade['ml'])

 

 

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 buff(cid, message, keywords, parameters, node)

if(not npcHandler:isFocused(cid)) then

return false

end

if doPlayerRemoveMoney(cid, pricetobuff) == TRUE then

buff = parameters.buff

message = parameters.message

 

doCombat(cid, buff, numberToVariant(cid))

npcHandler:say(message, cid)

keywordHandler:moveUp(1)

return true

else

npcHandler:say("You need ".. pricetobuff .." gold coins to buff yourself.", cid)

end

end

 

function buffMelee(cid, message, keywords, parameters, node)

if(not npcHandler:isFocused(cid)) then

return false

end

if doPlayerRemoveMoney(cid, pricetobuff) == TRUE then

buff = parameters.buff

errors = 0

message = parameters.message

voc = getPlayerVocation(cid)

 

if buff == conditionMagic and (isKnight(cid) or isPaladin(cid)) then

npcHandler:say("Only sorcerers and druids can upgrade their magic skills.", cid)

errors = 1

end

 

if buff == conditionMelee or buff == conditionShield and (isSorcerer(cid) or isDruid(cid)) then

npcHandler:say("Only knights and paladins can upgrade their melee and shield skills.", cid)

errors = 1

end

 

if buff == conditionDistance and (isDruid(cid) or isKnight(cid) or isSorcerer(cid)) then

npcHandler:say("Only paladins can upgrade their distance skills.", cid)

errors = 1

end

 

if errors == 0 then

doTargetCombatCondition(0, cid, buff, CONST_ME_MAGIC_RED)

npcHandler:say(message, cid)

keywordHandler:moveUp(1)

return true

end

else

npcHandler:say("You need ".. pricetobuff .." gold coins to buff yourself.", cid)

end

end

 

 

 

 

local node1 = keywordHandler:addKeyword({'heal'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want to be healed?'})

node1:addChildKeyword({'yes'}, buff, {buff = combatHeal, message = 'Now you are fully restored!'})

node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Then not.'})

 

local node1 = keywordHandler:addKeyword({'haste'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want to be hasted?'})

node1:addChildKeyword({'yes'}, buff, {buff = combatHaste, message = 'Now you are fully hasted!'})

node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Then not.'})

 

local node1 = keywordHandler:addKeyword({'invisible'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want to be invisible?'})

node1:addChildKeyword({'yes'}, buff, {buff = combatInvisible, message = 'Now you are invisible!'})

node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Then not.'})

 

local node1 = keywordHandler:addKeyword({'magic shield'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want to get magic shield effect?'})

node1:addChildKeyword({'yes'}, buff, {buff = combatUtamo, message = 'Your magic shield is on!'})

node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Then not.'})

 

local node1 = keywordHandler:addKeyword({'melee'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want to upgrade your melee skills for some time?'})

node1:addChildKeyword({'yes'}, buffMelee, {buff = conditionMelee, message = 'Your skills had been upgraded!'})

node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Then not.'})

 

local node1 = keywordHandler:addKeyword({'shield'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want to upgrade your shield skills for some time?'})

node1:addChildKeyword({'yes'}, buffMelee, {buff = conditionShield, message = 'Your skills had been upgraded!'})

node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Then not.'})

 

local node1 = keywordHandler:addKeyword({'distance'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want to upgrade your distance skills for some time?'})

node1:addChildKeyword({'yes'}, buffMelee, {buff = conditionDistance, message = 'Your skills had been upgraded!'})

node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Then not.'})

 

local node1 = keywordHandler:addKeyword({'magic'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want to upgrade your magic skills for some time?'})

node1:addChildKeyword({'yes'}, buffMelee, {buff = conditionMagic, message = 'Your skills had been upgraded!'})

node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Then not.'})

 

keywordHandler:addKeyword({'offer'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = "Uhm?"})

keywordHandler:addKeyword({'help'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = "Ya?"})

 

npcHandler:addModule(FocusModule:new())

 

Seu sistema está pronto, basta configurar ali em cima em negrito como desejar, o tempo de duração em segundos, o preço e o tanto de skills que aumentará.

 

Screenshoot:

buff_npc.png

 

Bom proveito,

Yunie.

Editado por noobinhu
Link para o comentário
https://xtibia.com/forum/topic/101444-buff-npc/
Compartilhar em outros sites

Sinceramente?

 

Eu nem falo mais nada, quando pensava que você tinha parado você continua com seus trabalhos expetaculares.

 

Sem palavras para esse npc, simplesmente demais, várias vantagens, sem mais...

Link para o comentário
https://xtibia.com/forum/topic/101444-buff-npc/#findComment-647959
Compartilhar em outros sites

Bom Npc .. (Mais..)

 

Se o player ja for promovido tem magias q nao posso compra...

 

 

Fui com meu elite em meu ot testar..

Falei melee.(Npc disse only blablabla paladins e knights ) algo assim

 

eu queria saber se foi sua ideia deixar assim ou é um bug msm,pq tem magias q com promoçao paladin da certo

 

...

Esperando

_________________________________nota 9

Link para o comentário
https://xtibia.com/forum/topic/101444-buff-npc/#findComment-652770
Compartilhar em outros sites

×
×
  • Criar Novo...