Ir para conteúdo

Featured Replies

Resolvido por Pandawan.

Ir para solução
  • Respostas 12
  • Visualizações 4.4k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Olá amigo, teste esse script, se apresentar algum erro me avise! Na pasta NPC você cria o arquivo: Cassino (ou nome do NPC a sua escolha)   A outfit pode ser alterada ao seu gosto Na pa

  • Qual TFS você está usando?

  • Você tem que alterar os valores do 00121 / 00050 / 007 no script, como eu disse anteriormente, pra o sqm que você quer que ele pegue/dê o dinheiro.      

Posted Images

Postado
  • Solução

Olá amigo, teste esse script, se apresentar algum erro me avise!

Na pasta NPC você cria o arquivo: Cassino (ou nome do NPC a sua escolha)
 

Citar

<npc name="Cassino" script="data/npc/scripts/cassino_dice.lua" walkinterval="0" floorchange="0">
<health now="100" max="100"/>
<look type="494" head="38" body="87" legs="46" feet="46" addons="3"/>
</npc>

A outfit pode ser alterada ao seu gosto

Na pasta NPC>Scripts você cria: cassino_dice.lua (ou nome do script a sua escolha)
Aqui lembre de mudar o LOCAL TABLE !!!
 

Citar

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
 
function onCreatureAppear(cid)				npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) 			npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) 		npcHandler:onCreatureSay(cid, type, msg) end
function onThink()					    	npcHandler:onThink() end
 
local function delayMoneyRemoval(item, pos)
	doRemoveItem(getTileItemById(pos, item).uid)
	return true
end
 
local function placeMoney(amount, table_middle_pos)
	local remain = amount
	local crystal_coins = 0
	local platinum_coins = 0
 
	if (math.floor(amount / 10000) >= 1) then
		crystal_coins = math.floor(amount / 10000)
		remain = remain - crystal_coins * 10000
	end
	if ((remain / 100) >= 1) then
		platinum_coins = remain / 100
	end
	addEvent(doCreateItem, 550, 2152, platinum_coins, table_middle_pos)
	addEvent(doCreateItem, 600, 2160, crystal_coins, table_middle_pos)
end
 
local function rollDice(roll, cc_count, pc_count, table_left_pos, table_middle_pos, npc)
	local dice_ids = {5792, 5793, 5794, 5795, 5796, 5797}
	local random_rollval = math.random(1,6)
	local total_g = (10000 * cc_count) + (100 * pc_count)
	local prize_percent = 0.8 -- 80%
 
	if ((total_g) <= 300000 and (total_g) >= 5000) then
		doSendMagicEffect(table_left_pos, CONST_ME_CRAPS)
 
		for _, itemId in pairs(dice_ids) do
				if(getTileItemById(table_left_pos, itemId).uid > 0) then
				doTransformItem(getTileItemById(table_left_pos, itemId).uid, dice_ids[random_rollval])
			end
		end
 
		if (roll == 1 and random_rollval <= 3) then
			placeMoney(total_g + (total_g * prize_percent), table_middle_pos)
			addEvent(doSendMagicEffect, 400, table_left_pos, CONST_ME_SOUND_GREEN)
			addEvent(doSendMagicEffect, 700, table_left_pos, CONST_ME_SOUND_GREEN)
			addEvent(doCreatureSay, 500, npc, "You win!", TALKTYPE_SAY, false, 0)
		elseif (roll == 2 and random_rollval >= 4) then
			placeMoney(total_g + (total_g * prize_percent), table_middle_pos)
			addEvent(doSendMagicEffect, 400, table_left_pos, CONST_ME_SOUND_GREEN)
			addEvent(doSendMagicEffect, 700, table_left_pos, CONST_ME_SOUND_GREEN)
			addEvent(doCreatureSay, 500, npc, "You win!", TALKTYPE_SAY, false, 0)
		else
			addEvent(doSendMagicEffect, 400, table_left_pos, CONST_ME_BLOCKHIT)
			addEvent(doSendMagicEffect, 700, table_left_pos, CONST_ME_BLOCKHIT)
			addEvent(doCreatureSay, 500, npc, "Better luck next time.", TALKTYPE_SAY, false, 0)
		end
		doCreatureSay(npc, string.format("%s rolled a %d.", getCreatureName(npc), random_rollval), TALKTYPE_ORANGE_1, false, 0, table_left_pos)
	else
		addEvent(doCreateItem, 100, 2160, cc_count, table_middle_pos)
		addEvent(doCreateItem, 150, 2152, pc_count, table_middle_pos)
		doCreatureSay(npc, "The minimum wager is 5K and the maximum wager is 300K.", TALKTYPE_SAY, false, 0)
	end
	return true
end
 
function creatureSayCallback(cid, type, msg)
	-- NPC userdata instance
	local npc = getNpcCid()
 
	-- Participating player userdata instance
	local position = {x = getNpcPos().x+2, y = getNpcPos().y, z = getNpcPos().z}
	position.stackpos = STACKPOS_TOP_CREATURE
	local player_uid = getThingfromPos(position).uid
 
	-- Game table position userdata instances
	local table_left_pos = {x = 120, y = 50, z = 7}
	local table_middle_pos = {x = 121, y = 50, z = 7}
 
	-- Search for coins on the left and middle tables and create item userdata instances
	local table_middle_cc = getTileItemById(table_middle_pos, 2160)
	local table_middle_pc = getTileItemById(table_middle_pos, 2152)
 
	-- Other variables
	local cc_count = 0
	local pc_count = 0
	local ROLL, LOW, HIGH = 0, 1, 2
 
	if (player_uid ~= 0) then
		if ((msgcontains(string.lower(msg), 'high') or msgcontains(string.lower(msg), 'h')) and (isPlayer(player_uid) and player_uid == cid)) then
			ROLL = HIGH
		elseif ((msgcontains(string.lower(msg), 'low') or msgcontains(string.lower(msg), 'l')) and (isPlayer(player_uid) and player_uid == cid)) then
			ROLL = LOW
		else
			return false
		end
		if (table_middle_cc.uid ~= 0) then
			cc_count = table_middle_cc.type
			doTeleportThing(table_middle_cc.uid, table_left_pos)
			addEvent(delayMoneyRemoval, 300, 2160, table_left_pos)
		end
		if (table_middle_pc.uid ~= 0) then
			pc_count = table_middle_pc.type
			doTeleportThing(table_middle_pc.uid, table_left_pos)
			addEvent(delayMoneyRemoval, 300, 2152, table_left_pos)
		end
		addEvent(rollDice, 500, ROLL, cc_count, pc_count, table_left_pos, table_middle_pos, npc)
	else
		return false
	end
	return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

 

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

Postado
  • Autor
Em 16/02/2016 18:11:50, Pandawan. disse:

Olá amigo, teste esse script, se apresentar algum erro me avise!

Na pasta NPC você cria o arquivo: Cassino (ou nome do NPC a sua escolha)
 

A outfit pode ser alterada ao seu gosto

Na pasta NPC>Scripts você cria: cassino_dice.lua (ou nome do script a sua escolha)
Aqui lembre de mudar o LOCAL TABLE !!!
 

 

 

 

 

Amigo o npc aparece certinho, porem ele não funciona, quando se fala high ou low ele apenas repete a mensagem de no min 5k max 300k, e não pega o dinheiro, e aparece esse erro na distro

 

Sem título.png

Postado
5 horas atrás, 77mateus77 disse:
Spoiler

 

Amigo o npc aparece certinho, porem ele não funciona, quando se fala high ou low ele apenas repete a mensagem de no min 5k max 300k, e não pega o dinheiro, e aparece esse erro na distro

 

Sem título.png

 

 


Você tem que alterar os valores do 00121 / 00050 / 007 no script, como eu disse anteriormente, pra o sqm que você quer que ele pegue/dê o dinheiro.

 

 
Spoiler

 


-- Game table position userdata instances
	local table_left_pos = {x = 120, y = 50, z = 7}
	local table_middle_pos = {x = 121, y = 50, z = 7}


Se no seu OT o DP do NPC fica, por exemplo, em 32500 12850 7 faça as alterações ficando:
Table Left Pos = posição do DP do NPC
Table Right Pos = tábua do meio do DP

 


-- Game table position userdata instances
	local table_left_pos = {x = 32500, y = 12850, z = 7}
	local table_middle_pos = {x = 32501, y = 12850, z = 7}

 

 

 

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

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.6k

Informação Importante

Confirmação de Termo