[Pedido] NPC CITY GUARD!

Plfmoura
em Scripts

Plfmoura

Suave ~~~~
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 03/04/09Posts: 149Char no Tibia: Hiporion

Eae galera do Ilustre XTIBIA!

 

Queria pedir um NPC GUARD

diferente de todos os outros,

que este npc pudesse atacar

além de jogadores fora da lei

mas também qualquer criatura

maligna que sejá lurada até os

portões da cidade e que também

o jogador PK tivesse a oportunidade

de atacá-lo para se defender.

 

Pensamento:

 

Queria por-lo no meu Servidor Derivado para precaver que dragões lurados não entrem nas cidades e que os jogadores fora da lei (ph34r.png PK's) possam ter uma oportunidade de se defender ao invés de morrer instantaneamente sem poder atacar o guard worriedsmiley.gif

 

Si não for possível; tem como fazer um monster que ataque só PKS e outras Criaturas?

 

Dou REP + mdr.gif

Sente o Naipe mermao.

 

 

2554.png

Slicer

Insanity
avatar
Príncipe
Príncipe

INFOS

Grupo: PríncipeRegistrado: 19/08/10Posts: 4014Gênero: Masculino

movido

"Só a beira do abismo que os seres humanos acham forças para mudar."... E isso me da nojo... ¬¬

"Insanity is doing the exact... same fucking thing... over and over again expecting... shit to change... That. Is. Crazy." -Vass/Einstein

 

Plfmoura

Suave ~~~~
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 03/04/09Posts: 149Char no Tibia: Hiporion

Obrigado, não tinha visto a Pedidos e Duvidas, peço desculpas! worriedsmiley.gif

Sente o Naipe mermao.

 

 

2554.png

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Faça assim, vá em data/npc, crie um arquivo chamado defender.xml, abra-o e adicione isso dentro;

 

 

 

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

<npc name="Guard City" script="data/npc/scripts/defender.lua" walkinterval="2000" floorchange="0">

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

<look type="130" head="114" body="114" legs="114" feet="114" addons="3"/>

<parameters>

<parameter key="message_greet" value="Hello |PLAYERNAME|. I'm defender of the city. I'm busy, don't waste my time!"/>

<parameter key="message_walkaway" value="Good bye."/>

<parameter key="HitInterval" value="1000" />

<parameter key="ShootEffect" value="31" /> <!-- CONST_ANI_SUDDENDEATH -->

<parameter key="HitEffect" value="17" /> <!-- CONST_ME_MORTAREAR -->

<parameter key="TypeDmg" value="1024" /> <!-- COMBAT_HOLYDAMAGE -->

<parameter key="minDamage" value="150" />

<parameter key="maxDamage" value="700" />

<parameter key="sayText" value="Exori Vis" />

<parameter key="multiAttack" value="1" />

<parameter key="hitSkulledPlayer" value="1" />

<parameter key="minHeal" value="50" />

<parameter key="maxHeal" value="150" />

<parameter key="dmgRadiusX" value="7" />

<parameter key="dmgRadiusY" value="5" />

<parameter key="healRadiusX" value="3" />

<parameter key="healRadiusY" value="3" />

</parameters>

</npc>

 

 

 

Agora em data/npc/scripts, crie um arquivo chamado defender.lua e adicione isso dentro:

 

 

 

NpcSystem.parseParameters(npcHandler)

 

local guard = defender:new()

 

guard:setHitInterval(getNpcParameter("HitInterval"))

guard:setShootEffect(getNpcParameter("ShootEffect"))

guard:setHitEffect(getNpcParameter("HitEffect"))

guard:setTypeDmg(getNpcParameter("TypeDmg"))

guard:setDamage(getNpcParameter("minDamage"),getNpcParameter("maxDamage"))

guard:setSayText(getNpcParameter("sayText"))

guard:setHeal(getNpcParameter("minHeal"),getNpcParameter("maxHeal"))

guard:setHitSkulledPlayer(getNpcParameter("hitSkulledPlayer"))

guard:setMultiAttack(getNpcParameter("multiAttack"))

guard:setDmgRadius(getNpcParameter("dmgRadiusX"),getNpcParameter("dmgRadiusY"))

guard:setHealRadius(getNpcParameter("healRadiusX"),getNpcParameter("healRadiusY"))

 

function onThink()

guard:onThink(getNpcCid())

npcHandler:onThink()

end

 

function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end

 

npcHandler:addModule(FocusModule:new())

 

 

 

EE em /data/npc/lib/npc.lua adicione na primeira linha :

 

dofile('data/npc/lib/creature.lua')

 

 

OBS : QUANDO MATA MONSTRO NÃO DA LOOT!

Agora na mesmas pasta, crie um arquivo chamado creature.lua, adicione isso dentro:

 

 

 

-- @ Mehah and Gesior

 

function OTSYS_TIME()

return os.clock()*1000

end

 

defender = {

cid = 0,

targetList = {},

targetTime = OTSYS_TIME(),

hitInterval = 1000,

shootEffect = CONST_ANI_THROWINGSTAR,

hitEffect = CONST_ME_HITAREA,

typeDmg = COMBAT_PHYSICALDAMAGE,

minDmg = 300, maxDmg = 1200,

sayText = "",

minHeal = 1, maxHeal = 10,

hitSkulledPlayer = 1,

multiAttack = 1,

dmgRadiusX = 7,

dmgRadiusY = 5,

healRadiusX = 3,

healRadiusY = 3,

}

 

function defender:new()

local obj = {}

setmetatable(obj, self)

self.__index = self

return obj

end

 

function defender:onThink(_cid)

if self.cid == 0 then

self.cid = _cid

return

end

 

local _time = OTSYS_TIME()

if (_time - self.targetTime) > self.hitInterval then

self.targetTime = _time

local position = getCreaturePosition(self.cid)

local creature = {}

local pos = {x = 0, y = 0, z = 0, stackpos = 0}

if self.minDmg > 0 and self.maxDmg > 0 then

self:clearTargetList()

for x = -self.dmgRadiusX, self.dmgRadiusX do

for y = -self.dmgRadiusY, self.dmgRadiusY do

if not (x == 0 and y == 0) then

pos = {x = position.x+x, y = position.y+y, z = position.z, stackpos = STACKPOS_TOP_CREATURE}

creature = getTopCreature(pos)

if (creature.type == 2) or (creature.type == 1 and self.hitSkulledPlayer == 1 and getPlayerSkullType(creature.uid) > 0) then

if self.multiAttack ~= 1 and #self.targetList > 0 then

break

end

self:addTarget(creature.uid)

self:doSendDamage(creature.uid)

end

end

end

end

if #self.targetList > 0 then

if self.sayText ~= "" then

doCreatureSay(self.cid, self.sayText, TALKTYPE_ORANGE_1)

end

end

end

 

if self.minHeal > 0 and self.maxHeal > 0 then

self:clearTargetList()

for x = -self.healRadiusX, self.healRadiusX do

for y = -self.healRadiusY, self.healRadiusY do

if not (x == 0 and y == 0) then

pos = {x = position.x+x, y = position.y+y, z = position.z, stackpos = STACKPOS_TOP_CREATURE}

creature = getTopCreature(pos)

if (creature.type == 1) then

self:doHeal(creature.uid)

end

end

end

end

end

end

end

 

function defender:doSendDamage(target)

if isCreature(target) == TRUE then

local hitDmg = math.random(self.minDmg, self.maxDmg)

if getCreatureHealth(target) <= hitDmg then

doSetCreatureDropLoot(target, 0)

end

doSendDistanceShoot(getCreaturePosition(self.cid), getCreaturePosition(target), self.shootEffect)

doTargetCombatHealth(self.cid, target, self.typeDmg, -hitDmg, -hitDmg, self.hitEffect)

end

end

 

function defender:doHeal(target)

doTargetCombatHealth(self.cid, target, COMBAT_HEALING, self.maxHeal, self.minHeal, CONST_ME_MAGIC_BLUE)

end

 

 

function defender:addTarget(_target)

table.insert(self.targetList,_target)

end

 

function defender:clearTargetList()

self.targetList = {}

end

 

function defender:setHitInterval(hitInterval)

self.hitInterval = tonumber(hitInterval)

end

 

function defender:setShootEffect(shootEffect)

self.shootEffect = shootEffect

end

 

function defender:setHitEffect(hitEffect)

self.hitEffect = hitEffect

end

 

function defender:setTypeDmg(typeDmg)

self.typeDmg = typeDmg

end

 

function defender:setSayText(sayText)

self.sayText = tostring(sayText)

end

 

function defender:setDamage(minDmg,maxDmg)

self.minDmg = tonumber(minDmg)

self.maxDmg = tonumber(maxDmg)

end

 

function defender:setHeal(minHeal,maxHeal)

self.minHeal = tonumber(minHeal)

self.maxHeal = tonumber(maxHeal)

end

 

function defender:setHitSkulledPlayer(hitSkulledPlayer)

self.hitSkulledPlayer = tonumber(hitSkulledPlayer)

end

 

function defender:setMultiAttack(multiAttack)

self.multiAttack = tonumber(multiAttack)

end

 

function defender:setDmgRadius(dmgRadiusX,dmgRadiusY)

self.dmgRadiusX = tonumber(dmgRadiusX)

self.dmgRadiusY = tonumber(dmgRadiusY)

end

 

function defender:setHealRadius(healRadiusX,healRadiusY)

self.healRadiusX = tonumber(healRadiusX)

self.healRadiusY = tonumber(healRadiusY)

end

 

 


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

Plfmoura

Suave ~~~~
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 03/04/09Posts: 149Char no Tibia: Hiporion

Tu denovo kkk' he.gif

Vlw aê mas agora to sem REP

amanhã eu ti dou pode ser? worriedsmiley.gif

Sente o Naipe mermao.

 

 

2554.png

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Não precisa de rep, estou respondendo sua dúvida por vontade rsrs! Dúvida sanada?


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

Plfmoura

Suave ~~~~
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 03/04/09Posts: 149Char no Tibia: Hiporion

Sim sim! Obrigado mdr.gif

mas ainda to ti devendo! ph34r.png

Sente o Naipe mermao.

 

 

2554.png

uriel70

Uriel Moretti
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/11/10Posts: 23Char no Tibia: Calango Pally

Deu esse seguinte erro aqui \/

 

 

[22/02/2013 04:11:54] [Error - Npc interface]

[22/02/2013 04:11:54] data/npc/scripts/defender.lua

[22/02/2013 04:11:54] Description:

[22/02/2013 04:11:54] data/npc/lib/npcsystem/npcsystem.lua:68: attempt to index local 'npcHandler' (a nil value)

[22/02/2013 04:11:54] [Warning - NpcScript::NpcScript] Cannot load script: data/npc/scripts/defender.lua

 

 

[22/02/2013 04:22:00] [Error - Npc interface]

[22/02/2013 04:22:00] data/npc/scripts/defender.lua

[22/02/2013 04:22:00] Description:

[22/02/2013 04:22:00] data/npc/scripts/defender.lua:1: attempt to index global 'NpcSystem' (a nil value)

[22/02/2013 04:22:00] [Warning - NpcScript::NpcScript] Cannot load script: data/npc/scripts/defender.lua

 

Me ajuda ae, aguardando á resposta... pfv wacko.png

Naruto AST Online em Construçao



 

tek4e7584156eb0e2098810.png

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Seu NPC System é diferente, só trocando para arrumar :S

Faça assim, pegue essa pasta compactada que está logo abaixo \/, extraia ela para data/npc. Seria assim para arrumar, mas no caso bugaria todos seus NPCS. Pois eles são de outro System ;s

vc é quem sabe...

http://www.4shared.com/rar/gOdLVSQz/lib.html


Atenciosamente,
Eduardo Nunes - Scripter Lua!