então, eu peguei o Bank System por talkaction feito pelo Mock e tentei fazer alguns cálculos para transformar o sistema (que é em cents) para dollar. EX: Para depositar 1k, devo falar
/bank d 100000
o ideal seria eu falar
/bank d 1000
o problema está no comando all, que deposita/saca todo seu dinheiro. Eu consegui transformar de cents para dollar, pegando a variável de adicionar/remover item e multiplicar por 100, o problema é que caso o jogador deposite algum dinheiro sem o all, assim: /bank d 100000000, quando ele for sacar com o /bank w all (comando que saca todo o dinheiro da sua conta bancária), ele vai receber 100 vezes mais do que ele depositou. Por que o all vai multiplicar o saldo da sua conta bancária por 100.
O código está imprimindo em dollar, mas os comandos são em centavos.
E outra coisa, caso o jogador deposit mais de 42 milhões, 969,4 mil, 76 dollares e 96 centavos, o saldo é zerado. E às vezes buga, dando saldo negativo, inclusive criando stacks de 226 notas.
Não sei se ficou claro, se estiver confuso, me avisem.
Agradeço se alguém puder ajudar.
Amanhã vou tentar fazer o transfer, para transferir dinheiro da conta bancária para outros jogadores. Se eu conseguir, eu edito aqui, caso alguém queira.
Código:
Spoiler
local storeige =18316local function msg(cid,m)doPlayerSendTextMessage(cid,25, m)doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, m)endfunction onSay(cid, words, param, channel)local c = getPlayerStorageValue(cid,storeige)c = c ==-1 and 0 or clocal d = c/100local e = c/100000local f = c/100000000local g = getPlayerMoney(cid)/100local h = getPlayerMoney(cid)/100000local i = getPlayerMoney(cid)/100000000if param:find('balance') or param =='b' or (words =='!balance') thenmsg(cid,'Seu saldo é: '..d..' dollares. ('..e..'K ou '..f..'KK)')elseif param:find('amount') or param =='a' thenif getPlayerMoney(cid)==0 then msg(cid,'Você não tem dinheiro na sua mochila.')elsemsg(cid,'Você tem '..g..' dollares na sua mochila. ('..h..'K ou '..i..'KK)')endelseif param:match('deposit (.+)') or param:match('d (.+)') or (words =='!deposit') thenlocal v = param:match('deposit (.+)') or param:match('d (.+)') or tonumber(param) or param =='all' and paramlocal dep = tonumber(v =='all' and getPlayerMoney(cid) or v)local dep1 = tonumber(v =='all' and getPlayerMoney(cid) or v)/100local dep2 = tonumber(v =='all' and getPlayerMoney(cid) or v)/100000local dep3 = tonumber(v =='all' and getPlayerMoney(cid) or v)/100000000if v =="all" and getPlayerMoney(cid)==0 then msg(cid,'Você não tem dinheiro na sua mochila.')elseif not dep thendoPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,'Insira um valor.')elseif getPlayerMoney(cid)>= dep thensetPlayerStorageValue(cid,storeige,c+dep)doPlayerRemoveMoney(cid,dep)msg(cid,'Você depositou '..dep1..' dollares. ('..dep2..'K ou '..dep3..'KK)')elselocal c = getPlayerMoney(cid)/100local d = getPlayerMoney(cid)/100000local e = getPlayerMoney(cid)/100000000msg(cid,'Você não tem esse dinheiro. Você tem '..g..' dollares na sua mochila. ('..h..'K ou '..i..'KK)')endendendelseif param:match('withdraw (.+)') or param:match('w (.+)') or (words =='!withdraw') thenlocal v = param:match('withdraw (.+)') or param:match('w (.+)') or tonumber(param) or param =='all' and paramlocal dep = tonumber(v =='all' and c or v)local dep1 = tonumber(v =='all' and c or v)/100local dep2 = tonumber(v =='all' and c or v)/100000local dep3 = tonumber(v =='all' and c or v)/100000000local dep4 = tonumber(v =='all' and c or v)*100if v =="all" and dep ==0 then msg(cid,'Você não tem dinheiro na sua conta.')elseif not dep thendoPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,'Insira um valor.')elseif c >= dep thensetPlayerStorageValue(cid,storeige,c-dep)doPlayerAddMoney(cid,dep)msg(cid,'Você sacou: '..dep1..' dollares. ('..dep2..'K ou '..dep3..'KK)')elsemsg(cid,'Você não tem esse dinheiro. Seu saldo é: '..d..' dollares. ('..e..'K ou '..f..'KK)')endendendelsedoPlayerSendTextMessage(cid,25,"Diga:\n/bank d (quantidade) | para depositar na sua conta\n/bank w (quantidade) | para sacar dinheiro da sua conta\n/bank b | para ver o saldo da sua conta\n/bank a | para ver quanto dinheiro você tem na mochila\nVocê pode usar a palavra ''all'' no lugar da quantidade, para sacar/depositar todo o seu dinheiro.\nLembre-se que o sistema de sacar/depositar está em centavos, então é necessário adicionar 5 zeros depois do número de K's que você quer depositar/sacar.\nExemplo: 1k = (1)00000, 10k = (10)00000, 100k = (100)00000, 1kk = (1000)00000.\nO número dentro dos parênteses são apenas para exemplificar a quantidade de K's, você não usa os parênteses no comando.")endreturn TRUEend
Pergunta
Bodak Reborn 28
Hey,
então, eu peguei o Bank System por talkaction feito pelo Mock e tentei fazer alguns cálculos para transformar o sistema (que é em cents) para dollar. EX: Para depositar 1k, devo falar
/bank d 100000
o ideal seria eu falar
/bank d 1000
o problema está no comando all, que deposita/saca todo seu dinheiro. Eu consegui transformar de cents para dollar, pegando a variável de adicionar/remover item e multiplicar por 100, o problema é que caso o jogador deposite algum dinheiro sem o all, assim: /bank d 100000000, quando ele for sacar com o /bank w all (comando que saca todo o dinheiro da sua conta bancária), ele vai receber 100 vezes mais do que ele depositou. Por que o all vai multiplicar o saldo da sua conta bancária por 100.
O código está imprimindo em dollar, mas os comandos são em centavos.
E outra coisa, caso o jogador deposit mais de 42 milhões, 969,4 mil, 76 dollares e 96 centavos, o saldo é zerado. E às vezes buga, dando saldo negativo, inclusive criando stacks de 226 notas.
Não sei se ficou claro, se estiver confuso, me avisem.
Agradeço se alguém puder ajudar.
Amanhã vou tentar fazer o transfer, para transferir dinheiro da conta bancária para outros jogadores. Se eu conseguir, eu edito aqui, caso alguém queira.
Código:
talkactions.xml:
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados