aalqaq2
Trying to help, but I'm not too good at it.
- Joined
- Apr 10, 2017
- Messages
- 112
- Solutions
- 3
- Reaction score
- 8
TFS Version 1.2 -- Client Version 10.98
I still have a few issues with my script and I'm not sure how to solve them.
1. if players bet = 1,000,000 (max), NPC (if you win) pays 1,000,100 [Supposed to pay 1,800,000 (80%) ]
2. If gold placed on NPC depot, NPC does not recognize it as a bet. (NPC y=-1) (Images below: Dice1.png works, Dice2.png does not work)
I still have a few issues with my script and I'm not sure how to solve them.
1. if players bet = 1,000,000 (max), NPC (if you win) pays 1,000,100 [Supposed to pay 1,800,000 (80%) ]
2. If gold placed on NPC depot, NPC does not recognize it as a bet. (NPC y=-1) (Images below: Dice1.png works, Dice2.png does not work)
XML:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Thais Gambler" script="Dicer.lua" walkinterval="0" floorchange="0" walkStack="0">
<health now="100" max="100"/>
<look type="132" head="114" body="0" legs="0" feet="114" addons="3"/>
<parameters>
<parameter key="message_greet" value="Hello, |PLAYERNAME|. You can bet speaking {H} or {L}, the minimum wager is 1,000 and the maximum wager is 1,000,000." />
</parameters>
</npc>
PHP:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
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 voices = {
{ text = 'Place your wager! Test your luck!' },
{ text = 'One roll to win it all!' },
{ text = 'Hey, Are you feeling lucky?' }
}
npcHandler:addModule(VoiceModule:new(voices))
function delayMoneyRemoval(item, pos)
doRemoveItem(getTileItemById(pos, item).uid)
return true
end
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
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%
local total_new = (total_g * prize_percent)
if ((total_g) <= 1000000 and (total_g) >= 1000) 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_new, 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_new, 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
if ((total_g) <= 1000000 and (total_g) >= 1000) then
addEvent(doCreateItem, 100, 2160, cc_count, table_middle_pos)
addEvent(doCreateItem, 150, 2152, pc_count, table_middle_pos)
end
doCreatureSay(npc, "The minimum wager is 1,000 and the maximum wager is 1,000,000.", TALKTYPE_SAY, false, 0)
end
return true
end
function creatureSayCallback(cid, type, msg)
-- NPC userdata instance
local npc = getNpcCid()
-- Game table position userdata instances
local table_left_pos = {x = 32352, y = 32225, z = 7} -- North NPC Table Pos. (y+1)
local table_middle_pos = {x = 32353, y = 32225, z = 7} -- Middle NPC Table Pos. (y+1,x+1)
-- 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
posplayer = {x=32354, y=32226, z=7} -- Players Position
local ppos = getPlayerPosition(cid)
if ppos.x == posplayer.x and ppos.y == posplayer.y then
if isInArray({"H", "HIGH", "high", "h"}, msg) then
ROLL = HIGH
elseif isInArray({"L", "LOW", "l", "low"}, msg) 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)
npcHandler:addModule(FocusModule:new())
Attachments
-
Dice1.png67.1 KB · Views: 1 · VirusTotal
-
Dice2.png89.6 KB · Views: 1 · VirusTotal
Last edited: