NO

Buff Npc

Por noobinhu, 02 de dez. de 2008 em NPCs, monsters e raids

script
16
3.9k
noobinhuN
02 de dezembro de 2008 às 11:19

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 Dezembro 2 por noobinhu

Darth SidiousD
02 de dezembro de 2008 às 11:21

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

FliperF
02 de dezembro de 2008 às 11:34

Cara otímo ^^

Parabens vocÊ e um genio '-'

vou colocar no meu ot :D

flws =]

02 de dezembro de 2008 às 16:10

HAHA :D

Show de bola :p

Mais um ótimo trabalho, parabéns

DrillingD
02 de dezembro de 2008 às 16:13

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

BillyBolaB
02 de dezembro de 2008 às 20:33

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

ThthtT
02 de dezembro de 2008 às 22:00

Nossa! Muito bom seus scripts!

Continue assim ^^

 

@BillyBola

Server?

Me passa o ip dpois por PM? =P

jottageJ
06 de dezembro de 2008 às 21:46

Currtii

 

 

Vlws aeew :D

Editado Dezembro 6 por jottage

lucas-_abcL
10 de dezembro de 2008 às 01:17

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

 

abraço . agradeço desde ja

yashaY
10 de dezembro de 2008 às 09:58

Ótimo NPC....

Só estou com uma dúvida...

Como adiciona ele no mapa editor????

texzT
10 de dezembro de 2008 às 10:55

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

2 semanas depois...
yashaY
18 de dezembro de 2008 às 09:30

Fico muito roxx....

Parabéns...

MesengaM
18 de dezembro de 2008 às 15:37

Noobinhu sempre inovando! parabéns velho!!

Vi VanderlayskV
22 de dezembro de 2008 às 10:37

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 !

noobinhuN
22 de dezembro de 2008 às 11:31

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