Ir para conteúdo

Featured Replies

Postado

Boa noite, o meu cassino funciona perfeitamente bem, exceto por uma coisa:

 

Como o script recria os itens ao rodar, o que eu coloquei no map editor não conta, em caso de clean as peças são removidas e, ao usar a alavanca sem nenhum item, dá o seguinte erro na console:

 

2022-07-04 20:43:03 -  [Error - Action Interface]
2022-07-04 20:43:03 -  data/actions/scripts/cassino.lua:onUse
2022-07-04 20:43:03 -  Description:
2022-07-04 20:43:03 -  (luaDoRemoveItem) Item not found
 

Mas ai ele sorteia novamente. Conseguimos suprimir o erro na console?

@Vodkart@xWhiteWolf

  • Respostas 29
  • Visualizações 4.8k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • a questão agora é entender  pq q qnd vc bota uma bola embaixo ele tá criando ao invés de transformar.. tem ctza absoluta que tu não colocou duas uma em cima da outra?   o id é 1548

Postado
Em 04/07/2022 em 20:50, Bruno Rezende disse:

Mas ai ele sorteia novamente. Conseguimos suprimir o erro na console?

coloca um getTileItemById(pos, item.itemid).uid pra checar se existe item no local, ou até um getThingFromPos(pos).itemid, faz um if checando se há algo, se for maior que 0
ai chama o doRemove, se não, não chama

Editado por FeeTads (veja o histórico de edições)

Postado
1 minuto atrás, FeeTads disse:

coloca um getTileItemById(pos, item.itemid).uid pra checar se existe item no local, ou até um getThingFromPos(pos), faz um if checando se há algo, se for maior que 0
ai chama o doRemove, se não, não chama

Não tenho experiência pra fazer essa edição no código da maneira correta, poderia me mostrar por favor?

 

Meu código do cassino:

 

local config = {
leverid = 1945, -- id da alavanca
transformedid = 1946, -- id da alavanca ao clicar nela
moneyPos = {x = 121, y = 37, z = 6}, -- posicao que vai o dinheiro
delay = 200, -- esse delay e o tempo que demora entre cada shuffle
shuffle = 5, -- quantidade de shuffles por cada peça, lembre que a ultima peça vai rodar 3 * shuffle entao evite valores grandes)
multiplier = 2, -- por quanto multiplica o dinheiro apostado
effect = 27
}

local pieces = { -- POSICOES DE CADA PEÇA.
	[1] = {x = 120, y = 36, z = 6},
	[2] = {x = 120, y = 37, z = 6},
	[3] = {x = 120, y = 38, z = 6}
}

local function shuffle(id, times, final, pos) -- funcao que rotaciona a peca
	local item = getTileItemById(pos, id)
	if item and times > 0 then		
		doRemoveItem(item.uid)
		doCreateItem(id == 2638 and 2639 or 2638, 1, pos)
		addEvent(shuffle, config.delay, id == 2638 and 2639 or 2638, times - 1, final, pos)
	else 
		local nid = id
		if item and id ~= final then
			doRemoveItem(item.uid)
			doCreateItem(final, 1, pos)
			nid = final
		end
		if times == 0 then
			addEvent(shuffle, config.delay * config.shuffle * #pieces + config.delay * 10, nid, -1, 2639, pos)
		end
		doSendMagicEffect(pos, math.abs(final - 2638))		
	end
end

local function premiateWinner(uid, money, eff, result)
	if isPlayer(uid) then
		if result[1] == result[2] and result[2] == result[3] then
			doPlayerAddMoney(uid, money * config.multiplier)
			doSendMagicEffect(getCreaturePosition(uid), eff)
			doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, "[CASSINO] You won ".. money * config.multiplier .." gold coins. Congratulations!")
		else
			doSendMagicEffect(getCreaturePosition(uid), CONST_ME_POFF)
			doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, "[CASSINO] You lost. Better luck next time.")
		end
	end
end	

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if item.itemid == config.leverid then
		local pc = getTileItemById(config.moneyPos, 2152)
		local cc = getTileItemById(config.moneyPos, 2160)
		local money = 0
		if pc and pc.type > 0 then
			money = money + pc.type * 100
			doRemoveItem(pc.uid)
		end
		if cc and cc.type > 0 then
			money = money + cc.type * 10000
			doRemoveItem(cc.uid)
		end
		if money >= 100 then
			doTransformItem(item.uid, config.transformedid)
			local pos = fromPosition
			addEvent(function()
				local lever = getTileItemById(pos, config.transformedid)
				if lever and lever.uid > 0 then
					doTransformItem(lever.uid, config.leverid)
				end
			end, (config.delay * #pieces) * (config.shuffle + 10))
			local result = {}
			for i = 1, #pieces do
				local id = 2639
				result[i] = math.random(0, 1)
				shuffle(id, config.shuffle * i, result[i] + 2638, pieces[i])
			end			
			addEvent(premiateWinner, config.delay * #pieces * config.shuffle, cid, money, config.effect, result)
		else
			doPlayerSendCancel(cid, "You need to place your offer. The minimum offer is 1 platinum coin.")
		end
	else
		doPlayerSendCancel(cid, "You need to wait the turn end to bet again.")
	end	
return true
end

 

Postado
4 minutos atrás, Bruno Rezende disse:

Não tenho experiência pra fazer essa edição no código da maneira correta, poderia me mostrar por favor?

cara, como não uso esse código e não consigo testar ele, arrumar por aqui seria dificil kkkkkkkkk, mas te chamei no discord ai, posso te ajudar a resolver, sem testar pra eu saber como roda o script é dificil, qualquer coisa te ajudo la e não cobro por isso tbm

  • 4 weeks later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo