Suporte ao desenvolvimento de jogos!


    [EO] Distribuidor de pontos

    Compartilhe
    avatar
    Takabe
    Novato
    Novato

    Mensagens : 12
    Créditos : 1

    Ficha do personagem
    Nível: 1
    Vida:
    30/30  (30/30)
    Energia:
    0/0  (0/0)

    [EO] Distribuidor de pontos

    Mensagem por Takabe em Seg Abr 16, 2018 4:41 pm

    Bem a logica desse sistema de ajuda o player a adicionar uma quantia de pontos bem mais rápido

    Vamos ao tutorial
       
            Cliente

    Vá ate a modEnumerations e aperte ctrl + f e procure por: 
    Código:
    CUseStatPoint
    E ABAIXO você coloca:
    Código:
    CCommandStatPoint

    Agora na modClientTCP procure pela sub:
    Código:
    Sub SendTrainStat(ByVal StatNum As Byte)

    ABAIXO do End Sub voce coloca
    Código:
    Sub SendCommandTrainStat(ByVal StatNum As Byte, ByVal Quantity As Long)
    Dim Buffer As clsBuffer

        ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler
          
          If Val(Quantity) > MAX_LONG Then
          Exit Sub
          End If
          
          
        Set Buffer = New clsBuffer
        Buffer.WriteLong CCommandStatPoint
        Buffer.WriteByte StatNum
        Buffer.WriteLong Quantity
        SendData Buffer.ToArray()
        Set Buffer = Nothing
        
        ' Error handler
        Exit Sub
    errorhandler:
        HandleError "SendCommandTrainStat", "modClientTCP", Err.Number, Err.Description, Err.Source, Err.HelpContext
        Err.Clear
        Exit Sub
    End Sub

    Agora vamos criar o Distribuidor rsrs
    Crie uma picture na frmMain com o nome de picDistribuidor e deixe o visible False

    Dentro da picture você cria 5 commandbuttons, 1 textbox, 2 labels

         vamos as propriedades de cada uma:

    as 5 commandButton você poe o nome de cmdAddPontos você poe o nome deles de acordo com seu index

         Index 0 name: Strength
           Index 1 name: Endurance
            Index 2 name: Intelligence
     Index 3 name: Agility
         Index 4 name: Willpower

    depois dê dois clicks no cmdAddPontos, pode ser qualquer um dos 5 e coloque isso dentro
    Código:
        ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler
        
        Select Case Index
        
           Case 0
           If IsNumeric(txtAddPontos.text) Then
           SendCommandTrainStat 1, txtAddPontos.text
           Else
           Call AddText("coloque somente numeros na caixa", BrightBlue)
           End If
           Case 1
           If IsNumeric(txtAddPontos.text) Then
           SendCommandTrainStat 2, txtAddPontos.text
           Else
           Call AddText("coloque somente numeros na caixa", BrightBlue)
           End If
           Case 2
           If IsNumeric(txtAddPontos.text) Then
           SendCommandTrainStat 3, txtAddPontos.text
           Else
           Call AddText("coloque somente numeros na caixa", BrightBlue)
           End If
           Case 3
           If IsNumeric(txtAddPontos.text) Then
           SendCommandTrainStat 4, txtAddPontos.text
           Else
           Call AddText("coloque somente numeros na caixa", BrightBlue)
           End If
           Case 4
           If IsNumeric(txtAddPontos.text) Then
           SendCommandTrainStat 5, txtAddPontos.text
           Else
           Call AddText("coloque somente numeros na caixa", BrightBlue)
           End If
        End Select
            ' Error handler
        Exit Sub
    errorhandler:
        HandleError "cmdLevel_Click", "frmMain", Err.Number, Err.Description, Err.Source, Err.HelpContext
        Err.Clear
        Exit Sub

    a textbox você poe o nome de txtAddPontos 

         a text dele voce deixa ou 0 ou limpo fica a tua escolha

         as 2 labels uma com o nome de lblPontos e outra com o nome de lblFechar
      
         label 1 
         Name:lblFechar
         Caption:Fechar
         
         label 2
         name:lblPontos
         Caption:Pontos:

    dê dois clicks na lblFechar e coloque
    Código:
    picDistribuidor.visible = false

    Bem no fim é pra ficar mais ou menos assim ó


    na modHandleData procure por:
    Código:
    frmMain.lblPoints.Caption = GetPlayerPOINTS(MyIndex)

    e ABAIXO coloque:
    Código:
    frmMain.lblPontos.Caption = "Pontos: " & GetPlayerPOINTS(MyIndex)

    Agora vamos ate modInput e procurar por:
    Código:
                       ' Banning a player
                    Case "/ban"
    e ACIMA disto você poe:
    Código:
                   Case "/distribuir"
                        frmMain.picDistribuidor.Visible = True

    Cliente terminado kk agora vamos ao servidor

    Server

    Va ate a modEnumerations e aperte ctrl + f e procure por:
    Código:
    CUseStatPoint
        
     ABAIXO você coloca:
    Código:
    CCommandStatPoint
      
    depois na modHandleData procure por:
    Código:
    HandleDataSub(CUseStatPoint) = GetAddress(AddressOf HandleUseStatPoint)

    e ABAIXO você coloca
    Código:
    HandleDataSub(CCommandStatPoint) = GetAddress(AddressOf HandleCommandStatPoint)

    depois procure pela sub:
    Código:
    Sub HandleUseStatPoint(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)

    e ABAIXO do end sub coloque:
    Código:
    ' ::::::::::::::::::::::::::
    ' :: Command stats packet ::
    ' ::::::::::::::::::::::::::
    Sub HandleCommandStatPoint(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
    Dim PointType As Byte
    Dim Val As Long
    Dim Buffer As clsBuffer
    Dim sMes As String
    Dim i As Long
        
        Set Buffer = New clsBuffer
        Buffer.WriteBytes Data()
        PointType = Buffer.ReadByte 'CLng(Parse(1))
        Val = Buffer.ReadLong
        Set Buffer = Nothing

        ' Prevent hacking
        If (PointType < 0) Or (PointType > Stats.Stat_Count) Then
            Exit Sub
        End If
        
        ' Check if player has the indicated value
        If Val > GetPlayerPOINTS(index) Or Val <= 0 Then
        PlayerMsg index, "Você não tem essa quantidade de pontos.", Red
        Exit Sub
        End If
        
        ' Check to not overflow the value
        If Val > 100000000 Then
        PlayerMsg index, "Você não pode adicionar tamanha quantidade(Máx 100000000).", Red
        Exit Sub
        End If
        
        ' Make sure they have points
        If GetPlayerPOINTS(index) > 0 Then
            ' make sure they're not maxed#
            If GetPlayerRawStat(index, PointType) >= 100000000 Then
                PlayerMsg index, "Máximo Obtido.", BrightRed
                Exit Sub
            End If
            
            ' Take away a stat point
            Call SetPlayerPOINTS(index, GetPlayerPOINTS(index) - Val)

            ' Everything is ok
            Select Case PointType
                Case Stats.Strength
                    Call SetPlayerStat(index, Stats.Strength, GetPlayerRawStat(index, Stats.Strength) + Val)
                    Call PlayerMsg(index, "Você adicionou +" & Val & " pontos em Strength!", White)
                    sMes = " Strength"
                Case Stats.Endurance
                    Call SetPlayerStat(index, Stats.Endurance, GetPlayerRawStat(index, Stats.Endurance) + Val)
                    Call PlayerMsg(index, "Você adicionou +" & Val & " pontos em Endurance!", White)
                    sMes = " Endurance"
                Case Stats.Intelligence
                    Call SetPlayerStat(index, Stats.Intelligence, GetPlayerRawStat(index, Stats.Intelligence) + Val)
                    Call PlayerMsg(index, "Você adicionou +" & Val & " pontos em Intelligence!", White)
                    sMes = " Intelligence"
                Case Stats.Agility
                    Call SetPlayerStat(index, Stats.Agility, GetPlayerRawStat(index, Stats.Agility) + Val)
                    Call PlayerMsg(index, "Você adicionou +" & Val & " pontos em Agility!", White)
                    sMes = " Agility"
                Case Stats.Willpower
                    Call SetPlayerStat(index, Stats.Willpower, GetPlayerRawStat(index, Stats.Willpower) + Val)
                    Call PlayerMsg(index, "Você adicionou +" & Val & " pontos em Willpower!", White)
                    sMes = " Willpower"
            End Select
            
            SendActionMsg GetPlayerMap(index), "+" & Val & sMes, White, 1, (GetPlayerX(index) * 32), (GetPlayerY(index) * 32)

        Else
            Exit Sub
        End If

        ' Send the update
        SendPlayerData index

        For i = 1 To Vitals.Vital_Count - 1
            SendVital index, i
        Next
    End Sub

         Sistema Pronto rsrs agora é só testa, qualquer erro podem falar ai pois é meu primeiro tutorial rsrs

         Creditos: Bem eu peguei esse código do SendCommandTrainStat do sistema de Adicionar pontos por comando e não sei quem que fez,mas o resto é meu rsrs


    OBS:
    Esse é meu primeiro tutorial então peço a ajuda de vocês pra me fala em que errei caso tenha errado kk
    qualquer erro me avisem ai  Very Happy

    avatar
    DragonicK
    Banido
    Banido

    Mensagens : 440
    Créditos : 59

    Re: [EO] Distribuidor de pontos

    Mensagem por DragonicK em Seg Abr 16, 2018 6:11 pm

    Sistema de gente pobre.
    avatar
    Profane ~
    Administrador
    Administrador

    Mensagens : 728
    Créditos : 125

    Re: [EO] Distribuidor de pontos

    Mensagem por Profane ~ em Seg Abr 16, 2018 7:55 pm

    @DragonicK escreveu:Sistema de gente pobre.

    Bom que agora você vai poder por no seu jogo/engine tbm @Dragonick .


    Bom @Takabex c.c ao ler eu já imaginava que não seria seu os codigos UAHSuhsa porque estavam em ingrês ashushasa, mas bom conteúdo, passei a leitura rápida e até onde vi estaria Ok, so testando mais a fundo.

    Aprenda que não é nada necessário estar sempre colocando "subs" ou algo assim embaixo de um "local" exato. Pode ser em qualquer lugar, até mesmo no final c.c ~ Desde que não se ponha a ferir estruturas de organização que estão ali para fazer o trabalho delas.. organizar e nos ajudar a achar coisas...

    Agradecemos por trazer e MUITA gente vai fazer uso. UHASUHS


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

    Mensagens : 12
    Créditos : 1

    Ficha do personagem
    Nível: 1
    Vida:
    30/30  (30/30)
    Energia:
    0/0  (0/0)

    Re: [EO] Distribuidor de pontos

    Mensagem por Takabe em Seg Abr 16, 2018 8:09 pm

    @Profane ~ escreveu:
    @DragonicK escreveu:Sistema de gente pobre.

    Bom que agora você vai poder por no seu jogo/engine tbm @Dragonick .


    Bom @Takabex c.c ao ler eu já imaginava que não seria seu os codigos UAHSuhsa porque estavam em ingrês ashushasa, mas bom conteúdo, passei a leitura rápida e até onde vi estaria Ok, so testando mais a fundo.

    Aprenda que não é nada necessário estar sempre colocando "subs" ou algo assim embaixo de um "local" exato. Pode ser em qualquer lugar, até mesmo no final c.c ~ Desde que não se ponha a ferir estruturas de organização que estão ali para fazer o trabalho delas.. organizar e nos ajudar a achar coisas...

    Agradecemos por trazer e MUITA gente vai fazer uso. UHASUHS
    :love: :love:  chato rsrs, obrigada
    avatar
    oqbendis
    Iniciante
    Iniciante

    Mensagens : 32
    Créditos : 0

    Ficha do personagem
    Nível: 1
    Vida:
    30/30  (30/30)
    Energia:
    0/0  (0/0)

    Re: [EO] Distribuidor de pontos

    Mensagem por oqbendis em Sex Abr 27, 2018 4:45 pm

    Olá! Eu acabei de por o sistema na minha engine, mas tem uma coisa.
    Não sei era pra aparecer, mas qual é o jeito de fazer a Janela de adicionar pontos aparecer?


    _________________
    Alleg;
    avatar
    Profane ~
    Administrador
    Administrador

    Mensagens : 728
    Créditos : 125

    Re: [EO] Distribuidor de pontos

    Mensagem por Profane ~ em Sex Abr 27, 2018 10:37 pm

    Se tiver seguido todo o tutorial, note essa parte:



    Logo, em seu chat digite "/distribuir" que ela possivelmente vá aparecer.

    Att


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

    Mensagens : 12
    Créditos : 1

    Ficha do personagem
    Nível: 1
    Vida:
    30/30  (30/30)
    Energia:
    0/0  (0/0)

    Re: [EO] Distribuidor de pontos

    Mensagem por Takabe em Sab Abr 28, 2018 2:45 pm

    @oqbendis escreveu:
    Olá! Eu acabei de por o sistema na minha engine, mas tem uma coisa.
    Não sei era pra aparecer, mas qual é o jeito de fazer a Janela de adicionar pontos aparecer?
    Da /distribuir ou então cria um Botão na picCharacter com o seguinte código:
    Código:
    picDistribuidor.Visible = Not picDistribuidor.Visible

    Espero resolver seu problema, qualquer coisa só fala

    Conteúdo patrocinado

    Re: [EO] Distribuidor de pontos

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Sex Set 21, 2018 2:24 pm