Postado Fevereiro 18, 2016 10 anos Autor 13 horas atrás, vankk disse: Qual TFS você está usando? 1.2 9 horas atrás, Pandawan. disse: 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. Ocultar conteúdo -- 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} Vou testar e edito se der certo -- perfeito funcionou certinho, obrigado rep+ Editado Fevereiro 18, 2016 10 anos por 77mateus77 (veja o histórico de edições)
Postado Fevereiro 18, 2016 10 anos Tente utilizar isso, um script feito para 1.2 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 local config = { bonusPercent = 2, minimumBet = 100, maximumBet = 10000000 } local storeMoneyAmount = 0 -- Do not touch [We store the amount cash which got betted here] local ITEM_BLOCKING = 8046 local function getMoneyAmount(position) local moneyAmount = 0 for _, item in ipairs(Tile(position):getItems()) do local itemId = item:getId() if itemId == ITEM_GOLD_COIN then moneyAmount = moneyAmount + item.type elseif itemId == ITEM_PLATINUM_COIN then moneyAmount = moneyAmount + item.type * 100 elseif itemId == ITEM_CRYSTAL_COIN then moneyAmount = moneyAmount + item.type * 10000 end end return moneyAmount end local function handleMoney(cid, position, bonus) local npc = Npc(cid) if not npc then return end -- Lets remove the cash which was betted for _, item in ipairs(Tile(position):getItems()) do if isInArray({ITEM_GOLD_COIN, ITEM_PLATINUM_COIN, ITEM_CRYSTAL_COIN, ITEM_BLOCKING}, item:getId()) then item:remove() end end -- We lost, no need to continue if bonus == 0 then npc:say("You lost!", TALKTYPE_SAY) position:sendMagicEffect(CONST_ME_POFF) return end -- Cash calculator local goldCoinAmount = storeMoneyAmount * bonus local crystalCoinAmount = math.floor(goldCoinAmount / 10000) goldCoinAmount = goldCoinAmount - crystalCoinAmount * 10000 local platinumCoinAmount = math.floor(goldCoinAmount / 100) goldCoinAmount = goldCoinAmount - platinumCoinAmount * 100 if goldCoinAmount ~= 0 then Game.createItem(ITEM_GOLD_COIN, goldCoinAmount, position) end if platinumCoinAmount ~= 0 then Game.createItem(ITEM_PLATINUM_COIN, platinumCoinAmount, position) end if crystalCoinAmount ~= 0 then Game.createItem(ITEM_CRYSTAL_COIN, crystalCoinAmount, position) end position:sendMagicEffect(math.random(CONST_ME_FIREWORK_YELLOW, CONST_ME_FIREWORK_BLUE)) npc:say("You Win!", TALKTYPE_SAY) end local function startRollDice(cid, position, number) for i = 5792, 5797 do local dice = Tile(position):getItemById(i) if dice then dice:transform(5791 + number) break end end local npc = Npc(cid) if npc then npc:say(string.format("%s rolled a %d", npc:getName(), number), TALKTYPE_MONSTER_SAY) end end local function executeEvent(cid, dicePosition, number, moneyPosition, bonus) local npc = Npc(cid) if not npc then return end if getMoneyAmount(moneyPosition) ~= storeMoneyAmount then npc:say("Where is the money?!", TALKTYPE_SAY) return end -- Roll Dice addEvent(startRollDice, 400, cid, dicePosition, number) dicePosition:sendMagicEffect(CONST_ME_CRAPS) -- Handle Money addEvent(handleMoney, 600, cid, moneyPosition, bonus) end local function creatureSayCallback(cid, type, msg) if not isInArray({"high", "low"}, msg) then -- Ignore other replies return false end -- Npc Variables local npc = Npc() local npcPosition = npc:getPosition() -- Check if player stand in position local playerPosition = Position(npcPosition.x + 2, npcPosition.y, npcPosition.z) local topCreature = Tile(playerPosition):getTopCreature() if not topCreature then npc:say("Please go stand next to me.", TALKTYPE_SAY) playerPosition:sendMagicEffect(CONST_ME_TUTORIALARROW) playerPosition:sendMagicEffect(CONST_ME_TUTORIALSQUARE) return false end -- Make sure also the player who stand there, is the one who is betting. To keep out people from disturbing if topCreature:getId() ~= cid then return false end -- High or Low numbers local rollType = 0 if msgcontains(msg, "low") then rollType = 1 elseif msgcontains(msg, "high") then rollType = 2 else return false end -- Check money Got betted local moneyPosition = Position(npcPosition.x + 1, npcPosition.y - 1, npcPosition.z) storeMoneyAmount = getMoneyAmount(moneyPosition) if storeMoneyAmount < config.minimumBet or storeMoneyAmount > config.maximumBet then npc:say(string.format("You can only bet min: %d and max: %d gold coins.", config.minimumBet, config.maximumBet), TALKTYPE_SAY) return false end -- Money is betted, lets block them from getting moved // This is one way, else we can set actionid, on the betted cash. Game.createItem(ITEM_BLOCKING, 1, moneyPosition) -- Roll Number local rollNumber = math.random(6) -- Win or Lose local bonus = 0 if rollType == 1 and isInArray({1, 2, 3}, rollNumber) then bonus = config.bonusPercent elseif rollType == 2 and isInArray({4, 5, 6}, rollNumber) then bonus = config.bonusPercent end -- Money handle and roll dice addEvent(executeEvent, 100, npc:getId(), Position(npcPosition.x, npcPosition.y - 1, npcPosition.z), rollNumber, moneyPosition, bonus) return true end function onThink() -- Anti trash local npcPosition = Npc():getPosition() local moneyPosition = Position(npcPosition.x + 1, npcPosition.y - 1, npcPosition.z) for _, item in ipairs(Tile(moneyPosition):getItems()) do local itemId = item:getId() if not isInArray({ITEM_GOLD_COIN, ITEM_PLATINUM_COIN, ITEM_CRYSTAL_COIN, ITEM_BLOCKING}, itemId) and ItemType(itemId):isMovable() then item:remove() end end local dicePosition = Position(npcPosition.x, npcPosition.y - 1, npcPosition.z) for _, item in ipairs(Tile(dicePosition):getItems()) do local itemId = item:getId() if not isInArray({5792, 5793, 5794, 5795, 5796, 5797}, itemId) and ItemType(itemId):isMovable() then item:remove() end end npcHandler:onThink() end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) Editado Fevereiro 18, 2016 10 anos por vankk (veja o histórico de edições) Discord: vankk #7765 Precisando de ajuda? Entre em contato comigo via Discord. Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.
Postado Fevereiro 18, 2016 10 anos Autor 3 horas atrás, vankk disse: Tente utilizar isso, um script feito para 1.2 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 local config = { bonusPercent = 2, minimumBet = 100, maximumBet = 10000000 } local storeMoneyAmount = 0 -- Do not touch [We store the amount cash which got betted here] local ITEM_BLOCKING = 8046 local function getMoneyAmount(position) local moneyAmount = 0 for _, item in ipairs(Tile(position):getItems()) do local itemId = item:getId() if itemId == ITEM_GOLD_COIN then moneyAmount = moneyAmount + item.type elseif itemId == ITEM_PLATINUM_COIN then moneyAmount = moneyAmount + item.type * 100 elseif itemId == ITEM_CRYSTAL_COIN then moneyAmount = moneyAmount + item.type * 10000 end end return moneyAmount end local function handleMoney(cid, position, bonus) local npc = Npc(cid) if not npc then return end -- Lets remove the cash which was betted for _, item in ipairs(Tile(position):getItems()) do if isInArray({ITEM_GOLD_COIN, ITEM_PLATINUM_COIN, ITEM_CRYSTAL_COIN, ITEM_BLOCKING}, item:getId()) then item:remove() end end -- We lost, no need to continue if bonus == 0 then npc:say("You lost!", TALKTYPE_SAY) position:sendMagicEffect(CONST_ME_POFF) return end -- Cash calculator local goldCoinAmount = storeMoneyAmount * bonus local crystalCoinAmount = math.floor(goldCoinAmount / 10000) goldCoinAmount = goldCoinAmount - crystalCoinAmount * 10000 local platinumCoinAmount = math.floor(goldCoinAmount / 100) goldCoinAmount = goldCoinAmount - platinumCoinAmount * 100 if goldCoinAmount ~= 0 then Game.createItem(ITEM_GOLD_COIN, goldCoinAmount, position) end if platinumCoinAmount ~= 0 then Game.createItem(ITEM_PLATINUM_COIN, platinumCoinAmount, position) end if crystalCoinAmount ~= 0 then Game.createItem(ITEM_CRYSTAL_COIN, crystalCoinAmount, position) end position:sendMagicEffect(math.random(CONST_ME_FIREWORK_YELLOW, CONST_ME_FIREWORK_BLUE)) npc:say("You Win!", TALKTYPE_SAY) end local function startRollDice(cid, position, number) for i = 5792, 5797 do local dice = Tile(position):getItemById(i) if dice then dice:transform(5791 + number) break end end local npc = Npc(cid) if npc then npc:say(string.format("%s rolled a %d", npc:getName(), number), TALKTYPE_MONSTER_SAY) end end local function executeEvent(cid, dicePosition, number, moneyPosition, bonus) local npc = Npc(cid) if not npc then return end if getMoneyAmount(moneyPosition) ~= storeMoneyAmount then npc:say("Where is the money?!", TALKTYPE_SAY) return end -- Roll Dice addEvent(startRollDice, 400, cid, dicePosition, number) dicePosition:sendMagicEffect(CONST_ME_CRAPS) -- Handle Money addEvent(handleMoney, 600, cid, moneyPosition, bonus) end local function creatureSayCallback(cid, type, msg) if not isInArray({"high", "low"}, msg) then -- Ignore other replies return false end -- Npc Variables local npc = Npc() local npcPosition = npc:getPosition() -- Check if player stand in position local playerPosition = Position(npcPosition.x + 2, npcPosition.y, npcPosition.z) local topCreature = Tile(playerPosition):getTopCreature() if not topCreature then npc:say("Please go stand next to me.", TALKTYPE_SAY) playerPosition:sendMagicEffect(CONST_ME_TUTORIALARROW) playerPosition:sendMagicEffect(CONST_ME_TUTORIALSQUARE) return false end -- Make sure also the player who stand there, is the one who is betting. To keep out people from disturbing if topCreature:getId() ~= cid then return false end -- High or Low numbers local rollType = 0 if msgcontains(msg, "low") then rollType = 1 elseif msgcontains(msg, "high") then rollType = 2 else return false end -- Check money Got betted local moneyPosition = Position(npcPosition.x + 1, npcPosition.y - 1, npcPosition.z) storeMoneyAmount = getMoneyAmount(moneyPosition) if storeMoneyAmount < config.minimumBet or storeMoneyAmount > config.maximumBet then npc:say(string.format("You can only bet min: %d and max: %d gold coins.", config.minimumBet, config.maximumBet), TALKTYPE_SAY) return false end -- Money is betted, lets block them from getting moved // This is one way, else we can set actionid, on the betted cash. Game.createItem(ITEM_BLOCKING, 1, moneyPosition) -- Roll Number local rollNumber = math.random(6) -- Win or Lose local bonus = 0 if rollType == 1 and isInArray({1, 2, 3}, rollNumber) then bonus = config.bonusPercent elseif rollType == 2 and isInArray({4, 5, 6}, rollNumber) then bonus = config.bonusPercent end -- Money handle and roll dice addEvent(executeEvent, 100, npc:getId(), Position(npcPosition.x, npcPosition.y - 1, npcPosition.z), rollNumber, moneyPosition, bonus) return true end function onThink() -- Anti trash local npcPosition = Npc():getPosition() local moneyPosition = Position(npcPosition.x + 1, npcPosition.y - 1, npcPosition.z) for _, item in ipairs(Tile(moneyPosition):getItems()) do local itemId = item:getId() if not isInArray({ITEM_GOLD_COIN, ITEM_PLATINUM_COIN, ITEM_CRYSTAL_COIN, ITEM_BLOCKING}, itemId) and ItemType(itemId):isMovable() then item:remove() end end local dicePosition = Position(npcPosition.x, npcPosition.y - 1, npcPosition.z) for _, item in ipairs(Tile(dicePosition):getItems()) do local itemId = item:getId() if not isInArray({5792, 5793, 5794, 5795, 5796, 5797}, itemId) and ItemType(itemId):isMovable() then item:remove() end end npcHandler:onThink() end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) Obrigado vankk mas aquele que ele passou ja funcionou, so faltava alterar os valores coomo ele disse
Postado Fevereiro 18, 2016 10 anos Eu sei, mas eu gosto de utilizar scripts com funções atualizadas, e não com funções antigas, hahah.. mas whatever. Discord: vankk #7765 Precisando de ajuda? Entre em contato comigo via Discord. Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.
Postado Fevereiro 18, 2016 10 anos Autor 2 minutos atrás, vankk disse: Eu sei, mas eu gosto de utilizar scripts com funções atualizadas, e não com funções antigas, hahah.. mas whatever. entendo, você entende sobre chatchannels tbm nessa tfs 1.2? eu preocurei preocurei mas não consigo encontra a solução pra um problema, acabei de criar um post, da uma olhada la e ve se você entende sobre isso pra poder me ajudar http://www.tibiaking.com/forum/topic/67766-ajuda-com-canal-help/#comment-388757 Valeu!
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.