Histórico de Edições
Please note that revisions older than 15 days are pruned and will no longer show here
Não há histórico de edição para mostrar, ou este comentário foi editado por um moderador.
-
Quem Está Navegando 0 membros estão online
Nenhum usuário registrado visualizando esta página.
-
Conteúdo Similar
-
Por xWhiteWolf
Fala galera do TK, hoje vim trazer pra vocês à pedidos do grande @azzouks uma versão do meu Dodge System por equips.
Explicação: É um sistema onde vc pode colocar uma % de esquiva nos itens e ao usá-los você ganha a chance de desviar dos ataques e levar somente metade do dano.
Qualquer semelhança com esse > http://www.tibiaking.com/forum/topic/8223-mod-reflect-system-01/ < mod do @Aluccard não é mera coincidência, eu usei o mod dele como base pra fazer o meu *-*
Sem mais delongas vamos ao script:
Vá na pasta do seu server e abra uma pasta chamada "mods".. lá dentro crie um arquivo com o nome que vc quiser (sério) de extensão.xml e adicione o seguinte nele:
Configurando:
Se você não manja de script então eu sugiro que vcs só alterem essa parte aqui:
em vermelho é o máximo que uma pessoa pode ter de dodge: se ela tiver usando um full set que deixe ela com um total de 99% de dodge ela só vai poder aproveitar 50%. Isso foi feito pra evitar um bug.. vocês podem se sentir livres pra alterar esse numero mas não coloquem nada muito grande pra evitar que seus servers explodam.
em verde é a porcentagem do dano que vocês vao tomar ao desviar.. nesse caso os ataques que eu der dodge darão 50% do dano (0.5)
em azul é a porcentagem inicial que todos os players vão ter. Por padrão está 0 mas se vc quiser que todos os players do seu server tenham 20% e que cada item dê 5% também é possível editando esse 0 pra 20.
Feito isso vá em data\lib\function.lua e adicione essas linhas
function getItemDodgePercent(itemuid) return getItemAttribute(itemuid, "dodgePercent") end function doPlayerAddDodgeItem(cid, itemid, percent) local item = doPlayerAddItem(cid, itemid) doItemSetAttribute(item, "description", "[Dodge: "..percent.."%]") doItemSetAttribute(item, "dodgePercent", percent) end Agora é só aproveitar no seu server.. toda vez que vc for usar num script vc poderá utilizar as funções getItemDodgePercent(item)
e a doPlayerAddDodgeItem(cid, itemid, percent).
Pra finalizar aqui tem um exemplo de uma quest que dá uma plate armor com 0.8% de dodge:
Espero que gostem!
EDITADO:
Fiz um script de action pra ser uma pedra que vai dar dodge nos items. Ele tem muito que melhorar mas por ora ele tá 99% pronto pra ser colocado em algum server que utilize esse dodge system.
function isHandItem(uid) -- NW based on Mock uid = uid or 0 if isInArray({1,2,3,4,5,6}, getItemWeaponType(uid)) then return true end return false end function getItemDodgePercent(itemuid) return getItemAttribute(itemuid, "dodgePercent") or 0 end function setItemDodgePercent(uid, percent) doItemSetAttribute(uid, "description", "[Dodge: "..percent.."%]") doItemSetAttribute(uid, "dodgePercent", percent) end function onUse(cid, item, fromPosition, itemEx, toPosition) level = 0 local upgrade = { [1] = {min = 1, max = 5, chance = 100}, [2] = {min = 5, max = 10, chance = 80}, [3] = {min = 10, max = 20, chance = 60}, [4] = {min = 20, max = 40, chance = 40}, [5] = {min = 40, max = 50, chance = 20} } function isWearing(uid) -- NW based on Mock uid = uid or 0 if isInArray({uid}, getPlayerSlotItem(cid, 1).uid) or isInArray({uid}, getPlayerSlotItem(cid, 4).uid) or isInArray({uid}, getPlayerSlotItem(cid, 7).uid) or isInArray({uid}, getPlayerSlotItem(cid, 8).uid) then return true end return false end if isHandItem(itemEx.uid) or isWearing(itemEx.uid) then local name = getItemName(itemEx.uid) local atual = math.floor(getItemDodgePercent(itemEx.uid)*10)/10 for i = 1, #upgrade do if string.find(tostring(name),"+".. i .."") then level = i end end if level >= #upgrade then doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Your item is already on max level, you can't upgrade it any further.") return true end if math.random(0,100) <= upgrade[level + 1].chance then doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"You leveled your "..getItemNameById(itemEx.itemid).." to ".. level+1 ..".") setItemDodgePercent(itemEx.uid, atual + (math.random(upgrade[level+1].min,upgrade[level+1].max))/10) doItemSetAttribute(itemEx.uid,'name', getItemNameById(itemEx.itemid)..' +'..(level+1)) doSendMagicEffect(toPosition, math.random(28,30)) else doRemoveItem(itemEx.uid, 1) doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Your "..getItemNameById(item.itemid).." has failed and destroyed your "..getItemNameById(itemEx.itemid).." in the process") doSendMagicEffect(toPosition, 4) end else doPlayerSendTextMessage(cid, 24,"You cant refine this item.") end return true end
Note que pra colocar dodge num item ele tem que: Estar equipado se for qualquer tipo de armadura (legs, boots, helmet, armor) ou livremente (se for weapon/shield).. Necklaces, rings e pendants não são possíveis de colocar dodge.. se vc quiser que seja edita essa função dentro do script pros slots de ring e necklace mas eu não aconselharia a fazer isso.
e no xml coloque:
<action itemid="8306" script=upgraderock.lua"/> -
Por rodrigorodriguess
Galerinha, no meu OT, smp quando eu bato em algum monster aparece em cima umas letrinhas escrito "CRITICAL" queria saber como remove-las do meu server.. REP+ pra quem ajudar.
-
Por flyblade
Fatal error: Call to a member function createObject() on null in C:\xampp\htdocs\pages\wars.php on line 20
alguém sabe como resolvo esse problema ?
obg.
-
Por xWhiteWolf
Fala galera do TK, vejo que tem bastante gente procurando esse sisteminha que é praticamente igual ao dodge system, então eu decidi fazer visto que na realidade era só mudar 3 linhas kkkk em todo caso ta aí pra quem quiser:
creaturescripts.xml:
<!-- CRITICAL SYSTEM --> <event type="statschange" name="critical" event="script" value="critical.lua"/> creaturescripts\scripts\login.lua:
--- CRITICAL SYSTEM ---- registerCreatureEvent(cid, "critical") if getPlayerStorageValue(cid, 48913) == -1 then setPlayerStorageValue(cid, 48913, 0) end creaturescritps\scripts\critical.lua:
--[[Critical System ------------------------- By Night Wolf]] local lvlcrit = 48913 local multiplier = 1.5 function onStatsChange(cid, attacker, type, combat, value) if isPlayer(attacker) and (not (attacker == cid)) and (type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS) then if (getPlayerStorageValue(attacker, lvlcrit)*3) >= math.random (0,1000) then dano = math.ceil(value*(multiplier)) doTargetCombatHealth(attacker, cid, combat, -dano, -dano, 255) doSendAnimatedText(getCreaturePos(attacker), "CRITICAL!!", 144) return false end end return true end lvlcrit é o storage que fica salvo o seu level de critical e multiplier é o multiplicador do dano para ataques críticos.. nesse caso um ataque critico vai ser 1,5 vezes maior doque um ataque normal (50% maior)
Agora em actions.xml adicione:
<action itemid="1294" script="criticalrock.lua"/> e em actions\scripts\criticalrock.lua adicione:
--- CRITICAL System by Night Wolf local config = { effectonuse = 14, -- efeito que sai levelscrit = 100, --- leveis que terão storagecrit = 48913 -- storage que será verificado } function onUse(cid, item, frompos, item2, topos) if getPlayerStorageValue(cid, config.storagecrit) < config.levelscrit then doRemoveItem(item.uid, 1) doSendMagicEffect(topos,config.effectonuse) doPlayerSendTextMessage(cid,22,"You've Leveled your Critical Skill to ["..(getPlayerStorageValue(cid, config.storagecrit)+1).."/"..config.levelscrit.."].") setPlayerStorageValue(cid, config.storagecrit, getPlayerStorageValue(cid, config.storagecrit)+1) elseif getPlayerStorageValue(cid, config.storagecrit) >= config.levelscrit then doPlayerSendTextMessage(cid,22,"You've already reached the MAX level of Critical Skill.\nCongratulations!!!!") return 0 end return 1 end Feito isso tá pronto, pra editar o item que dá a skill de critical vc edita no actions.xml mesmo:
<action itemid="1294" << ID do item que será usado pra dar a skill.
A config tá bem simples:
effectonuse = 14, -- efeito que sai
levelscrit = 100, --- leveis que terão
storagecrit = 48913 -- storage que será verificado.
Lembrando que cada pedra utilizada dará 0,3% a mais de chance.. 10 pedras dão 3% de chance de dar critico a cada ataque e 100 pedras (NIVEL MÁXIMO PADRÃO) dará 30% de chance de dar crítico em cada ataque.
Espero que vcs gostem, qualquer coisa deixem os comentários aqui.
Obs: aqui tá uma foto
Note que esse script só funciona em players, se vc quiser que funcione em monstros você vai ter que abrir um por um todos os monstros do server e colocar essa tag aqui:
<script> <event name="critical"/> </script> coloque antes de </monster>
Minha dica: coloquem apenas no Trainer pra que o player consiga ver que ele tem o critical e quanto ele tira e deixem avisado que o sistema só vai funcionar em players.
-
Por xWhiteWolf
Ae galera do TK, uns caras ficaram me mandando PM pedindo esse sistema aqui.. aparentemente tem em algum server e eles queriam replicar o sistema no OT deles. Não sei como funciona no outro server mas no script que eu fiz vai funcionar assim:
Serão 100 livros que você poderá comprar de um npc específico, cada livro te dá 1 ponto a mais na skill Dodge e isso acarreta em 0.3% de chance a mais de desviar de um golpe e tomar só 50% de dano. Infelizmente eu nunca joguei no servidor que foi o pioneiro desse sistema (na vdd eu nem sei qual é) então eu não fiz igual o deles, na realidade o meu só funciona ao perder vida então se o mago usar utamo vita acabou os dodge's dele. Outra coisa importante é que o player tem uma chance rara de dar Dodge no Dodge, ou seja, levando 1/4 do dano. Só vai funcionar para ataques de criaturas, tanto melee quanto spells, ou seja, se o cara passar no fogo não tem chance dele desviar do dano
Sem mais delongas, vamos ao script:
Crie um arquivo chamado dodge.lua na pasta creaturescripts\scripts e coloque isso dentro dele:
agora adicione essa linha no creaturescripts.xml:
<event type="statschange" name="dodge" event="script" value="dodge.lua"/> em creaturescripts\scripts\login.lua adicione isso antes do ultimo return true:
registerCreatureEvent(cid, "dodge") if getPlayerStorageValue(cid, 48902) == -1 then setPlayerStorageValue(cid, 48902, 0) end agora vá em actions.xml e adicione essa linha aqui:
<action itemid="1950" script="dodgebook.lua"/> note que vc pode mudar o ID do livro a hora que vc quiser.
em items.xml, procure o item com o ID que vc irá utilizar e deixe ele assim:
<item id="1950" article="a" name="Skill Book [DODGE]"> <attribute key="weight" value="1300" /> </item> agora crie um arquivo chamado dodgebook em actions\scripts e coloque isso dentro dele:
-