Ir para conteúdo
  • 0

Alterando Script Mudança de Classe


kaizy536

Pergunta

Bom gente, eu já iniciei um tópico aqui mais ou menos sobre o que eu irei tratar aqui agora, porem ele não foi "totalmente" resolvido, na verdade quase não foi rsrsrs, é assim..

 

Eu tenho um script de reset de classe, que ao utilizar, você troca de classe, ou seja, se transforma em uma nova vocação, e outro script que é o sistema de resets e para trocar de classe tem que ter uma certa quantidade de resets;

O que eu queria é que ao usar o comando para mudar de classe, a quantidade de resets do player volte para 0, para que ele possa estar na classe nova, com 0 resets;

Outro problema que eu também venho tendo é que quando ao utilizar o comando, e estar na nova vocação, o player continua com o mesmo HP/MP de antes, isso é um problema, pois ele ficara com o HP/MP muito "cabuloso".. Portanto eu gostaria que ele ao usar o comando, volte para o Level configurado com o HP/MP de acordo com o Level que ele esta..

 

Vamos aos Script:

 

O Script de Mudança de Classe é:

 

 

 

function onSay(cid, words, param, channel)

function getPlayerReset(cid)
local check = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..getPlayerGUID(cid))
return check:getDataInt("reset") <= 0 and 0 or check:getDataInt("reset") end
if (param ~= "dark" and param ~= "hellborn" and param ~= "supreme") then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce digitou errado o nome da classe")
return TRUE
end
local config = {
darklvl = 20, -- level para resetar dark
hellbornlvl = 30, -- level para resetar hellborn
supremelvl = 50, -- level para resetar supreme
vocationDark = 15, -- id vocação dark
vocationHellborn = 16, -- id vocação hellborn
vocationSupreme = 17, -- id vocação supreme
lvlreset = 250, -- level apos resetar primeiras vocações
lvlHellborn = 250, -- level apos resetar vocação sacred
player = getPlayerGUID(cid), -- não mexa!
reset = 50,
pz = "yes", -- players precisam estar em protection zone para usar? ("yes" or "no").
battle = "yes", -- players deve estar sem battle ("yes" or "no")
premium = "no" -- se precisa ser premium account ("yes" or "no")
}
if(config.pz == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa estar em Protection Zone para usar este comando.")
return TRUE
end
if(config.premium == "yes") and (not isPremium(cid)) then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Only players with premium account can use.")
return TRUE
end
if(config.battle == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce nao pode usar com battle.")
return TRUE
end
if (param == "dark") then
if (getPlayerReset(cid) >= 50) then
if (getPlayerVocation(cid) == 5 or getPlayerVocation(cid) == 6 or getPlayerVocation(cid) == 7 or getPlayerVocation(cid) == 8 or getPlayerVocation(cid) == 14) then
if (getPlayerLevel(cid) >= config.darklvl) then
doPlayerSetVocation(cid, config.vocationDark)
setPlayerStorageValue(cid, 897979, config.vocationDark)
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `level` = "..config.lvlreset..", `experience` = 0 WHERE `id` = "..config.player)
return TRUE
else
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser level "..config.darklvl..".")
return TRUE
end
else
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ter promotion.")
return TRUE
end
else
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce precisa ter 50 resets ou mais para poder mudar de classe.")
return TRUE
end
return true
end
if (param == "hellborn") then
if (getPlayerReset(cid) >= 75) then
if (getPlayerVocation(cid) == 15) then
if (getPlayerLevel(cid) >= config.hellbornlvl) then
doPlayerSetVocation(cid, config.vocationHellborn)
setPlayerStorageValue(cid, 897979, config.vocationHellborn)
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `level` = "..config.lvlreset..", `experience` = 0 WHERE `id` = "..config.player)
return TRUE
else
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser level "..config.hellbornlvl..".")
return TRUE
end
else
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser Dark Hero.")
return TRUE
end
else
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce precisa ter 75 resets ou mais para poder mudar de classe.")
return TRUE
end
return true
end
if (param == "supreme") then
if (getPlayerReset(cid) >= 100) then
if (getPlayerVocation(cid) == 16) then
if (getPlayerLevel(cid) >= config.supremelvl) then
doPlayerSetVocation(cid, config.vocationSupreme)
setPlayerStorageValue(cid, 897979, config.vocationSupreme)
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `level` = "..config.lvlreset..", `experience` = 0 WHERE `id` = "..config.player)
return TRUE
else
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser level "..config.Supremelvl..".")
return TRUE
end
else
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser Hellborn Deathbringer.")
return TRUE
end
else
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce precisa ter 100 resets ou mais para poder mudar de classe.")
return TRUE
end
return true
end
end

 

 

 

A função que checa a quantidade de Resets que o player tem é:

function getPlayerReset(cid)
local check = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..getPlayerGUID(cid))
return check:getDataInt("reset") <= 0 and 0 or check:getDataInt("reset") end

Essa função já ta no Script de Mudança de Classe..

 

OBS: Os Resets não são armazenados em Storage !! acho que já deu pra perceber xD

Por favor, me ajudem, só falta isso para eu terminar meu servidor, e deixa-lo Online, conto com a ajuda de vocês;

 

smile_positivo.gifsmile_positivo.gifsmile_positivo.gif

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

Posts Recomendados

  • 0

Por quê isso aqui:

 

function onSay(cid, words, param, channel)
 
function getPlayerReset(cid)
local check = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..getPlayerGUID(cid))
return check:getDataInt("reset") <= 0 and 0 or check:getDataInt("reset") end
 
 
if (param ~= "dark" and param ~= "hellborn" and param ~= "supreme") then
  doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce digitou errado o nome da classe")
  return TRUE
end
 
 
local config = {
darklvl = 20, -- level para resetar dark
hellbornlvl = 30, -- level para resetar hellborn
supremelvl = 50, -- level para resetar supreme
vocationDark = 15, -- id vocação dark
vocationHellborn = 16, -- id vocação hellborn
vocationSupreme = 17,  -- id vocação supreme                
lvlreset = 250, -- level apos resetar primeiras vocações
lvlHellborn = 250, -- level apos resetar vocação sacred
player = getPlayerGUID(cid),  -- não mexa!
 
reset = 50,
pz = "yes", -- players precisam estar em protection zone para usar? ("yes" or "no").
battle = "yes", -- players deve estar sem battle ("yes" or "no")
premium = "no" -- se precisa ser premium account ("yes" or "no")
}
 
-- config dark --
local hpplvldark = 20 --quanto aumenta de hp por level na vocação dark
local healthdark = 150+((config.lvlreset-8)*config.hpplvldark))
local mpplvldark = 20 --quanto aumenta de mp por level na vocação dark
local manadark = ((config.lvlreset-8)*config.mpplvldark))
 
-- config hellborn --
local hpplvlhb = 20 --quanto aumenta de hp por level na vocação hellborn
local healthhb = 150+((config.lvlreset-8)*config.hpplvlhb))
local mpplvlhb = 20 --quanto aumenta de mp por level na vocação Hellborn
local manahb = ((config.lvlreset-8)*config.mpplvlhb))
 
-- config supreme --
local hpplvlsupreme = 20 --quanto aumenta de hp por level na vocação Supreme
local healthsupreme = 150+((config.lvlHellborn-8)*config.hpplvlsupreme))
local mpplvlsupreme = 20 --quanto aumenta de mp por level na vocação Supreme
local manasupreme = ((config.lvlreset-8)*config.mpplvlsupreme))
 
local pid =getPlayerGUID(cid)
local reset_query = "UPDATE `players` SET `reset` = "0" WHERE `id`= " .. pid .. ";"
local look_query = "UPDATE `players` SET `description` = ' ["0" Resets]' WHERE `players`.`id`= " .. pid .. ";"
 
 
if(config.pz == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then
   doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa estar em Protection Zone para usar este comando.")
   return TRUE
end
 
if(config.premium == "yes") and (not isPremium(cid)) then
   doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Only players with premium account can use.")
   return TRUE
end
 
if(config.battle == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then
   doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce nao pode usar com battle.")
   return TRUE
end
 
if (param == "dark") then
  if (getPlayerReset(cid) >= 50) then
   if (getPlayerVocation(cid) == 5 or getPlayerVocation(cid) == 6 or getPlayerVocation(cid) == 7 or getPlayerVocation(cid) == 8 or getPlayerVocation(cid) == 14) then
      if (getPlayerLevel(cid) >= config.darklvl) then
      doPlayerSetVocation(cid, config.vocationDark)
      setPlayerStorageValue(cid, 897979, config.vocationDark)
      doCreatureAddHealth(cid, -(getCreatureHealth(cid)-150))
      doCreatureAddMana(cid, -(getCreatureMana(cid)))
      setCreatureMaxHealth(cid, healthdark)
      setCreatureMaxMana(cid, manadark)
      doRemoveCreature(cid)
      db.executeQuery("UPDATE `players` SET `level` = "..config.lvlreset..", `experience` = 0 WHERE `id` = "..config.player)
 if (getPlayerReset(cid) > 0) then
    db.executeQuery(reset_query)
    db.executeQuery(look_query)
 return TRUE
 end
      return TRUE
     else
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser level "..config.darklvl..".")
      return TRUE
     end
   else
     doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ter promotion.")
     return TRUE
  end
    else
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce precisa ter 50 resets ou mais para poder mudar de classe.")
   return TRUE
 end
return true
end
 
 
if (param == "hellborn") then
   if (getPlayerVocation(cid) == 15) then
   if (getPlayerLevel(cid) >= config.hellbornlvl) then
     doPlayerSetVocation(cid, config.vocationHellborn)
     setPlayerStorageValue(cid, 897979, config.vocationHellborn)
      doCreatureAddHealth(cid, -(getCreatureHealth(cid)-150))
      doCreatureAddMana(cid, -(getCreatureMana(cid)))
      setCreatureMaxHealth(cid, healthhb)
      setCreatureMaxMana(cid, manahb)
           doRemoveCreature(cid)
           db.executeQuery("UPDATE `players` SET `level` = "..config.lvlreset..", `experience` = 0 WHERE `id` = "..config.player)
      if (getPlayerReset(cid) > 0) then
         db.executeQuery(reset_query)
         db.executeQuery(look_query)
         return TRUE
      end
           else
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser level "..config.hellbornlvl..".")
      return TRUE
     end
   else
     doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"You don't have vocation for this reset.")
     return TRUE
   end
   return true
end
 
if (param == "supreme") then
   if (getPlayerVocation(cid) == 16) then
   if (getPlayerLevel(cid) >= config.supremelvl) then
     doPlayerSetVocation(cid, config.vocationSupreme)
      setPlayerStorageValue(cid, 897979, config.vocationSupreme)
      doCreatureAddHealth(cid, -(getCreatureHealth(cid)-150))
      doCreatureAddMana(cid, -(getCreatureMana(cid)))
      setCreatureMaxHealth(cid, healthsupreme)
      setCreatureMaxMana(cid, manasupreme)
      doRemoveCreature(cid)
      db.executeQuery("UPDATE `players` SET `level` = "..config.lvlHellborn..", `experience` = 0 WHERE `id` = "..config.player)
      if (getPlayerReset(cid) > 0) then
         db.executeQuery(reset_query)
         db.executeQuery(look_query)
         return TRUE
      end
           else
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser level "..config.supremelvl..".") return true
     end
   else
     doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"You don't have vocation for this reset.") return true
   end
   return true
end
return true
end

 

 

Não te ajudou?

O que você quer de diferente?

Link para o comentário
Compartilhar em outros sites

  • 0

@RickSoares, o script de mudança de classe esta ai em Spoiler '-'

@Incur, eu tentei esse script ai, porem ele deu error, eu tentei arrumar o error e nao consegui, ate fui no topico que postou esse comando ai, porem ninguem resolveu x.x

Link para o comentário
Compartilhar em outros sites

  • 0

Primeiro ao ligar o server, aparece na distro isso;

[28/01/2014 23:09:22] [Error - LuaScriptInterface::loadFile] data/talkactions/scripts/classes.lua:50: unexpected symbol near '0'
[28/01/2014 23:09:22] [Warning - Event::loadScript] Cannot load script (data/talkactions/scripts/classes.lua)
[28/01/2014 23:09:22] data/talkactions/scripts/classes.lua:50: unexpected symbol near '0'

Eu não me lembro muito bem, mais ate agora quando eu liguei o server aqui só deu esse error, mais eu me lembro que tava dando erro também na função de zerar os resets do player;

Link para o comentário
Compartilhar em outros sites

  • 0

até hj n fizeram ainda?? uheueheuhe

 

 

function onSay(cid, words, param, channel)
function getPlayerReset(cid)
local check = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..getPlayerGUID(cid))
return check:getDataInt("reset") <= 0 and 0 or check:getDataInt("reset") end
 
if (param ~= "dark" and param ~= "hellborn" and param ~= "supreme") then
  doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce digitou errado o nome da classe")
  return TRUE
end
 
local config = {
darklvl = 20, -- level para resetar dark
hellbornlvl = 30, -- level para resetar hellborn
supremelvl = 50, -- level para resetar supreme
vocationDark = 15, -- id vocação dark
vocationHellborn = 16, -- id vocação hellborn
vocationSupreme = 17,  -- id vocação supreme                
lvlreset = 250, -- level apos resetar primeiras vocações
lvlHellborn = 250, -- level apos resetar vocação sacred
player = getPlayerGUID(cid),  -- não mexa!
reset = 50,
pz = "yes", -- players precisam estar em protection zone para usar? ("yes" or "no").
battle = "yes", -- players deve estar sem battle ("yes" or "no")
premium = "no" -- se precisa ser premium account ("yes" or "no")
}
if(config.pz == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then
   doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa estar em Protection Zone para usar este comando.")
   return TRUE
end
 
if(config.premium == "yes") and (not isPremium(cid)) then
   doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Only players with premium account can use.")
   return TRUE
end
 
if(config.battle == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then
   doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce nao pode usar com battle.")
   return TRUE
end
 
if (param == "dark") then
  if (getPlayerReset(cid) >= 50) then
   if (getPlayerVocation(cid) == 5 or getPlayerVocation(cid) == 6 or getPlayerVocation(cid) == 7 or getPlayerVocation(cid) == 8 or getPlayerVocation(cid) == 14) then
      if (getPlayerLevel(cid) >= config.darklvl) then
      doPlayerSetVocation(cid, config.vocationDark)
      setPlayerStorageValue(cid, 897979, config.vocationDark)
      local hp,mana = getVocationInfo(config.vocationDark).gainhp*config.lvlreset,getVocationInfo(config.vocationDark).gainmana*config.lvlreset
      doRemoveCreature(cid)
      db.executeQuery("UPDATE `players` SET `level` = "..config.lvlreset..", `experience` = "..getExperienceForLevel(config.lvlreset)..",`manamax` = "..mana..",`healthmax` = "..hp..",`health` = "..hp..",`mana` = "..mana.." WHERE `id` = "..config.player)
      return TRUE
     else
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser level "..config.darklvl..".")
      return TRUE
     end
   else
     doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ter promotion.")
     return TRUE
end
    else
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce precisa ter 50 resets ou mais para poder mudar de classe.")
   return TRUE
 end
 return true
 end
 
 
if (param == "hellborn") then
  if (getPlayerReset(cid) >= 75) then
   if (getPlayerVocation(cid) == 15) then
      if (getPlayerLevel(cid) >= config.hellbornlvl) then
      doPlayerSetVocation(cid, config.vocationHellborn)
      setPlayerStorageValue(cid, 897979, config.vocationHellborn)
      local hp,mana = getVocationInfo(config.vocationHellborn).gainhp*config.lvlreset,getVocationInfo(config.vocationHellborn).gainmana*config.lvlreset
      doRemoveCreature(cid)
      db.executeQuery("UPDATE `players` SET `level` = "..config.lvlreset..", `experience` = "..getExperienceForLevel(config.lvlreset)..",`manamax` = "..mana..",`healthmax` = "..hp..",`health` = "..hp..",`mana` = "..mana.." WHERE `id` = "..config.player)
      return TRUE
     else
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser level "..config.hellbornlvl..".")
      return TRUE
     end
   else
     doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser Dark Hero.")
     return TRUE
end
    else
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce precisa ter 75 resets ou mais para poder mudar de classe.")
   return TRUE
 end
 return true
 end
 
 
 
 
if (param == "supreme") then
  if (getPlayerReset(cid) >= 100) then
   if (getPlayerVocation(cid) == 16) then
      if (getPlayerLevel(cid) >= config.supremelvl) then
      doPlayerSetVocation(cid, config.vocationSupreme)
      setPlayerStorageValue(cid, 897979, config.vocationSupreme)
      local hp,mana = getVocationInfo(config.vocationSupreme).gainhp*config.lvlreset,getVocationInfo(config.vocationSupreme).gainmana*config.lvlreset
      doRemoveCreature(cid)
      db.executeQuery("UPDATE `players` SET `level` = "..config.lvlreset..", `experience` = "..getExperienceForLevel(config.lvlreset)..",`manamax` = "..mana..",`healthmax` = "..hp..",`health` = "..hp..",`mana` = "..mana.." WHERE `id` = "..config.player)
      return TRUE
     else
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser level "..config.Supremelvl..".")
      return TRUE
     end
   else
     doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser Hellborn Deathbringer.")
     return TRUE
end
    else
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce precisa ter 100 resets ou mais para poder mudar de classe.")
   return TRUE
 end
 return true
 end
 end

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

dica para galera que quer usar uma função para saber a quantidade de hp ou mana que o player vai ter em tal level:

 

 

getVocationInfo(ID DA VOCATION).gainhp*LEVEL -- aqui vai pegar os dados la em vocations.xml e vai fazer a conta por exemplo:

 

se no seu vocations.xml a VOC com ID 1 estiver: gainhp=5 e eu quero saber o total de hp que ela vai ter no LEVEL 10 então vai fazer essa conta

 

getVocationInfo(1).gainhp*10

 

5*10 = 50 -- no level 10 a vocation com ID 1 vai ter 50 de hp

 

para HP:

 

getVocationInfo(ID DA VOCATION).gainhp*LEVEL

 

Para MANA:

 

getVocationInfo(ID DA VOCATION).gainmana*LEVEL


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

 

fiz um função para melhorar o intendimento:
function getInfoStatus(vocation, type, level)
return type == "health" and getVocationInfo(vocation).gainhp*tonumber(level) or getVocationInfo(vocation).gainmana*tonumber(level)
end
agora só usar para saber a quantidade de hp ou mana no tal level:
por exemplo quero saber o life de knight(voc 4) no level 50
local hp = getInfoStatus(4, "health", 50) -- retorna quanto de hp o knight(voc 4) tem no lvl 50
ou se quiser saber a mana usa:
local mana = getInfoStatus(4, "mana", 50) -- retorna quanto de o knight(voc 4) tem no lvl 50
Editado por Vodkart
Link para o comentário
Compartilhar em outros sites

  • 0

Né isso rapaz, ninguém conseguiu, eu ate tentei com o script que o carinha ali fez pra min no outro tópico, só que deu erro :/..

Enfim, essa sua alteração ai ela vai fazer o Hp do player ao mudar de classe voltar pra o HP * LV certo?

Tipo, não vai continuar o mesmo Hp da vocation anterior e somar mais a configuração da nova certo?

Blz, a função pra resetar os resets da pra fazer pra min? Como eu pedi la em cima xD o player com 50 resets, ao usar esse comando ai de troca de vocation, voltar pra 0 resets;

Link para o comentário
Compartilhar em outros sites

  • 0

Né isso rapaz, ninguém conseguiu, eu ate tentei com o script que o carinha ali fez pra min no outro tópico, só que deu erro :/..

Enfim, essa sua alteração ai ela vai fazer o Hp do player ao mudar de classe voltar pra o HP * LV certo?

Tipo, não vai continuar o mesmo Hp da vocation anterior e somar mais a configuração da nova certo?

Blz, a função pra resetar os resets da pra fazer pra min? Como eu pedi la em cima xD o player com 50 resets, ao usar esse comando ai de troca de vocation, voltar pra 0 resets;

 

ta como é a conta do hp e mana?? me explica em forma de calculos

 

tem que pegar a info da voc anterior * level + a voc atual??

 

pq meu calculo ta pra fazer assim:

 

hp/mana por level nova voc * level (baseada no vocations.xml em hpgain e managain)

 

obs: esqueci de colocar para resetar a quantidade de reset.. mas faço isso na proxima editação

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

  • 0

quando eu chegar eu casa eu digo as coisas, mais assim pow, eu queria que apos o player usar o comando pra trocar de vocation ele ficasse como se tivesse acabo de criar o personagem, porem com a vocação que ele virou ao usar o comando;

Tipo, o cara tem 50 resets, é elder druid, e vai mudar para a vocação Dark, dai ele usa o comando !class dark, e ele é resetado, porem ele vai perder todos os resets, ficando assim com 0 resets, e o Hp que tava 500k, fica com o Hp da nova vocation * Lv;

Resumindo, o Hp sera totalmente resetado a 0; ficando assim somente o Hp da nova vocation;


eu tinha tentado na parte de definir o Hp/Mp do player ao usar o comando, usando essa parte de um script que servia pra a mesma coisa, porem é diferente, então claro que deu erro quando eu tentei, porque não sei ajusta-lo ao meu script que ta ai em cima;

Mais aqui vai a parte do script:

local param,config = string.lower(param),{pid = getPlayerGUID(cid),newlv = 8,life = 185,mana = 35}

creio que ai, ele ja decide o level que o player vai apos utilizar o comando, e assim o Hp/Mp que ele tera em tal level, porem não sei se ele seria legal usar, sendo que no script de mudança de vocação (ja postado no começo) tem o level inicial ja..

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

  • 0

testa e ve se eh isso q vc quer

 

 

function onSay(cid, words, param, channel)
function getPlayerReset(cid)
local check = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..getPlayerGUID(cid))
return check:getDataInt("reset") <= 0 and 0 or check:getDataInt("reset") end
function getInfoStatus(vocation, type, level)
return type == "health" and getVocationInfo(vocation).gainhp*tonumber(level) or getVocationInfo(vocation).gainmana*tonumber(level)
end 
 
if (param ~= "dark" and param ~= "hellborn" and param ~= "supreme") then
  doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce digitou errado o nome da classe")
  return TRUE
end
 
local config = {
darklvl = 20, -- level para resetar dark
hellbornlvl = 30, -- level para resetar hellborn
supremelvl = 50, -- level para resetar supreme
vocationDark = 15, -- id vocação dark
vocationHellborn = 16, -- id vocação hellborn
vocationSupreme = 17,  -- id vocação supreme                
lvlreset = 250, -- level apos resetar primeiras vocações
lvlHellborn = 250, -- level apos resetar vocação sacred
player = getPlayerGUID(cid),  -- não mexa!
reset = 50,
pz = "yes", -- players precisam estar em protection zone para usar? ("yes" or "no").
battle = "yes", -- players deve estar sem battle ("yes" or "no")
premium = "no" -- se precisa ser premium account ("yes" or "no")
}
if(config.pz == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then
   doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa estar em Protection Zone para usar este comando.")
   return TRUE
end
 
if(config.premium == "yes") and (not isPremium(cid)) then
   doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Only players with premium account can use.")
   return TRUE
end
 
if(config.battle == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then
   doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce nao pode usar com battle.")
   return TRUE
end
 
if (param == "dark") then
  if (getPlayerReset(cid) >= 50) then
   if (getPlayerVocation(cid) == 5 or getPlayerVocation(cid) == 6 or getPlayerVocation(cid) == 7 or getPlayerVocation(cid) == 8 or getPlayerVocation(cid) == 14) then
      if (getPlayerLevel(cid) >= config.darklvl) then
      doPlayerSetVocation(cid, config.vocationDark)
      setPlayerStorageValue(cid, 897979, config.vocationDark)
     local hp, mana = getInfoStatus(config.vocationDark, "health", config.lvlreset), getInfoStatus(config.vocationDark, "mana", config.lvlreset)
      doRemoveCreature(cid)
      db.executeQuery("UPDATE `players` SET `level` = "..config.lvlreset..",`reset` = 0,`experience` = "..getExperienceForLevel(config.lvlreset)..",`manamax` = "..mana..",`healthmax` = "..hp..",`health` = "..hp..",`mana` = "..mana.." WHERE `id` = "..config.player)
      return TRUE
     else
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser level "..config.darklvl..".")
      return TRUE
     end
   else
     doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ter promotion.")
     return TRUE
end
    else
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce precisa ter 50 resets ou mais para poder mudar de classe.")
   return TRUE
 end
 return true
 end
 
 
if (param == "hellborn") then
  if (getPlayerReset(cid) >= 75) then
   if (getPlayerVocation(cid) == 15) then
      if (getPlayerLevel(cid) >= config.hellbornlvl) then
      doPlayerSetVocation(cid, config.vocationHellborn)
      setPlayerStorageValue(cid, 897979, config.vocationHellborn)
      local hp, mana = getInfoStatus(config.vocationHellborn, "health", config.lvlreset), getInfoStatus(config.vocationHellborn, "mana", config.lvlreset)
      doRemoveCreature(cid)
      db.executeQuery("UPDATE `players` SET `level` = "..config.lvlreset..",`reset` = 0,`experience` = "..getExperienceForLevel(config.lvlreset)..",`manamax` = "..mana..",`healthmax` = "..hp..",`health` = "..hp..",`mana` = "..mana.." WHERE `id` = "..config.player)
      return TRUE
     else
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser level "..config.hellbornlvl..".")
      return TRUE
     end
   else
     doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser Dark Hero.")
     return TRUE
end
    else
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce precisa ter 75 resets ou mais para poder mudar de classe.")
   return TRUE
 end
 return true
 end
 
 
 
 
if (param == "supreme") then
  if (getPlayerReset(cid) >= 100) then
   if (getPlayerVocation(cid) == 16) then
      if (getPlayerLevel(cid) >= config.supremelvl) then
      doPlayerSetVocation(cid, config.vocationSupreme)
      setPlayerStorageValue(cid, 897979, config.vocationSupreme)
      local hp, mana = getInfoStatus(config.vocationSupreme, "health", config.lvlreset), getInfoStatus(config.vocationSupreme, "mana", config.lvlreset)
      doRemoveCreature(cid)
      db.executeQuery("UPDATE `players` SET `level` = "..config.lvlreset..",`reset` = 0,`experience` = "..getExperienceForLevel(config.lvlreset)..",`manamax` = "..mana..",`healthmax` = "..hp..",`health` = "..hp..",`mana` = "..mana.." WHERE `id` = "..config.player)
      return TRUE
     else
      doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser level "..config.Supremelvl..".")
      return TRUE
     end
   else
     doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser Hellborn Deathbringer.")
     return TRUE
end
    else
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce precisa ter 100 resets ou mais para poder mudar de classe.")
   return TRUE
 end
 return true
 end
 end
Link para o comentário
Compartilhar em outros sites

  • 0

Deu erro, esse aqui:

[09/02/2014 00:48:52] [Error - TalkAction Interface] 
[09/02/2014 00:48:53] data/talkactions/scripts/classes.lua:onSay
[09/02/2014 00:48:53] Description: 
[09/02/2014 00:48:53] data/talkactions/scripts/classes.lua:6: attempt to perform arithmetic on field 'gainhp' (a nil value)
[09/02/2014 00:48:53] stack traceback:
[09/02/2014 00:48:53]  data/talkactions/scripts/classes.lua:6: in function 'getInfoStatus'
[09/02/2014 00:48:53]  data/talkactions/scripts/classes.lua:50: in function <data/talkactions/scripts/classes.lua:1>
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...