Ir para conteúdo
  • 0

Será que tem como fazer umas adiçoes aqui ? e resolver 1 bug?


tonynamoral

Pergunta

Fala ai galera , eu gostaria de fazer uma modificaçao no script aqui

 

Script :



local function doPlayerSetSkill(pid, skill, amount)
local player = getPlayerByGUID(pid)
if isCreature(player) then doRemoveCreature(player, true) end
db.executeQuery("UPDATE `player_skills` SET `value` = ".. amount .." WHERE `player_id` = ".. pid .. " and `skillid` = ".. skill ..";")
return true
end
local function doPlayerSetMagic(pid, amount)
local player = getPlayerByGUID(pid)
if isCreature(player) then doRemoveCreature(player, true) end
db.executeQuery("UPDATE `players` SET `maglevel` = " .. amount .. " WHERE `id` = "..pid)
return true
end
function onTextEdit(cid, item, newText)
   local skillTable = {
   --[id do item] = id da skill,
   [2400] = 0, -- Strenght
[2404] = 1, -- Agility
[2403] = 2, -- Vitality
[2402] = 3, -- Energy
[2401] = 4, -- Range
[2405] = 5, -- Defense
   }
   local maxSk ills = 100
   local skillId = skillTable[item.itemid]
   if not skillId then return true end

   local value = tonumber(newText)

   if not value or value < 0 then
           doPlayerSendCancel(cid, "Por favor, insira um número válido.")
   return false
   end

if getPlayerPz(cid) then
doPlayerSendCancel(cid,"Voce nao pode estar de PZ")
return true
end

   local guid = getPlayerGUID(cid)
   local points = getPlayerMagLevel(cid)
   local skill = getPlayerSkillLevel(cid, skillId)

   if points < value then
           doPlayerSendCancel(cid, "Você não tem points suficientes.")
   return false
   end

   if skill >= maxSkills then
           doPlayerSendCancel(cid, "Sua skill já está no máximo.")
   return false
   end

   local newValue = math.min(skill + value, maxSkills)
   doPlayerSetSkill(guid, skillId, newValue)
   doPlayerSetMagic(guid, points - newValue + skill)

return false
end

 

O que eu quero mudar é o seguinte , se adicionar VITALITY : almenta 20 de LIFE

se mudar ENERGY , almenta 15 de mana , e se mudar AGILITY , almenta 3 de speed

 

e tipo , está dando esse error aqui.

 


[06/01/2013 12:53:45] [Error - CreatureScript Interface] 
[06/01/2013 12:53:45] data/creaturescripts/scripts/skillsids.lua:onTextEdit
[06/01/2013 12:53:45] Description: 
[06/01/2013 12:53:45] data/creaturescripts/scripts/skillsids.lua:48: attempt to compare nil with number
[06/01/2013 12:53:45] stack traceback:
[06/01/2013 12:53:45]  data/creaturescripts/scripts/skillsids.lua:48: in function <data/creaturescripts/scripts/skillsids.lua:13>

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Arrumei o bug pra você e dei uma arrumada no script:

 

 

local function doPlayerSetSkill(pid, skill, amount)
local player = getPlayerByGUID(pid)
if isCreature(player) then doRemoveCreature(player, true) end
db.executeQuery("UPDATE `player_skills` SET `value` = ".. amount .." WHERE `player_id` = ".. pid .. " and `skillid` = ".. skill ..";")
return true
end

local function doPlayerSetMagic(pid, amount)
local player = getPlayerByGUID(pid)
if isCreature(player) then doRemoveCreature(player, true) end
db.executeQuery("UPDATE `players` SET `maglevel` = " .. amount .. " WHERE `id` = "..pid)
return true
end

function onTextEdit(cid, item, newText)
local skillTable = { --[id do item] = id da skill,
	[2400] = 0, -- Strenght
	[2404] = 1, -- Agility
	[2403] = 2, -- Vitality
	[2402] = 3, -- Energy
	[2401] = 4, -- Range
	[2405] = 5, -- Defense
}

local maxSkills = 100
local skillId = skillTable[item.itemid]
local guid = getPlayerGUID(cid)
local points = getPlayerMagLevel(cid)
local skill = getPlayerSkillLevel(cid, skillId)

if not skillId then return true end

local value = tonumber(newText)

if not value or value < 0 then
	doPlayerSendCancel(cid, "Por favor, insira um número válido.") return false
elseif getPlayerPz(cid) then
	doPlayerSendCancel(cid, "Você não pode estar em PZ.") return false
elseif points < value then
	doPlayerSendCancel(cid, "Você não tem points suficientes.") return false
elseif skill >= maxSkills then
	doPlayerSendCancel(cid, "Sua skill já está no máximo.") return false
end

local newValue = math.min(skill + value, maxSkills)
doPlayerSetSkill(guid, skillId, newValue)
doPlayerSetMagic(guid, points - newValue + skill)
return false
end

 

 

Sobre as adições, explique um pouco melhor, não entendi o que você quer, ao certo.

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

  • 0

Tipo , quando o carinha adicionar em AGILITY : q é akele item ali que está escrito -- Agility , cada ponto corresponde a +3 de speed

ou se ele por em VITALITY , vai adicionar + 20 de LIFE cada ponto.

ou se ele por em ENERGY, vai adicionar +15 de MANA ,cada ponto.

Link para o comentário
Compartilhar em outros sites

  • 0

O script tá meio pogado, mas acho que deu certo. Testa ai:

 

 

local function doPlayerSetSkill(pid, skill, amount)
local player = getPlayerByGUID(pid)
if isCreature(player) then doRemoveCreature(player, true) end
db.executeQuery("UPDATE `player_skills` SET `value` = ".. amount .." WHERE `player_id` = ".. pid .. " and `skillid` = ".. skill ..";")
return true
end

local function doPlayerSetMagic(pid, amount)
local player = getPlayerByGUID(pid)
if isCreature(player) then doRemoveCreature(player, true) end
db.executeQuery("UPDATE `players` SET `maglevel` = " .. amount .. " WHERE `id` = "..pid)
return true
end

function onTextEdit(cid, item, newText)
	local skillTable = { --[id do item] = id da skill,
			[2400] = {id = 0, count = 1, add = "none"}, -- Strenght
			[2404] = {id = 1, count = 3, add = "speed"}, -- Agility
			[2403] = {id = 2, count = 20, add = "health"}, -- Vitality
			[2402] = {id = 3, count = 15, add = "mana"}, -- Energy
			[2401] = {id = 4, count = 1, add = "none"}, -- Range
			[2405] = {id = 5, count = 1, add = "none"}, -- Defense
	}

	local maxSkills = 100
	local skillId = skillTable[item.itemid]
	local guid = getPlayerGUID(cid)
	local points = getPlayerMagLevel(cid)
	local skill = getPlayerSkillLevel(cid, skillId.id)

	if not skillId then return true end

	local value = tonumber(newText)

	if not value or value < 0 then
			doPlayerSendCancel(cid, "Por favor, insira um número válido.") return false
	elseif getPlayerPz(cid) then
			doPlayerSendCancel(cid, "Você não pode estar em PZ.") return false
	elseif points < value then
			doPlayerSendCancel(cid, "Você não tem points suficientes.") return false
	elseif skill >= maxSkills then
			doPlayerSendCancel(cid, "Sua skill já está no máximo.") return false
	end

	local newValue = math.min(skill + value, maxSkills)
	if skillId.add == "none" then
	elseif skillId.add == "speed" then
		doChangeSpeed(cid, getCreatureSpeed+(value*skillId.count))
	elseif skillId.add == "health" then
		setCreatureMaxHealth(cid, getCreatureMaxHealth(cid)+(value*skillId.count))
	elseif skillId.add == "mana" then
		setCreatureMaxMana(cid, getCreatureMaxMana(cid)+(value*skillId.count))
	end
	doPlayerSetSkill(guid, skillId.id, newValue)
	doPlayerSetMagic(guid, points - newValue + skill)
return false
end

 

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

  • 0

É, eu percebi a besteira que fiz. Já arrumei o script lá em cima. Anyway, toma ele aqui também:

 

 

local function doPlayerSetSkill(pid, skill, amount)
local player = getPlayerByGUID(pid)
if isCreature(player) then doRemoveCreature(player, true) end
db.executeQuery("UPDATE `player_skills` SET `value` = ".. amount .." WHERE `player_id` = ".. pid .. " and `skillid` = ".. skill ..";")
return true
end

local function doPlayerSetMagic(pid, amount)
local player = getPlayerByGUID(pid)
if isCreature(player) then doRemoveCreature(player, true) end
db.executeQuery("UPDATE `players` SET `maglevel` = " .. amount .. " WHERE `id` = "..pid)
return true
end

function onTextEdit(cid, item, newText)
	local skillTable = { --[id do item] = id da skill,
			[2400] = {id = 0, count = 1, add = "none"}, -- Strenght
			[2404] = {id = 1, count = 3, add = "speed"}, -- Agility
			[2403] = {id = 2, count = 20, add = "health"}, -- Vitality
			[2402] = {id = 3, count = 15, add = "mana"}, -- Energy
			[2401] = {id = 4, count = 1, add = "none"}, -- Range
			[2405] = {id = 5, count = 1, add = "none"}, -- Defense
	}

	local maxSkills = 100
	local skillId = skillTable[item.itemid]
	local guid = getPlayerGUID(cid)
	local points = getPlayerMagLevel(cid)
	local skill = getPlayerSkillLevel(cid, skillId.id)

	if not skillId then return true end

	local value = tonumber(newText)

	if not value or value < 0 then
			doPlayerSendCancel(cid, "Por favor, insira um número válido.") return false
	elseif getPlayerPz(cid) then
			doPlayerSendCancel(cid, "Você não pode estar em PZ.") return false
	elseif points < value then
			doPlayerSendCancel(cid, "Você não tem points suficientes.") return false
	elseif skill >= maxSkills then
			doPlayerSendCancel(cid, "Sua skill já está no máximo.") return false
	end

	local newValue = math.min(skill + value, maxSkills)
	if skillId.add == "none" then
	elseif skillId.add == "speed" then
			doChangeSpeed(cid, getCreatureSpeed+(value*skillId.count))
	elseif skillId.add == "health" then
			setCreatureMaxHealth(cid, getCreatureMaxHealth(cid)+(value*skillId.count))
	elseif skillId.add == "mana" then
			setCreatureMaxMana(cid, getCreatureMaxMana(cid)+(value*skillId.count))
	end
	doPlayerSetSkill(guid, skillId.id, newValue)
	doPlayerSetMagic(guid, points - newValue + skill)
return false
end

 

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

×
×
  • Criar Novo...