Jump to content

Recommended Posts

.Qual servidor ou website você utiliza como base? 

 

OTX 3.1

 

Qual o motivo deste tópico? 

 

Tenho um sistema de compra de skills porem não esta limitando o comando e o player consegue comprar skills acima do permitido.

obs  quando usa o comando !comprar magiclevel funciona perfeito e limita os skills agora quando usa !comprar skillaxe, sword , club etc não esta limitando.

 

Está surgindo algum erro? Se sim coloque-o aqui. 

Citar

 

 

Você tem o código disponível? Se tiver publique-o aqui: 

SKILL_CLUB = "skill_club"
SKILL_DISTANCE = "skill_dist"
SKILL_SHIELD = "skill_shielding"
SKILL_MAGLEVEL = "maglevel"
SKILL_SWORD = "skill_sword"
SKILL_AXE = "skill_axe"
local coinID = 9971 -- moeda para comprar skills
local tb = {
["sd"] = {t= 1, bag = 5926, item= 2268, bag_quant = 2, price= 50, msg= "Parabéns você comprou 4k de SD com sucesso."},
["uh"] = {t= 1, bag = 2002, item= 2273, bag_quant = 3, price= 30, msg= "Parabéns você comprou 6k de UH com sucesso."},
["explo"] = {t= 1, bag = 2001, item= 2313, bag_quant = 3, price= 10, msg= "Parabéns você comprou 6k de Explosion com sucesso."},
["super divine axe"] = {t= 2, item = 8926, price= 60, msg= "Você comprou um super divine axe com sucesso."},
["super divine staff"] = {t= 2, item = 8922, price= 60, msg= "Você comprou um super divine staff com sucesso."},
["super divine club"] = {t= 2, item = 7423, price= 60, msg= "Você comprou um super divine club com sucesso."},
["super divine sword"] = {t= 2, item = 7403, price= 60, msg= "Você comprou um super divine sword com sucesso."},
["super divine crossbow"] = {t= 2, item = 8851, price= 60, msg= "Você comprou um super divine crossbow com sucesso."},
["livro nivel 6"] = {t= 2, item = 8921, price= 60, msg= "Você comprou um livro nivel 6 com sucesso."},
["vip10"] = {t= 3, days= 10, price= 5},
["vip30"] = {t= 3, days= 30, price= 10},
["magiclevel"] = {t= 4, vocations = {1, 5, 2, 6, 11, 12}, voc_msg= "Somente Sorcerers, Druids e Infernalists podem comprar magic level.", lim = 200, lim_msg = "Você não pode ter magic level acima de 200.", price= 3, incre = 1, skill = SKILL_MAGLEVEL},
["skillclub"] = {t= 5, vocations = {9, 10}, voc_msg= "Somente Drunous podem comprar skill de club.", lim = 350, price= 1, incre = 1, skill = SKILL_CLUB},
["skillsword"] = {t= 5, vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de sword.", lim = 350, price= 1, incre = 1, skill = SKILL_SWORD},
["skillaxe"] = {t=5 , vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de axe.", lim = 350, price= 1, incre = 1, skill = SKILL_AXE},
["skilldistance"] = {t= 5, vocations = {3, 7}, voc_msg= "Somente Paladins podem comprar skill de distance.", lim = 350, price= 1, incre = 1, skill = SKILL_DISTANCE},
["skillshielding"] = {t= 5, vocations = {3, 7, 4, 8, 9, 10}, voc_msg= "Somente Paladins, Knights e Drunous podem comprar skill de shield.", lim = 350, lim_msg = "Você não pode ter skill shielding acima de 350.", price= 1, incre = 1, skill = SKILL_SHIELD},
["magiclevel5"] = {t= 4, vocations = {1, 5, 2, 6, 11, 12}, voc_msg= "Somente Sorcerers, Druids e Infernalists podem comprar magic level.", lim = 200, lim_msg = "Você não pode ter magic level acima de 200.", price= 15, incre = 5, skill = SKILL_MAGLEVEL},
["skillclub10"] = {t= 5, vocations = {9, 10}, voc_msg= "Somente Drunous podem comprar skill de club.", lim = 350, price= 10, incre = 10, skill = SKILL_CLUB},
["skillsword10"] = {t= 5, vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de sword.", lim = 350, price= 10, incre = 10, skill = SKILL_SWORD},
["skillaxe10"] = {t=5 , vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de axe.", lim = 350, price= 10, incre = 10, skill = SKILL_AXE},
["skilldistance10"] = {t= 5, vocations = {3, 7}, voc_msg= "Somente Paladins podem comprar skill de distance.", lim = 350, price= 10, incre = 10, skill = SKILL_DISTANCE},
["skillshielding10"] = {t= 5, vocations = {3, 7, 4, 8, 9, 10}, voc_msg= "Somente Paladins, Knights e Drunous podem comprar skill de shield.", lim = 341, lim_msg = "Você não pode ter skill shielding acima de 350.", price= 10, incre = 10, skill = SKILL_SHIELD},
["removerfrag"] = {t= 6, price= 10},
}
local storage = 45611
function onSay(player, words, param)
local player = Player(player)
local pid = player:getGuid()
local tile = player:getTile()
local param = param:lower()
if not tile:hasFlag(TILESTATE_PROTECTIONZONE) then
player:sendCancelMessage("Você precisa está em área protegida para utilizar este comando.")
return true
end
if player:getStorageValue(storage) >= os.time() then
player:sendCancelMessage("Por medidas de segurança você só pode utilizar este comando em " .. player:getStorageValue(storage)-os.time() .. " segundos.")
return true
end

if param == "" then
player:popupFYI("Para comprar digite !comprar (nome do item)\nOpcoes:\nsd = 4000 em SD por 50 barras.\nuh = 6000 em UH por 40 barras.\nexplo = 6000 em explosion por 10 barras.\nvip10 = 10 dias de vip por 5 barras.\nvip30 = 30 dias de vip por 10 barras.\ndivine staff = divine staff por 30 barras.\ndivine axe = divine axe por 30 barras.\nlivro nivel 6 = livro nivel 6 por 60 barras.\ndivine club = divine club por 30 barras.\ndivine sword = divine sword por 30 barras.\ndivine crossbow = divine crossbow por 30 barras.\nlivro nivel 5 = livro nivel 5 por 30 barras.\nsuper divine axe = super divine axe por 60 barras.\nsuper divine club = super divine club por 60 barras.\nsuper divine sword = super divine sword por 60 barras.\nsuper divine staff = super divine staff por 60 barras.\nsuper divine crossbow = super divine crossbow por 60 barras.\nskillclub = adiciona 1 skill club por 1 barras.\nskillsword = adiciona 1 skill sword por 1 barras.\nskillaxe = adiciona 1 skill axe por 1 barras.\nskilldistance = adiciona 1 skill distance por 1 barras.\nskillshielding = adiciona 1 skill shielding por 1 barras.\nmagiclevel = adiciona 1 magic level por 3 barras.\nmagiclevel5 = adiciona 5 magic level por 15 barras.\nskillclub10 = adiciona 10 skills club por 10 barras.\nskillsword10 = adiciona 10 skills sword por 10 barras.\nskillaxe10 = adiciona 10 skills axe por 10 barras.\nskilldistance10 = adiciona 10 skill distance por 10 barras.\nskillshielding10 = adiciona 10 skill shielding por 10 barras.\nremoverfrag = remove todos frags por 100k.\nO Item desejado não existe em nosso stock. Veja a cima os detalhes dos items disponíveis.")
return true
end

for f, v in pairs(tb) do
if param == f then
if v.t == 1 then
if player:getItemCount(coinID) >= v.price then
local item_quant = (v.bag_quant * 2000)/100
for x = 1, v.bag_quant do
local bag = player:addItem(v.bag, 1)
for i = 1, item_quant do
bag:addItem(v.item, 100)
end
end
player:removeItem(coinID, v.price)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg)
player:setStorageValue(storage, os.time()+1)
break
else
player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
end
elseif v.t == 2 then
if player:getItemCount(coinID) >= v.price then
item = player:addItem(v.item, 1)
item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "Este item pode ser adquirido através do shopping. Adquirido dia " .. os.date("%d/%m/%Y - %X") .." por ".. player:getName() ..". Serial: ".. player:getGuid() ..".")
player:removeItem(coinID, v.price)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg)
player:setStorageValue(storage, os.time()+1)
break
else
player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
end
elseif v.t == 3 then
if player:getItemCount(coinID) >= v.price then
player:addPremiumDays(v.days)
player:removeItem(coinID, v.price)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns você comprou " .. v.days .. " dias de vip com sucesso.")
player:setStorageValue(storage, os.time()+1)
break
else
player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
end
elseif v.t == 4 then
if player:getBaseMagicLevel() >= v.lim then
player:sendCancelMessage(v.lim_msg)
return true
end
if not isInArray(v.vocations, player:getVocation():getId()) then
player:sendCancelMessage(v.voc_msg)
return true
end
if player:getItemCount(coinID) >= v.price then
player:removeItem(coinID, v.price)
player:setStorageValue(storage, os.time()+1)
player:remove()
db.query("UPDATE `players` SET `".. v.skill .. "` = `" .. v.skill .. "` + " .. v.incre .. " WHERE `id` = ".. pid)
else
player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
end
elseif v.t == 5 then
if not isInArray(v.vocations, player:getVocation():getId()) then
player:sendCancelMessage(v.voc_msg) return false
end
if player:getSkillLevel(v.skill) >= v.lim then
player:sendCancelMessage("Você não pode comprar esse skill.") return false
end
if player:getItemCount(coinID) >= v.price then
player:removeItem(coinID, v.price)
player:setStorageValue(storage, os.time()+1)
player:remove()
db.query("UPDATE `players` SET `".. v.skill .. "` = `" .. v.skill .. "` + " .. v.incre .. " WHERE `id` = ".. pid)
return true
else
player:sendCancelMessage("Você não possui a quantidade necessária para comprar.") return false
end
elseif v.t == 6 then
if player:getItemCount(2160) >= v.price then
player:removeItem(2160, v.price)
player:setSkull(SKULL_NONE)
player:setSkullTime(0)
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your skull and frags has been removed!")
player:setStorageValue(storage, os.time()+1)
db.query("UPDATE `player_deaths` SET `unjustified` = 0 WHERE `unjustified` = 1 AND `killed_by` = " .. db.escapeString(player:getName()))
else
player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
end
end
end
end

return false
end

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 

.

Link to post
Share on other sites

SKILL_CLUB = "skill_club"
SKILL_DISTANCE = "skill_dist"
SKILL_SHIELD = "skill_shielding"
SKILL_MAGLEVEL = "maglevel"
SKILL_SWORD = "skill_sword"
SKILL_AXE = "skill_axe"
local storage = 45611
local coinID = 9971 -- moeda para comprar skills

local runas = {
	["sd"] = {bag = 5926, item= 2268, bag_quant = 2, price= 50, msg= "Parabéns você comprou 4k de SD com sucesso."},
	["uh"] = {bag = 2002, item= 2273, bag_quant = 3, price= 30, msg= "Parabéns você comprou 6k de UH com sucesso."},
	["explo"] = {bag = 2001, item= 2313, bag_quant = 3, price= 10, msg= "Parabéns você comprou 6k de Explosion com sucesso."}
}
local itens = {
	["super divine axe"] = {item = 8926, price= 60, msg= "Você comprou um super divine axe com sucesso."},
	["super divine staff"] = {item = 8922, price= 60, msg= "Você comprou um super divine staff com sucesso."},
	["super divine club"] = {item = 7423, price= 60, msg= "Você comprou um super divine club com sucesso."},
	["super divine sword"] = {item = 7403, price= 60, msg= "Você comprou um super divine sword com sucesso."},
	["super divine crossbow"] = {item = 8851, price= 60, msg= "Você comprou um super divine crossbow com sucesso."},
	["livro nivel 6"] = {item = 8921, price= 60, msg= "Você comprou um livro nivel 6 com sucesso."}
}
local vip = {
	["vip10"] = {days= 10, price= 5},
	["vip30"] = {ays= 30, price= 10}
}
local skills = {
	["magiclevel"] = {vocations = {1, 5, 2, 6, 11, 12}, voc_msg= "Somente Sorcerers, Druids e Infernalists podem comprar magic level.", lim = 200, lim_msg = "Você não pode ter magic level acima de 200.", price= 3, incre = 1, skill = SKILL_MAGLEVEL},
	["skillclub"] = {vocations = {9, 10}, voc_msg= "Somente Drunous podem comprar skill de club.", lim = 350, price= 1, incre = 1, skill = SKILL_CLUB},
	["skillsword"] = {vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de sword.", lim = 350, price= 1, incre = 1, skill = SKILL_SWORD},
	["skillaxe"] = {vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de axe.", lim = 350, price= 1, incre = 1, skill = SKILL_AXE},
	["skilldistance"] = {vocations = {3, 7}, voc_msg= "Somente Paladins podem comprar skill de distance.", lim = 350, price= 1, incre = 1, skill = SKILL_DISTANCE},
	["skillshielding"] = {vocations = {3, 7, 4, 8, 9, 10}, voc_msg= "Somente Paladins, Knights e Drunous podem comprar skill de shield.", lim = 350, lim_msg = "Você não pode ter skill shielding acima de 350.", price= 1, incre = 1, skill = SKILL_SHIELD},
}

local frags = {
	["removerfrag"] = {t= 6, price= 10}
}

function onSay(player, words, param)
	local player = Player(player)
	local pid = player:getGuid()
	local tile = player:getTile()
	local param = param:lower()	
	if not tile:hasFlag(TILESTATE_PROTECTIONZONE) then
		player:sendCancelMessage("Você precisa está em área protegida para utilizar este comando.")
		return true
	end	
	if player:getStorageValue(storage) >= os.time() then
		player:sendCancelMessage("Por medidas de segurança você só pode utilizar este comando em " .. player:getStorageValue(storage)-os.time() .. " segundos.")
		return true
	end
	if param == "" then
		player:popupFYI("Para comprar digite !comprar (nome do item)\nOpcoes:\nsd = 4000 em SD por 50 barras.\nuh = 6000 em UH por 40 barras.\nexplo = 6000 em explosion por 10 barras.\nvip10 = 10 dias de vip por 5 barras.\nvip30 = 30 dias de vip por 10 barras.\ndivine staff = divine staff por 30 barras.\ndivine axe = divine axe por 30 barras.\nlivro nivel 6 = livro nivel 6 por 60 barras.\ndivine club = divine club por 30 barras.\ndivine sword = divine sword por 30 barras.\ndivine crossbow = divine crossbow por 30 barras.\nlivro nivel 5 = livro nivel 5 por 30 barras.\nsuper divine axe = super divine axe por 60 barras.\nsuper divine club = super divine club por 60 barras.\nsuper divine sword = super divine sword por 60 barras.\nsuper divine staff = super divine staff por 60 barras.\nsuper divine crossbow = super divine crossbow por 60 barras.\nskillclub = adiciona 1 skill club por 1 barras.\nskillsword = adiciona 1 skill sword por 1 barras.\nskillaxe = adiciona 1 skill axe por 1 barras.\nskilldistance = adiciona 1 skill distance por 1 barras.\nskillshielding = adiciona 1 skill shielding por 1 barras.\nmagiclevel = adiciona 1 magic level por 3 barras.\nmagiclevel5 = adiciona 5 magic level por 15 barras.\nskillclub10 = adiciona 10 skills club por 10 barras.\nskillsword10 = adiciona 10 skills sword por 10 barras.\nskillaxe10 = adiciona 10 skills axe por 10 barras.\nskilldistance10 = adiciona 10 skill distance por 10 barras.\nskillshielding10 = adiciona 10 skill shielding por 10 barras.\nremoverfrag = remove todos frags por 100k.\nO Item desejado não existe em nosso stock. Veja a cima os detalhes dos items disponíveis.")
		return true
	end
	if runas[param] then
		local v = runas[param]
		if player:getItemCount(coinID) >= v.price then
			local item_quant = (v.bag_quant * 2000)/100
			for x = 1, v.bag_quant do
				local bag = player:addItem(v.bag, 1)
				for i = 1, item_quant do
					bag:addItem(v.item, 100)
				end
			end
			player:removeItem(coinID, v.price)
			player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg)
			player:setStorageValue(storage, os.time()+1)
		else
			player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
		end
		return true
	end
	if itens[param] then
		local v = itens[param]
		if player:getItemCount(coinID) >= v.price then
			item = player:addItem(v.item, 1)
			item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "Este item pode ser adquirido através do shopping. Adquirido dia " .. os.date("%d/%m/%Y - %X") .." por ".. player:getName() ..". Serial: ".. player:getGuid() ..".")
			player:removeItem(coinID, v.price)
			player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg)
			player:setStorageValue(storage, os.time()+1)
		else
			player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
		end
		return true
	end
	if vip[param] then
		local v = vip[param]
		if player:getItemCount(coinID) >= v.price then
			player:addPremiumDays(v.days)
			player:removeItem(coinID, v.price)
			player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns você comprou " .. v.days .. " dias de vip com sucesso.")
			player:setStorageValue(storage, os.time()+1)
		else
			player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
		end
		return true
	end	
	if skills[param] then
		local v = skills[param]
		if param == "magiclevel" and player:getBaseMagicLevel() >= v.lim or (player:getBaseMagicLevel() + v.incre ) >= v.lim then
			player:sendCancelMessage(v.lim_msg) return true
		elseif player:getSkillLevel(v.skill) >= v.lim or (player:getSkillLevel(v.skill) + v.incre ) >= v.lim then
			player:sendCancelMessage(v.lim_msg) return true			
		end
		if not isInArray(v.vocations, player:getVocation():getId()) then
			player:sendCancelMessage(v.voc_msg)
			return true
		end
		if player:getItemCount(coinID) >= v.price then
			player:removeItem(coinID, v.price)
			player:setStorageValue(storage, os.time()+1)
			player:remove()
			db.query("UPDATE players SET ".. v.skill .. " = " .. v.skill .. " + " .. v.incre .. " WHERE id = ".. pid)
		else
			player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
		end
		return true
	end
	if frags[param] then
		local v = frags[param]
		if player:getItemCount(2160) >= v.price then
			player:removeItem(2160, v.price)
			player:setSkull(SKULL_NONE)
			player:setSkullTime(0)
			player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
			player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your skull and frags has been removed!")
			player:setStorageValue(storage, os.time()+1)
			db.query("UPDATE player_deaths SET unjustified = 0 WHERE unjustified = 1 AND killed_by = " .. db.escapeString(player:getName()))
		else
			player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
		end
		return true
	end
	return true
end

 

Link to post
Share on other sites

9 horas atrás, Shiuns disse:

SKILL_CLUB = "skill_club"
SKILL_DISTANCE = "skill_dist"
SKILL_SHIELD = "skill_shielding"
SKILL_MAGLEVEL = "maglevel"
SKILL_SWORD = "skill_sword"
SKILL_AXE = "skill_axe"
local storage = 45611
local coinID = 9971 -- moeda para comprar skills

local runas = {
	["sd"] = {bag = 5926, item= 2268, bag_quant = 2, price= 50, msg= "Parabéns você comprou 4k de SD com sucesso."},
	["uh"] = {bag = 2002, item= 2273, bag_quant = 3, price= 30, msg= "Parabéns você comprou 6k de UH com sucesso."},
	["explo"] = {bag = 2001, item= 2313, bag_quant = 3, price= 10, msg= "Parabéns você comprou 6k de Explosion com sucesso."}
}
local itens = {
	["super divine axe"] = {item = 8926, price= 60, msg= "Você comprou um super divine axe com sucesso."},
	["super divine staff"] = {item = 8922, price= 60, msg= "Você comprou um super divine staff com sucesso."},
	["super divine club"] = {item = 7423, price= 60, msg= "Você comprou um super divine club com sucesso."},
	["super divine sword"] = {item = 7403, price= 60, msg= "Você comprou um super divine sword com sucesso."},
	["super divine crossbow"] = {item = 8851, price= 60, msg= "Você comprou um super divine crossbow com sucesso."},
	["livro nivel 6"] = {item = 8921, price= 60, msg= "Você comprou um livro nivel 6 com sucesso."}
}
local vip = {
	["vip10"] = {days= 10, price= 5},
	["vip30"] = {ays= 30, price= 10}
}
local skills = {
	["magiclevel"] = {vocations = {1, 5, 2, 6, 11, 12}, voc_msg= "Somente Sorcerers, Druids e Infernalists podem comprar magic level.", lim = 200, lim_msg = "Você não pode ter magic level acima de 200.", price= 3, incre = 1, skill = SKILL_MAGLEVEL},
	["skillclub"] = {vocations = {9, 10}, voc_msg= "Somente Drunous podem comprar skill de club.", lim = 350, price= 1, incre = 1, skill = SKILL_CLUB},
	["skillsword"] = {vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de sword.", lim = 350, price= 1, incre = 1, skill = SKILL_SWORD},
	["skillaxe"] = {vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de axe.", lim = 350, price= 1, incre = 1, skill = SKILL_AXE},
	["skilldistance"] = {vocations = {3, 7}, voc_msg= "Somente Paladins podem comprar skill de distance.", lim = 350, price= 1, incre = 1, skill = SKILL_DISTANCE},
	["skillshielding"] = {vocations = {3, 7, 4, 8, 9, 10}, voc_msg= "Somente Paladins, Knights e Drunous podem comprar skill de shield.", lim = 350, lim_msg = "Você não pode ter skill shielding acima de 350.", price= 1, incre = 1, skill = SKILL_SHIELD},
}

local frags = {
	["removerfrag"] = {t= 6, price= 10}
}

function onSay(player, words, param)
	local player = Player(player)
	local pid = player:getGuid()
	local tile = player:getTile()
	local param = param:lower()	
	if not tile:hasFlag(TILESTATE_PROTECTIONZONE) then
		player:sendCancelMessage("Você precisa está em área protegida para utilizar este comando.")
		return true
	end	
	if player:getStorageValue(storage) >= os.time() then
		player:sendCancelMessage("Por medidas de segurança você só pode utilizar este comando em " .. player:getStorageValue(storage)-os.time() .. " segundos.")
		return true
	end
	if param == "" then
		player:popupFYI("Para comprar digite !comprar (nome do item)\nOpcoes:\nsd = 4000 em SD por 50 barras.\nuh = 6000 em UH por 40 barras.\nexplo = 6000 em explosion por 10 barras.\nvip10 = 10 dias de vip por 5 barras.\nvip30 = 30 dias de vip por 10 barras.\ndivine staff = divine staff por 30 barras.\ndivine axe = divine axe por 30 barras.\nlivro nivel 6 = livro nivel 6 por 60 barras.\ndivine club = divine club por 30 barras.\ndivine sword = divine sword por 30 barras.\ndivine crossbow = divine crossbow por 30 barras.\nlivro nivel 5 = livro nivel 5 por 30 barras.\nsuper divine axe = super divine axe por 60 barras.\nsuper divine club = super divine club por 60 barras.\nsuper divine sword = super divine sword por 60 barras.\nsuper divine staff = super divine staff por 60 barras.\nsuper divine crossbow = super divine crossbow por 60 barras.\nskillclub = adiciona 1 skill club por 1 barras.\nskillsword = adiciona 1 skill sword por 1 barras.\nskillaxe = adiciona 1 skill axe por 1 barras.\nskilldistance = adiciona 1 skill distance por 1 barras.\nskillshielding = adiciona 1 skill shielding por 1 barras.\nmagiclevel = adiciona 1 magic level por 3 barras.\nmagiclevel5 = adiciona 5 magic level por 15 barras.\nskillclub10 = adiciona 10 skills club por 10 barras.\nskillsword10 = adiciona 10 skills sword por 10 barras.\nskillaxe10 = adiciona 10 skills axe por 10 barras.\nskilldistance10 = adiciona 10 skill distance por 10 barras.\nskillshielding10 = adiciona 10 skill shielding por 10 barras.\nremoverfrag = remove todos frags por 100k.\nO Item desejado não existe em nosso stock. Veja a cima os detalhes dos items disponíveis.")
		return true
	end
	if runas[param] then
		local v = runas[param]
		if player:getItemCount(coinID) >= v.price then
			local item_quant = (v.bag_quant * 2000)/100
			for x = 1, v.bag_quant do
				local bag = player:addItem(v.bag, 1)
				for i = 1, item_quant do
					bag:addItem(v.item, 100)
				end
			end
			player:removeItem(coinID, v.price)
			player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg)
			player:setStorageValue(storage, os.time()+1)
		else
			player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
		end
		return true
	end
	if itens[param] then
		local v = itens[param]
		if player:getItemCount(coinID) >= v.price then
			item = player:addItem(v.item, 1)
			item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "Este item pode ser adquirido através do shopping. Adquirido dia " .. os.date("%d/%m/%Y - %X") .." por ".. player:getName() ..". Serial: ".. player:getGuid() ..".")
			player:removeItem(coinID, v.price)
			player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg)
			player:setStorageValue(storage, os.time()+1)
		else
			player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
		end
		return true
	end
	if vip[param] then
		local v = vip[param]
		if player:getItemCount(coinID) >= v.price then
			player:addPremiumDays(v.days)
			player:removeItem(coinID, v.price)
			player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns você comprou " .. v.days .. " dias de vip com sucesso.")
			player:setStorageValue(storage, os.time()+1)
		else
			player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
		end
		return true
	end	
	if skills[param] then
		local v = skills[param]
		if param == "magiclevel" and player:getBaseMagicLevel() >= v.lim or (player:getBaseMagicLevel() + v.incre ) >= v.lim then
			player:sendCancelMessage(v.lim_msg) return true
		elseif player:getSkillLevel(v.skill) >= v.lim or (player:getSkillLevel(v.skill) + v.incre ) >= v.lim then
			player:sendCancelMessage(v.lim_msg) return true			
		end
		if not isInArray(v.vocations, player:getVocation():getId()) then
			player:sendCancelMessage(v.voc_msg)
			return true
		end
		if player:getItemCount(coinID) >= v.price then
			player:removeItem(coinID, v.price)
			player:setStorageValue(storage, os.time()+1)
			player:remove()
			db.query("UPDATE players SET ".. v.skill .. " = " .. v.skill .. " + " .. v.incre .. " WHERE id = ".. pid)
		else
			player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
		end
		return true
	end
	if frags[param] then
		local v = frags[param]
		if player:getItemCount(2160) >= v.price then
			player:removeItem(2160, v.price)
			player:setSkull(SKULL_NONE)
			player:setSkullTime(0)
			player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
			player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your skull and frags has been removed!")
			player:setStorageValue(storage, os.time()+1)
			db.query("UPDATE player_deaths SET unjustified = 0 WHERE unjustified = 1 AND killed_by = " .. db.escapeString(player:getName()))
		else
			player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
		end
		return true
	end
	return true
end

 

Obrigado em man sem palavras deu certo! 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By Khallmyr
      .Qual servidor ou website você utiliza como base? 
       
      Qual o motivo deste tópico? 
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       




    • By elielder
      .Qual servidor ou website você utiliza como base? 
      rev 3777 0.4 8.60
      Qual o motivo deste tópico? 
      galera estou com problema nesse evento, ele esta enviando para a posição x=0 y=0 z=0. em vez de ir para a correta, não sei mais oq fazer.
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
       <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Fire Storm Event" version="8.6" author="Vodkart" contact="" enabled="yes"> <config name="fire_config"><![CDATA[ Fire = { storages = {172354, 172355}, -- storage Count players = {min = 2, max = 50}, -- min, max players no evento minLevel = 20, -- level minimo para entrar no event rewards = {{2160,10},{12504,1}}, -- premios que vai receber timeToStartEvent = 30, -- segundos para começar o evento CheckTime = 5, -- time to check event teleport = {{x = 1027, y = 891, z = 7}, {x = 1030, y = 568, z = 7}}, -- posição do teleport, posição para onde o jogador vai arena = {{x = 1004, y = 540, z = 7},{x = 1066, y = 594, z = 7}} -- posição começo e final da area } Fire_Days = { ["Monday"] = {"13:00","18:00","20:00","22:00"}, ["Tuesday"] = {"09:26","14:29","20:00","22:00"}, ["Wednesday"] = {"14:29","18:00","20:00","22:00"}, ["Thursday"] = {"13:00","18:00","20:00","22:00"}, ["Friday"] = {"13:00","18:00","20:00","22:00"}, ["Saturday"] = {"13:00","18:00","20:00","22:00"}, ["Sunday"] = {"13:00","18:00","20:00","22:00"} } function removeFireTp() local t = getTileItemById(Fire.teleport[1], 1387).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(Fire.teleport[1], CONST_ME_POFF) end function ZerarStorFire() setGlobalStorageValue(Fire.storages[1], 0) setGlobalStorageValue(Fire.storages[2], 0) end function getPlayersInFireEvent() local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), Fire.arena[1], Fire.arena[2]) then t[#t+1] = pid end end return t end function getFireRewards(cid, items) local backpack = doPlayerAddItem(cid, 1995, 1) -- backpackID for _, i_i in ipairs(items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(backpack, item, amount) else for i = 1, amount do doAddContainerItem(backpack, item, 1) end end end end function doFireInArea(n) if #getPlayersInFireEvent() > 1 then for i = 1, n do local pos = {x=math.random(Fire.arena[1].x, Fire.arena[2].x), y=math.random(Fire.arena[1].y,Fire.arena[2].y), z=Fire.arena[1].z} local m = getTopCreature(pos).uid doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA) if m ~= 0 and isPlayer(m) then doSendMagicEffect(getCreaturePosition(m), CONST_ME_FIREAREA) doCreatureSay(m, "Ooh Burn Burn", TALKTYPE_ORANGE_1) local corpse = doCreateItem(3058, 1, getPlayerPosition(m)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(m) .. ". He was killed by Fire Field.") doSendMagicEffect(getPlayerPosition(m), CONST_ME_POFF) doTeleportThing(m, getTownTemplePosition(getPlayerTown(m))) doPlayerSendTextMessage(m, MESSAGE_EVENT_ADVANCE, "[Fire Storm Event] You died burned out.") end end local x = 2700-(200*n) addEvent(doFireInArea, x <= 0 and 500 or x, n+1) elseif #getPlayersInFireEvent() == 1 then local cid = getPlayersInFireEvent()[1] doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) getFireRewards(cid, Fire.rewards) doBroadcastMessage("Fire Storm Event terminou. O vencedor é ".. getCreatureName(cid).. ". Parabéns.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() else doBroadcastMessage("Ninguém ganhou o evento Fire Storm.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() end end function CheckFireEvent(delay) if getGlobalStorageValue(Fire.storages[1]) ~= (Fire.players.max+1) then if delay > 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.max then doBroadcastMessage("[Fire Stortm Event] Começando em " .. delay .. " minuto! O teleporte será fechado quando o evento começar!", MESSAGE_STATUS_WARNING) elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.min then for _, cid in pairs(getPlayersInFireEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end removeFireTp() doBroadcastMessage("O evento Fire Storm não pôde começar devido a poucos jogadores participantes.\n Pelo menos " .. Fire.players.min .. " jogadores é necessário!", MESSAGE_STATUS_WARNING) ZerarStorFire() elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) >= Fire.players.min then removeFireTp() doBroadcastMessage("Boa sorte! O evento começará em "..Fire.timeToStartEvent.." segundos. prepare-se!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end addEvent(CheckFireEvent, 60000, delay-1) end end ]]></config> <globalevent name="Storm_Fire_Start" interval="60000" event="script"><![CDATA[ domodlib('fire_config') function onThink(interval, lastExecution) if Fire_Days[os.date("%A")] then local hrs = tostring(os.date("%X")):sub(1, 5) if isInArray(Fire_Days[os.date("%A")], hrs) and getGlobalStorageValue(Fire.storages[2]) <= 0 then local tp = doCreateItem(1387, 1, Fire.teleport[1]) doItemSetAttribute(tp, "aid", 45111) CheckFireEvent(Fire.CheckTime) setGlobalStorageValue(Fire.storages[1], 0) end end return true end]]></globalevent> <event type="login" name="Storm_Fire_Login" event="script"><![CDATA[ domodlib('fire_config') function onLogin(cid) registerCreatureEvent(cid, "FireStormBatle") if isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true end]]></event> <event type="combat" name="FireStormBatle" event="script"><![CDATA[ domodlib('fire_config') if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doPlayerSendCancel(cid, "Você não pode atacar este jogador.") return false end return true ]]></event> <movevent type="StepIn" actionid ="45111" event="script"><![CDATA[ domodlib('fire_config') function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, Fire.teleport[2]) end if getPlayerLevel(cid) < Fire.minLevel then doTeleportThing(cid, fromPosition, true) doPlayerSendCancel(cid, "Você precisa estar pelo menos nivel " .. Fire.minLevel .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end if getGlobalStorageValue(Fire.storages[1]) <= Fire.players.max then doTeleportThing(cid, Fire.teleport[2]) setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) doBroadcastMessage(getPlayerName(cid) .. " entrou no evento Fire Storm! Atualmente" .. getGlobalStorageValue(Fire.storages[1]) .. " jogadores se juntaram!", MESSAGE_STATUS_CONSOLE_RED) if getGlobalStorageValue(Fire.storages[1]) == Fire.players.max then setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) removeFireTp() doBroadcastMessage("O evento começará em "..Fire.timeToStartEvent.." segundos. prepare-se!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end end return true end]]></movevent> <talkaction words="/firestart;!firestart" access="5" event="buffer"><![CDATA[ domodlib('fire_config') if getGlobalStorageValue(Fire.storages[2]) > 0 then doPlayerSendCancel(cid, "O evento já está começando.") return true elseif not param or not tonumber(param) then doPlayerSendCancel(cid, "Use only numbers.") return true end local param = tonumber(param) <= 0 and 1 or tonumber(param) local tp = doCreateItem(1387, 1, Fire.teleport[1]) doItemSetAttribute(tp, "aid", 45111) CheckFireEvent(tonumber(param)) setGlobalStorageValue(Fire.storages[1], 0) setGlobalStorageValue(Fire.storages[2], 1) ]]></talkaction> <globalevent name="FireDebug-Start" type="start" event="buffer"><![CDATA[ domodlib('fire_config') ZerarStorFire() return true]]></globalevent> </mod>  
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • By amoxicilina
      Estou usando o servidor Pokemasterx
       Estou criando este tópico no intuito de uma ajuda "tutorial" de como fazer pra compilar as  soucer do servidor "pokemasterx"
       No Visual studio, versão TFS 0.3.6 o erro e não saber como prosseguir.  Link das soucer espero que a comunidade possa me ajudar, sei que muitas pessoas aqui na comunidade tbm estão querendo saber como compilar elas.
       
      Agradeço a atenção de todos.
    • By elielder
      .Qual servidor ou website você utiliza como base? 
      rev 3996 8.60 0.4
      Qual o motivo deste tópico? 
      Estou com um bug no meu servidor, ao entrar em tiles criados por eventos (1387) com actionid, os players em vez de ir pra posição correta eles estao indo pra posição x=0 y=0 z=0. e isso ocorre em todos eventos. me ajuda por favor. uso rev 3996 8.60 0.4

      Pelo oque eu entendi, ao ser criado o teleporte ele não ganha as posições setadas pelo evento e acaba sendo criado com as posições 0.

      https://prnt.sc/11n2whu
    • By elielder
      .Qual servidor ou website você utiliza como base? 
      Rev 3996 8.60 0.4
      Qual o motivo deste tópico? 
      Eu estou tentando usar o Event Rush event . mod , mas ele não teleporta após termino do evento.
      Não aparece nenhum erro na distro.
       
      Você tem o código disponível? Se tiver publique-o aqui:
       
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo