Buff Npc

noobinhu
em NPCs, monsters e raids

noobinhu

Ex Administrador
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 01/03/06Posts: 1022Gênero: Masculino

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.

Darth Sidious

Em chamas...
avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 31/07/07Posts: 533Char no Tibia: Kninght'Danilo

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...


Xtibia 2006 ~ 2009!
Eu não to mais aguentando e a vida tá passando...





Quots :
QUOTE
17:24 Ulryx Shadowseeker [13]: eu acessava site pedofilo ~ Leo94
17:26 Next Shadowseeker [7]: SELL THAIS SWORD ~ Christian
'      Léo 1OO     diz:
ngm come minha xaninha
'      Léo 1OO     diz:
se nao tive
'      Léo 1OO     diz:
eu do meu cu

Fliper

~[ Let's Leach Life]~
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 20/04/07Posts: 66

Cara otímo ^^

Parabens vocÊ e um genio '-'

vou colocar no meu ot :D

flws =]

Entre no chat você tambem :]




Clique no meu bixo vermelho :D =3

bachieguinha

avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 06/01/07Posts: 603

HAHA :D

Show de bola :p

Mais um ótimo trabalho, parabéns



Drilling

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 01/12/08Posts: 19

Até que eu gostei do seu NPC. :positive:

Você já visitou o tópico de regras do XTibia?
Ainda não? visite já clicando aqui!


Você terminou seu projeto, e quer nos mostrar?
Não espere mais tempo, clique aqui e nos mostre!


Trabalhando para um fórum melhor.
Quem sabe um dia ser recopensado!


BillyBola

Ex-Imprensa XTibia
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 08/06/08Posts: 676Char no Tibia: Kimera De Pegasus

Caramba, cara serio mesmo eu to colocando todos os seus scripts no favorito por que quando eu fizer um ot vo colocar,muito show!

Ththt

?
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 26/07/07Posts: 540Char no Tibia: Keni Daro

Nossa! Muito bom seus scripts!

Continue assim ^^

 

@BillyBola

Server?

Me passa o ip dpois por PM? =P

Olá XTibiano:

Sua assinatura estava com um problema na TAG SPOILER e foi movida para a parte "Sobre mim".
Agradecemos a sua compreensão.

Atenciosamente,
JV Chequer

jottage

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 10/05/06Posts: 109

Currtii

 

 

Vlws aeew :D

~ ' ~ ' ~ .

quem sabe eu volto :b.

lucas-_abc

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 25/05/06Posts: 6

cara, aqui no meu ot , o ml nao ta almentando ta bugado , qq pode ser ?

 

abraço . agradeço desde ja

yasha

Maximus Down~
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 25/12/07Posts: 144Char no Tibia: Maximus Down

Ótimo NPC....

Só estou com uma dúvida...

Como adiciona ele no mapa editor????

E-mail/msn: mauricio__ramos@hotmail.com

Entrada como estagiário

 

02/04/2012

texz

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 04/10/08Posts: 53Char no Tibia: sir basi

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

yasha

Maximus Down~
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 25/12/07Posts: 144Char no Tibia: Maximus Down

Fico muito roxx....

Parabéns...

E-mail/msn: mauricio__ramos@hotmail.com

Entrada como estagiário

 

02/04/2012

Mesenga

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 19/10/05Posts: 145Char no Tibia: Zigfried Werewolf

Noobinhu sempre inovando! parabéns velho!!

ESTOU "APOSENTADO DO XTIBIA" DESDE 2010. Atualmente faço Ciências da Computação na UFPE.

Agradeço à tudo e à todos, ótima comunidade.

Totalmente Reformulado - Colocando seu ot SQL online + site

dotaap7.png
herosaleatorios1ko7.gif

Vi Vanderlaysk

Vinnie Simon
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 07/10/06Posts: 108Char no Tibia: Vi Vanderlaysk

Muito massa!

 

Mas e se o cara fika comprando isso o tmepo todo e o skill dele aumenta pra 1000 por exemplo ?

oq acontece ? ;P

 

Ajuda ae xD

 

Abraço !


Anges et Demóns Project ATS


Quer saber um pouco sobre Serviço?
"Meu filho, se entrares para o serviço de Deus,
permanece firme na justiça e no temor,
e prepara a tua alma para a provação;
humilha teu coração, espera com paciencia,
dá ouvidos e acolhe as palavras de sabedoria;
nao te perturbes no tempo da infelicidade,
sofre as demoras de Deus;
dedica-te a Deus, espera com paciência,
a fim de que no derradeiro momento tua vida se enriqueça.
Aceita tudo o que te acontecer.
Na dor, permanece firme,
na humilhação, tem paciência.
Pois é pelo fogo que se experimentam o ouro e a prata,
e os homens agradáveis a Deus, pelo cadinho da humilhação.
Põe tua confiança em Deus e Ele te salvará,
orienta bem o teu carinho e espera n'Ele.
Conserva o temor d'Ele até na velhice." Eclo 2;1-6



noobinhu

Ex Administrador
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 01/03/06Posts: 1022Gênero: Masculino

Não, caso ele compre novamente antes de acabar a última, ele não ganha nada, só renova o tempo.