Ir para conteúdo
  • 0

[ACTION] Cada Item da level de skill


Flaah

Pergunta

Galera como faço pra cada item da um certo level de skill?

 

Funções que já tentei usar:

 

doPlayerAddSkills(cid, IDdaSkill,Quantidade): Com essa função da uma travada monstro quando mudo 3 leveis de skill's de uma só vez.

 

doPlayerAddSkill(cid, IDdaSkill, Quantidade): E com essa função, mesmo colocando 50 de quantidade, só adiciona 1 level por 1.

 

doPlayerSetSkill(cid, IDdaSkill, Quantidade): E com essa função criada pelo Vodkart que achei aqui no fórum, faz o player deslogar e não da pra trocar mais de uma skill ao mesmo tempo.

 

Cada item daria um valor de sword, axe e club para cada item usado, (e claro lookType, vocation e effect).

 

Script:

local config = {

    [ItemID] = {Life = 900, sword = 31, axe = 36, club = 42, lookType = 1, vocation = 1, effect = 45, msg = "ClasseName"},
    [ItemID] = {Life = 900, sword = 54, axe = 92, club = 35, lookType = 1, vocation = 1, effect = 45, msg = "ClasseName"},
    [ItemID] = {Life = 780, sword = 46, axe = 53, club = 66, lookType = 5, vocation = 2, effect = 15, msg = "ClasseName"},
    [ItemID] = {Life = 500, sword = 84, axe = 74, club = 79, lookType = 7, vocation = 3, effect = 37, msg = "ClasseName"},
    [ItemID] = {Life = 800, sword = 50, axe = 85, club = 14, lookType = 9, vocation = 4, effect = 48, msg = "ClasseName"}
}

function onUse(cid, item, frompos)

	local t = config[item.itemid]

	if t then
	if not isInArray(t.vocation, getPlayerVocation(cid)) then

        local outfit = getCreatureOutfit(cid)
        outfit.lookType = t.lookType

        doCreatureChangeOutfit(cid, outfit)
	doPlayerSetVocation(cid, t.vocation)

	setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) +t.Life)
	doCreatureAddHealth(cid, getCreatureMaxHealth(cid))

	doSendMagicEffect(frompos, t.effect)
	setPlayerStorageValue(cid, 14160, os.time() + cfg.time *60)
	doPlayerSendTextMessage(cid, 20, "Congratulations! You become a "..t.msg.."!")

	else
	doPlayerSendCancel(cid, "You are now ready.") 

   return true
   end
end

Aguardando.. worriedsmiley.gif

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

@

A função doPlayerAddSkillTry(cid,id_da_skil, qnt), só adiciona uma certa quantidade de experiência na skill, queria algo que adicionasse o level diretamente na skill.

@@Caronte

O item é usável e n de equipar.
Ambos os itens ficariam em uma bag.

---------------------------------------

Eu estava pensando usar esse esquema:

local condition = createConditionObject(CONDITION_ATTRIBUTES)

setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, sword)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, axe)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, club)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)

doAddCondition(cid, condition)

Só que não consegui configurar o quanto vai ganhar de level nas skills para cada item confused.gif

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

  • 0

Precisa dar um loop, tenta assim,

 

local config = {

 

[ItemID] = {Life = 900, sword = 31, axe = 36, club = 42, lookType = 1, vocation = 1, effect = 45, msg = "ClasseName"},
[ItemID] = {Life = 900, sword = 54, axe = 92, club = 35, lookType = 1, vocation = 1, effect = 45, msg = "ClasseName"},
[ItemID] = {Life = 780, sword = 46, axe = 53, club = 66, lookType = 5, vocation = 2, effect = 15, msg = "ClasseName"},
[ItemID] = {Life = 500, sword = 84, axe = 74, club = 79, lookType = 7, vocation = 3, effect = 37, msg = "ClasseName"},
[ItemID] = {Life = 800, sword = 50, axe = 85, club = 14, lookType = 9, vocation = 4, effect = 48, msg = "ClasseName"}
}

function onUse(cid, item, frompos)

for _, t in ipairs(config) do

end

if t then

if not isInArray(config[t]vocation, getPlayerVocation(cid)) then

local outfit = getCreatureOutfit(cid)
outfit.lookType = config[t]lookType

doCreatureChangeOutfit
(cid, outfit)
doPlayerSetVocation(cid, config[t]vocation)

setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) +config[t]Life)
doCreatureAddHealth(cid, getCreatureMaxHealth(cid))

for i = 1,50 do

doPlayerAddSkill(cid, IDdaSkill, i)
end

doSendMagicEffect(frompos, config[t]effect)
setPlayerStorageValue(cid, 14160, os.time() + cfg.time *60)
doPlayerSendTextMessage(cid, 20, "Congratulations! You become a "..config[t]msg.."!")

else
doPlayerSendCancel(cid, "You are now ready.")

return true
end
end

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

  • 0

Deu esse erro:

[04/11/2015 16:04:36] [Error - LuaScriptInterface::loadFile] data/actions/scripts/Classe.lua:17: ')' expected near 'vocation'
[04/11/2015 16:04:36] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/Classe.lua)
[04/11/2015 16:04:36] data/actions/scripts/Classe.lua:17: ')' expected near 'vocation'

Uma pergunta: Quando for usar o item e trocar de vocation, ira tbm receber essas 3 skills (sword, axe e club)?

 

@

O item não é pra equipar, ele vai ficar na bag normalmente.
Quando vc for clicar no item ele vai dar uma vocation, outfit, efeito e novos leveis nas skills.
Cada item dará uma coisa diferente, tanto pra vocation, como skill.

 

 

 

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

  • 0

Consertando o script acima.

 

 

local config = {
 
[ItemID] = {Life = 900, sword = 31, axe = 36, club = 42, lookType = 1, vocation = 1, effect = 45, msg = "ClasseName"},
[ItemID] = {Life = 900, sword = 54, axe = 92, club = 35, lookType = 1, vocation = 1, effect = 45, msg = "ClasseName"},
[ItemID] = {Life = 780, sword = 46, axe = 53, club = 66, lookType = 5, vocation = 2, effect = 15, msg = "ClasseName"},
[ItemID] = {Life = 500, sword = 84, axe = 74, club = 79, lookType = 7, vocation = 3, effect = 37, msg = "ClasseName"},
[ItemID] = {Life = 800, sword = 50, axe = 85, club = 14, lookType = 9, vocation = 4, effect = 48, msg = "ClasseName"}
}
 
function onUse(cid, item, frompos)
 
for _, t in ipairs(config) do
end 
  if  t then
 if not isInArray(config.vocation, getPlayerVocation(cid)) then
local outfit = getCreatureOutfit(cid)
outfit.lookType = config.lookType
 
   doCreatureChangeOutfit(cid, outfit)
    doPlayerSetVocation(cid, config.vocation)
    setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) +config.Life)
    doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
     for i = 1,50 do
    doPlayerAddSkill(cid, IDdaSkill, i)
    end
    doSendMagicEffect(frompos, config.effect)
    setPlayerStorageValue(cid, 14160, os.time() + cfg.time *60)
    doPlayerSendTextMessage(cid, 20, "Congratulations! You become a "..config.msg.."!")
 
    else
    doPlayerSendCancel(cid, "You are now ready.") 
    end
 
return true
end
end
Link para o comentário
Compartilhar em outros sites

  • 0

Já já falo se funcionou, (y)

 

#Edit

 

@

 

Bem.. mudou, só que trava o server pra kct, porq mudar 3 skills de uma só vez, da muuuito lag..

 

Eu estava pensando em alguma forma que não mude a skill no banco de dados pra n ocorrer esse lag todo..

 

Como se fosse um buff de spell? Sakas?

Que aumente o level da skill, mais que não mude no banco de dados do player..

 

Aguardando ajuda... sad.png

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

  • 0

Pelo que eu fiquei sabendo é a função toda doPlayerAddSkill que altera o banco de dados do player, carregando assim um novo valor e gerando lag. Porque são 3 valores de leveis de skills que são alteradas ao mesmo tempo.

Por isso cogitei a idéia de ser só um buff, como de uma spell. Porque assim n altera o banco de dados do player e n causando lag.

Link para o comentário
Compartilhar em outros sites

  • 0

Ta dando lag por causa disso, eu acho:

 for i = 1,50 do
    doPlayerAddSkill(cid, IDdaSkill, i)
    end

Tá dando 1275 de skill pro player...

como ta dando 1275 se a variável "i" da um loop de 1 a 50, retomando o valor 50 que é o valor que termina, ele gera 1,2,3 até 50, assim adicionando 50x a skill ao player wink_smile.gif

Pelo que eu fiquei sabendo é a função toda doPlayerAddSkill que altera o banco de dados do player, carregando assim um novo valor e gerando lag. Porque são 3 valores de leveis de skills que são alteradas ao mesmo tempo.

Por isso cogitei a idéia de ser só um buff, como de uma spell. Porque assim n altera o banco de dados do player e n causando lag.

Cara, nada ver, a função doPlayerAddSkill esta correta, só se ela está com os códigos mau feitos na sua source, mas retornando ao assunto..

 

tenta assim

 

for i = 1,50 do

doPlayerAddSkill(cid, IDdaSkill, i)
addEvent(doPlayerAddSkill, cid , IDdaSkill, i , 100)
addEvent(doPlayerAddSkill, cid , IDdaSkill, i , 100)
addEvent(doPlayerAddSkill, cid , IDdaSkill, i , 100)
end

Pelo que eu fiquei sabendo é a função toda doPlayerAddSkill que altera o banco de dados do player, carregando assim um novo valor e gerando lag. Porque são 3 valores de leveis de skills que são alteradas ao mesmo tempo.

Por isso cogitei a idéia de ser só um buff, como de uma spell. Porque assim n altera o banco de dados do player e n causando lag.

Cara, nada ver, a função doPlayerAddSkill esta correta, só se ela está com os códigos mau feitos na sua source, mas retornando ao assunto..

 

caso você queira dar mais skills, tenta assim:

 

for i = 1,50 do

doPlayerAddSkill(cid, IDdaSkill, i)
addEvent(doPlayerAddSkill, cid , IDdaSkill, i , 100)
addEvent(doPlayerAddSkill, cid , IDdaSkill2, i , 1500)
addEvent(doPlayerAddSkill, cid , IDdaSkill3, i , 3000)
end
Editado por TheLastSecond
Link para o comentário
Compartilhar em outros sites

  • 0

Ok, mais tem 2 problemas:

 

1°: Eu tinha pedido que cada item daria um certo level determinado na skill correspondente ao item que for usado. Não um loop de 1 á 50.

 

2°: Se vc disse que essa função esta errada na minha source, e possivelmente esse seria o motivo do lag, qual a logica de continuar usando ela? o.o'

Link para o comentário
Compartilhar em outros sites

  • 0

Ok, mais tem 2 problemas:

 

1°: Eu tinha pedido que cada item daria um certo level determinado na skill correspondente ao item que for usado. Não um loop de 1 á 50.

 

2°: Se vc disse que essa função esta errada na minha source, e possivelmente esse seria o motivo do lag, qual a logica de continuar usando ela? o.o'

o loop serve para add a skill de 1 em 1 até 50, adicionando a quantidade de skill que vc quer, no caso 50 de skill..

 

não tem haver com a lógica, se não for ela, vai usar qual função?? eu só disse que pode ser um motivo..

 

e coloquei o event, pra demorar não add todas skill de uma vez à você, mesma coisa fiz com o loop, ela adciona de 1 em 1 até 50 que é a quantidade que voce pediu..

 

entendeu?

Link para o comentário
Compartilhar em outros sites

  • 0

Se a função funciona como deve ou deveria funcionar, ela adiciona a quantidade de leveis, certo?

 

1 + 2 é 3

então se você estiver dando for i = 1, 2 do , vai estar adicionando 3...

 


 

Essa função é bugada, tem que ver nas source...

Link para o comentário
Compartilhar em outros sites

  • 0

Huum.. conseguir adicionar valores em 3 skills diferentes com esse addEvent (Que foi uma ótima ideia) kk'

Agora só não to conseguindo setar um valor negativo nessa função: doPlayerAddSkills(cid, IDdaSkill, -ValorAntigo)

 

Pra tirar o level anterior da skill, pra assim colocar ao novo valor do level da skill: doPlayerAddSkills(cid, IDdaSkill, NovoValor)

 

Alguma ideia? :p

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

×
×
  • Criar Novo...