Liberar Movimentos enquanto se faz Magia Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Liberar Movimentos enquanto se faz Magia

2 participantes

Ir para baixo

Liberar Movimentos enquanto se faz Magia Empty Liberar Movimentos enquanto se faz Magia

Mensagem por Kotol Seg Jan 30, 2017 8:01 pm

Não lembro de ver este tutorial por aqui, já que não tem como pesquisar, e eu li pessoas procurando esta modificação na seção de "Dúvidas e pedidos", então vamos lá.

Começaremos pelo server.

Server~Side


Primeiramente, abra seu "Server.Vbp", e então, em "ModHandleData", na sub:

Código:
Sub HandlePlayerMove(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)

Procure por:

Código:
' Prevent player from moving if they have casted a spell
    If TempPlayer(Index).spellBuffer.Spell > 0 Then
        Call SendPlayerXY(Index)
        Exit Sub
    End If

E substitua por:

Código:
' Prevent player from moving if they have casted a spell
    'If TempPlayer(Index).spellBuffer.Spell > 0 Then
    '    Call SendPlayerXY(Index)
    '    Exit Sub
    'End If
    'Não apague, só comente, não se sabe quando vai precisar

Basicamente, esta parte é a do servidor que checa se você se move enquanto tenta ou faz magia.
OBS: Deixe sempre alguma modificação de sua máquina em comentários, nunca se sabe quando você irá precisar. Nunca apague um sistema (se possível).


Hora do "Client.Vbp".

Client~Side

Agora, em "ModGameLogic", na "Sub":

Código:
Public Sub CastSpell(ByVal spellslot As Long)

Procure por:

Código:
If PlayerSpells(spellslot) > 0 Then
        If GetTickCount > Player(MyIndex).AttackTimer + 1000 Then
            If Player(MyIndex).Moving = 0 Then
                Set Buffer = New clsBuffer
                Buffer.WriteLong CCast
                Buffer.WriteLong spellslot
                SendData Buffer.ToArray()
                Set Buffer = Nothing
                SpellBuffer = spellslot
                SpellBufferTimer = GetTickCount
            Else
                Call AddText("Cannot cast while walking!", BrightRed)
            End If
        End If
    Else
        Call AddText("No spell here.", BrightRed)
    End If

E substitua por:

Código:
If PlayerSpells(spellslot) > 0 Then
        If GetTickCount > Player(MyIndex).AttackTimer + 1000 Then
            'If Player(MyIndex).Moving = 0 Then
                Set Buffer = New clsBuffer
                Buffer.WriteLong CCast
                Buffer.WriteLong spellslot
                SendData Buffer.ToArray()
                Set Buffer = Nothing
                SpellBuffer = spellslot
                SpellBufferTimer = GetTickCount
            'Else
            '    Call AddText("Cannot cast while walking!", BrightRed)
            'End If
        End If
    Else
        Call AddText("No spell here.", BrightRed)
    End If

Agora, ainda em "ModGameLogic", procure por esta "Function":

Código:
Function CanMove() As Boolean

E nesta function, procure por isto:

Código:
' Make sure they haven't just casted a spell
    If SpellBuffer > 0 Then
        CanMove = False
        Exit Function
    End If

E substitua por isto:

Código:
' Make sure they haven't just casted a spell
    'If SpellBuffer > 0 Then
    '    CanMove = False
    '    Exit Function
    'End If

E está feito!
Amigos, por que não simplesmente apagar o que está escrito ao invés de comentar?
Simples, muita das vezes, os sistemas que vocês querem, são simplesmente já existentes na própria máquina que vocês programam....isso mesmo!
Basta saber onde fazer as modificações.

Por exemplo, a E.O vem com esse sistema de magias bloqueando o jogador de movimentar quando está fazendo uma magia.
Pense se você quisesse fazer um sistema de criação de itens, o english "Crafting System".

Sistemas que existem das magias:
Código:
Cliente: Barra visual de casting = copiar e modificar para o craft time
Cliente:"bloqueio visual" o jogador de não andar com mensagem = o mesmo para o craft
Server: Bloqueio real de movimento na magia = bloqueia andar enquanto crafta
Server: Restrições de duplo conjuramento enquanto se conjura uma magia = restringir duplo casting de craft
Server: Sistema de Chance de critico = Adaptar pra fazer a probabilidade
Server: Sistema de evoluir nivel jogador = adaptar pra nivel de craft
Server: sistema de dar itens = adaptar pra ser o item dado quando craft
E muitos outros...

Resumindo, raramente algo será criado originalmente se for se ver a fundo. Na maioria das coisas da programação, ironicamente "nada se cria, tudo se transforma" , e o poder de transformar é nosso, aproveitem isso!
Kotol
Kotol
Moderador Local
Moderador Local

Mensagens : 77
Créditos : 17

Ir para o topo Ir para baixo

Liberar Movimentos enquanto se faz Magia Empty Re: Liberar Movimentos enquanto se faz Magia

Mensagem por Motodark Ter Jan 31, 2017 3:34 am

tipo, quando você mata boss ou player de one da aquela bugadas, o player fica pulando. Isso resolve?
Motodark
Motodark
Ocasional
Ocasional

Mensagens : 169
Créditos : 5

Ir para o topo Ir para baixo

Liberar Movimentos enquanto se faz Magia Empty Re: Liberar Movimentos enquanto se faz Magia

Mensagem por Kotol Sex Fev 03, 2017 12:41 am

É bem provável que não seja esse o motivo.
Veja se quando você não mata o jogador, não esta tendo nenhum "SendPlayerData" vindo do servidor, pois isso na maioria dos casos, atualiza o jogador em sua posição, e isso gera esses pequenos travamentos e bug temporário na movimentação. Isso ocorre, pois quem programou, não separou a data dos dados gerais, dos que atualizam e setam o "X", "Y" e o mapa do jogador.
Enfim, veja as condições que existem quando se mata o jogador, se houver algo que mande atualizar o jogador no mapa com suas posições, pode ser isso, pois neste sistema, não se relaciona nada a este bug que você indicou, mas que eu já vi acontecendo.
Kotol
Kotol
Moderador Local
Moderador Local

Mensagens : 77
Créditos : 17

Ir para o topo Ir para baixo

Liberar Movimentos enquanto se faz Magia Empty Re: Liberar Movimentos enquanto se faz Magia

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos