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!

Comando de Transformação

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Comando de Transformação

Mensagem por thales12 em 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
Moderador
Moderador

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

http://www.rdmgames.tk

Voltar ao Topo Ir em baixo

Re: Comando de Transformação

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

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


Divulgue nosso Forum!
[Você precisa estar registrado e conectado para ver este link.]
Código:
[url=http://makersbrasil.forumeiros.com/]
src="http://img841.imageshack.us/img841/9522/92324935.png"
border="0">[/url]



E meu fan? entao use:

Código:
[img]http://www.baixa.la/arquivos/3908525_imagem.gif[/img]

Sign:
Spoiler:




spectrus
Administrador
Administrador

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

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum