Chose 0 Postado Setembro 23, 2008 Share Postado Setembro 23, 2008 Tava sem nada para fazer e inspirado no WoW resolvi fazer um NPC que ataca membros da facção (guilda) rival. Ou seja, irá atacar sempre membros que não são da guilda que você escolher. Funciona para as versões mais novas da SVN, tanto 8.1 quanto 8.2. --------------------------------------------------------------------------------------------------------------------------------------------- Guild Guardian 0.1 (por Chose) ------------------------------------------------------------------------------------------------------------------------------------------- -- Configuração -- Digite o nome da guilda que o guarda irá proteger local guildName = "Exodar Masters" ------------------------------------------------------------------------------------------------------------------------------------------- local target = 0 local prevTarget = 0 local maxChaseDistance = 20 local origPos = {} local lastAttack = 0 local followTimeout = 10 function goToOrigPos() target = 0 lastAttack = 0 selfFollow(0) doTeleportThing(getNpcCid(), origPos) end function updateTarget() if (isPlayer(target) == FALSE) then goToOrigPos() elseif (getPlayerGuildName(target) == guildName) then selfSay("Welcome sir.") end if (target == 0) then local list = getSpectators(getNpcPos(), 8, 8, false) for i = 1, #list do local _target = list[i] if (_target ~= 0) then if ((isPlayer(_target) == TRUE) and (getPlayerGuildName(_target) ~= guildName)) then if (selfFollow(_target)) then target = _target if (target ~= prevTarget) then selfSay("We do not like people like you! Get out!") end prevTarget = target break end end end end end end function onCreatureAppear(cid) if (cid == getNpcCid()) then origPos = getCreaturePosition(cid) end end function onCreatureDisappear(cid) if (target == cid) then goToOrigPos() end end function onCreatureMove(creature, oldPos, newPos) -- end function onThink() updateTarget() if (target == 0) then return end local playerPos = getCreaturePosition(target) local myPos = getNpcPos() if (myPos.z ~= playerPos.z) then goToOrigPos() return end if ((math.abs(myPos.x - origPos.x) > maxChaseDistance) or (math.abs(myPos.y - origPos.y) > maxChaseDistance)) then selfSay("I'll catch you next time.") goToOrigPos() return end if (lastAttack == 0) then lastAttack = os.clock() end if (os.clock() - lastAttack > followTimeout) then selfSay("You got me this time, but just wait.") goToOrigPos() return end if ((math.abs(playerPos.x - myPos.x) <= 1) and (math.abs(playerPos.y - myPos.y) <= 1)) then doTargetCombatHealth(getNpcCid(), target, COMBAT_LIFEDRAIN, -300, -400, CONST_ME_BLOCKHIT) lastAttack = os.clock() end end Se quiser absolver guildas aliadas (inspiração do Ragnarok), podemos fazer assim: Coloque a seguinte função: function isInArrayEx(arr, arg) local x, y for x, y in pairs(arr) do if (y == arg) then return true, x end end return false end Uma matriz no começo do código (remova a variável guildName) local guildsAndAllys = {"Exodar", "Stormwind", "Ogrinmar"} E troque: elseif (getPlayerGuildName(target) == guildName) then por: elseif (isInArrayEx(guildsAndAllys, getPlayerGuildName(target))) then troque também: if ((isPlayer(_target) == TRUE) and (getPlayerGuildName(_target) ~= guildName)) then por: if ((isPlayer(_target) == TRUE) and (isInArrayEx(guildsAndAllys, getPlayerGuildName(target)) == false)) then Com esse pequeno path você poderá selecionar as guildas que não serão atacadas pelo guarda. Bom, por hoje é só pessoal. Link para o comentário Compartilhar em outros sites More sharing options...
noobinhu 38 Postado Setembro 23, 2008 Share Postado Setembro 23, 2008 Esta action só funciona em TFS, se não me engano. Sempre indique isto ou se é para XML/SQL, pelo menos. Muito boa a action Link para o comentário Compartilhar em outros sites More sharing options...
inforce 0 Postado Setembro 23, 2008 Share Postado Setembro 23, 2008 o_O que comand estranho askpaskaskpaskpaskp nada ave mesmo sem nada pra faze mesmo em quando n tenhu nada pra faze fiko postando qlqr coisa no forum Link para o comentário Compartilhar em outros sites More sharing options...
Chose 0 Postado Setembro 24, 2008 Autor Share Postado Setembro 24, 2008 (editado) @noobinhu Negativo, funciona em qualquer servidor que se baseia na SVN. E hoje teoricamente não existe servidores em XML, logo, é compatível com SQL, SQLite e os demais bancos de dados que a SVN suporta atualmente. Editado Setembro 24, 2008 por Chose Link para o comentário Compartilhar em outros sites More sharing options...
wellison 0 Postado Abril 4, 2010 Share Postado Abril 4, 2010 @noobinhu Negativo, funciona em qualquer servidor que se baseia na SVN. E hoje teoricamente não existe servidores em XML, logo, é compatível com SQL, SQLite e os demais bancos de dados que a SVN suporta atualmente. Isso mesmo nao tem disso mais apoiado cara você esta atualizado no mundo tibia ^>^ Link para o comentário Compartilhar em outros sites More sharing options...
DXtibiaXD 1 Postado Abril 23, 2010 Share Postado Abril 23, 2010 caboulouso npc killer uhAUHUSHuhah Link para o comentário Compartilhar em outros sites More sharing options...
XJhoow 27 Postado Maio 26, 2010 Share Postado Maio 26, 2010 Muito loco! Link para o comentário Compartilhar em outros sites More sharing options...
TheGODMaX 24 Postado Junho 8, 2010 Share Postado Junho 8, 2010 Achei bem legal a idéia desse npcs nunca tinha visto algo igual por aki... Fazendo umas modificações nele da pra faze umas coisas rox flws Link para o comentário Compartilhar em outros sites More sharing options...
Piabeta Kun 359 Postado Agosto 1, 2010 Share Postado Agosto 1, 2010 qro muito esse npc, eu tenhu algo em mente a seculos, sendo q nao sei como por em pratica o seu sistema poderia dar um help?:???? Link para o comentário Compartilhar em outros sites More sharing options...
Malerow 0 Postado Janeiro 4, 2011 Share Postado Janeiro 4, 2011 Aee, será que voc poderia editar tipo assim, o lider da guild chega para os npce fala hi e talz e atravez da fala ele diz quem é guilda alida. oque acha ??? seria mais legal do que voce ter que editar pelo lua. Muito Bom esse npc, parabens Link para o comentário Compartilhar em outros sites More sharing options...
VitorCtaylor 6 Postado Janeiro 26, 2011 Share Postado Janeiro 26, 2011 Que crueldade com os players sem guild ;/ Mas ficou muito bom. Belo script + belas falas em inglês. Recomendo para por no seu Ot (y) Link para o comentário Compartilhar em outros sites More sharing options...
GODMETAL 0 Postado Outubro 21, 2011 Share Postado Outubro 21, 2011 Cara, os Players Podem bater nesse NPC? Link para o comentário Compartilhar em outros sites More sharing options...
Vinc 101 Postado Novembro 7, 2011 Share Postado Novembro 7, 2011 (editado) cara ta muito confuso onde coloca isso data/npc/script data/creaturescripts/script data/actions/script explica melhor n fala nem qual pasta é pra por nem como modifca o dano, os attacks ¬¬ ---edit--- olhei o perfil do cara(o chose), ele n entra mais deis de novenbro de 2008 a n ser que troco de conta Editado Novembro 7, 2011 por lordbug99 Link para o comentário Compartilhar em outros sites More sharing options...
markindoot 46 Postado Agosto 10, 2013 Share Postado Agosto 10, 2013 Revivendo e se eu quisesse um npc que atacasse certas vocations? por exemplo quero um npc que só ataque a vocation 1 e outro npc que só ataque as vocations 2 e 3 Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados