Selenia-Global
Selenia-Global.com
- Joined
- Jan 21, 2018
- Messages
- 28
- Solutions
- 1
- Reaction score
- 4
!!Hello! Im sorry if this is in the wrong thread I really couldnt tought of a better place.... But I want to kindly ask for a "fix" to this Dice npc, Im using TFS 1.2 in a 10.100-10.46 Client. I tought that this could a nice addition to the server but somehow I cant get it to work properly, i dont know what im missing...maybe a conversion from the last server code which I dont know how to conver it to 1.2.
I would really appreciate if you could help me
here is the error
(somehow i cant post a picture, but this is what it says
The NPC doest greet, nor explains you how to play, only listen to h(hi-l(low) and talks back if you win or loose, but doesnt give you the money if you win.
Thanks in advance! and sorry if I mistakenly posted this in the wrong trhead
I would really appreciate if you could help me
here is the error
(somehow i cant post a picture, but this is what it says
Lua Script Error: [Main Interface]
in a timer event called from:
(Unknown scriptfile)
luaAddEvent(). callback parameter should be a function.
stack traceback:
[C]: in function 'addEvent'
data/npc/scripts/dicer.lua:28: in function 'placeMoney'
data/npc/scripts/dicer.lua:53: in function <data/npc/scripts/dicer.lua:32>
Lua Script Error: [Main Interface]
in a timer event called from:
(Unknown scriptfile)
luaAddEvent(). callback parameter should be a function.
stack traceback:
[C]: in function 'addEvent'
data/npc/scripts/dicer.lua:29: in function 'placeMoney'
data/npc/scripts/dicer.lua:53: in function <data/npc/scripts/dicer.lua:32>
in a timer event called from:
(Unknown scriptfile)
luaAddEvent(). callback parameter should be a function.
stack traceback:
[C]: in function 'addEvent'
data/npc/scripts/dicer.lua:28: in function 'placeMoney'
data/npc/scripts/dicer.lua:53: in function <data/npc/scripts/dicer.lua:32>
Lua Script Error: [Main Interface]
in a timer event called from:
(Unknown scriptfile)
luaAddEvent(). callback parameter should be a function.
stack traceback:
[C]: in function 'addEvent'
data/npc/scripts/dicer.lua:29: in function 'placeMoney'
data/npc/scripts/dicer.lua:53: in function <data/npc/scripts/dicer.lua:32>
The NPC doest greet, nor explains you how to play, only listen to h(hi-l(low) and talks back if you win or loose, but doesnt give you the money if you win.
Lua:
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 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) <= 500000 and (total_g) >= 30000) 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, "Ganaste perro huehue!", 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, "Ganaste perro huehue!", 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, "Ahi pa la otra compare.", 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 30K and the maximum wager is 500K.", TALKTYPE_SAY, false, 0)
end
return true
end
function onThink()
local cid = getNpcCid()
local npc = Creature(cid)
local npcpos = {x = 32159, y = 32296, z = 7}
local creature = Tile(32159, 32298, 7):getTopCreature()
if creature and creature:isPlayer() then
selfTurn(SOUTH)
--doCreatureSay(npc, "Hello |PLAYERNAME|, Do your bets.", TALKTYPE_SAY, false, 0)
else
selfTurn(WEST)
--doCreatureSay(npc, "Goodbye |PLAYERNAME|!.", TALKTYPE_SAY, false, 0)
end
if npc then
local outfit = npc:getOutfit()
outfit.lookHead = math.random(0, 132)
outfit.lookBody = math.random(0, 132)
outfit.lookLegs = math.random(0, 132)
outfit.lookFeet = math.random(0, 132)
npc:setOutfit(outfit)
addEvent(doSendMagicEffect, 700, npcpos, CONST_ME_GIFT_WRAPS)
end
npcHandler:onThink()
end
function creatureSayCallback(cid, type, msg)
-- NPC userdata instance
local npc = getNpcCid()
-- Game table position userdata instances
local table_left_pos = {x = 32158, y = 32296, z = 7} -- Pos da frente do Npc onde gira o dado 32008, 31897, 7
local table_middle_pos = {x = 32158, y = 32297, z = 7} -- Pos do meio onde vai o dinheiro 32009, 31897, 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
posplayer = {x = 32159, y = 32298, z = 7} -- Pos onde o player precisa estar 32010, 31898, 7
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
elseif isInArray({"play", "game"}, msg) then
doCreatureSay(npc, "Hola, vamos a jugar? low ou high? Siendo Low=1,2,3 y High=4,5,6.", TALKTYPE_SAY, false, 0)
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())
Thanks in advance! and sorry if I mistakenly posted this in the wrong trhead