BGames
Olá visitante! Seja bem vindo á BGames!

Para ter total acesso ao nosso fórum é preciso que você se registre.

Registre-se Aqui!


PARA VER LINKS E IMAGENS É PRECISO SE REGISTRAR!


BGames
Olá visitante! Seja bem vindo á BGames!

Para ter total acesso ao nosso fórum é preciso que você se registre.

Registre-se Aqui!


PARA VER LINKS E IMAGENS É PRECISO SE REGISTRAR!

BGames
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

BGamesEntrar

Fórum de Desenvolvimento de Jogos e Programação


description[Tutorial]Sistema de Vila Completo Empty[Tutorial]Sistema de Vila Completo

more_horiz
Como Funciona : Ao criar um novo char, você escolherá de qual vila quer ser. O nome da Vila aparecerá do lado do seu Nome no jogo e cada Vila terá um Lugar para Nascer Independente da classe Escolhida. ;)

[size=14pt]Client~Side[/size]

Crie uma pasta dentro da pasta GFX com o nome de Vilas. Nesta pasta, coloque as vilas que você quer, mas use sempre números (de 1 à quantidade que você vai usar e em .jpg). Usarei 10 no tutorial.

Na frmNewChar, crie uma PictureBox e mude seu nome para picVila. Agora, crie 2 CommandButton, um com o nome de cmdPVila e o outro com o nome de cmdNVila. Nos códigos da frmNewChar procure por:

Código:

Option Explicit
Public animi As Long


Abaixo coloque:

Código:

Public V As Long


Agora dê duplo clique no cmdPVila e coloque:

Código:

If V = 1 Then
        V = 10
    Else
        V = V - 1
    End If
    picVila.Picture = LoadPicture(App.Path & "\GFX\Vilas\" & V & ".jpg")


No cmdNVila coloque:

Código:

If V = 10 Then
      V = 1
    Else
      V = V + 1
    End If
    picVila.Picture = LoadPicture(App.Path & "\GFX\Vilas\" & V & ".jpg")


Agora, continuando na frmNewChar, crie uma textBox e mude o nome para txtVila e coloque Visible = False. Crie um Timer (o nome já ficará como Timer3) e mude o interval para 1. Dê duplo clique no Timer3 e adicione:

Código:

If V = 1 Then
        txtVila.Text = "Folha"
    ElseIf V = 2 Then
        txtVila.Text = "Areia"
    ElseIf V = 3 Then
        txtVila.Text = "Névoa"
    ElseIf V = 4 Then
        txtVila.Text = "Nuvem"
    ElseIf V = 5 Then
        txtVila.Text = "Pedra"
    ElseIf V = 6 Then
        txtVila.Text = "Som"
    ElseIf V = 7 Then
        txtVila.Text = "Chuva"
    ElseIf V = 8 Then
        txtVila.Text = "Cachoeira"
    ElseIf V = 9 Then
        txtVila.Text = "Grama"
    ElseIf V = 10 Then
        txtVila.Text = "Akatsuki"
    End If


Lembrando que você muda o nome das Vilas exatamente ali em cima. E o V é o numero da Imagem dentro da Pasta Vilas. ;)

No evento Load da frmNewChar, coloque:

Código:

V = 1
    picVila.Picture = LoadPicture(App.Path & "\GUI\Vilas\" & V & ".jpg")


Procure por:

Código:

Case MENU_STATE_ADDCHAR
            frmNewChar.Hide
            If ConnectToServer = True Then
                Call SetStatus("Conectado, enviando pedido de criação de personagem...")
                If frmNewChar.optMale.Value = True Then
                    Call SendAddChar(frmNewChar.txtName, 0, frmNewChar.cmbClass.ListIndex + 1, frmChars.lstChars.ListIndex + 1)
                Else
                    Call SendAddChar(frmNewChar.txtName, 1, frmNewChar.cmbClass.ListIndex + 1, frmChars.lstChars.ListIndex + 1)
                End If
            End If


Mude para:

Código:

Case MENU_STATE_ADDCHAR
            frmNewChar.Hide
            If ConnectToServer = True Then
                Call SetStatus("Conectado, enviando pedido de criação de personagem...")
                If frmNewChar.optMale.Value = True Then
                    Call SendAddChar(frmNewChar.txtName, 0, frmNewChar.cmbClass.ListIndex + 1, frmChars.lstChars.ListIndex + 1, frmNewChar.txtVila)
                Else
                    Call SendAddChar(frmNewChar.txtName, 1, frmNewChar.cmbClass.ListIndex + 1, frmChars.lstChars.ListIndex + 1, frmNewChar.txtVila)
                End If
            End If


Na Sub HandleData, embaixo de:

Código:

Dim z As Long


Adicione:

Código:

Dim Vila As String


Procure por:

Código:

' ::::::::::::::::::::::::
    ' :: Player data packet ::
    ' ::::::::::::::::::::::::
    If Parse(0) = "playerdata" Then
        I = Val(Parse(1))
        Call SetPlayerName(I, Parse(2))
        Call SetPlayerSprite(I, Val(Parse(3)))
        Call SetPlayerMap(I, Val(Parse(4)))
        Call SetPlayerX(I, Val(Parse(5)))
        Call SetPlayerY(I, Val(Parse(6)))
        Call SetPlayerDir(I, Val(Parse(7)))
        Call SetPlayerAccess(I, Val(Parse())
        Call SetPlayerPK(I, Val(Parse(9)))
        Call SetPlayerGuild(I, Parse(10))
        Call SetPlayerGuildAccess(I, Val(Parse(11)))
        Call SetPlayerClass(I, Val(Parse(13)))

        ' Make sure they aren't walking
        Player(I).Moving = 0
        Player(I).XOffset = 0
        Player(I).YOffset = 0
       
        ' Check if the player is the client player, and if so reset Directions
        If I = MyIndex Then
            DirUp = False
            DirDown = False
            DirLeft = False
            DirRight = False
        End If
        Exit Sub
    End If



Mude para:

Código:

' ::::::::::::::::::::::::
    ' :: Player data packet ::
    ' ::::::::::::::::::::::::
    If Parse(0) = "playerdata" Then
        I = Val(Parse(1))
        Call SetPlayerName(I, Parse(2))
        Call SetPlayerSprite(I, Val(Parse(3)))
        Call SetPlayerMap(I, Val(Parse(4)))
        Call SetPlayerX(I, Val(Parse(5)))
        Call SetPlayerY(I, Val(Parse(6)))
        Call SetPlayerDir(I, Val(Parse(7)))
        Call SetPlayerAccess(I, Val(Parse())
        Call SetPlayerPK(I, Val(Parse(9)))
        Call SetPlayerGuild(I, Parse(10))
        Call SetPlayerGuildAccess(I, Val(Parse(11)))
        Call SetPlayerVila(I, Parse(12))
        Call SetPlayerClass(I, Val(Parse(13)))

        ' Make sure they aren't walking
        Player(I).Moving = 0
        Player(I).XOffset = 0
        Player(I).YOffset = 0
       
        ' Check if the player is the client player, and if so reset Directions
        If I = MyIndex Then
            DirUp = False
            DirDown = False
            DirLeft = False
            DirRight = False
        End If
        Exit Sub
    End If



Procure por:

Código:

Sub SendAddChar(ByVal Name As String, ByVal Sex As Long, ByVal ClassNum As Long, ByVal Slot As Long)
Dim Packet As String

    Packet = "addachara" & SEP_CHAR & Trim(Name) & SEP_CHAR & Sex & SEP_CHAR & ClassNum & SEP_CHAR & Slot & END_CHAR
    Call SendData(Packet)
End Sub


Mude para:

Código:

Sub SendAddChar(ByVal Name As String, ByVal Sex As Long, ByVal ClassNum As Long, ByVal slot As Long, ByVal Vila As String)
Dim Packet As String

    Packet = "addachara" & SEP_CHAR & Trim(Name) & SEP_CHAR & Sex & SEP_CHAR & ClassNum & SEP_CHAR & slot & SEP_CHAR & Vila & END_CHAR
    Call SendData(Packet)
End Sub


Procure por:

Código:

Type PlayerRec
    ' General
    Name As String * NAME_LENGTH
    Guild As String
    Guildaccess As Byte


Abaixo coloque:

Código:

Vila As String


Procure por:

Código:

Sub ClearPlayer(ByVal Index As Long)
Dim I As Long
Dim n As Long

    Player(Index).Name = vbNullString
    Player(Index).Guild = vbNullString
    Player(Index).Guildaccess = 0


Abaixo adicione:

Código:

Player(Index).Vila = vbNullString


Procure por:

Código:

Sub SetPlayerName(ByVal Index As Long, ByVal Name As String)
    Player(Index).Name = Name
End Sub


Embaixo coloque:

Código:

Function GetPlayerVila(ByVal Index As Long) As String
    GetPlayerVila = Trim(Player(Index).Vila)
End Function

Sub SetPlayerVila(ByVal Index As Long, ByVal Vila As String)
    Player(Index).Vila = Vila
End Sub


Procure por:

Código:

' :::::::::::::::::::::::::::
    ' :: All characters packet ::
    ' :::::::::::::::::::::::::::
    If Parse(0) = "allchars" Then
        n = 1
       
        frmSendGetData.Hide
        frmChars.Show , frmMainMenu
       
        frmChars.lstChars.Clear
       
        For I = 1 To MAX_CHARS
            Name = Parse(n)
            Msg = Parse(n + 1)
            Level = Val(Parse(n + 2))
           
            If Trim(Name) = vbNullString Then
                frmChars.lstChars.AddItem "Lugar Livre"
            Else
                frmChars.lstChars.AddItem Name & ", level " & Level & " " & Msg
            End If
           
            n = n + 3
        Next I
       
        frmChars.lstChars.ListIndex = 0
        Exit Sub
    End If


Mude para:

Código:

' :::::::::::::::::::::::::::
    ' :: All characters packet ::
    ' :::::::::::::::::::::::::::
    If Parse(0) = "allchars" Then
        n = 1
       
        frmSendGetData.Hide
        frmChars.Show , frmMainMenu
       
        frmChars.lstChars.Clear
       
        For I = 1 To MAX_CHARS
            Name = Parse(n)
            Msg = Parse(n + 1)
            Level = Val(Parse(n + 2))
            Vila = Parse(n + 4)
           
            If Trim(Name) = vbNullString Then
                frmChars.lstChars.AddItem "Lugar Livre"
            Else
                frmChars.lstChars.AddItem Name & ", level " & Level & " " & Msg & ", " & Vila
            End If
           
            n = n + 5
        Next I
       
        frmChars.lstChars.ListIndex = 0
        Exit Sub
    End If


No ModGameLogic Procure Por :

Código:

Sub BltPlayerName(ByVal Index As Long)
Dim TextX As Long
Dim TextY As Long
Dim Color As Long
   
    ' Check access level
    If GetPlayerPK(Index) = NO Then
        Select Case GetPlayerAccess(Index)
            Case 0
                Color = QBColor(Brown)
            Case 1
                Color = QBColor(DarkGrey)
            Case 2
                Color = QBColor(Cyan)
            Case 3
                Color = QBColor(Blue)
            Case 4
                Color = QBColor(Pink)
        End Select
    Else
        Color = QBColor(BrightRed)
    End If
       
    ' Draw name
    TextX = GetPlayerX(Index) * PIC_X + sx + Player(Index).XOffset + Int(PIC_X / 2) - ((Len(GetPlayerName(Index)) / 2) * 8)
    TextY = GetPlayerY(Index) * PIC_Y + sx + Player(Index).YOffset - Int(PIC_Y / 2) - (SIZE_Y - PIC_Y)
    Call DrawText(TexthDC, TextX - (NewPlayerX * PIC_X) - NewXOffset, TextY - (NewPlayerY * PIC_Y) - NewYOffset, GetPlayerName(Index), Color)
End Sub


Mude a Sub Toda Para :

Código:

Sub BltPlayerName(ByVal Index As Long)
Dim TextX As Long
Dim TextY As Long
Dim Color As Long
   
    ' Check access level
    If GetPlayerPK(Index) = NO Then
        Select Case GetPlayerAccess(Index)
            Case 0
                Color = QBColor(Brown)
            Case 1
                Color = QBColor(DarkGrey)
            Case 2
                Color = QBColor(Cyan)
            Case 3
                Color = QBColor(Blue)
            Case 4
                Color = QBColor(Pink)
        End Select
    Else
        Color = QBColor(BrightRed)
    End If
       
    ' Draw name
    TextX = GetPlayerX(Index) * PIC_X + sx + Player(Index).XOffset + Int(PIC_X / 2) - ((Len(GetPlayerName(Index)) / 2) * 8)
    TextY = GetPlayerY(Index) * PIC_Y + sx + Player(Index).YOffset - Int(PIC_Y / 2) - (SIZE_Y - PIC_Y)
    Call DrawText(TexthDC, TextX - (NewPlayerX * PIC_X) - NewXOffset, TextY - (NewPlayerY * PIC_Y) - NewYOffset, GetPlayerName(Index) & " - Vila : " & GetPlayerVila(Index), Color)
End Sub



[size=14pt]Server~Side[/size]

Procure por:

Código:

Sub AddChar(ByVal Index As Long, _
  ByVal Name As String, _
  ByVal Sex As Byte, _
  ByVal ClassNum As Byte, _
  ByVal CharNum As Long)
  Dim f As Long

    If Trim$(Player(Index).Char(CharNum).Name) = vbNullString Then
        Player(Index).CharNum = CharNum
        Player(Index).Char(CharNum).Name = Name
        Player(Index).Char(CharNum).Sex = Sex
        Player(Index).Char(CharNum).Class = ClassNum

    If Player(Index).Char(CharNum).Sex = SEX_MALE Then
            Player(Index).Char(CharNum).Sprite = Class(ClassNum).MaleSprite
        Else
            Player(Index).Char(CharNum).Sprite = Class(ClassNum).FemaleSprite
        End If

        Player(Index).Char(CharNum).Level = 1
        Player(Index).Char(CharNum).STR = Class(ClassNum).STR
        Player(Index).Char(CharNum).DEF = Class(ClassNum).DEF
        Player(Index).Char(CharNum).Speed = Class(ClassNum).Speed
        Player(Index).Char(CharNum).Magi = Class(ClassNum).Magi

        If Class(ClassNum).Map <= 0 Then Class(ClassNum).Map = 1
        If Class(ClassNum).x < 0 Or Class(ClassNum).x > MAX_MAPX Then Class(ClassNum).x = Int(Class(ClassNum).x / 2)
        If Class(ClassNum).y < 0 Or Class(ClassNum).y > MAX_MAPY Then Class(ClassNum).y = Int(Class(ClassNum).y / 2)
        Player(Index).Char(CharNum).Map = Class(ClassNum).Map
        Player(Index).Char(CharNum).x = Class(ClassNum).x
        Player(Index).Char(CharNum).y = Class(ClassNum).y
        Player(Index).Char(CharNum).HP = GetPlayerMaxHP(Index)
        Player(Index).Char(CharNum).MP = GetPlayerMaxMP(Index)
        Player(Index).Char(CharNum).SP = GetPlayerMaxSP(Index)

        ' Colocando nome no arquivo xD
        f = FreeFile
        Open App.Path & "\Contas\charlist.txt" For Append As #f
        Print #f, Name
        Close #f
        Call SavePlayer(Index)
        Exit Sub
    End If

End Sub



Mude para:

Código:

Sub AddChar(ByVal Index As Long, _
  ByVal Name As String, _
  ByVal Sex As Byte, _
  ByVal ClassNum As Byte, _
  ByVal CharNum As Long, _
  ByVal Vila As String)
  Dim f As Long

    If Trim$(Player(Index).Char(CharNum).Name) = vbNullString Then
        Player(Index).CharNum = CharNum
        Player(Index).Char(CharNum).Name = Name
        Player(Index).Char(CharNum).Sex = Sex
        Player(Index).Char(CharNum).Class = ClassNum
        Player(Index).Char(CharNum).Vila = Vila

        If Player(Index).Char(CharNum).Sex = SEX_MALE Then
            Player(Index).Char(CharNum).Sprite = Class(ClassNum).MaleSprite
        Else
            Player(Index).Char(CharNum).Sprite = Class(ClassNum).FemaleSprite
        End If

        Player(Index).Char(CharNum).Level = 1
        Player(Index).Char(CharNum).STR = Class(ClassNum).STR
        Player(Index).Char(CharNum).DEF = Class(ClassNum).DEF
        Player(Index).Char(CharNum).Speed = Class(ClassNum).Speed
        Player(Index).Char(CharNum).Magi = Class(ClassNum).Magi

        If Class(ClassNum).Map <= 0 Then Class(ClassNum).Map = 1
        If Class(ClassNum).x < 0 Or Class(ClassNum).x > MAX_MAPX Then Class(ClassNum).x = Int(Class(ClassNum).x / 2)
        If Class(ClassNum).y < 0 Or Class(ClassNum).y > MAX_MAPY Then Class(ClassNum).y = Int(Class(ClassNum).y / 2)
        Player(Index).Char(CharNum).Map = GetVar(App.Path & "\Vilas.ini", GetPlayerVila(Index), "Map")
        Player(Index).Char(CharNum).x = GetVar(App.Path & "\Vilas.ini", GetPlayerVila(Index), "X")
        Player(Index).Char(CharNum).y = GetVar(App.Path & "\Vilas.ini", GetPlayerVila(Index), "Y")
        Player(Index).Char(CharNum).HP = GetPlayerMaxHP(Index)
        Player(Index).Char(CharNum).MP = GetPlayerMaxMP(Index)
        Player(Index).Char(CharNum).SP = GetPlayerMaxSP(Index)

        ' Colocando nome no arquivo xD
        f = FreeFile
        Open App.Path & "\Contas\charlist.txt" For Append As #f
        Print #f, Name
        Close #f
        Call SavePlayer(Index)
        Exit Sub
    End If

End Sub


Procure por:

Código:

Player(Index).Char(i).Class = Val(GetVar(FileName, "CHAR" & i, "Class")


Abaixo adicione:

Código:

Player(Index).Char(i).Vila = GetVar(FileName, "CHAR" & i, "Vila"


Procure por:

Código:

Call PutVar(FileName, "CHAR" & i, "Guildaccess", STR(Player(Index).Char(i).Guildaccess))


Abaixo adicione:

Código:

Call PutVar(FileName, "CHAR" & i, "Vila", Trim$(Player(Index).Char(i).Vila))


Procure por:

Código:

Type PlayerRec

    ' Geral
    Name As String * NAME_LENGTH
    Guild As String
    Guildaccess As Byte


Abaixo adicione:

Código:

Vila As String


Procure por:

Código:

Player(Index).Char(CharNum).Guild = vbNullString


Embaixo adiicone:

Código:

Player(Index).Char(CharNum).Vila = vbNullString


Procure por:

Código:

Player(Index).Char(i).Guild = vbNullString


Abaixo adicione:

Código:

Player(Index).Char(i).Vila = vbNullString


Procure por:

Código:

Function GetPlayerExp(ByVal Index As Long) As Long
    GetPlayerExp = Player(Index).Char(Player(Index).CharNum).Exp
End Function


Abaixo adicione:

Código:

Function GetPlayerVila(ByVal Index As Long) As String
    GetPlayerVila = Trim$(Player(Index).Char(Player(Index).CharNum).Vila)
End Function


Procure por:

Código:

Sub SetPlayerExp(ByVal Index As Long, _
  ByVal Exp As Long)
    Player(Index).Char(Player(Index).CharNum).Exp = Exp
End Sub


Adicione abaixo:

Código:

Sub SetPlayerVila(ByVal Index As Long, _
  ByVal Vila As String)
    Player(Index).Char(Player(Index).CharNum).Vila = Vila
End Sub


Procure por:

Código:

Sub HandleData(ByVal Index As Long, ByVal Data As String)
    Dim Parse() As String ' MODO DE SEGURANÇA -- "Descomente" para DESLIGÁ-LO, comente para LIGÁ-LO
    Dim Name As String
    Dim Password As String
    Dim Sex As Long
    Dim Class As Long
    Dim CharNum As Long


Abaixo adicione:

Código:

Dim Vila As String


Procure por:

Código:

Case "addachara"
                Name = Parse(1)
                Sex = Val(Parse(2))
                Class = Val(Parse(3))
                CharNum = Val(Parse(4))

                For i = 1 To Len(Name)
                    N = Asc(Mid$(Name, i, 1))

                    If (N >= 65 And N <= 90) Or (N >= 97 And N <= 122) Or (N = 95) Or (N = 32) Or (N >= 48 And N <= 57) Then
                    Else
                        Call PlainMsg(Index, "Nome Inválido! Use apenas letras, números e espaços.", 4)
                        Exit Sub
                    End If

                Next

                If CharNum < 1 Or CharNum > MAX_CHARS Then
                    Call HackingAttempt(Index, "CharNum Inválido")
                    Exit Sub
                End If

                If (Sex < SEX_MALE) Or (Sex > SEX_FEMALE) Then
                    Call HackingAttempt(Index, "Sexo Inválido")
                    Exit Sub
                End If

                If Class < 1 Or Class > Max_Classes Then
                    Call HackingAttempt(Index, "Classe Inválida")
                    Exit Sub
                End If

                If CharExist(Index, CharNum) Then
                    Call PlainMsg(Index, "O personagem já existe!", 4)
                    Exit Sub
                End If

                If FindChar(Name) Then
                    Call PlainMsg(Index, "Desculpe, mas este nome já está em uso!", 4)
                    Exit Sub
                End If

                Call AddChar(Index, Name, Sex, Class, CharNum)
                Call SavePlayer(Index)
                Call AddLog("O personagem " & Name & " foi adicionado na conta de " & GetPlayerLogin(Index) & ".", PLAYER_LOG)
                Call SendChars(Index)
                Call PlainMsg(Index, "O personagem foi criado!", 5)
                Exit Sub



Mude para:

Código:

Case "addachara"
                Name = Parse(1)
                Sex = Val(Parse(2))
                Class = Val(Parse(3))
                CharNum = Val(Parse(4))
                Vila = Parse(5)

                For i = 1 To Len(Name)
                    N = Asc(Mid$(Name, i, 1))

                    If (N >= 65 And N <= 90) Or (N >= 97 And N <= 122) Or (N = 95) Or (N = 32) Or (N >= 48 And N <= 57) Then
                    Else
                        Call PlainMsg(Index, "Nome Inválido! Use apenas letras, números e espaços.", 4)
                        Exit Sub
                    End If

                Next

                If CharNum < 1 Or CharNum > MAX_CHARS Then
                    Call HackingAttempt(Index, "CharNum Inválido")
                    Exit Sub
                End If

                If (Sex < SEX_MALE) Or (Sex > SEX_FEMALE) Then
                    Call HackingAttempt(Index, "Sexo Inválido")
                    Exit Sub
                End If

                If Class < 1 Or Class > Max_Classes Then
                    Call HackingAttempt(Index, "Classe Inválida")
                    Exit Sub
                End If

                If CharExist(Index, CharNum) Then
                    Call PlainMsg(Index, "O personagem já existe!", 4)
                    Exit Sub
                End If

                If FindChar(Name) Then
                    Call PlainMsg(Index, "Desculpe, mas este nome já está em uso!", 4)
                    Exit Sub
                End If

                Call AddChar(Index, Name, Sex, Class, CharNum, Vila)
                Call SavePlayer(Index)
                Call AddLog("O personagem " & Name & " foi adicionado na conta de " & GetPlayerLogin(Index) & ".", PLAYER_LOG)
                Call SendChars(Index)
                Call PlainMsg(Index, "O personagem foi criado!", 5)
                Exit Sub



Procure por:

Código:

Sub SendChars(ByVal Index As Long)
    Dim Packet As String
    Dim i As Long

    Packet = "ALLCHARS" & SEP_CHAR

    For i = 1 To MAX_CHARS
        Packet = Packet & Trim$(Player(Index).Char(i).Name) & SEP_CHAR & Trim$(Class(Player(Index).Char(i).Class).Name) & SEP_CHAR & Player(Index).Char(i).Level & SEP_CHAR
    Next

    Packet = Packet & END_CHAR
    Call SendDataTo(Index, Packet)
End Sub


Mude para:

Código:

Sub SendChars(ByVal Index As Long)
    Dim Packet As String
    Dim i As Long

    Packet = "ALLCHARS" & SEP_CHAR

    For i = 1 To MAX_CHARS
        Packet = Packet & Trim$(Player(Index).Char(i).Name) & SEP_CHAR & Trim$(Class(Player(Index).Char(i).Class).Name) & SEP_CHAR & Player(Index).Char(i).Level & SEP_CHAR & Player(Index).Char(i).Sprite & SEP_CHAR & Trim$(Player(Index).Char(i).Vila) & SEP_CHAR
    Next

    Packet = Packet & END_CHAR
    Call SendDataTo(Index, Packet)
End Sub


Procure por:

Código:

Packet = Packet & GetPlayerGuildAccess(i) & SEP_CHAR



Abaixo adicione:

Código:

Packet = Packet & GetPlayerVila(i) & SEP_CHAR



Procure por:

Código:

Packet = Packet & GetPlayerGuildAccess(Index) & SEP_CHAR



Você achará VÁRIAS, e em ambas, adicione abaixo:

Código:

Packet = Packet & GetPlayerVila(Index) & SEP_CHAR


No final da clscommands Adicione :

Código:

Function GetPlayerVila(ByVal Index As Long) As String
    GetPlayerVila = Trim$(Player(Index).Char(Player(Index).CharNum).Vila)
End Function


Agora Abra seu Principal.txt e procure Por :

Código:

Sub OnDeath(index)
Dim mapnum
Dim x
Dim y
Dim i
i = GetPlayerClass(index)

mapnum = GetVar("Classes\Classe" & i & ".ini", "CLASS", "Map")
y = GetVar("Classes\Classe" & i & ".ini", "CLASS", "y")
x = GetVar("Classes\Classe" & i & ".ini", "CLASS", "x")

Call PlayerWarp(index, mapnum, x, y)
End Sub


Substitua Ela por :

Código:

Sub OnDeath(index)
Dim mapnum
Dim x
Dim y

mapnum = GetVar("Vilas.ini", GetPlayerVila(Index), "Map")
y = GetVar("Vilas.ini", GetPlayerVila(Index), "Y")
x = GetVar("Vilas.ini", GetPlayerVila(Index), "X")

Call PlayerWarp(index, mapnum, x, y)
End Sub


Agora Para Finalizar, Vai na Pasta do Servidor e Procure um Arquivo .ini Com o Nome MOTD, Copie e Cole ele na Mesma Pasta e o Renomeie para : Vilas
Dê 2 cliques no Arquivo Vilas, Vai abrir em um Bloco de Notas.

Coloque isso :

Código:

[Folha]
Map= 1
X= 1
Y= 1
[Areia]
Map= 1
X= 1
Y= 1
[Névoa]
Map= 1
X= 1
Y= 1
[Nuvem]
Map= 1
X= 1
Y= 1
[Pedra]
Map= 1
X= 1
Y= 1
[Som]
Map= 1
X= 1
Y= 1
[Chuva]
Map= 1
X= 1
Y= 1
[Cachoeira]
Map= 1
X= 1
Y= 1
[Grama]
Map= 1
X= 1
Y= 1
[Akatsuki]
Map= 1
X= 1
Y= 1


Altere o Mapa e a Localização de acordo com onde você quiser que o membro da Vila nasça. ;)
Lembrando que caso você altere o Nome Das Vilas, você também terá que mudar neste Bloco de Notas [size=14pt]Exatamente[/size] como você colocou la no Cliente.

Ps : Este tutorial não foi testado, Qualquer Bug só reportar.

Créditos : Lenon - Tutorial
Guardian - Adaptações para torna-lo completo

description[Tutorial]Sistema de Vila Completo EmptyRe: [Tutorial]Sistema de Vila Completo

more_horiz
Achei bem interessante,mas num teria uma engine 2D em C#?
E tipo, poderia criar um tutorial do inicio não?

description[Tutorial]Sistema de Vila Completo EmptyRe: [Tutorial]Sistema de Vila Completo

more_horiz
Nerdzinhu escreveu:
Achei bem interessante,mas num teria uma engine 2D em C#?
E tipo, poderia criar um tutorial do inicio não?


Não que eu saiba.

Do inicio? Não entendi. rs'

description[Tutorial]Sistema de Vila Completo EmptyRe: [Tutorial]Sistema de Vila Completo

more_horiz
Criando o primeiro projeto, criando a UI do jogo, criando o jogo, ensinar a usar os sockets ,o que são sockets..
Tutoriais iniciantes (:

description[Tutorial]Sistema de Vila Completo EmptyRe: [Tutorial]Sistema de Vila Completo

more_horiz
AAAAAAAAah, certo. =D

Manda seu MSN por MP ae que eu agente conversa melhor. =D

description[Tutorial]Sistema de Vila Completo EmptyRe: [Tutorial]Sistema de Vila Completo

more_horiz
privacy_tip Permissões neste sub-fórum
Não podes responder a tópicos
power_settings_newInicie sessão para responder