Postado Fevereiro 16, 2016 10 anos Olá pessoal, gostaria de saber como posso adicionar um sistema de cassino por npc automatico, como este na imagen abaixo
Postado Fevereiro 16, 2016 10 anos 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 Fevereiro 16, 2016 10 anos por Pandawan. (veja o histórico de edições) [email protected]
Postado Fevereiro 17, 2016 10 anos 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
Postado Fevereiro 17, 2016 10 anos Qual TFS você está usando? 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 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 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 Fevereiro 18, 2016 10 anos por Pandawan. (veja o histórico de edições) [email protected]
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.