Makers Brasil
Bem Vindos a Maker´s Brasil (um forum para criação de servidores 2D e 3D)Nos desejamos boa sorte no seu projeto!


Participe do fórum, é rápido e fácil

Makers Brasil
Bem Vindos a Maker´s Brasil (um forum para criação de servidores 2D e 3D)Nos desejamos boa sorte no seu projeto!
Makers Brasil
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Comando de Transformação

2 participantes

Ir para baixo

Comando de Transformação Empty Comando de Transformação

Mensagem por thales12 Dom Jul 03, 2011 2:23 pm

Aqui, esse sistema serve pra você se transformar por comando. É a base de Sprite e Dbz só para amostra.
Dentro do script tem tudo explicado. Fiz como exemplo dois personagens e duas transformações (ssj e ssj2).

~ Client Side ~

Procure por:
Código:
Select Case Command(0)

Logo abaixo adicione:

Código:
Case "/ssj"
    Trans 1
    Case "/ssj2"
    Trans 2

    Case "/normal"
    Normal
No ModClientTCP, lá no final, adicione:
Código:
 Sub Trans(ByVal Trans As Byte)
    Dim Buffer As clsBuffer
    Set Buffer = New clsBuffer
    Buffer.WriteLong CTrans
    Buffer.WriteByte Trans
    SendData Buffer.ToArray()
    Set Buffer = Nothing
    End Sub

    Sub Normal()
    Dim Buffer As clsBuffer
    Set Buffer = New clsBuffer
    Buffer.WriteLong CVoltarNormal
    SendData Buffer.ToArray()
    Set Buffer = Nothing
    End Sub
No modEnumerations, procure por:

Código:
    cuntradeitem

Em baixo coloque:

Código:
CTrans
CVoltarNormal

Parte Client Acabada.

~ Server Side ~

Procure por:

Código:
    HandleDataSub(CUntradeItem) = GetAddress(AddressOf HandleUntradeItem)
Logo abaixo adicione:

Código:
    HandleDataSub(CTrans) = GetAddress(AddressOf HandleTransformação)    HandleDataSub(CVoltarNormal) = GetAddress(AddressOf HandleVoltarNormal)


No final do modHandleData, adicione essas subs:

Código:
  Sub HandleTransformação(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    ' By MakersBrasil.forumeiros.com
    Dim Buffer As clsBuffer
    Dim trans As Byte

    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()

    trans = Buffer.ReadByte

    Set Buffer = Nothing

    Select Case trans
    Case 1 'SJJ
    '===========
    'Trans do Goku
    '=============

    If GetPlayerSprite(Index) = 1 Then 'sprite goku normal
    If GetPlayerLevel(Index) >= 5 Then ' se tiver lvl 5
    SetPlayerSprite Index, 2 'sprite do goku ssj
    SetPlayerStat Index, Stats.strength, GetPlayerStat(Index, Stats.strength) + 30
    SetPlayerStat Index, Stats.endurance, GetPlayerStat(Index, Stats.endurance) + 30
    SetPlayerStat Index, Stats.intelligence, GetPlayerStat(Index, Stats.intelligence) + 30
    SendPlayerData Index
    SendStats Index
    Else: PlayerMsg Index, "Não tem o level necessário", Red
    End If
    Exit Sub
    End If
    '=================
    'Trans de Outro personagem;Vegita
    '=================
    If GetPlayerSprite(Index) = 3 Then ' sprite normal do vegita
    If GetPlayerLevel(Index) >= 5 Then 'se for lvl 5 ou maior
    SetPlayerSprite Index, 4 'sprite ssj do vegita
    SetPlayerStat Index, Stats.strength, GetPlayerStat(Index, Stats.strength) + 30
    SetPlayerStat Index, Stats.endurance, GetPlayerStat(Index, Stats.endurance) + 30
    SetPlayerStat Index, Stats.intelligence, GetPlayerStat(Index, Stats.intelligence) + 30
    SendPlayerData Index
    SendStats Index
    Else: PlayerMsg Index, "Não tem o level necessário", Red
    End If
    Exit Sub
    End If

    '----'
    'Fim da Trans1 "ssj"
    '--
    Case 2 'SSJ2
    '==========
    'Trans SSJ2 do goku
    '--------
    If GetPlayerSprite(Index) = 1 Then ' se ele não tiver transformado
    If GetPlayerLevel(Index) >= 10 Then ' se ele tiver lvl 10
    SetPlayerSprite Index, 5 ' sprite ssj2 do goku
    SetPlayerStat Index, Stats.strength, GetPlayerStat(Index, Stats.strength) + 60
    SetPlayerStat Index, Stats.endurance, GetPlayerStat(Index, Stats.endurance) + 60
    SetPlayerStat Index, Stats.intelligence, GetPlayerStat(Index, Stats.intelligence) + 60
    SendPlayerData Index
    SendStats Index
    Else: PlayerMsg Index, "Não tem o level necessário", Red
    End If
    'Else: PlayerMsg Index, "Precisa voltar ao normal se quizer se transformar em outro nível", Red
    Exit Sub
    End If

    If GetPlayerSprite(Index) = 3 Then ' se ele não tiver transformado
    If GetPlayerLevel(Index) >= 10 Then ' se ele tiver lvl 10
    SetPlayerSprite Index, 6 ' sprite ssj2 do vegita
    SetPlayerStat Index, Stats.strength, GetPlayerStat(Index, Stats.strength) + 60
    SetPlayerStat Index, Stats.endurance, GetPlayerStat(Index, Stats.endurance) + 60
    SetPlayerStat Index, Stats.intelligence, GetPlayerStat(Index, Stats.intelligence) + 60
    SendPlayerData Index
    SendStats Index
    Else: PlayerMsg Index, "Não tem o level necessário", Red
    End If
    'Else: PlayerMsg Index, "Precisa voltar ao normal se quizer se transformar em outro nível", Red
    Exit Sub
    End If

    '==========
    'Fim da trans SSJ2
    '==========
    Case 3 ' SSJ3
    'agora,eh soh repetir pegando de exemplo os 2 casos acima
    Case 4 'ssj4

    Case 5 'ssj5..
    'pode add qntas quizer mas tem q ser ANTES do end select
    End Select

    End Sub


    Sub HandleVoltarNormal(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    Dim Buffer As clsBuffer
    Set Buffer = New clsBuffer
    Buffer.WriteBytes Data()
    Set Buffer = Nothing

    Select Case GetPlayerSprite(Index)
    Case 2 'sprite goku ssj
    SetPlayerSprite Index, 1 'sprite do goku normal
    SetPlayerStat Index, Stats.strength, GetPlayerStat(Index, Stats.strength) - 30
    SetPlayerStat Index, Stats.endurance, GetPlayerStat(Index, Stats.endurance) - 30
    SetPlayerStat Index, Stats.intelligence, GetPlayerStat(Index, Stats.intelligence) - 30
    SendPlayerData Index
    SendStats Index
    Exit Sub

    Case 4 'sprite vegita ssj
    SetPlayerSprite Index, 3 'sprite do vegita normal
    SetPlayerStat Index, Stats.strength, GetPlayerStat(Index, Stats.strength) - 30
    SetPlayerStat Index, Stats.endurance, GetPlayerStat(Index, Stats.endurance) - 30
    SetPlayerStat Index, Stats.intelligence, GetPlayerStat(Index, Stats.intelligence) - 30
    SendPlayerData Index
    SendStats Index
    Exit Sub

    Case 5 'sprite goku ssj2
    SetPlayerSprite Index, 1 'sprite do goku normal
    SetPlayerStat Index, Stats.strength, GetPlayerStat(Index, Stats.strength) - 60
    SetPlayerStat Index, Stats.endurance, GetPlayerStat(Index, Stats.endurance) - 60
    SetPlayerStat Index, Stats.intelligence, GetPlayerStat(Index, Stats.intelligence) - 60
    SendPlayerData Index
    SendStats Index
    Exit Sub

    Case 6 'sprite vegita ssj2
    SetPlayerSprite Index, 3 'sprite do vegita normal
    SetPlayerStat Index, Stats.strength, GetPlayerStat(Index, Stats.strength) - 60
    SetPlayerStat Index, Stats.endurance, GetPlayerStat(Index, Stats.endurance) - 60
    SetPlayerStat Index, Stats.intelligence, GetPlayerStat(Index, Stats.intelligence) - 60
    SendPlayerData Index
    SendStats Index
    Exit Sub

    End Select


    End Sub
Agora procure por:

Código:
CUntradeItem

Abaixo adicione:

Código:
 CTrans
 CVoltarNormal

Pronto, pra simplificar, eu coloquei as transformações dentro de uma só
sub
, então, quando tu for adicionar mais transformações no client, é só
adicionar:

Código:
trans NumeroDaTransFormação
thales12
thales12
Moderador
Moderador

Mensagens : 184
Estrelas Makers : 406
Creditos : 55
Data de inscrição : 22/03/2011
Idade : 29
Localização : Rio de Janeiro

http://www.rdmgames.tk

Ir para o topo Ir para baixo

Comando de Transformação Empty Re: Comando de Transformação

Mensagem por spectrus Dom Jul 03, 2011 2:28 pm

Muito bom Thales!!! usarei na Makers Engine
+ CRED
spectrus
spectrus
Administrador
Administrador

Mensagens : 299
Estrelas Makers : 1466
Creditos : 49
Data de inscrição : 01/01/2011
Idade : 30
Localização : V.da conquista bahia

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