[EO] Pvp Arena

    Compartilhe
    avatar
    Thales12
    Administrador
    Administrador

    Mensagens : 140
    Level : 8
    Data de inscrição : 01/11/2011
    Idade : 23
    Localização : Rio de Janeiro

    default [EO] Pvp Arena

    Mensagem por Thales12 em Sex Fev 17, 2012 4:43 pm

    Pessoal traduzi um tutorial la da touchofdeathforums e trouce para ca, é um simples tutorial de arena pvp igual das outras engines.

    Vamos começar no Client Side:

    No Frm_MapEditor adcione um button com name OptArena
    Agora de dois clicks no button que voce criou e adcione esse codigo:

    Código:
    ClearAttributeDialogue
        picAttributes.Visible = True
        fraMapWarp.Visible = True
     
        scrlMapWarp.Max = MAX_MAPS
        scrlMapWarp.Value = 1
        scrlMapWarpX.Max = MAX_BYTE
        scrlMapWarpY.Max = MAX_BYTE
        scrlMapWarpX.Value = 0
        scrlMapWarpY.Value = 0

    Depois na Sub MapEditorMouseDown, procure por:
    Código:
    ' slide
                    If frmEditor_Map.optSlide.Value Then
                        .Type = TILE_TYPE_SLIDE
                        .Data1 = MapEditorSlideDir
                        .Data2 = 0
                        .Data3 = 0
                    End If

    Abaixo adcione:

    Código:
    ' Arena
                    If frmEditor_Map.OptArena.Value Then
                        .Type = TILE_TYPE_ARENA
                        .Data1 = EditorWarpMap
                        .Data2 = EditorWarpX
                        .Data3 = EditorWarpY
                    End If

    Depois na Function BltMapAttributes procure por:

    Código:
    Case TILE_TYPE_SLIDE
                                    DrawText TexthDC, tX, tY, "S", QBColor(BrightCyan)

    Adcione em Baixo:

    Código:
    Case TILE_TYPE_ARENA
                                    DrawText TexthDC, tX, tY, "A", QBColor(Black)

    Agora em modConstants procure por:

    Código:
    Public Const TILE_TYPE_SLIDE As Byte = 14

    Adcione abaixo:

    Código:
    Public Const TILE_TYPE_ARENA As Byte = 15

    ACABAMOS A PARTE DO CLIENT SIDE
    AGORA NO SERVER SIDE...

    Procure em modConstants:

    Código:
    Public Const TILE_TYPE_SLIDE As Byte = 14

    Abaixo adcione:

    Código:
    Public Const TILE_TYPE_ARENA As Byte = 15

    Agora em modCombat na Function CanPlayerAttackPlayer procure:

    Código:
    ' Check if map is attackable
        If Not Map(GetPlayerMap(attacker)).Moral = MAP_MORAL_NONE Then
            If GetPlayerPK(victim) = NO Then
                Call PlayerMsg(attacker, "This is a safe zone!", BrightRed)
                Exit Function
            End If
        End If

    Adcione isso acima:

    Código:
    'Checks if it is an Arena
        If Map(GetPlayerMap(victim)).Tile(GetPlayerX(victim), GetPlayerY(victim)).Type = TILE_TYPE_ARENA Then
            CanPlayerAttackPlayer = True
            Exit Function
        End If

    Agora na Sub PlayerAttackPlayer procure:

    Código:
    If GetPlayerPK(victim) = NO Then
                    If GetPlayerPK(attacker) = NO Then
                        Call SetPlayerPK(attacker, YES)
                        Call SendPlayerData(attacker)
                        Call GlobalMsg(GetPlayerName(attacker) & " has been deemed a Player Killer!!!", BrightRed)
                    End If

                Else
                    Call GlobalMsg(GetPlayerName(victim) & " has paid the price for being a Player Killer!!!", BrightRed)
                End If

    Mude para:

    Código:
    'Checks if it is an Arena
            If Not Map(GetPlayerMap(victim)).Tile(GetPlayerX(victim), GetPlayerY(victim)).Type = TILE_TYPE_ARENA Then
                If GetPlayerPK(victim) = NO Then
                    If GetPlayerPK(attacker) = NO Then
                        Call SetPlayerPK(attacker, YES)
                        Call SendPlayerData(attacker)
                        Call GlobalMsg(GetPlayerName(attacker) & " has been deemed a Player Killer!!!", BrightRed)
                    End If

                Else
                    Call GlobalMsg(GetPlayerName(victim) & " has paid the price for being a Player Killer!!!", BrightRed)
                End If
            End If

    Na mesma Sub ainda procure por:

    Código:
    Call OnDeath(victim)

    Mude para:

    Código:
    'Checks if it is an Arena
            If Map(GetPlayerMap(victim)).Tile(GetPlayerX(victim), GetPlayerY(victim)).Type = TILE_TYPE_ARENA Then
                Call PlayerWarp(victim, Map(GetPlayerMap(victim)).Tile(GetPlayerX(victim), GetPlayerY(victim)).Data1, Map(GetPlayerMap(victim)).Tile(GetPlayerX(victim), GetPlayerY(victim)).Data2, Map(GetPlayerMap(victim)).Tile(GetPlayerX(victim), GetPlayerY(victim)).Data3)
            Else
                Call OnDeath(victim)
            End If

    Pronto Agora voce pode ter uma arena pvp no seu jogo^^... Qualquer duvida so falar, e desculpe os erros de portugues...

    Creditos:kibbelz

      Data/hora atual: Seg Dez 17, 2018 7:48 am