Suporte ao desenvolvimento de jogos!


    LM² - Party

    Compartilhe
    avatar
    LeonMM
    Moderador Local
    Moderador Local

    Mensagens : 1932
    Créditos : 115

    LM² - Party

    Mensagem por LeonMM em Dom Set 03, 2017 7:15 pm

    LM² - Party 1.0:
    Fiz este sistema a pedidos na fábrica, e para retirar mais um trabalho das costas do Val, ele possui menu de interação para membros da Party, e EXP Share.
    Já aviso que o sistema não está em sua versão final, ainda falta alguns detalhes que eu gostaria de adicionar, como mudar a cor do nome para os membros da mesma party, chat exclusivo para party, e para quem usa meu minimapa, alterar a cor dos membros da party, não fiz isto ainda, mas farei quando estiver com mais disposição

    Screen:
    Screen:
    Tutorial Básico:
    Coloque as imagens do link abaixo na pasta Pictures

    Cliente:
    Tutorial Cliente:
    Primeiramente insiram um novo script com o código rmxp do link abaixo.
    Código RMXP
    Agora vem a parte complexa.
    Vão no script [NM] Network, abaixo de:

    Código:
      PACKET_ADMIN_COMMAND        = '<39>'

    Coloque:

    Código:
      PACKET_PARTY_MEMBER         = '<52>'
      PACKET_PARTY_INFO           = '<53>'

    Vão no script [NM] Wnidow_Choice, adicionem no def yes acima do end acima de on_close:

    Código:
        when 2 # LM² - Party
          $network.party_member(1,"#{@index}")  

    No mesmo script acima de on_close do def no:

    Código:
    $network.party_member(2, "#{@index}") if @type == 2

    Vá ao script [NM] Window_Interaction, troque o 71 de super(0, 0, 91, 71) por 92 e abaixo de @trade_button adicione:

    Código:
        @party_button = Button.new(self, 16, 63, LMM_Party::PARTY, 59) { call_party}

    No mesmo script antes do ultimo end adicione:

    Código:
      def call_party
        if $party_manager.members.size == (LMM_Party::MAX_MEMBERS - 1)
          $windows[:chat].write(LMM_Party::FULL, 5)
          on_close  
          return
        elsif $party_manager.members.has_key?(@index.to_s)
          $windows[:chat].write("#{$party_manager.members[@index.to_s].name} "+LMM_Party::ALREADY, 5)
          on_close  
          return
        end  
        $network.party_member(0,"#{@index};#{$game_party.actors[0].name}")
        on_close    
      end

    Procure por:

    Código:
    $game_trade         = Game_Trade.new

    Abaixo Adicione

    Código:
    $party_manager      = Party_Manager.new

    Vá no script [NM] Scene_Map, no def update_windows antes do end, adicione:

    Código:
        $party_manager.update

    Procure por:

    Código:
      when PACKET_ADMIN_COMMAND; handle_admin_command(data)

    Abaixo adicione

    Código:
        when PACKET_PARTY_MEMBER; handle_party_member(data)
        when PACKET_PARTY_INFO; handle_party_info(data)

    Agora iremos para o Servidor, está é a parte mais complexa do tutorial.
    Servidor:
    Tutorial Servidor :


    Primeiramente copie o código lua do link Código Lua, com o código copiado, abra o arquivo handledata.lua da pasta Scripts, e adicione esse código no final, com esse arquivo aberto, abaixo de:

    Código:
    elseif header == PACKETVARIABLE then self:handlevariable(index, player, data)

    Adicione:

    Código:
        elseif header == PACKETPARTYMEMBER then self:handlepartymember(index, player, data)

    Abra o arquivo constants.lua e e adicione no final:

    Código:
    PACKETPARTYMEMBER        = '<52>'
    PACKETPARTYINFO          = '<53>'

    Vá no arquivo event.lua e procure por:

    Código:
    Server.players[self.target]:gainexp(Server.enemies[self.enemyid].exp)        

    Retire este código e no lugar dele adicione:

    Código:
            if #Server.players[self.target].pmembers ~= 0 then
                local exp = Server.enemies[self.enemyid].exp * PXPSHARE / 100
                exp = math.floor(exp)
                if exp < 1 then exp = 1 end
                for i = 1, #Server.players[self.target].pmembers do
                    local k = Server.players[self.target].pmembers[i]
                    Server.players[k]:gainexp(exp)
                end
                Server.players[self.target]:gainexp(exp)
            else    
                Server.players[self.target]:gainexp(Server.enemies[self.enemyid].exp)      
            end

    Abra o arquivo tcpserver, e antes de:

    Código:
    self.players[index] = nil

    Adicione antes:

    Código:
        if #self.players[index].pmembers ~= 0 then
            if self.players[index].pleaderid == index then
                for i = 1, #self.players[index].pmembers do
                    local k = self.players[index].pmembers[i]
                    local tempdata = StringBuilder()
                    tempdata:write(4)
                    tempdata:write(self.players[index].name)    
                    self.players[k].pmembers = {}
                    self.players[k].pleaderid = 0
                    self:sendtoplayer(k, PACKETPARTYMEMBER, tempdata:tostring(';'))
                end
                self.players[index].pmembers = {}
                self.players[index].pleaderid = 0            
            else
                for i = 1, #self.players[index].pmembers do
                    local k = self.players[index].pmembers[i]
                    table.remove(self.players[k].pmembers,removevalue(self.players[k].pmembers,index))
                    if #self.players[k].pmembers == 0 then
                        self.players[k].pleaderid = 0
                        self.players[k].pmembers = {}
                    end    
                    local tempdata = StringBuilder()
                    tempdata:write(3)
                    tempdata:write(2)
                    tempdata:write(index)
                    tempdata:write(self.players[index].name)              
                    self:sendtoplayer(k, PACKETPARTYMEMBER, tempdata:tostring(';'))  
                end      
            end
        end

    Abra o arquivo player.lua, procure por:

    Código:
     self.mytradearmors = {}

    Abaixo coloque:

    Código:
        self.pleaderid = 0
        self.pmembers = {}  

    No mesmo arquivo procure por:

    Código:
    Server:sendtoplayer(self.index, PACKETACTOREXP, exp)

    Acima adicione:

    Código:
         if #self.pmembers ~= 0 then
            for i = 1, #self.pmembers do
                local k = self.pmembers[i]
                local tempdata = StringBuilder()
                tempdata:write(0)
                tempdata:write(self.index)
                tempdata:write(self.level)        
                tempdata:write(self.maxhp)    
                tempdata:write(self.maxsp)
                Server:sendtoplayer(k, PACKETPARTYINFO, tempdata:tostring(';'))
            end    
        end  

    No mesmo arquivo procure por:

    Código:
    Server:sendactorvitals(self)

    Abaixo adicione

    Código:
        if #self.pmembers ~= 0 then
            for i = 1, #self.pmembers do
                local k = self.pmembers[i]
                local tempdata = StringBuilder()
                tempdata:write(1)
                tempdata:write(self.index)
                tempdata:write(self.hp)    
                tempdata:write(self.sp)
                Server:sendtoplayer(k, PACKETPARTYINFO, tempdata:tostring(';'))
            end    
        end    

    Abra o arquivo Settings.txt, no final dele adicione

    Código:
    -- LM² - Party
    MAXPARTYMEMBERS = 5
    PXPSHARE = 50

    Pronto, agora seu script está instalado, para convidar o jogador para um grupo basta usar o menu de interação.
    O próprio sistema de party possui um menu de interação, no qual o jogador pode mandar pm e trade para os membros da party, e o líder da party, o primeiro a convidar alguem, possui a interação de retirar jogador da party, se o lider se retirar da party ela desbanda, e o jogador possui o poder de se retirar da party.
    Configurações:
    Dentro do arquivo Settings do server, você pode configurar o máximo de membros, e a porcentagem de compartilhamento de EXP, no caso por padrão está configurado para cada membro receber 50% da EXP real de um mob.
    O número máximo de membros deve ser o mesmo no Settings do Servidor e no módulo do Script do Cliente.

    Links:
    Imagens
    Creditos:
    A mim por criar, ao Soreto pela ajuda com o estudo do Servidor e Lua, ao Valentine por auxilio.

    Qualquer erro deverá ser reportado. Qualquer duvida leiam minha assinatura.


    Última edição por LeonMM em Dom Set 03, 2017 11:57 pm, editado 3 vez(es)


    _________________
    Caso precise de suporte para algum dos meus scripts, me adicione no Discord: LeonMM#9597
    Scripts para NetMaker:

    Scripts Comuns:
    avatar
    Soubi92
    Novato
    Novato

    Mensagens : 18
    Créditos : 0

    Re: LM² - Party

    Mensagem por Soubi92 em Dom Set 03, 2017 7:36 pm

    Olá,


    Perfect and very nice Script.  +1 amigo.


    ~Soubi92
    avatar
    Valentine
    Administrador
    Administrador

    Medalhas :
    Mensagens : 4688
    Créditos : 1003

    Re: LM² - Party

    Mensagem por Valentine em Dom Set 03, 2017 7:39 pm

    Muito bom, Leon.

    + 1 crédito.


    _________________
    avatar
    Kakashi~
    Moderador Local
    Moderador Local

    Mensagens : 937
    Créditos : 104

    Re: LM² - Party

    Mensagem por Kakashi~ em Dom Set 03, 2017 7:40 pm

    Gostando de ver o seu trabalho, continue assim  I love you

    avatar
    Soubi92
    Novato
    Novato

    Mensagens : 18
    Créditos : 0

    Re: LM² - Party

    Mensagem por Soubi92 em Dom Set 03, 2017 9:28 pm

    Qualquer erro deverá ser reportado. Qualquer duvida leiam minha assinatura.


    Erro #1:

    When Fight with a Enemy:



    Erro #2:


    When Click on a other Player and send him a Group Invite the other Player gets not a Invite Message? 
    Everything made as in the manual


    Server Start -> Group Invite -> Not Message to Accept?


    NetMaker Version 1.0.2


    ~ Soubi92
    avatar
    LeonMM
    Moderador Local
    Moderador Local

    Mensagens : 1932
    Créditos : 115

    Re: LM² - Party

    Mensagem por LeonMM em Dom Set 03, 2017 9:45 pm

    Spoiler:
    @Soubi92 escreveu:
    Qualquer erro deverá ser reportado. Qualquer duvida leiam minha assinatura.


    Erro #1:

    When Fight with a Enemy:



    Erro #2:


    When Click on a other Player and send him a Group Invite the other Player gets not a Invite Message? 
    Everything made as in the manual


    Server Start -> Group Invite -> Not Message to Accept?


    NetMaker Version 1.0.2


    ~ Soubi92
    Please, add me on Discord so we can work out what's going on.
    LeonMM#9597
    ---
    Tópico atualizado, correção de código na parte do Servidor, por favor revisem.


    _________________
    Caso precise de suporte para algum dos meus scripts, me adicione no Discord: LeonMM#9597
    Scripts para NetMaker:

    Scripts Comuns:
    avatar
    LeonMM
    Moderador Local
    Moderador Local

    Mensagens : 1932
    Créditos : 115

    Re: LM² - Party

    Mensagem por LeonMM em Seg Set 04, 2017 12:00 am

    Tópico atualizado, estava faltando informações.
    Tutorial do cliente foi adicionado a informação que faltava.
    Tutorial do servidor foi arrumado um código que estava em sua versão antiga, o código lua que vai no handledata, e o código do players.
    Peço perdão pelo vacilo, é um tópico grande é complicado ver se não esta faltando informações, e meu mouse bugado não da para selecionar direito, eu posso ter colocado e ter deletado acidentalmente e nem vi.
    Novamente tinha código faltando então deletei minha mensagem e postei novamente, desculpem o transtorno, tópico grande, script com muitas modificações, e eu só dormi umas 10 horas esse final de semana, to caindo de sono desde as 18 hrs hj .-.
    Agradeço a Soubi por ficar horas no suporte pra me ajudar a achar os códigos faltando no tópico


    _________________
    Caso precise de suporte para algum dos meus scripts, me adicione no Discord: LeonMM#9597
    Scripts para NetMaker:

    Scripts Comuns:

    XFallSeane
    Iniciante
    Iniciante

    Mensagens : 31
    Créditos : 1

    Re: LM² - Party

    Mensagem por XFallSeane em Seg Set 04, 2017 7:58 am

    i'm idiot or i don't know understand this tutorial lol !








    EDIT : I have rewritten manual line 52 and 53 with other codigo bugs and it's works but i have this error now.

    avatar
    LeonMM
    Moderador Local
    Moderador Local

    Mensagens : 1932
    Créditos : 115

    Re: LM² - Party

    Mensagem por LeonMM em Seg Set 04, 2017 9:36 am

    Spoiler:
    @XFallSeane escreveu:i'm idiot or i don't know understand this tutorial lol !








    EDIT : I have rewritten manual line 52 and 53 with other codigo bugs and it's works but i have this error now.

    Add me on Discord LeonMM#9597, so i can help you, the tutorial was a little long that i think, so can be that you gonna miss something here or there.


    _________________
    Caso precise de suporte para algum dos meus scripts, me adicione no Discord: LeonMM#9597
    Scripts para NetMaker:

    Scripts Comuns:

    XFallSeane
    Iniciante
    Iniciante

    Mensagens : 31
    Créditos : 1

    Re: LM² - Party

    Mensagem por XFallSeane em Seg Set 04, 2017 9:47 am

    i have add you on discord

    Conteúdo patrocinado

    Re: LM² - Party

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qua Nov 22, 2017 9:07 pm