Suporte ao desenvolvimento de jogos!


    [Ajuda] - sistema de trasnformação por spell

    Compartilhe
    avatar
    Felipe
    Novato
    Novato

    Mensagens : 10
    Créditos : 0

    [Ajuda] - sistema de trasnformação por spell

    Mensagem por Felipe em Dom Abr 23, 2017 7:22 pm

    alguém poderia me ajudar?
    fiz o sistema de transformação por spell e funfo direitinho mas quando eu desligo o server com alguém on, se alguém estiver transformado ele salva os status. como posso retirar isso ?
    avatar
    Profane ~
    Administrador
    Administrador

    Mensagens : 728
    Créditos : 125

    Re: [Ajuda] - sistema de trasnformação por spell

    Mensagem por Profane ~ em Dom Abr 23, 2017 9:58 pm

    Olá, @Mr.Fenrir meu fofo lobinho.

    Lembre-se que se copiou e colou um tutorial inteiro,é sempre bom que quando vier com a duvida usar sua habilidade graciosa de copiar e colar para colar o link aqui para nós <3

    Só assim fica mais fácil ajudar. 

    O que pode ocorrer é que o desenvolvedor de tal sistema enquanto teve uma linda luz para desenvolver o sistema, desenvolveu sem ter a compreensão certa de como se fazer aquilo. Deu certo, mas deu errado. 

    Bem, ainda não vi o sistema, então no aguardo para maiores comentários e para poder tentar ajudar a achar a resolução <3

    att


    _________________
    "If you don't belong here, just build a place where you do."
    avatar
    Felipe
    Novato
    Novato

    Mensagens : 10
    Créditos : 0

    Re: [Ajuda] - sistema de trasnformação por spell

    Mensagem por Felipe em Dom Abr 23, 2017 10:04 pm



    _________________
    Facebook: Story of Eterium
    avatar
    Profane ~
    Administrador
    Administrador

    Mensagens : 728
    Créditos : 125

    Re: [Ajuda] - sistema de trasnformação por spell

    Mensagem por Profane ~ em Dom Abr 23, 2017 10:41 pm

    Mr.Fenrir escreveu:esse aqui \/
    Transformação por spell

    Bem fácil entender o que ocorre.

    #Entendendo o Sistema:
    O Sistema aplica a adição direta no RawStat (Atributo Cru) isso para não ter muito trabalho de edição, o que é digamos meio errado, mas não vamos por esse ponto. 

    A Cada segundo ele verifica se o jogador ainda tem a transformação, caso o tempo tenha acabado ele chama a Sub para Remover o Valor dado no RawStat do Player.

    #O que acontece?
    Acontece que o jogo salva as contas a cada X segundos, ele acaba salvando o Player 1/2/3.... como tendo o Atributo RawStat Acima do Normal.. no caso RawStat Verdadeiro + Transformação.

    Quando você taca o foda-se e fecha o Servidor no X [ Fechar ], ele interrompe todos os Sockets e fim. 

    Logo não ocorre a verificação de que ocorre normalmente de segundo a Segundo, que verifica o tempo da transformação do Player, e normalmente retiraria o Valor da Transformação do rawStat, fazendo o player ficar normal.

    O Player Ficou salvo como tendo um RawStat + Transformação, e não ouve a Interrupção Natural do sistema que o deixaria com os Stats Normal e Naturais.

    #Como resolvo isso minha donzela perfeita?
    Ah, infinitas formas amoreco;

    A forma mais fácil e bruta seria essa aqui:

    No Servidor / ModTypes -> Procure por : "PlayerRec"

    Dentro dele, no final, adicione:
    Código:
    Dim inTrans as Byte            'Se conter valor então o player está transformado
    Dim inTransNum as Long          'Armazena o valor da Transformação

    Sim, vamos trabalhar com byte ou long, mesmo sendo uma Boolean, Byte e Long são mais estáveis.

    Colocando isso ali, vamos procurar por:

    Código:
    Sub JoinGame(ByVal Index As Long)

    Essa Sub recebe os valores do player e faz a load dele, e coloca ele parcialmente em jogo.
    É ela que a gente quer, e ela que vamos trabalhar.

    Em qualquer lugar dela, que não seja no começo, mas de preferencia do Meio para o Fim,
    ou depois disso aqui:
    Código:
        ' Send the flag so they know they can start doing stuff
        SendInGame Index

    Adicione isso aqui:
    Código:
    'Verificar se o Player ainda está transformado
    If Player(Index).inTrans > 0 then      'Verifica se realmente tem valor de trans
      if Player(Index).inTransNum > 0 then 'Verifica se a Trans é um valor de Spell Real
        'Se chegou aqui é porque ta transformado e temos armazenada qual é a transformacao.
          Call AcabarTrans_InJoinGame(Index)
      end if
    end if

    Em seu ModPlayer, no final dele, cole essa sub que está abaixo.
    Código:
    Public Sub AcabarTrans_inJoinGame(ByVal index As Long)
    Dim TransNum as Long
       If index < 1 Or index > MAX_PLAYERS Then Exit Sub
       
       'Já verificamos mas vamos verificar novamente porque somos assim, blindão pra não deixar nada quebrar o joguinho <3
       If Player(Index).inTrans > 0 then      'Verifica se realmente tem valor de trans
          if Player(Index).inTransNum > 0 then 'Verifica se a Trans é um valor de Spell Real
             
             TransNum = Player(index).inTransNum   'facilitando e ocupando menos espaço
       
             Call SetPlayerStat(index, Stats.Strength, GetPlayerRawStat(index, Stats.Strength) - Spell(TransNum).Força)
             Call SetPlayerStat(index, Stats.Endurance, GetPlayerRawStat(index, Stats.Endurance) - Spell(TransNum).Defesa)
             Call SetPlayerStat(index, Stats.Agility, GetPlayerRawStat(index, Stats.Agility) - Spell(TransNum).Agilidade)
             Call SetPlayerStat(index, Stats.Willpower, GetPlayerRawStat(index, Stats.Willpower) - Spell(TransNum).Willpower)
             Call SetPlayerStat(index, Stats.Intelligence, GetPlayerRawStat(index, Stats.Intelligence) - Spell(TransNum).Inteligencia)
             SendAnimation GetPlayerMap(index), Spell(index).Anima, 0, 0, TARGET_TYPE_PLAYER, index
             Call PlayerMsg(index, "Ao voltar a este mundo, você sente que seu poder retorna ao normal...", DarkGrey)
             TempPlayer(index).Trans = 0
             Player(Index).IntransNum = 0       'Limpa os valores
             Player(Index).Intrans = 0      
             SendPlayerData index
             SavePlayer index
             SendStats index
          End if
       End if
       
       
    End Sub

    Agora, vamos ao seu Sub CastSpell, nele você deve ter adicionado os valores da transformação; Na sub CastSpell procure por : 
    Código:
    'Transformaçao
          With Spell(SpellNum)
            If .Type = SPELL_TYPE_TRANS Then
                Call SetPlayerSprite(index, Spell(index).Trans)

    Isso ai, nessa área onde criou isso ai ;c você abaixo dessa call adicione:

    Código:

    'Modificação de Proteção
    Player(Index).Intrans = 1   'torna real a transformação para proteção ao logar
    Player(Index).IntransNum = SpellNum  'armazena qual foi a transformação que gerou atributos

    Dessa forma tem defesa agora.

    # O que foi feito? 
    O Sistema estava criado com o intuito de você sempre fechar o servidor depois que todos os players possíveis estiverem deslogados e que não ocorra nenhuma falha possivel que faça o servidor cair, ou você fechar.

    Isso é devido a ingenuidade do criador. 
    Você sem um conversor de contas terá de apagar todas as contas para que essa modificação funcione perfeitamente, isso levando em consideração que suas contas sejam salvas de da forma de Compress File, onde fica .dat ou .bin o arquivo, vulgo Lowload

    Eu notei uma falha maior no sistema ;c em 1 regiãozinha, apenas de ler ele, mas se você diz que ele funciona e transforma perfeito, verifica se quando o tempo da transformação acabar, ele retira os Stats com Perfeição, na minha leitura de run mental, eu diria que não ;c

    A Minha Deusa, linda, benevolente e perfeita, funcionou sim, retira os stats com perfeição. Certo agora faça o teste criando uma Spell lá pelo ID 30 ~ 40 ~, ou qualque rnumero que não seja os primeiros. 

    Ai você ve se vai funcionar ou não, qualquer coisa me informe. Que analisamos < 3

    Bjus de Luz Escura.

    Com amor, sua mais linda fadinha.


    _________________
    "If you don't belong here, just build a place where you do."
    avatar
    Felipe
    Novato
    Novato

    Mensagens : 10
    Créditos : 0

    Re: [Ajuda] - sistema de trasnformação por spell

    Mensagem por Felipe em Seg Abr 24, 2017 12:00 am

    vlw cara. só faltava isso para eu terminar o sistema. os outros bugs eu consegui arrumar tudinho.


    _________________
    Facebook: Story of Eterium

    Conteúdo patrocinado

    Re: [Ajuda] - sistema de trasnformação por spell

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Ter Set 18, 2018 10:50 am