Ir para conteúdo
Entre para seguir isso  
viniciusfeijo

[N: Fácil] Sistema de imposto

Recommended Posts

viniciusfeijo    0
viniciusfeijo

Olá a todos como vão? :D

 

Estou postando aqui um sistema de imposto e desconto 100% meu, nunca vi no site algo parecido portanto decidi criar e compartilhar ele. Ele é para Tibia 8.0 mas não sei se funciona em versoes anteriores, quem puder dar um test ai da um post comentando q deu td certo.

 

 

O que esse sistema faz?

R: Bom, toda vez quando vc iniciar o server os itens terão preços variados por causa do reajuste dos impostos ou de desconto do server.

 

Sistema de Imposto 100 % by orothrez:

Como exemplo, usarei o npc Seller, aquele q vende bps, rope, shovel, etc.

 

abrá o arquivo Global.lua que se localiza dentro da pasta Data de seu otserver. Na ultima linha, pule mais duas linhas e coloque o seguinte código:

 

-- Tax system by Orothrez
[b][color=Red]IMPOSTOSELLER[/color][/b] = [color=Green][color=Black]math.random[/color](5,30)[/color]
[color=Red][b]RIMPOSTOSELLER[/b][/color] = [color=Blue]IMPOSTOSELLER / 100 [color=Black]-- sempre dividir por 100[/color][/color]

bom o que se encontra em vermelho são variáveis, ou seja, pode ser dado qualquer nome, poderia ser IMPOSTOSELLER, como poderia ser IMPOSTO, etc, desde que não tenha caracteres especiais (ç # @ ! ?) e números na frente. Recomendo que use apenas letras pois com certeza não haverá problemas.

 

O que se encontra em verde é a porcentagem de imposto que terá nos itens. No caso ali será um imposto de no mínimo 5% e no máximo 30%. Por exemplo a backpack vale 10 gp, caso caia 10% ela valerá 11 gp no dia. Após reiniciar o otserver ela terá outro valor.

 

O que acontece no caso de cair 5% em um item de 10 gps?

R: O resultado seria um número quebrado, porém o otserver só considera a parte Inteira do valor. Por exemplo se a bp vale 10 gp e há um reajuste de 5% a bp valeria 10,5 gp, porém como o otserver apenas atende a parte inteira, ela continuará valendo 10 gp.

Na parte Azul é o calculo que converte o numero em % para decimal, para ser efetuado o cálculo corretamente. SEMPRE será dividido por 100

 

 

Após isso salve o arquivo e va pra a pasta data/npc/scripts e abra o arquivo do npc que vende as bps, ropes, etc (usado no exemplo), no caso, no meu otserver é o seller.lua

 

No meu seller.lua, a parte que iremos mexer se encontra assim:

 


if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then
         selfSay('Hello, ' .. getCreatureName(cid) .. '! I sell Key ring (25k), ropes (10gp), shovels (10gp), backpacks (ask for backpack), fishing rods (100gp), Obsidian Knife(7k), Blessed Wooden Stake(13k) and torches (2gp). I buy vials (5gp).')
         focus = cid
         talk_start = os.clock()

Então ele ficará assim:

if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then
         selfSay('Hello, ' .. getCreatureName(cid) .. '! I sell Key ring (25k), ropes (10gp), shovels (10gp), backpacks (ask for backpack), fishing rods (100gp), Obsidian Knife(7k), Blessed Wooden Stake(13k) and torches (2gp). I buy vials (5gp). [color=Red]The tax today is of ' ..IMPOSTOSELLER.. '%')[/color]
         focus = cid
         talk_start = os.clock()

Onde está em vermelho é onde foi alterado. Agora ele falará também a % de imposto que esta no momento.

 

E para finalizar, os itens estão assim (peguei apenas 3 para exemplo):

 

if msgcontains(msg, 'shovel') then
           buy(cid,5710,getCount(msg),10)

       elseif msgcontains(msg, 'blue backpack') then
           buy(cid,2002,getCount(msg),30)

                   elseif msgcontains(msg, 'green backpack') then
           buy(cid,1998,getCount(msg),10)

Agora ele ficará assim:

 

       if msgcontains(msg, 'shovel') then
           buy(cid,5710,getCount(msg),[color=Orange]10[/color][color=Red][color=Black]*[/color]RIMPOSTOSELLER [color=Black]+[/color] [color=Orange]10[/color][/color])

       elseif msgcontains(msg, 'blue backpack') then
           buy(cid,2002,getCount(msg),[color=Orange]30[/color][color=Red][color=Black]*[/color]RIMPOSTOSELLER [color=Black]+[/color] [color=Orange]30[/color][/color])

                   elseif msgcontains(msg, 'green backpack') then
           buy(cid,1998,getCount(msg),[color=Orange]10[/color][color=Red][color=Black]*[/color]RIMPOSTOSELLER [color=Black]+[/color] [color=Orange]10[/color][/color])

Observe que que os números coloridos antes e depois do RIMPOSTOSELLER devem ser SEMPRE IGUAIS e o que está em Vermelho é aquela variável lá em cima igual ao do global.lua, eles também devem ser sempre iguais, caso mude o nome da variável no global.lua, será necessário mudar aqui no npc também e o que está em laranja é o preço normal do item. É necessário colocar antes e depois do IMPOSTOSELLER pois o primeiro número do preço será manipulado para o reajuste e o segundo é o preço normal.

 

 

Sistema de desconto 100% by orothrez:

 

Agora vou mostrar o sistema de desconto. É quase igual ao de cima, muda apenas o cálculo na hora de vender o item, portanto na parte do global.lua é a mesma coisa, apenas adicione variáveis diferentes. Exemplo:

 

[color=Red][color=Black][color=Red][color=Black][color=Red]DESCONTOWANDROD[/color] = math.random [color=Green](10,20)[/color]
[color=Red]RDESCONTOWANDROD[/color] = [color=Blue]DESCONTOWANDROD / 100 [/color]-- sempre dividir por 100[/color][/color][/color][/color]

 

Observe que é a mesma coisa do sistema de imposto. A parte em vermelho são as variáveis que já expliquei no inicio do tópico. Na parte verde é a faixa da porcentagem mínima e máxima de desconto que terá no ot, por exemplo pode cair 10% 11% 12%, etc e na parte azul é o cálculo para converter o valor em % para decimal. Agora usaremos outro npc de exemplo para criar o sistema de desconto. Usarei o npc que vende wand e rod, no caso, aqui o npc se chama wands.lua que se encontra na pasta data/npc/scripts.

 

Ao abrir, na parte que modificaremos ele se encontrará assim:

 


if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) < 4 then
         selfSay('Hello ' .. getCreatureName(cid) .. '! I sell wands, rods, Knight axe (4k), Fire Sword (5k), Dragon Hammer (3k) and Lottery Ticket (1k). ')
         focus = cid
         talk_start = os.clock()

Para que ele fale a taxa de desconto que terá la loja devemos alterar e deixar assim:

 

if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) < 4 then
         selfSay('Hello ' .. getCreatureName(cid) .. '! I sell wands, rods, Knight axe (4k), Fire Sword (5k), Dragon Hammer (3k) and Lottery Ticket (1k). [color=Red]The store are selling all itens with ' ..DESCONTOWANDROD.. ' % of discount. ')[/color]
         focus = cid
         talk_start = os.clock()

Agora sim vem a parte que diferencia os dois scripts, é o calculo na hora de vender o item, observe agora.

 

O npc original na parte que iremos modificar vem assim:

 

      if msgcontains(msg, 'cosmic energy') then
           buy(cid,2189,getCount(msg),3000)
       elseif msgcontains(msg, 'vortex') then
           buy(cid,2190,getCount(msg),100)
       elseif msgcontains(msg, 'dragonbreath') then
           buy(cid,2191,getCount(msg),500)

Agora ficará assim:

 


elseif msgcontains(msg, 'cosmic energy') then
         buy(cid,2189,getCount(msg),[color=DarkOrange]3000[/color] - [color=Red]RDESCONTOWANDROD[/color] * [color=DarkOrange]3000[/color])
       elseif msgcontains(msg, 'vortex') then
           buy(cid,2190,getCount(msg),[color=DarkOrange]100[/color] - [color=Red]RDESCONTOWANDROD[/color] * [color=DarkOrange]100[/color])
       elseif msgcontains(msg, 'dragonbreath') then
           buy(cid,2191,getCount(msg),[color=DarkOrange]500[/color] - [color=Red]RDESCONTOWANDROD[/color] * [color=DarkOrange]500[/color])

Repare que é parecido com o sistema de imposto, mas é diferente, ao invés de somar, ele subtrai, porém é necessário colocar primeiro a subtração porque se fosse colocado depois poderia resultar em numeros negativos e travar o ot, então é necessário colocar exatamente nesta ordem ok? Salve tudo e teste.

OBS: Script testado apenas na versão Devland 0.96b, caso funcione bem em outro otserver poste aqui também.

 

Bom, é só isso pessoal, também é possivel criar impostos para outros npcs, caso queria criar impostos diferentes para diferentes npc é só apenas adicionar variáveis novas no global.lua com a % desejada e fazer o mesmo procedimento do npc para fazer o npc funcionar corretamente. T+, Espero que tenham gostado e por favor não removam os créditos ok? T+ :bye:

 

 

@Gandalrf

 

Da pra fazer isso sim, para cada npc vc cria duas variaveis daquelas entende? Só q com nomes diferentes e configurar no seu script do npc.

 

@Balillo

 

Tpw, testei aqui de novo falei hi e bye 3x só q aqui ta normal cara, da uma olhadinha ai se vc adicionou certinho as paradas ai :P tenho ateh uma ss aqui..

 

http://img215.imageshack.us/my.php?image=ss01bt2.jpg

 

@Dudots

 

Ty pelos OT$ :D. Mas que tipo de ajuste ficaria melhor o script? pode falar ai q tento dar uma mexida flws =).

@kptadezorba

 

Criei esse sistema com o intuito de ter uma variação maior nos preços dos itens, agora não entendi seu post se foi um elogio, uma critia, se vc achou bom ou ruim....

@Higornf

 

N entendi muito bem a sua pergunta, vc quer saber q hora q muda a porcentagem? Se for isso ele muda quando vc reinicia o server.

 

@Balillo

 

Olha, eu não tenho certeza sobre o desconto, a formula la.

Exemplo: 100 - DESCONTOWAND * 100

Quando vc faz a conta numa calculadora, ele primeiro faz o 100 - DESCONTO para depois multiplicar e isso faz um numero enorme...

 

O certo seria ficar 100- (DESCONTOWAND * 100) que dai ta referindo que é primeiro para fazer a conta dentro do parantesis...

 

Não sei se estou certo, mas matematicamente seria isso.

Tpw, pela prioridade n executa primeiro a multiplicação pra depois somar ou subtrair??? Acho q da no mesmo usar parenteses ou nao nessa operaçao ;P

 

@CIAKILLES

Oq aconteceu pra vc nao conseguir colocar no ot? eh 8.0 o seu? manda PM se quiser.

 

@Caips

 

Tpw, eu postei um exemplo de como e onde usa, vc pode envolver isso em quest sei lá, pro cara comprar itens com desconto ele tendo q ter uma quest, ou entao com uma bos historia voce consegue fazer bom proveito desse sisteminha ai...

 

@Fullhouse

Sim, adicionando esse conteudo em vermelho ele vai falar a taxa de imposto que esta no dia, nao eh obrigatorio, mas eh bom neh pra pessoa saber quando ta a % de imposto.. e esse codigo aki:

 

		 				elseif msgcontains(msg, 'cosmic energy') then
         buy(cid,2189,getCount(msg),3000 - RDESCONTOWANDROD * 3000)
       elseif msgcontains(msg, 'vortex') then
           buy(cid,2190,getCount(msg),100 - RDESCONTOWANDROD * 100)
       elseif msgcontains(msg, 'dragonbreath') then
           buy(cid,2191,getCount(msg),500 - RDESCONTOWANDROD * 500)

 

vc tem q usar ele sim pra poder funcionar =p, ai eh a parte q faz o calculo q sai o preço alterado, se vc n usar n sai alteraçao nenhuma...

Compartilhar este post


Link para o post
Compartilhar em outros sites
Dark    3
Dark

interessante ^^

 

Aprovado

Movido

(Scripting Tutoriais)

Compartilhar este post


Link para o post
Compartilhar em outros sites
lokkorox    0
lokkorox

uhh... du mall...

curtii... vo colok no servidor aki...

Compartilhar este post


Link para o post
Compartilhar em outros sites
BrunoBsB    0
BrunoBsB

muito interessante , isso ia gerar um balanço maior na economia do ot

ia ficar bem da hora se colocase um NPC em cada cidade com impostos diferentes ia ficar bem legal

parabéns pelo sistema ;D

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites
Dracoy    0
Dracoy

Muito boa a sua idéia, bem formulada.

 

Parabéns.

Compartilhar este post


Link para o post
Compartilhar em outros sites
[ B a l i l l o ]    0
[ B a l i l l o ]

Olha, eu acho que tem um bug...

 

Pelo jeito o random fica ali, exemplo:

 

O player xega e fala 'hi', dai aparece msg que o imposto é de 25%

Dai ele fala bye e fala hi dnovo, dai aparece que o imposto é de 7%

 

Logico que ele vai fikar com o 'hi' do 7%...

 

Tenta fazer algo para ficar o desconto SEMPRE... e não apenas no momento daquele hi :s

Compartilhar este post


Link para o post
Compartilhar em outros sites
dudots    0
dudots

0.o mt boa ideia, com algums ajustes ficaria perfeito!!!

Vo usar isso no meu ot dps...

 

+ 20 OT$ pra você!

Compartilhar este post


Link para o post
Compartilhar em outros sites
hunhoff123    0
hunhoff123

Muito bom achei interessante...

 

Parabens.^^

Compartilhar este post


Link para o post
Compartilhar em outros sites
kptadezorba    0
kptadezorba

o roubo chegou ateh no ot

Compartilhar este post


Link para o post
Compartilhar em outros sites
SnOk ZerO    0
SnOk ZerO

;)Òtimo coloquei no meu OTServ ;D

Aprovado.

LucMan :~

Compartilhar este post


Link para o post
Compartilhar em outros sites
higornf    0
higornf

mto legal + tpw muda no "hi" ou no dia do tibia!!! tpw o tibia tem otro tipw de horario explika ae!!

+ fiko mto rox!!

Compartilhar este post


Link para o post
Compartilhar em outros sites
paladinpk    1
paladinpk

muito rox so arruma esse negocio de fala hi ai :D fika show vlwww

Compartilhar este post


Link para o post
Compartilhar em outros sites
Full'House    0
Full'House
elseif msgcontains(msg, 'cosmic energy') then

buy(cid,2189,getCount(msg),3000 - RDESCONTOWANDROD * 3000)

elseif msgcontains(msg, 'vortex') then

buy(cid,2190,getCount(msg),100 - RDESCONTOWANDROD * 100)

elseif msgcontains(msg, 'dragonbreath') then

buy(cid,2191,getCount(msg),500 - RDESCONTOWANDROD * 500)

 

Isso é como ficaria quando adiconasse o

if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) < 4 then

selfSay('Hello ' .. getCreatureName(cid) .. '! I sell wands, rods, Knight axe (4k), Fire Sword (5k), Dragon Hammer (3k) and Lottery Ticket (1k). The store are selling all itens with ' ..DESCONTOWANDROD.. ' % of discount. ')

focus = cid

talk_start = os.clock()

 

Ou precisa por o

elseif msgcontains(msg, 'cosmic energy') then

buy(cid,2189,getCount(msg),3000 - RDESCONTOWANDROD * 3000)

elseif msgcontains(msg, 'vortex') then

buy(cid,2190,getCount(msg),100 - RDESCONTOWANDROD * 100)

elseif msgcontains(msg, 'dragonbreath') then

buy(cid,2191,getCount(msg),500 - RDESCONTOWANDROD * 500)

Manualmente?(Essa pergunta vale tanto para a taxa a mais como o desconto.)

 

OBS esse eu considero um exemplo de tutotial voce explicou tudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Addicted    1
Addicted

otima ideia :D

Compartilhar este post


Link para o post
Compartilhar em outros sites
[ B a l i l l o ]    0
[ B a l i l l o ]

Ahh esquece o que eu disse la, eu vi em outro topic que randoms que é posto pelo global.lua acontecem quando o server liga, fazendo assim um unico valor :)

Compartilhar este post


Link para o post
Compartilhar em outros sites
NooS    0
NooS

Bem rox e bem criativo.

vlws =D

Compartilhar este post


Link para o post
Compartilhar em outros sites
Chê.    1
Chê.

Bem interessante, principalmente quando adaptado a quest.

Irei adaptalo e testar no meu servidor 4fun ;D

 

Yours,

Willian;

Compartilhar este post


Link para o post
Compartilhar em outros sites
xyHedyxy    0
xyHedyxy

boa nossa bem bolado mew gostei...

 

xD

a ot net precisa de pessoas como vc !!!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Macô̲oii    0
Macô̲oii

Opaa mto bãoo , vai fik = vida rl asdpákd

Compartilhar este post


Link para o post
Compartilhar em outros sites
ilow    0
ilow

Cada vez fika mas pareçido com o nosso Brasil :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×