BR
action

[TFS 1.x] Critical System

Por Bruno, 05 de jun. de 2015 em Globalevents e Spells

script
55
23.3k
29 de junho de 2016 às 00:29

tem como por o dodge e o critical por item diferente??

gusinhiG
03 de julho de 2016 às 18:49

existe uma forma de fazer por onEquip , tipo eu uso um ring e aumenta a chance do critical dai qnd eu tiro o ring volta ao normal

1 mês depois...
xdarkX
10 de agosto de 2016 às 01:14
Em 29/06/2016 at 00:29, XxVinePeccixX disse:

tem como por o dodge e o critical por item diferente??

<action itemid="18415" script="other/critical.lua"/>

 

Voce bota o id do item que ira ficar com a action

Em 03/07/2016 at 18:49, gusinhi disse:

existe uma forma de fazer por onEquip , tipo eu uso um ring e aumenta a chance do critical dai qnd eu tiro o ring volta ao normal

No outro system,o de Dodge,um membro respondeu uma pergunta parecida,olha la e ve se te ajuda.

Editado Agosto 10 por xdark

vikingtibiaV
14 de agosto de 2016 às 16:38

só funciona em player, alguem sabe arrumar pra funcionar em monstro?

2 meses depois...
NoutroxN
11 de outubro de 2016 às 00:37

No meu servidor só está funcionado contra players, tem alguma tag para adicionar nos monsters?

1 ano depois...
mascumbadoM
03 de outubro de 2017 às 11:31

Olá amigo, estou com um problemão nesse sistema, tanto no critical quanto no dodge, faço tudo corretamente como diz no tutorial bem explicado por sinal seu, sendo que quando eu abro o server, tudo direitinho, eu ataco os bixos e tal só que quando eles vão me atacar, é como se eu fosse um adm, não recebo dano algum, e potions de cura, qualquer potion que cure health não funciona, apenas potions de mana. gostaria de saber o motivo, obrigado :p

5 meses depois...
18 de março de 2018 às 01:04

Amigo o script funciona, Porém, os players não levam dano nenhum de monsters, somente levam dano na mana. Esse sistema de Dodge e Critical skill usam o healthchange do creaturescripts. Se eu deixar somente o dodge system ativo ele funciona os players levam dano dos monsters, porém se eu colocar os 2 não da certo os monstros não tiram dano mais da life de ninguém.

Creio que tenha algo a ver com isso:

<event type="healthchange" name="CriticalSystem" script="criticalSystem.lua"/>

Como faço para arrumar isso??

Editado Março 18 por XxVinePeccixX

6 meses depois...
themarvadoT
22 de setembro de 2018 às 17:45

Como você para conseguiu fazer funcionar. No meu uso TFS 1.2 e está dando esse erro " [Error - TalkAction::configureEvent] Missing words for talk action or spell"

Editado Setembro 22 por themarvado

4 meses depois...
bilauxB
17 de janeiro de 2019 às 17:44
Em 05/06/2015 em 17:49, Bruno disse:

Introdução

 

Este script consiste em aumentar uma porcentagem dos ataques de acordo com o critical level.

Exemplo: Suponhamos que o player tenha Critical Skill 100 e a porcentagem de ataque esteja configurado para aumentar 50%, o player terá 30% de chance de au 50% dos ataques.

 

Instalação

 

O conteúdo da lib serve para o Critical e Dodge System, se você já fez este procedimento no outro script simplesmente ignore e vá para o próximo passo.

 

Em data/lib/core/core.lua adicione o seguinte conteúdo em qualquer parte:

 

dofile('data/lib/core/dclib.lua')

Ainda em data/lib/core/core crie um arquivo chamado dclib.lua com o seguinte conteúdo:

 

  Mostrar conteúdo oculto

 


-- Configuração
DODGE = {
	STORAGE =   48900, -- player storage do sistema
	LEVEL_MAX = 100, -- máximo de dodge level que o player pode alcançar
	PERCENT = 0.5 -- porcentagem que irá defender o ataque [padrão 50% = 0.5]
}

CRITICAL = {
	STORAGE =   48901, -- player storage do sistema
	LEVEL_MAX = 100, -- máximo de critical level que o player pode alcançar
	PERCENT = 0.5 -- porcentagem que irá aumentar o ataque [padrão 50% = 0.5]
}

function Player.getDodgeLevel(self)
	return self:getStorageValue(DODGE.STORAGE)
end

function Player.setDodgeLevel(self, value)
	return self:setStorageValue(DODGE.STORAGE, value)
end

function Player.getCriticalLevel(self)
	return self:getStorageValue(CRITICAL.STORAGE)
end

function Player.setCriticalLevel(self, value)
	return self:setStorageValue(CRITICAL.STORAGE, value)
end

 

 

Agora em data/actions/actions.xml adicione a seguinte tag:

 

<action itemid="18415" script="other/critical.lua"/>

Depois em data/actions/scripts/other crie um arquivo chamado critical.lua com o seguinte conteúdo:

 

  Mostrar conteúdo oculto

 


function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	if player:getCriticalLevel() < CRITICAL.LEVEL_MAX then
		item:remove(1)
		player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS)
		player:setCriticalLevel(player:getCriticalLevel() + 1)
		player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você aumentou sua skill de critical para [" .. player:getCriticalLevel() .. "/" .. CRITICAL.LEVEL_MAX .. "].")
	elseif player:getCriticalLevel() >= CRITICAL.LEVEL_MAX then
		player:sendTextMessage(MESSAGE_STATUS_WARNING, "Você alcancou o máximo de seu CRITICAL Skill.\nParabéns!!!!")
		return false
    end
	return true
end

 

 

Pronto, já configuramos o item para atribuir o Critical Skill, vamos configurar a parte dos ataques.

 

Vá em data/creaturescripts/creaturescripts.xml e adicione a seguinte tag:

 

<event type="healthchange" name="CriticalSystem" script="criticalSystem.lua"/>

Agora em data/creaturescripts/scripts crie um arquivo chamado criticalSystem.lua com o seguinte conteúdo:

 

  Mostrar conteúdo oculto

 


function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
	if not isPlayer(attacker) then return false end
	if (attacker:getCriticalLevel() * 3) >= math.random (0, 1000) then
        if isInArray({ORIGIN_MELEE, ORIGIN_RANGED, ORIGIN_SPELL}, origin) and primaryType ~= COMBAT_HEALING then
            primaryDamage = primaryDamage + math.ceil(primaryDamage * CRITICAL.PERCENT)
            attacker:say("CRITICAL!", TALKTYPE_MONSTER_SAY)
			creature:getPosition():sendMagicEffect(CONST_ME_EXPLOSIONHIT)
        end
    end
    return primaryDamage, primaryType, secondaryDamage, secondaryType
end

 

 

Ainda em data/creaturescripts/scripts abra o arquivo login.lua e

Antes de:

 

return true

Adicione:

 

player:registerEvent("CriticalSystem")

-- Critical System
if player:getCriticalLevel() == -1 then
	player:setCriticalLevel(0) 
end

O sistema está finalizado, agora vamos criar as talkactions para que os players acompanhem seu skill.

 

Em data/talkactions/talkactions.xml adicione a tag:

 

<talkaction words="!critical" script="critical.lua"/>

E para finalizar, em data/talkactions/scripts crie um arquivo chamado critical.lua com o seguinte conteúdo:

 

  Mostrar conteúdo oculto

 


function onSay(player, words, param)
	local skill = player:getCriticalLevel()
	local message = "CRITICAL SYSTEM\nO sistema consiste em ter % de chance de dar um dano critico.\n\nPor Exemplo:\nCada pedra utilizada atribui 0,3% a mais de chance.\nCom 10 pedras, voce tera 3% de chance de hitar um dano critico dos ataques desferidos ao seu oponente.\nCom 100 pedras (maximo), voce tera 30% de chance de hitar um dano critico dos ataques desferidos ao seu oponente.\nCada pedra que voce usar, sua skill de dodge aumenta em 1 ponto.\n\nPara obter a pedra, voce pode comprar no NPC Hyperion, localizado no templo.\nOu atraves de nosso WebShop.\n------------------\nCritical Skill: [" .. skill .. "/100]"
	doPlayerPopupFYI(player, message)
end

 

 

Bom é isso ai!

 

Créditos:

eu instalei o dodge e critical, só q me embananei no login.lua e ficou dando esse erro

 

[Warning - Event::checkScript] Can not load script: scripts/login.lua
data/creaturescripts/scripts/login.lua:40: 'then' expected near char(239)

 

  Citar

player:registerEvent("CriticalSystem")


-- Critical System
if player:getCriticalLevel() == -1 then
    player:setCriticalLevel(0) 

player:registerEvent("DodgeSystem")

-- Dodge System
if player:getDodgeLevel() == -1 then
    player:setDodgeLevel(0) 
end
    return true
end

1 mês depois...
diarmaintD
13 de fevereiro de 2019 às 13:09

Dando esse erro.

21312.thumb.png.07175a9294bb062440de1181a56690ac.png