JO
erro

ERROR SCRIPT !COMPRAR

Por JonatasLucasf, 22 de abr. de 2015 em Scripts

resolvido
script
22
2.8k
FurabioF
03 de maio de 2015 às 15:56
Melhor resposta

Desculpe a demora, estive ocupado esses dias, como prometido, testei e está funcionando 100% :

 

#edit 16:02 :

SKILL_CLUB = "skill_club"
SKILL_DISTANCE = "skill_dist"
SKILL_SHIELD = "skill_shielding"
SKILL_MAGLEVEL = "maglevel"
SKILL_SWORD = "skill_sword"
SKILL_AXE = "skill_axe"

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, 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 = 350, price= 10, incre = 10, skill = SKILL_SHIELD},
	["removerfrag"] = {t= 6, price= 10},
}

local storage = 45611

function onSay(player, words, param)

	local pid = player:getGuid()
	local tile = player:getTile()



	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(9971) >= 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(9971, v.price)
					player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg)
					player:setStorageValue(storage, os.time()+30)
					break
				else
					player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
				end
			elseif v.t == 2 then
				if player:getItemCount(9971) >= 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(9971, v.price)
					player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg)
					player:setStorageValue(storage, os.time()+30)
					break
				else
					player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
				end
			elseif v.t == 3 then
				if player:getItemCount(9971) >= v.price then
					player:addPremiumDays(v.days)
					player:removeItem(9971, v.price)
					player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns você comprou " .. v.days .. " dias de vip com sucesso.")
					player:setStorageValue(storage, os.time()+30)
					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(9971) >= v.price then
					player:removeItem(9971, v.price)
					player:setStorageValue(storage, os.time()+30)
					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 player:getSkillLevel(v.skill) >= v.lim then
					player:sendCancelMessage("Você não pode ter skill acima de ".. v.lim .. ".")
					return true
				end

				if not isInArray(v.vocations, player:getVocation():getId()) then
					player:sendCancelMessage(v.voc_msg)
					return true
				end

				if player:getItemCount(9971) >= v.price then
					player:removeItem(9971, v.price)
					player:setStorageValue(storage, os.time()+30)
					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 == 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()+30)
					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

Editado Maio 3 por ScreaM

04 de maio de 2015 às 14:24

 

Desculpe a demora, estive ocupado esses dias, como prometido, testei e está funcionando 100% :

 

#edit 16:02 :

SKILL_CLUB = "skill_club"
SKILL_DISTANCE = "skill_dist"
SKILL_SHIELD = "skill_shielding"
SKILL_MAGLEVEL = "maglevel"
SKILL_SWORD = "skill_sword"
SKILL_AXE = "skill_axe"

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, 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 = 350, price= 10, incre = 10, skill = SKILL_SHIELD},
	["removerfrag"] = {t= 6, price= 10},
}

local storage = 45611

function onSay(player, words, param)

	local pid = player:getGuid()
	local tile = player:getTile()



	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(9971) >= 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(9971, v.price)
					player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg)
					player:setStorageValue(storage, os.time()+30)
					break
				else
					player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
				end
			elseif v.t == 2 then
				if player:getItemCount(9971) >= 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(9971, v.price)
					player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg)
					player:setStorageValue(storage, os.time()+30)
					break
				else
					player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
				end
			elseif v.t == 3 then
				if player:getItemCount(9971) >= v.price then
					player:addPremiumDays(v.days)
					player:removeItem(9971, v.price)
					player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns você comprou " .. v.days .. " dias de vip com sucesso.")
					player:setStorageValue(storage, os.time()+30)
					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(9971) >= v.price then
					player:removeItem(9971, v.price)
					player:setStorageValue(storage, os.time()+30)
					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 player:getSkillLevel(v.skill) >= v.lim then
					player:sendCancelMessage("Você não pode ter skill acima de ".. v.lim .. ".")
					return true
				end

				if not isInArray(v.vocations, player:getVocation():getId()) then
					player:sendCancelMessage(v.voc_msg)
					return true
				end

				if player:getItemCount(9971) >= v.price then
					player:removeItem(9971, v.price)
					player:setStorageValue(storage, os.time()+30)
					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 == 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()+30)
					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

obrigado estou testando até agora 100% qualquer erro te falohappy.png

FurabioF
04 de maio de 2015 às 21:52

Tópico movido para a seção de dúvidas e pedidos resolvidos.

3 semanas depois...
22 de maio de 2015 às 00:05

Tópico movido para a seção de dúvidas e pedidos resolvidos.

desculpa por isso mais os jogadores do meu OT JÁ ESTÁ COM SKILLS 900 DE TANTO COMPRAR O SCRIPT TA SEM LIMITE O CERTO SERIA MAXIMO 350 DE CLUB, SHIELD,DISTANCE,SWORD ETC, SÓ O ML QUE TA CERTO O RESTO TA BUGADO, PODE COMPRAR ILIMITADO, SE PODER ME AJUDAR AGRADEÇO DA UMA OLHADA PRA VOCÊ VER http://cronosbr.sytes.net/?subtopic=highscores&list=club TIPO TALVEZ PODE TER FALTADO ESSAS LINHAS if getPlayerSkillLevel(cid, SKILL_CLUB) >= 350 then MAIS NÃO SEI DA UMA OLHADA AI FAZENDO FAVOR ESTOU PRECISANDO URGENTE

FurabioF
22 de maio de 2015 às 16:27

Eu já tinha adicionado a verificação no script :

                                if player:getSkillLevel(v.skill) >= v.lim then
					player:sendCancelMessage("Você não pode ter skill acima de ".. v.lim .. ".")
					return true
				end

Quando eu tinha testado estava funcionando normalmente, depois quando eu chegar em casa vou ver o que faço.

 

 

You see!~

22 de maio de 2015 às 17:02

Eu já tinha adicionado a verificação no script :

                                if player:getSkillLevel(v.skill) >= v.lim then
					player:sendCancelMessage("Você não pode ter skill acima de ".. v.lim .. ".")
					return true
				end

Quando eu tinha testado estava funcionando normalmente, depois quando eu chegar em casa vou ver o que faço.

 

 

You see!~

ok fico no aguardo.

2 semanas depois...
31 de maio de 2015 às 14:01

@UP


@UP


@UP ALGUÉM AJUDA AI PRECISANDO URGENTE :p