joaohd 200 Postado Abril 15, 2010 Share Postado Abril 15, 2010 (editado) Ações bancárias Sistema desenvolvido por mim (apocarai), idéia e correções por matheusMkalo. Como funciona: Você deposita uma quantia e, dependendo da cotação, você pode ganhar ou perder dinheiro. Então, mãos à obra: Primeiramente, crie um arquivo com o nome BankSharesEvent.lua em seu diretório globalevents/scripts, colocando o script abaixo: --Script por apocarai, matheusMkalo-- s = {} y = {} function countAuctions() return #s end function chance() -- função para balanceamento das ações. if math.random(1,10) <= 2 then x = (math.random(1,3)*10/100) elseif math.random(1,10) >= 3 and math.random(1,10) <= 5 then x = (math.random(2,5)*10/100) elseif math.random(1,10) >= 6 and math.random(1,10) <= 8 then x = (math.random(3,7)*10/100) elseif math.random(1,10) == 9 then x = (math.random(4,8)*10/100) elseif math.random(1,10) == 10 then x = (math.random(5,9)*10/100) end return table.insert(y, 1, x) end function doExecuteBankShares(cid) if math.random(1,10) >= 6 then return chance(), doPlayerSetBalance(cid, (getPlayerBalance(cid))*(1+tonumber(y[1]))), doPlayerSendTextMessage(cid, TALKTYPE_ORANGE_1, "As a\ç\õ\es bancárias est\ã\o em alta. Seu saldo teve acréscimo de " .. (tonumber(y[1])*100) .. "'\%\'. Agora seu saldo é de: " .. getPlayerBalance(cid) .. " gp's. Hoje tivemos: " .. countAuctions() .. " movimenta\ç\õ\es financeiras."), table.remove(y,1) elseif math.random(1,10) == 10 then return doPlayerSetBalance(cid, 0), doPlayerSendTextMessage(cid, TALKTYPE_ORANGE_1, "Os bancos faliram. Voc\ê\ perdeu todo seu investimento. Seu saldo atual é de: " .. getPlayerBalance(cid) .. " gp's. Hoje tivemos: " .. countAuctions() .. " movimenta\ç\\õ\es financeiras.") else return chance(), doPlayerSetBalance(cid, (getPlayerBalance(cid))*(tonumber(y[1]))), doPlayerSendTextMessage(cid, TALKTYPE_ORANGE_1, "As a\ç\õ\es bancárias estão sofrendo quedas. Seu saldo teve queda de " .. (tonumber(y[1])*100) .. "'\%\' gp's . Seu saldo atual é de: " .. getPlayerBalance(cid) .. " gp's. Hoje tivemos: " .. countAuctions() .. " movimenta\ç\õ\es financeiras."), table.remove(y,1) end return TRUE end function onThink(interval, lastExecution) table.insert(s,"Bank shares: Ok!") for i = 1, #getOnlinePlayers() do if getPlayerStorageValue(getCreatureByName(getOnlinePlayers()[i]),99889) >= 1 then if getPlayerBalance(getCreatureByName(getOnlinePlayers()[i])) ~= 0 then doExecuteBankShares(getCreatureByName(getOnlinePlayers()[i])) print("[bank Shares System:: Executado com sucesso.]") end end end return TRUE end Salve e feche. Agora, adicione a seguinte tag em seu globalevents.xml: <globalevent name="BankShares" interval="3600" event="script" value="BankSharesEvent.lua"/> Caso queira alterar o tempo entre as execuções, modifique o interval. Caso contrário, somente salve e feche. Em seu diretório npc/scripts, crie um arquivo com o nome BankShares.lua, colocando o script abaixo: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local moneyTo = {} local playerTo = {} 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 isValidMoney(cid, money) if isNumber(money) == TRUE and money > 0 and money < 999999999 and money <= getPlayerMoney(cid) then return TRUE end return FALSE end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, 'ajuda') or msgcontains(msg, 'ofertas') then selfSay("Voce pode checar seu {saldo} da sua conta, {depositar} dinheiro ou {extrair} para retirar. Voce tambem pode {transferir} dinheiro para outros players, tambem pode entrar nas {açoes}, diga {informaçoes} para saber sobre as açoes.", cid) talkState[cid] = 0 ----------------------------------------------------------------- ---------------------------- Balance ---------------------------- ----------------------------------------------------------------- elseif msgcontains(msg, 'saldo') or msgcontains(msg, 'Saldo') then selfSay('Seu saldo é '..getPlayerBalance(cid)..' gold.', cid) talkState[cid] = 0 ----------------------------------------------------------------- ---------------------------- Help ------------------------------- ----------------------------------------------------------------- elseif msgcontains(msg, 'basic functions') then selfSay('Voce pode checar seu {balance} da sua conta, {deposit} dinheiro ou {withdraw} para extrair. Voce tambem pode {transfer} dinheiro para outros players, tambem pode entrar nas {açoes}.', cid) talkState[cid] = 0 elseif msgcontains(msg, 'informaçoes') then selfSay('Açoes, voce tem uma chance de ganhar ou de perder de 10% a 90% do valor total do balance da sua conta.', cid) talkState[cid] = 0 ----------------------------------------------------------------- ---------------------------- Deposit ---------------------------- ----------------------------------------------------------------- elseif msgcontains(msg, 'depositar tudo') then moneyTo[cid] = getPlayerMoney(cid) if moneyTo[cid] < 1 then selfSay('Voce nao tem dinheiro.', cid) talkState[cid] = 0 else selfSay('Voce realmente quer adicionar '..moneyTo[cid]..' gold?', cid) talkState[cid] = 2 end elseif msgcontains(msg, 'depositar') then selfSay("Porfavor me diga quanto voce quer depositar.", cid) talkState[cid] = 1 elseif talkState[cid] == 1 then moneyTo[cid] = tonumber(msg) if isValidMoney(cid, moneyTo[cid]) == TRUE then selfSay('Voce realmente quer depositar '..moneyTo[cid]..' gold?', cid) talkState[cid] = 2 else selfSay('Nao é uma quantia valida para deposito.', cid) talkState[cid] = 0 end elseif talkState[cid] == 2 then if msgcontains(msg, 'sim') then if doPlayerDepositMoney(cid, moneyTo[cid], 1) ~= TRUE then selfSay('Voce nao tem esse dinheiro.', cid) else selfSay('Tudo bem, nos adicionamos '..moneyTo[cid]..' gold para seu saldo. Voce pode extrair seu dinheiro quando quiser. Seu saldo é ' .. getPlayerBalance(cid) .. '.', cid) end elseif msgcontains(msg, 'nao') then selfSay('Como desejar. Posso fazer mais alguma coisa por voce?', cid) end talkState[cid] = 0 ----------------------------------------------------------------- ---------------------------- Withdraw --------------------------- ----------------------------------------------------------------- elseif msgcontains(msg, 'extrair') then selfSay("Porfavor, diga-me quanto voce deseja extrair.", cid) talkState[cid] = 6 elseif talkState[cid] == 6 then moneyTo[cid] = tonumber(msg) if isValidMoney(cid, moneyTo[cid]) == TRUE then selfSay('Voce esta certo que quer extrair '..moneyTo[cid]..' gold de sua conta de banco?', cid) talkState[cid] = 7 else selfSay('Nao é uma quantia valida para extraçao.', cid) talkState[cid] = 0 end elseif talkState[cid] == 7 then if msgcontains(msg, 'sim') then if doPlayerWithdrawMoney(cid, moneyTo[cid]) ~= TRUE then selfSay('Voce nao tem essa quantia em sua conta. Seu saldo é '..getPlayerBalance(cid)..'. Por favor, diga-me quanto quer extrair.', cid) else selfSay('Aqui esta, ' .. moneyTo[cid] .. ' gold. Porfavor, digame se quizer mais alguma coisa.', cid) talkState[cid] = 0 end elseif msgcontains(msg, 'nao') then selfSay('Como desejar. Posso fazer mais algo?', cid) talkState[cid] = 0 end ----------------------------------------------------------------- ---------------------------- Transfer --------------------------- ----------------------------------------------------------------- elseif msgcontains(msg, 'transferir') then selfSay("Por favor, digame quanto de dinheiro voce quer transferir.", cid) talkState[cid] = 11 elseif talkState[cid] == 11 then moneyTo[cid] = tonumber(msg) if isValidMoney(cid, moneyTo[cid]) == TRUE then selfSay('Voce gostaria de transferir '..moneyTo[cid]..' gold para?', cid) talkState[cid] = 12 else selfSay('Nao é uma quantia valida para deposito.', cid) talkState[cid] = 0 end elseif talkState[cid] == 12 then playerTo[cid] = msg if getCreatureName(cid) == playerTo[cid] then selfSay('Voce deseja transferir dinheiro para voce mesmo? Isto e impossivel!', cid) talkState[cid] = 0 return TRUE end if playerExists(playerTo[cid]) then selfSay('Voce deseja transferir ' .. moneyTo[cid] .. ' gold para "' .. playerTo[cid] .. '" ?', cid) talkState[cid] = 13 else selfSay('O player "' .. playerTo[cid] .. '" nao existe.', cid) talkState[cid] = 0 end elseif talkState[cid] == 13 then if msgcontains(msg, 'sim') then if getPlayerBalance(cid) < moneyTo[cid] then selfSay('Voce nao tem dinheiro em sua conta.', cid) return TRUE end if doPlayerTransferMoneyTo(cid, playerTo[cid], moneyTo[cid]) ~= TRUE then selfSay('Esse player nao existe ou ainda nao tem vocaçao.', cid) else selfSay('Voce transferiu ' .. moneyTo[cid] .. ' gold tpara "' .. playerTo[cid] ..' ".', cid) playerTo[cid] = nil end elseif msgcontains(msg, 'nao') then selfSay('Como deseja. Posso fazer mais alguma coisa para voce?', cid) end talkState[cid] = 0 -------------------------------------------------------------------------------- -------------------------Bank shares-------------------------------------------- -------------------------------------------------------------------------------- elseif msgcontains(msg, "açoes") then selfSay('Açoes, deseja {entrar} ou {sair}?', cid) talkState[cid] = 14 elseif msgcontains(msg, 'entrar') and talkState[cid] == 14 then if getPlayerStorageValue(cid, 99889) <= 0 then if getPlayerBalance(cid) == 0 then selfSay('Okay. Mas, estou vendo seu saldo e ele é 0 gold coins. Quanto voce quer depositar?', cid) talkState[cid] = 15 else selfSay('Parabens. Agora, fique preparado para as açoes. Pode acontecer a qualquer hora.', cid) setPlayerStorageValue(cid, 99889, 1) talkState[cid] = 0 end else selfSay('Voce ja esta nas açoes. Verifique seu saldo.', cid) talkState[cid] = 0 end elseif talkState[cid] == 15 then moneyTo[cid] = tonumber(msg) if isValidMoney(cid, moneyTo[cid]) == TRUE then selfSay('Voce realmente quer depositar '..moneyTo[cid]..' gold?', cid) talkState[cid] = 16 else selfSay('Voce nao tem esse dinheiro para depositar.', cid) talkState[cid] = 0 end elseif talkState[cid] == 16 then if msgcontains(msg, 'sim') then if doPlayerDepositMoney(cid, moneyTo[cid], 1) ~= TRUE then selfSay('Voce nao tem nenhum dinheiro.', cid) talkState[cid] = 0 else selfSay('Tudo bem, nos adicionamos '..moneyTo[cid]..' gold para seu saldo. A partir de agora você está apto a participar das a\ç\ões do banco. Seu saldo é ' .. getPlayerBalance(cid) .. '.', cid) setPlayerStorageValue(cid, 99889, 1) end end elseif msgcontains(msg, 'nao') then selfSay('Como quiser. Posso fazer mais alguma coisa por voce?', cid) talkState[cid] = 0 elseif msg == 'sair' and talkState[cid] == 14 then if getPlayerStorageValue(cid, 99889) == 1 then selfSay('Feito. Obrigado por usar nossos servicos.', cid) setPlayerStorageValue(cid, 99889, -1) talkState[cid] = 0 else selfSay('Voce nao esta em nossos registros.', cid) talkState[cid] = 0 end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Salve e feche. Agora, crie um arquivo com o nome Bank.xml em seu diretório npc, adicionando o código abaixo: <npc name="Bank" script="data/npc/scripts/BankShares.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="134" head="78" body="88" legs="0" feet="88" addons="3"/> <parameters> <parameter key="message_greet" value="Ola. Para mais informacoes de meus servicos diga {ajuda}." /> <parameter key="message_farewell" value="Tchau." /> <parameter key="message_walkaway" value="Tchau." /> </parameters> </npc> Salve e feche. Agora, abra seu config.lua e localize: bankSystem = false ou também: bankSystem = "no" E substitua por true,em caso de estar false; e yes, em caso de estar no. Sistema implantado. Agora, simplesmente adicione um respawn do npc bank em seu mapa e negocie as açoes com ele, dizendo hi;açoes;entrar (caso tenha algum dinheiro depositado), ou hi;açoes;entrar;(quantidade que deseja depositar);sim. Favor não postar em outros fóruns. Caso tenham algum problema com o sistema, poste sua dúvida para que possa saná-la. flw Obs: O npc que usei, é do servidor do alissow, modifiquei e matheusMkalo traduziu (não gostei). Editado Abril 17, 2010 por apocarai Link para o comentário https://xtibia.com/forum/topic/130942-a%C3%A7%C3%B5es-banc%C3%A1rias/ Compartilhar em outros sites More sharing options...
MatheusGlad 424 Postado Abril 15, 2010 Share Postado Abril 15, 2010 (editado) xD, eu acho que esse script vai ficar famoso hehe, se nao ficar tbm =/ ESQUECEU DE FALAR QEU EU TESTEI O SCRIPT TBM DISGRAÇA brinks Gente, vou falar como mecher em um negocio: <globalevent name="BankShares" interval="3600" event="script" value="BankSharesEvent.lua"/> Ali no interval e o tempo que as açoes vao ser aplicadas e em .xml o tempo e em segundos entao ali seria 3600 segundos voces podem almentar. SS: Editado Abril 15, 2010 por MatheusMkalo Link para o comentário https://xtibia.com/forum/topic/130942-a%C3%A7%C3%B5es-banc%C3%A1rias/#findComment-863210 Compartilhar em outros sites More sharing options...
Mattew 20 Postado Abril 15, 2010 Share Postado Abril 15, 2010 Mas e se o cara ficar dando deposit e withdraw, ele pode abusar disso ou tem um delay? Link para o comentário https://xtibia.com/forum/topic/130942-a%C3%A7%C3%B5es-banc%C3%A1rias/#findComment-863211 Compartilhar em outros sites More sharing options...
TheGODMaX 24 Postado Abril 15, 2010 Share Postado Abril 15, 2010 (editado) Muito bom o script !! ^^ Mais acho que seria melhor por uma quantia certa á ganhar, e n dobrar sua balance (se é isso q eu intendi) ;x Parabéns aos 2, ótimo trabalho. (: -------------- edit Me corrija se eu estiver errado, mas não é permitido usar 'ç' nas falas dos npcs é ? Oo' Editado Abril 15, 2010 por TheGODMaX Link para o comentário https://xtibia.com/forum/topic/130942-a%C3%A7%C3%B5es-banc%C3%A1rias/#findComment-863212 Compartilhar em outros sites More sharing options...
joaohd 200 Postado Abril 15, 2010 Autor Share Postado Abril 15, 2010 (editado) Como dito, ele pode ganhar ou perder. Ele pode depositar quantias exorbitantes e ganhar muito. Porém, de uma hora para a outra ele pode perder tudo. flw @vampiresco Dinheiro move o mundo. @TheGodMax E permitido sim o uso de 'ç' em npcs. Creio que o uso só é restrito ao xml. Editado Abril 15, 2010 por apocarai Link para o comentário https://xtibia.com/forum/topic/130942-a%C3%A7%C3%B5es-banc%C3%A1rias/#findComment-863213 Compartilhar em outros sites More sharing options...
Vampiresco 35 Postado Abril 15, 2010 Share Postado Abril 15, 2010 Opa, mas um bom script shoow para o meu otserver! Muito bom mesmo.. testado: APROVADO! Voces estão sempre trabalhando com dinheiro? !apostar Agr isso xD! Gostei muito cara (LOL) ABRAÇO. Link para o comentário https://xtibia.com/forum/topic/130942-a%C3%A7%C3%B5es-banc%C3%A1rias/#findComment-863214 Compartilhar em outros sites More sharing options...
MatheusGlad 424 Postado Abril 15, 2010 Share Postado Abril 15, 2010 (editado) Gente o script sempre eh ativado na mesma hora pra todos, entao se ele depositar e der withdraw nao vai acontecer nada, soh quando for a hora das açoes SS: Editado Abril 15, 2010 por MatheusMkalo Link para o comentário https://xtibia.com/forum/topic/130942-a%C3%A7%C3%B5es-banc%C3%A1rias/#findComment-863215 Compartilhar em outros sites More sharing options...
Kude Ampola 1 Postado Abril 15, 2010 Share Postado Abril 15, 2010 humm cabei de loga dps de um tempo no fórum.. ta melhorando a coisa aqui ein dei uma passada rapida com os olhos no código, parece ta bom! Link para o comentário https://xtibia.com/forum/topic/130942-a%C3%A7%C3%B5es-banc%C3%A1rias/#findComment-863219 Compartilhar em outros sites More sharing options...
Dj Sky 50 Postado Abril 15, 2010 Share Postado Abril 15, 2010 Muito bom cara, muito bom Parabens Link para o comentário https://xtibia.com/forum/topic/130942-a%C3%A7%C3%B5es-banc%C3%A1rias/#findComment-863223 Compartilhar em outros sites More sharing options...
Henrique Moura 193 Postado Abril 15, 2010 Share Postado Abril 15, 2010 Muito legal a idéia, bem funcional. Porém você já deve saber né, isso interfere na economia do jogo e no RPG. Reputação adicionada. Abraços. Link para o comentário https://xtibia.com/forum/topic/130942-a%C3%A7%C3%B5es-banc%C3%A1rias/#findComment-863233 Compartilhar em outros sites More sharing options...
satan666 12 Postado Abril 15, 2010 Share Postado Abril 15, 2010 só precisa depois que criar os códigos formatalos para torna-los mais legiveis. modifica algumas coisas nele. s = {} y = {} -- não é necessario o uso de duas tabelas globais. if math.random(1,10) >= 6 then elseif math.random(1,10) == 10 then --não entendi o que o elseif está fazendo. não era necessario declarar return TRUE ja que ele não requer o uso de bollean, sem conta que a função retorno outros valores e numca vai executar essa linha. Link para o comentário https://xtibia.com/forum/topic/130942-a%C3%A7%C3%B5es-banc%C3%A1rias/#findComment-863239 Compartilhar em outros sites More sharing options...
joaohd 200 Postado Abril 15, 2010 Autor Share Postado Abril 15, 2010 Aff, como sempre. Marcryzius, sempre vejo você em tópicos meus, seja desmentindo o que digo ou tentando ser superior. Neste script, eu confesso que tem várias coisas que não precisariam estar ali. Porém, para que o script funcionasse perfeitamente, fui obrigado a criar alguns POG's. As tabelas que criei foram para armazenar o valor retornado pela função chance() e para armazenar o número de eventos ocorridos. Já o elseif, é para que caso o valor retornado for 10, o jogador perca todas as ações, o que torna mais imprevisível o futuro do dinheiro depositado. A propósito, sei que é um grande scripter, porém, não vejo a necessidade de interferir/corrigir (por vezes sem fundamentos) nos scripts que não sejam postados por você. Não que eu queira criar uma rixa, mas não é a primeira vez que vejo isto acontecer. Espero que termine aqui. flw Link para o comentário https://xtibia.com/forum/topic/130942-a%C3%A7%C3%B5es-banc%C3%A1rias/#findComment-863246 Compartilhar em outros sites More sharing options...
guedes100 56 Postado Abril 15, 2010 Share Postado Abril 15, 2010 (editado) ''reputaçao adicionada'' agora chupe minhas bolas e ao script do Apocarai Parabens,o script é muito bom cara Editado Abril 15, 2010 por Nicekid Link para o comentário https://xtibia.com/forum/topic/130942-a%C3%A7%C3%B5es-banc%C3%A1rias/#findComment-863251 Compartilhar em outros sites More sharing options...
Henrique Moura 193 Postado Abril 15, 2010 Share Postado Abril 15, 2010 Para quem você dirigiu essa frase, nicekid? Link para o comentário https://xtibia.com/forum/topic/130942-a%C3%A7%C3%B5es-banc%C3%A1rias/#findComment-863255 Compartilhar em outros sites More sharing options...
satan666 12 Postado Abril 15, 2010 Share Postado Abril 15, 2010 Aff, como sempre. Marcryzius, sempre vejo você em tópicos meus, seja desmentindo o que digo ou tentando ser superior. Neste script, eu confesso que tem várias coisas que não precisariam estar ali. Porém, para que o script funcionasse perfeitamente, fui obrigado a criar alguns POG's. As tabelas que criei foram para armazenar o valor retornado pela função chance() e para armazenar o número de eventos ocorridos. Já o elseif, é para que caso o valor retornado for 10, o jogador perca todas as ações, o que torna mais imprevisível o futuro do dinheiro depositado. A propósito, sei que é um grande scripter, porém, não vejo a necessidade de interferir/corrigir (por vezes sem fundamentos) nos scripts que não sejam postados por você. Não que eu queira criar uma rixa, mas não é a primeira vez que vejo isto acontecer. Espero que termine aqui. flw cara não estou querendo demonstrar ser o sábio não, e sim que seja melhor pra você. estou apenas dando dicas de como criar cada vez mais script de qualidade. você pode sim se superar veja o que eu citei não como afronte e sim como uma forma de aprimorar cada vez mais seus conhecimentos. não afronto ninguem apenas demonstro que elas podem melhorar sabendo por onde começar. espero que entenda isso. Link para o comentário https://xtibia.com/forum/topic/130942-a%C3%A7%C3%B5es-banc%C3%A1rias/#findComment-863257 Compartilhar em outros sites More sharing options...
Posts Recomendados