Suporte ao desenvolvimento de jogos!


    [One Piece] Akuma no Mi System

    Compartilhe
    avatar
    XWlash
    Semi-Experiente
    Semi-Experiente

    Mensagens : 88
    Créditos : 23

    [One Piece] Akuma no Mi System

    Mensagem por XWlash em Seg Dez 29, 2014 2:26 pm

    Bom, olá denovo gente, aqui estou eu postando mais um sistema para jogo de animes, nunca vi ninguém postar um sistema para jogos de one piece por isso aqui vim para postá-lo, novamente venho dizendo que os sistemas estão debaixo dos seus narizes e vocês não o vêem farei este baseado no sistema de rank e novamente venho trazer os créditos para Thales12 por nos disponibilizar o mesmo.

    O tutorial já está completo, não haverá "continuações" com modificações.

    No que consiste o sistema de akuma no mis?
    R= O player ao entrar, o valor da akuma no mi é igual a 1, que é equivalente a nenhuma, após comer o item, o valor da akuma no mi muda para o definido no editor de itens, cada valor será nomeado (2: Gomu Gomu no mi, 3: Moku Moku no Mi... no tutorial são somente esses), será mostrado em uma label, na picCharacter, a akuma no mi do player.

    Sem mais delongas aqui está o tutorial:

    Server-side:

    Na Sub AddChar procure por:
    Código:
    For n = 1 To Stats.Stat_Count - 1
                Player(Index).Stat(n) = Class(ClassNum).Stat(n)
            Next n
    Abaixo adicione:
    Código:
    Player(index).Akuma = 1



    No final do modDatabase adicione:
    Código:
    Function GetPlayerAkuma(ByVal index As Long) As Long

        If index > MAX_PLAYERS Then Exit Function
       GetPlayerAkuma = Player(index).Akuma
    End Function

    Sub SetPlayerAkuma(ByVal index As Long, ByVal Akuma As Long)
        Player(index).Akuma = Akuma
    End Sub

    No modHandleData Procure por:
    Código:
    HandleDataSub(CPartyLeave) = GetAddress(AddressOf HandlePartyLeave
    Abaixo adicione:
    Código:
    HandleDataSub(CSetAkuma) = GetAddress(AddressOf HandleSetAkuma)
    No final do módulo adicione:
    Código:
    Sub HandleSetAkuma(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
        Dim u As String
        Dim n As Long
        Dim i As Long
        Dim Buffer As clsBuffer
        Set Buffer = New clsBuffer
        Buffer.WriteBytes Data()

        ' Prevent hacking
        If GetPlayerAccess(index) < ADMIN_CREATOR Then
            Exit Sub
        End If

        n = FindPlayer(Buffer.ReadString)
        i = Buffer.ReadLong
        Set Buffer = Nothing

    If IsPlaying(n) = False Then Exit Sub

    Player(n).Akuma = i
    SendPlayerData n
    SavePlayer n
    End Sub

    Na PlayerData procure por:
    Código:
    Buffer.WriteLong GetPlayerAccess(index)
    Abaixo adicione:
    Código:
    Buffer.WriteByte Player(index).Akuma



    Na Type PlayerRec, abaixo de:
    Código:
    PK As Byte
    Adicione:
    Código:
    Akuma As Byte
    No modEnumerations procure por:
    Código:
    CPartyLeave
    Abaixo adicione:
    Código:
    CSetAkuma

    Client-side:

    Na Type PlayerRec abaixo de:
    Código:
    PK As Byte
    Adicione:
    Código:
    Akuma As Byte
    No final do modClientTCP adicione:
    Código:
    Public Sub SendSetAkuma(ByVal Name As String, ByVal Access As Byte)
    Dim Buffer As clsBuffer

        Set Buffer = New clsBuffer
        Buffer.WriteLong CSetAkuma
        Buffer.WriteString Name
        Buffer.WriteLong Access
        SendData Buffer.ToArray()
        Set Buffer = Nothing

    End Sub
    No final do modDataBase adicione:
    Código:
    Sub SetPlayerAkuma(ByVal Index As Long, ByVal Akuma As Long)
        ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler

        If Index > MAX_PLAYERS Then Exit Sub
        Player(Index).Akuma = Akuma
       
        ' Error handler
        Exit Sub
    errorhandler:
        HandleError "SetPlayerAkuma", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContext
        Err.Clear
        Exit Sub
    End Sub

    Function GetPlayerAkuma(ByVal Index As Long) As Long
        ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler

        If Index > MAX_PLAYERS Then Exit Function
        GetPlayerAkuma = Player(Index).Akuma
       
        ' Error handler
        Exit Function
    errorhandler:
        HandleError "GetPlayerAkuma", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContext
        Err.Clear
        Exit Function
    End Function

    No modEnumerations procure por:
    Código:
    CPartyLeave
    abaixo adicione:
    Código:
    CSetAkuma

    Procure por:
    Código:
    Call SetPlayerAccess(i, Buffer.ReadLong)
    Abaixo adicione:
    Código:
    Player(i).Akuma = Buffer.ReadByte
    Caso queira que apareça em uma label, crie uma label na picCharacter com as seguintes propriedades:
    Código:

    Name:lblAkuma
    Caption: Akuma no mi: Nenhuma

    Na HandlePlayerData procure por:
    Código:
    For x = 1 To Stats.Stat_Count - 1
                frmMain.lblCharStat(x).Caption = GetPlayerStat(MyIndex, x)
            Next
    Abaixo adicione:
    Código:
    Select Case Player(MyIndex).Akuma
            Case 1
              frmMain.lblAkuma.Caption = "Akuma no Mi:Nenhuma"
            Case 2
              frmMain.lblAkuma.Caption = "Akuma no Mi: Gomu Gomu no Mi"
            Case 3
              frmMain.lblAkuma.Caption = "Akuma no Mi: Moku Moku no Mi"
            End Select

    Pronto base feita, agora faremos a parte do item que dará akuma no mi. Vamos lá.

    Obs: Os créditos do tutorial a seguir não tem nada a ver com thales.
    Client-Side:

    Abra a frmEditor_Item e adicione 1 Frame, 1 Label e 1 scrollbox com as seguintes propriedades:
    Código:

    Frame:

    Name:fraAkuma
    Caption:Akuma

    Label:

    Name:lblAkuma
    Caption:Akuma:

    Scrollbox:
    Name:scrlAkuma
    Min:1
    Max:3

    Na cmbType adicione na propriedade List o nome:
    Código:
    Akuma



    Dê dois clicks na cmbType e adicione:
    Código:
    If cmbType.ListIndex = ITEM_TYPE_AKUMA Then
    fraAkuma.Visible = True
    Else
    fraAkuma.Visible = False
    End If



    Dê dois clicks na scrlAkuma e adicione:
    Código:

    ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler
       
        Select Case scrlAkuma.Value
        Case 1
        lblAkuma.Caption = "Akuma: Nenhuma"
        Case 2
        lblAkuma.Caption = "Akuma: Gomu Gomu"
        Case 3
        lblAkuma.Caption = "Akuma: Moku Moku"
        Case Else
        lblAkuma.Caption = "Akuma: Nenhuma"
        End Select
        Item(EditorIndex).AkumaReward = scrlAkuma.Value
        ' Error handler
        Exit Sub
    errorhandler:
        HandleError "scrlAkuma", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext
        Err.Clear
    Exit Sub

    Procure por:
    Código:
    Public Const ITEM_TYPE_SPELL As Byte = 8
    Abaixo adicione:
    Código:
    Public Const ITEM_TYPE_AKUMA As Byte = 9 'ou o próximo número

    No modGameEditors procure por:

    Código:
    If (frmEditor_Item.cmbType.ListIndex = ITEM_TYPE_SPELL) Then
                frmEditor_Item.fraSpell.Visible = True
                frmEditor_Item.scrlSpell.Value = .Data1
            Else
                frmEditor_Item.fraSpell.Visible = False
            End If

    Abaixo adicione:

    Código:
    If (frmEditor_Item.cmbType.ListIndex = ITEM_TYPE_AKUMA) Then
    frmEditor_Item.scrlAkuma.Value = .AkumaReward
    Else
    frmEditor_Item.fraAkuma.Visible = False
    End If

    Na Type ItemRec abaixo de:
    Código:
    Paperdoll As Long
    Adicione:
    Código:
    AkumaReward As Long

    Server-side:

    Procure por:
    Código:
    Public Const ITEM_TYPE_SPELL As Byte = 8
    Abaixo adicione:
    Código:
    Public Const ITEM_TYPE_AKUMA As Byte = 9

    no ModPlayer na UseItem procure por:
    Código:
    Case ITEM_TYPE_SPELL
              
                    ' stat requirements
                    For i = 1 To Stats.Stat_Count - 1
                        If GetPlayerRawStat(index, i) < Item(itemnum).Stat_Req(i) Then
                            PlayerMsg index, "Você não tem os status requeridos para equipar esse equipamento.", BrightRed
                            Exit Sub
                        End If
                    Next
                  
                    ' level requirement
                    If GetPlayerLevel(index) < Item(itemnum).LevelReq Then
                        PlayerMsg index, "Você não tem o level requerido para usar esse item.", BrightRed
                        Exit Sub
                    End If
                  
                    ' class requirement
                    If Item(itemnum).ClassReq > 0 Then
                        If Not GetPlayerClass(index) = Item(itemnum).ClassReq Then
                            PlayerMsg index, "Você não tem a classe necessaria para usar esse item.", BrightRed
                            Exit Sub
                        End If
                    End If
                  
                    ' access requirement
                    If Not GetPlayerAccess(index) >= Item(itemnum).AccessReq Then
                        PlayerMsg index, "Você não tem o acesso requerido para usar esse item.", BrightRed
                        Exit Sub
                    End If
                  
                    ' Get the spell num
                    n = Item(itemnum).Data1

                    If n > 0 Then

                        ' Make sure they are the right class
                        If Spell(n).ClassReq = GetPlayerClass(index) Or Spell(n).ClassReq = 0 Then
                            ' Make sure they are the right level
                            i = Spell(n).LevelReq

                            If i <= GetPlayerLevel(index) Then
                                i = FindOpenSpellSlot(index)

                                ' Make sure they have an open spell slot
                                If i > 0 Then

                                    ' Make sure they dont already have the spell
                                    If Not HasSpell(index, n) Then
                                        Call SetPlayerSpell(index, i, n)
                                        Call SendAnimation(GetPlayerMap(index), Item(itemnum).Animation, 0, 0, TARGET_TYPE_PLAYER, index)
                                        Call TakeInvItem(index, itemnum, 0)
     
                                      Call PlayerMsg(index, "Agora você
    pode usar a magia " & Trim$(Spell(n).Name) & ".", BrightGreen)
                                    Else
                                        Call PlayerMsg(index, "Você ja tem essa magia.", BrightRed)
                                    End If

                                Else
                                    Call PlayerMsg(index, "Você não pode aprender mais magias.", BrightRed)
                                End If

                            Else
     
                              Call PlayerMsg(index, "Você precisa estar no
    nivel " & i & " para aprender essa magia.", BrightRed)
                            End If

                        Else
     
                          Call PlayerMsg(index, "Essa magia so pode ser
    aprendida pela classe " &
    CheckGrammar(GetClassName(Spell(n).ClassReq)) & ".", BrightRed)
                        End If
                    End If
                  
                    ' send the sound
                    SendPlayerSound index, GetPlayerX(index), GetPlayerY(index), SoundEntity.seItem, itemnum



    Abaixo adicione:
    Código:
    Case ITEM_TYPE_AKUMA
                 ' stat requirements
                    For i = 1 To Stats.Stat_Count - 1
                        If GetPlayerRawStat(index, i) < Item(itemnum).Stat_Req(i) Then
                            PlayerMsg index, "You do not meet the stat requirements to use this item.", BrightRed
                            Exit Sub
                        End If
                    Next
                  
                    ' level requirement
                    If GetPlayerLevel(index) < Item(itemnum).LevelReq Then
                        PlayerMsg index, "You do not meet the level requirement to use this item.", BrightRed
                        Exit Sub
                    End If
                  
                    ' class requirement
                    If Item(itemnum).ClassReq > 0 Then
                        If Not GetPlayerClass(index) = Item(itemnum).ClassReq Then
                            PlayerMsg index, "You do not meet the class requirement to use this item.", BrightRed
                            Exit Sub
                        End If
                    End If
                  
                    ' access requirement
                    If Not GetPlayerAccess(index) >= Item(itemnum).AccessReq Then
                        PlayerMsg index, "You do not meet the access requirement to use this item.", BrightRed
                        Exit Sub
                    End If
                  
                    ' Ganhar Akuma
                    Call SetPlayerAkuma(index, Item(itemnum).AkumaReward)
                     ' send the sound
                    SendPlayerSound index, GetPlayerX(index), GetPlayerY(index), SoundEntity.seItem, itemnum

                    ' atualizar player
                    Call SendPlayerData(index)
                    'tirar item do inventário
                    Call TakeInvItem(index, itemnum, 0)

    Para finalizar na Type Item_Rec abaixo de:
    Código:
    Paperdoll As Long
    Adicione:
    Código:
    AkumaReward As Long

    Pronto aí está o tutorial, se quiser modificações faça você mesmo, por exemplo se quiser mandar uma mensagem que o player comeu tal akuma no mi, estude o código para saber como funciona, dá pra servir de base pra muita coisa. Até a próxima amigo Successful


    Última edição por XWlash em Dom Jun 26, 2016 9:11 pm, editado 1 vez(es)


    _________________

    Tente novamente.
    avatar
    Spooky
    Membro Ativo
    Membro Ativo

    Mensagens : 262
    Créditos : 23

    Re: [One Piece] Akuma no Mi System

    Mensagem por Spooky em Seg Dez 29, 2014 2:29 pm

    Aeee Até que enfim terminou e.e como sempre tutorial perfeito '-' +2 cred e.e


    _________________
    Sign

    Sign¹:

    Sign²:
    avatar
    XWlash
    Semi-Experiente
    Semi-Experiente

    Mensagens : 88
    Créditos : 23

    Re: [One Piece] Akuma no Mi System

    Mensagem por XWlash em Seg Dez 29, 2014 2:32 pm

    Depois te passo a continuação, ou seja a parte de ganhar spells etc... talvez passe ele aqui como Ganha Spell Por Level com precaução de alguns bugs.  De qualquer forma obrigado Successful


    _________________

    Tente novamente.
    avatar
    Spooky
    Membro Ativo
    Membro Ativo

    Mensagens : 262
    Créditos : 23

    Re: [One Piece] Akuma no Mi System

    Mensagem por Spooky em Seg Dez 29, 2014 2:41 pm

    Kross escreveu:Depois te passo a continuação, ou seja a parte de ganhar spells etc... talvez passe ele aqui como Ganha Spell Por Level com precaução de alguns bugs.  De qualquer forma obrigado Successful
    Arigato, sensei . 
    só pra n ficar sem nada o tópico vou dar +1 '-' vamos lá, eu dou idéia tu cria aaah muleke heuheuehueh


    _________________
    Sign

    Sign¹:

    Sign²:
    avatar
    Pablo Kawan
    Experiente
    Experiente

    Mensagens : 485
    Créditos : 158

    Re: [One Piece] Akuma no Mi System

    Mensagem por Pablo Kawan em Seg Dez 29, 2014 5:19 pm

    parabêns, primeira vez que vejo alguem fazer algo que preste com os tutoriais já existentes, só vejo novatos pedindo ajuda.


    _________________
    Assinatura removida pela Staff
    ^ Tenho nova, surprise
    avatar
    XWlash
    Semi-Experiente
    Semi-Experiente

    Mensagens : 88
    Créditos : 23

    Re: [One Piece] Akuma no Mi System

    Mensagem por XWlash em Seg Dez 29, 2014 5:43 pm

    Obg Kawanzii Successful, com meus tutoriais que estou postando quero pegar mais isso e mostrar pros novatos que eles tem a base pra absolutamente tudo aqui no fórum só não enxergam.


    _________________

    Tente novamente.
    avatar
    Spooky
    Membro Ativo
    Membro Ativo

    Mensagens : 262
    Créditos : 23

    Re: [One Piece] Akuma no Mi System

    Mensagem por Spooky em Seg Dez 29, 2014 7:55 pm

    Kross escreveu:Obg Kawanzii Successful, com meus tutoriais que estou postando quero pegar mais isso e mostrar pros novatos que eles tem a base pra absolutamente tudo aqui no fórum só não enxergam.
    É, mais o problema também é os novatos que não sabem programar isso também dificulta um pouco para melhorar um sistema xd


    _________________
    Sign

    Sign¹:

    Sign²:
    avatar
    Spooky
    Membro Ativo
    Membro Ativo

    Mensagens : 262
    Créditos : 23

    Re: [One Piece] Akuma no Mi System

    Mensagem por Spooky em Qua Jan 21, 2015 2:24 pm

    Malz pelo double, mais creio que seja importante (o pessoal não ia ver o edit -.-')


    Dê dois clicks na scrlAkuma e adicione:
    CÓDIGO:
    Código:

    ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler
       
        Select Case scrlAkuma.Value
        Case 1
        lblAkuma.Caption = Akuma: Nenhuma
        Case 2
        lblAkuma.Caption = Akuma: Gomu Gomu
        Case 3
        lblAkuma.Caption = Akuma: Moku Moku
        Case Else
        lblAkuma.Caption = Akuma: Nenhuma
        End Select
        Item(EditorIndex).AkumaReward = scrlAkuma.Value
        ' Error handler
        Exit Sub
    errorhandler:
        HandleError "scrlAkuma", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext
        Err.Clear
    Exit Sub




    Só Avisando que nesta parte se deixar 

    Código:
    [size=12]Case 1[/size]


    [size=12]    lblAkuma.Caption = Akuma: Nenhuma[/size]


    vai dar erro ao compilar, então tem que coloca o seguinte:

    Código:
    [size=12]Case 1[/size]


    [size=12]    lblAkuma.Caption = "Akuma: Nenhuma"[/size]


    O que mudou? 
    R: O " "  antes do nome Akuma e depois de Nenhuma...
    tem que fazer nos outros também

    Então ficaria 
    CÓDIGO:
    Código:

    ' If debug mode, handle error then exit out
        If Options.Debug = 1 Then On Error GoTo errorhandler
       
        Select Case scrlAkuma.Value
        Case 1
        lblAkuma.Caption = "Akuma: Nenhuma"
        Case 2
        lblAkuma.Caption = "Akuma: Gomu Gomu"
        Case 3
        lblAkuma.Caption = "Akuma: Moku Moku"
        Case Else
        lblAkuma.Caption = "Akuma: Nenhuma"
        End Select
        Item(EditorIndex).AkumaReward = scrlAkuma.Value
        ' Error handler
        Exit Sub
    errorhandler:
        HandleError "scrlAkuma", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext
        Err.Clear
    Exit Sub
    Vlw :)


    _________________
    Sign

    Sign¹:

    Sign²:

    Conteúdo patrocinado

    Re: [One Piece] Akuma no Mi System

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Sex Nov 16, 2018 4:57 pm