[Pedido]: Script de Economia

    Compartilhe

    Aither
    Semi-Experiente
    Semi-Experiente

    Mensagens : 91
    Créditos : 3

    [Pedido]: Script de Economia

    Mensagem por Aither em Qui Nov 13, 2014 3:54 pm

    Olá, eu (& alguém) estou/estamos fazendo um jogo e pretendemos adicionar um script de economia, para ajudar-nos na fixação/inflação de preços.
    Já temos a fórmula do sistema de economia, mas precisamos de um script que cria um log para cada jogador mostrando o que ele comprou no total, sem data e etc.

    Ou seja...

    [Proposta]:
    ~Fazer um script que gere um LOG em arquivo para cada player, nesse LOG exibirá as compras feitas por ID e quantia, exemplo: (ID=9) id = id, 9 = quantia de compras no total feitas.

    [Recompensa]:
    ~Negociaremos a recompensa, obs: eu pago.


    _________________
    Batatinha quando nasce, espalha rama chão, menina quando olha, bota a mão no seu coração.
    Angel Angel Angel

    blackcrow
    Semi-Experiente
    Semi-Experiente

    Mensagens : 103
    Créditos : 35

    Re: [Pedido]: Script de Economia

    Mensagem por blackcrow em Sex Nov 14, 2014 5:49 pm

    Boas, como prometido, está aqui:


    - Na pasta "Servidor" crie uma nova pasta com o nome "Compras".
    - No script "Window_ShopBuy" procure o método "def sell(item)", dentro desse método procure a linha: 
    $game_party.lose_item(Config::GOLD_ID.to_i,amount * item.price) 
    Abaixo dessa linha adicione isso: 

    Código:
    Network::Main.socket.send("<buy>#{item.id};#{amount};#{$game_party.actors[0].name}\n")


    - Agora abra com o bloco de notas o arquivo "functions.lua" que está na pasta "Scripts" do servidor e adicione esse código antes dos dois "end" final do arquivo:
    Código:
    elseif cmd == "<buy>" then
      do
        data = string.gsub(data,"<buy>","")
        local first = string.find(data,";")
        local last = string.find(data,";",first+1)
        local id = string.sub(data,1,first-1)
        local qt = string.sub(data,first+1,last-1)
        local char = string.sub(data,last+1)
        local test = io.open("Compras/"..user.name..".txt","r")
        if test then
          test:close()
          file = io.open("Compras/"..user.name..".txt","a+")
          file:write("["..os.date("%d/%m/%y - %H:%M:%S").."]: Character name: "..char..", Item ID: "..id..", Quantity: "..qt.."\n")
          file:close()
        else
          file = io.open("Compras/"..user.name..".txt","w")
          file:write("["..os.date("%d/%m/%y - %H:%M:%S").."]: Character name: "..char..", Item ID: "..id..", Quantity: "..qt.."\n")
          file:close()
        end
      end
    --
    As informações que serão salvas:
    - Data e hora do LOG. (no server)
    - Character name = nome do personagem que comprou.
    - Item ID = ID do item no Database.
    - Quantity = Quantidade comprada.
    O arquivo será salvo dentro da pasta "Compras" com o nome de usuário do jogador e no  formato de texto.

    Aither
    Semi-Experiente
    Semi-Experiente

    Mensagens : 91
    Créditos : 3

    Re: [Pedido]: Script de Economia

    Mensagem por Aither em Dom Nov 16, 2014 12:59 pm

    Obrigado! O meu amigo disse que no dele funcionou, então tá' sussa! Valeu mesmo.


    _________________
    Batatinha quando nasce, espalha rama chão, menina quando olha, bota a mão no seu coração.
    Angel Angel Angel

    blackcrow
    Semi-Experiente
    Semi-Experiente

    Mensagens : 103
    Créditos : 35

    Re: [Pedido]: Script de Economia

    Mensagem por blackcrow em Dom Nov 16, 2014 2:23 pm

    Eu tmb fiz um script que salva o log do trade, se quiser, é só pedir.

    Aither
    Semi-Experiente
    Semi-Experiente

    Mensagens : 91
    Créditos : 3

    Re: [Pedido]: Script de Economia

    Mensagem por Aither em Dom Nov 16, 2014 3:24 pm

    Eu quero cara, valeu!


    _________________
    Batatinha quando nasce, espalha rama chão, menina quando olha, bota a mão no seu coração.
    Angel Angel Angel

    blackcrow
    Semi-Experiente
    Semi-Experiente

    Mensagens : 103
    Créditos : 35

    Re: [Pedido]: Script de Economia

    Mensagem por blackcrow em Seg Nov 17, 2014 12:27 pm

    RMXP:
    - No script Their_Trade procure o método def accept(id=0) e troque ele por esse:
    Código:
    def accept(id=0)
        return if $game_trade.leader_id == 0
        if id == 0
          #-------------------------------
          # * Gerar log do trade
          #-------------------------------
          data = ""
          data2 = ""
          $game_trade.items[@id].each do |k,v|
            data += ",#{k}-#{v}"
          end
          $game_trade.weapons[@id].each do |k,v|
            data += ",#{k}-#{v}"
          end
          $game_trade.armors[@id].each do |k,v|
            data += ",#{k}-#{v}"
          end
          $game_trade.items_2[@id].each do |k,v|
            data2 += ",#{k}-#{v}"
          end
          $game_trade.weapons_2[@id].each do |k,v|
            data2 += ",#{k}-#{v}"
          end
          $game_trade.armors_2[@id].each do |k,v|
            data2 += ",#{k}-#{v}"
          end
          Network::Main.socket.send("<40t>#{data};#{data2}@#{$game_party.actors[0].name};#{$scene.checkplayername(@id)}\n")
        end
        $game_trade.items_2[@id].each do |k,v|
          $game_party.gain_item(k,v)
        end
        $game_trade.weapons_2[@id].each do |k,v|
          $game_party.gain_weapon(k,v)
        end
        $game_trade.armors_2[@id].each do |k,v|
          $game_party.gain_armor(k,v)
        end
        $game_trade.items_2.clear
        $game_trade.weapons_2.clear
        $game_trade.armors_2.clear
        self.index = 0
        Network::Main.send_trade(@id,"$game_trade.remove_all") if id == 0
        $scene.invitation_window.on_close
        $scene.currency_window.on_close
        $scene.equip_window.on_close
        dispose
        $scene.trade_window.dispose
        $scene.your_trade.dispose
        $scene.their_trade = nil
        $scene.trade_window = nil
        $scene.your_trade = nil
        $game_trade.leader_id = 0
        $game_trade.request_type = 0
      end

    Server:
    - Abra o arquivo functions.lua e antes dos dois end no final do arquivo adicione isso:
    Código:
    -- Trade log
    elseif cmd == "<40t>" then
      do
        data = string.gsub(data,"<40t>","")
        local s1 = string.find(data,";")
        local sep = string.find(data,"@",s1+1)
        local s2 = string.find(data,";",sep+1)
        local item1 = string.sub(data,2,s1-1)
        local item2 = string.sub(data,s1+2,sep-1)
        local char1 = string.sub(data,sep+1,s2-1)
        local char2 = string.sub(data,s2+1)
        local f = io.open("Trade/tradelog.txt","r")
        if f then
          f:close()
          f = io.open("Trade/tradelog.txt","a+")
          f:write("["..os.date("%d/%m/%y - %H:%M:%S").."] Character1: "..char1..", Items ID-QT: ["..item1.."] | Character2: "..char2..", Items ID-QT: ["..item2.."]\n")
          f:close()
        else
          f = io.open("Trade/tradelog.txt","w")
          f:write("["..os.date("%d/%m/%y - %H:%M:%S").."] Character1: "..char1..", Items ID-QT: ["..item1.."] | Character2: "..char2..", Items ID-QT: ["..item2.."]\n")
          f:close()
        end
      end
    --
    Informações salvas:
     - Data e hora do log (server).
     - Character1 e Character2 = Nomes do dois chars que fizeram a troca.
     - Items ID-QT = Items oferecidos pelo jogador no trade, ID = id do item no database, QT = quantidade do item. Salvas nesse formato: [ID-QT,ID-QT,...] se um dos jogadores ofereceu mais de 1 item.
    O arquivo será salvo dentro da pasta Compras com o nome tradelog no formato de texto, todos os logs de trades do jogo serão salvos nesse arquivo.


    Última edição por blackcrow em Seg Nov 17, 2014 9:44 pm, editado 1 vez(es)

    Komuro Takashi
    Moderador Local
    Moderador Local

    Mensagens : 996
    Créditos : 120

    Re: [Pedido]: Script de Economia

    Mensagem por Komuro Takashi em Seg Nov 17, 2014 1:07 pm

    blackcrow escreveu:RMXP:
    - No script Their_Trade procure o método def accept(id=0) e troque ele por esse:
    Código:
    def accept(id=0)
        return if $game_trade.leader_id == 0
        if id == 0
          #-------------------------------
          # * Gerar log do trade
          #-------------------------------
          data = ""
          data2 = ""
          $game_trade.items[@id].each do |k,v|
            data += "#{k}-#{v},"
          end
          $game_trade.weapons[@id].each do |k,v|
            data += "#{k}-#{v},"
          end
          $game_trade.armors[@id].each do |k,v|
            data += "#{k}-#{v},"
          end
          $game_trade.items_2[@id].each do |k,v|
            data2 += "#{k}-#{v},"
          end
          $game_trade.weapons_2[@id].each do |k,v|
            data2 += "#{k}-#{v},"
          end
          $game_trade.armors_2[@id].each do |k,v|
            data2 += "#{k}-#{v},"
          end
          Network::Main.socket.send("<40t>[#{data}];[#{data2}]@#{$game_party.actors[0].name};#{$scene.checkplayername(@id)}\n")
        end
        $game_trade.items_2[@id].each do |k,v|
          $game_party.gain_item(k,v)
        end
        $game_trade.weapons_2[@id].each do |k,v|
          $game_party.gain_weapon(k,v)
        end
        $game_trade.armors_2[@id].each do |k,v|
          $game_party.gain_armor(k,v)
        end
        $game_trade.items_2.clear
        $game_trade.weapons_2.clear
        $game_trade.armors_2.clear
        self.index = 0
        Network::Main.send_trade(@id,"$game_trade.remove_all") if id == 0
        $scene.invitation_window.on_close
        $scene.currency_window.on_close
        $scene.equip_window.on_close
        dispose
        $scene.trade_window.dispose
        $scene.your_trade.dispose
        $scene.their_trade = nil
        $scene.trade_window = nil
        $scene.your_trade = nil
        $game_trade.leader_id = 0
        $game_trade.request_type = 0
      end

    Server:
    - Abra o arquivo functions.lua e antes dos dois end no final do arquivo adicione isso:
    Código:
    -- Trade log
    elseif cmd == "<40t>" then
      do
        data = string.gsub(data,"<40t>","")
        local s1 = string.find(data,";")
        local sep = string.find(data,"@",s1+1)
        local s2 = string.find(data,";",sep+1)
        local item1 = string.sub(data,1,s1-1)
        local item2 = string.sub(data,s1+1,sep-1)
        local char1 = string.sub(data,sep+1,s2-1)
        local char2 = string.sub(data,s2+1)
        local f = io.open("Compras/tradelog.txt","r")
        if f then
          f:close()
          f = io.open("Compras/tradelog.txt","a+")
          f:write("["..os.date("%d/%m/%y - %H:%M:%S").."] Character1: "..char1..", Items ID-QT: "..item1.." | Character2: "..char2..", Items ID-QT: "..item2.."\n")
          f:close()
        else
          f = io.open("Compras/tradelog.txt","w")
          f:write("["..os.date("%d/%m/%y - %H:%M:%S").."] Character1: "..char1..", Items ID-QT: "..item1.." | Character2: "..char2..", Items ID-QT: "..item2.."\n")
          f:close()
        end
      end
    --
    Informações salvas:
     - Data e hora do log (server).
     - Character1 e Character2 = Nomes do dois chars que fizeram a troca.
     - Items ID-QT = Items oferecidos pelo jogador no trade, ID = id do item no database, QT = quantidade do item. Salvas nesse formato: [ID-QT,ID-QT,...] se um dos jogadores ofereceu mais de 1 item.
    O arquivo será salvo dentro da pasta Compras com o nome tradelog no formato de texto, todos os logs de trades do jogo serão salvos nesse arquivo.

    É maninho parabéns pelos scripts serão de grande ajuda


    _________________

    Aither
    Semi-Experiente
    Semi-Experiente

    Mensagens : 91
    Créditos : 3

    Re: [Pedido]: Script de Economia

    Mensagem por Aither em Ter Nov 18, 2014 6:50 pm

    Obrigado blackcrow! Eu agradeço!


    _________________
    Batatinha quando nasce, espalha rama chão, menina quando olha, bota a mão no seu coração.
    Angel Angel Angel

    Trpino
    Membro Ativo
    Membro Ativo

    Mensagens : 280
    Créditos : 10

    Re: [Pedido]: Script de Economia

    Mensagem por Trpino em Ter Nov 18, 2014 7:58 pm

    eu não digo ele des que chegou já ajudou muita gente se continuar assim ele pode ser considerado membro de honra acho que lhe fica muito bem 

    estou a falar do blackcrow


    _________________
                                                                                                                                          

      Data/hora atual: Seg Dez 05, 2016 5:31 am