Ir para conteúdo

Projeto Tutores de Scripting


Killua

Posts Recomendados

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)


local area = createCombatArea(AREA_SQUARE2X2)

setCombatArea(combat, area)


function onGetFormulaValues()

return -200, -200, -200

end


setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")


local armor_id = 7897

local chance = 100


function onStatsChange(cid, attacker, type, combat, value)

if not isPlayer(cid) then

return TRUE

end

if value >= 1 then

if getPlayerSlotItem(cid, CONST_SLOT_ARMOR).itemid == armor_id then

local random = math.random(100)

if random <= chance then

doCombat(cid, combat, {type = 2, pos=getCreaturePosition(cid)})

return TRUE

end

end

end

return TRUE

end



quando eu deixo a tag <!-- <event type="statsChange" name="glacier" script="glacierrobe.lua"/> --> sem os <!-- --> o server vai iniciar e para de funcionar alguém pode dizer oque está errado ?

Link para o comentário
Compartilhar em outros sites

quando tu usa <!-- -->

está transformando tudo que esta compreendido dentro em comentarios, que nao sao interpretados, ou seja voce simplesmente tira ele do game, agora tem que ver qual erro ta dando no console, tira o comentario e manda o erro

Link para o comentário
Compartilhar em outros sites

ele não da erro nenhum apenas para de funcionar

 

@EDIT sim sim já sabia que era os comentários, ponhei porque se não o server não abre

Editado por vagnho
Link para o comentário
Compartilhar em outros sites

ele não da erro nenhum apenas para de funcionar

 

@EDIT sim sim já sabia que era os comentários, ponhei porque se não o server não abre

Use essa funções para produzir spells fora da pasta spells:

	doAreaCombatHealth(cid, type, pos, area, min, max, effect)
	doTargetCombatHealth(cid, target, type, min, max, effect)
	doAreaCombatMana(cid, pos, area, min, max, effect)
	doTargetCombatMana(cid, target, min, max, effect)
	doAreaCombatCondition(cid, pos, area, condition, effect)
	doTargetCombatCondition(cid, target, condition, effect)
	doAreaCombatDispel(cid, pos, area, type, effect)
	doTargetCombatDispel(cid, target, type, effect)

ficaria assim:

local SQUARE1X1 = {
	{1, 1, 1},
	{1, 3, 1},
	{1, 1, 1}
}

local min, max = 200, 220
local armor_id = 7897
local chance = 100
 
function onStatsChange(cid, attacker, type, combat, value)
	if not isPlayer(cid) then
		return true
	end

	if value >= 1  and type == STATSCHANGE_HEALTHLOSS then
		if getPlayerSlotItem(cid, CONST_SLOT_ARMOR).itemid == armor_id then
			local random = math.random(100)
			if random <= chance then
				doAreaCombatHealth(cid, COMBAT_ICEDAMAGE, getCreaturePosition(cid), SQUARE1X1, min, max, CONST_ME_ICEATTACK)
				return true
			end
		end
	end

	return true
end

Adicionei o healthLoss para funcionar apenas para perda de vida, faz mas sentido a armadura tem que revidar perdas, e do jeito que estava ela ativaria tambem para ganhos de vida e mana, não incluir mana, se quiser o faça, a variavel dela é: STATSCHANGE_MANALOSS

Link para o comentário
Compartilhar em outros sites

tem que registrar a creature script no cid, la no login, da uma olhada no login.lua que vai ver como funfa

tu basicamente vai usar a função registerCreatureEvent(cid, "eventname") o eventname tu vai pegar da tag do xml que tu fez la em creaturescripts.xml, fui pra facul mais tarde volto, flws

Link para o comentário
Compartilhar em outros sites

já está registrada tudo mas não vai nem erro ...

 

 

@EDIT

 

como faço para colocar uma conta

{

lookType = getCreatureOutfit(cid).lookType,

lookHead = getCreatureOutfit(cid).lookHead, aqui contar + 19 - 19 + 19 - 19 e ficar repetindo.

lookBody = getCreatureOutfit(cid).lookBody, aqui contar + 19 - 19 + 19 - 19 e ficar repetindo.

lookLegs = getCreatureOutfit(cid).lookLegs, aqui contar + 19 - 19 + 19 - 19 e ficar repetindo.

lookFeet = getCreatureOutfit(cid).lookFeet, aqui contar + 19 - 19 + 19 - 19 e ficar repetindo.

lookAddons = getCreatureOutfit(cid).lookAddons

}

Editado por vagnho
Link para o comentário
Compartilhar em outros sites

já está registrada tudo mas não vai nem erro ...

 

 

@EDIT

 

como faço para colocar uma conta

{

lookType = getCreatureOutfit(cid).lookType,

lookHead = getCreatureOutfit(cid).lookHead, aqui contar + 19 - 19 + 19 - 19 e ficar repetindo.

lookBody = getCreatureOutfit(cid).lookBody, aqui contar + 19 - 19 + 19 - 19 e ficar repetindo.

lookLegs = getCreatureOutfit(cid).lookLegs, aqui contar + 19 - 19 + 19 - 19 e ficar repetindo.

lookFeet = getCreatureOutfit(cid).lookFeet, aqui contar + 19 - 19 + 19 - 19 e ficar repetindo.

lookAddons = getCreatureOutfit(cid).lookAddons

}

somar e subtrair 19 nas cores do outfit alternadamente?

Link para o comentário
Compartilhar em outros sites

Exemplo feet = 13 ele vai somar + 19 e vai vai voltar ao 13 ou diminiur 19 como quiser de todos head body.. o Killua tentou mais teve que sair

Editado por vagnho
Link para o comentário
Compartilhar em outros sites

Exemplo feet = 13 ele vai somar + 19 e vai vai voltar ao 13 ou diminiur 19 como quiser de todos head body.. o Killua tentou mais teve que sair

se me disser onde vai usar fica mais facil aplicar, eu fiz um exemplo meio gambiarra, acho que vai ser um pouco dificil de intender

function onUse(cid, item)
    local outfit = getCreatureOutfit(cid)
    local fator = 19
    local time = os.time() + 10

    local changed = false

    local function recursive(delay, cid, fator, changed, outfit, time)
        if time > os.time() then
            doCreatureChangeOutfit(cid, swapOutfitColor(fator, changed, outfit))
            changed = not changed
            print(delay, cid,fator, changed, outfit)
            addEvent(recursive, delay, delay, cid,fator, changed, outfit, time)
        end
    end

    recursive(1000, cid, fator, changed, outfit, time)

    return true
end


function swapOutfitColor(factor, sum, outfit)
    -- factor: (number) fator de soma/subtração
    -- sum: (bolean) booleano que define se o fator deve ser somado ou subtraido
    -- outfit: (table) tabela de outfit

    outfit.lookHead = outfit.lookHead + (sum and factor or -factor)
    outfit.lookLegs = outfit.lookLegs + (sum and factor or -factor)
    outfit.lookBody = outfit.lookBody + (sum and factor or -factor)
    outfit.lookFeet = outfit.lookFeet + (sum and factor or -factor)

    return outfit
end

Tem zilhoes de parametros na função recursive, mas na realidade so precisariam mesmo de alguns: delay, cid, changed e factor

delay que é o tempo que ela vai se repetir, sendo que ele pode ser declarado ate dentro da função;

cid creature id, é necessario pra poder executar funções que usam ele

changed variavel booleana usada pra permutar, ela define se deve somar ou subtrair

e factor que e o valor a ser somado/subtraido

Link para o comentário
Compartilhar em outros sites

Então desculpe não ter entrado antes tive que formatar meu pc e só fui pegar hj...

aqui vou postar o script que tenho, é o seguinte eu quero que quando o player pegar certo storage ele fique piscando a gran aura que muitos pedem...

eu já tenho ela feita está funcionando mais tem uns pequenos erros na soma eu queria ajuda nisso..

 

script aque \/

 

 

local events = {}
function newColor(n) --começa a contagem
local n = tonumber(n) or 0 -- aqui pega o numero da cor exemplo head = 94 body = 31 legs = 0 feet = 1
local n = n + 19 -- aqui é meio obvio ele ira somar os valores acima (+19)
if >= 132 then -- aqui é a ultima cor se for 132 ele fara - 19 aqui está o problema ele fica nessa cor e n muda
n = n - 19
end
return tonumber(n) or 0
end
-- comentario: se a cor for preta o addon vai para branco sendo que o certo é diminuir 19..
function changeOutfit(cid)
local sec = 0.5
local temp = getCreatureOutfit(cid)
if type(temp) == "number" then
return true
end
local outfit = {
lookType=temp.lookType,
lookHead=newColor(temp.lookHead),
lookBody=newColor(temp.lookBody),
lookLegs=newColor(temp.lookLegs),
lookFeet=newColor(temp.lookFeet),
lookAddons = getCreatureOutfit(cid).lookAddons
}
doSetCreatureOutfit(cid, outfit, sec)
local event = addEvent(changeOutfit, 3.0*sec*450, cid)
events[cid] = event
return true
end
function onLogin(cid)
local storage = getPlayerStorageValue(cid, 13340)
if storage == 1 then
local event = addEvent(changeOutfit, 0, cid)
events[cid] = event
end
return TRUE
end
function onLogout(cid)
if events[cid] then
stopEvent(events[cid])
end
return TRUE
end
eu expliquei acima oque me falta... aahh o script que tu fez da amor que pedi ajuda ele não está funcionando em vez de sair o effect sai quando o player usa runa e sai no player mesmo não quando toma hit
Link para o comentário
Compartilhar em outros sites

 

Então desculpe não ter entrado antes tive que formatar meu pc e só fui pegar hj...

aqui vou postar o script que tenho, é o seguinte eu quero que quando o player pegar certo storage ele fique piscando a gran aura que muitos pedem...

eu já tenho ela feita está funcionando mais tem uns pequenos erros na soma eu queria ajuda nisso..

 

Foi somente um erro logico no seu script, voce soma 19 e subtrai logo em seguida, obviamente voce nao altera nada quando faz isso '-' n = n + 19 - 19, ou seja n = n kk

function changeOutfit
local events = {}
 
function newColor(n) 
	if n >= 132 then 
		n = n - 19
	else
		n = n + 19
	end
 
	return n 
end
 
function changeOutfit(cid)
 
	local sec = 0.5
	local temp = getCreatureOutfit(cid)
 
	if type(temp) == "number" then 
		return true 
	end
 
	local outfit = {
		lookType=temp.lookType,
		lookHead=newColor(temp.lookHead),
		lookBody=newColor(temp.lookBody),
		lookLegs=newColor(temp.lookLegs),
		lookFeet=newColor(temp.lookFeet),
		lookAddons = temp.lookAddons
	}
		
	doSetCreatureOutfit(cid, outfit, sec)
	local event = addEvent(changeOutfit, 3.0*sec*450, cid)
	events[cid] = event
 
	return true
end
 
function onLogin(cid)
 
	local storage = getPlayerStorageValue(cid, 13340)
	if storage == 1 then
		local event = addEvent(changeOutfit, 0, cid)
		events[cid] = event
	end
 
	return TRUE
end
 
function onLogout(cid)
 
	if events[cid] then
		stopEvent(events[cid])
	end
 
	return TRUE
end

Da pra mudar bastante coisa, principalmente se a função doSetCreatureOutfit trabalhar com miliseconds, mas acho que e com segundos entao deixei da forma que esta ai mesmo que nao ta ruim nao

Link para o comentário
Compartilhar em outros sites

então acho que estou errando na logica porque se for mair que 132 ele diminui agora está certo mais a cor preta se for 114 ela tem que diminuir eu ponhei assim if >= 132 or 114 then n = n - 19 dai se o player estiver com a cor 0 ele não muda nada e as que pisca não tenho certeza mais quase que ela pisca 3 cores

Editado por vagnho
Link para o comentário
Compartilhar em outros sites

as cores devem somar + 19 exemplo 0 + vai para o 19 e volta para o 0 acontece que a cor numero 114 e algumas outras elas tem que voltar - 19 e não ta acontecendo isso, seria todas as cores.. me diz como edita 1 que eu consigo fazer as outras (:

Editado por vagnho
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...