Olá Coleguinhas da Aldeia.
Venho trazer um sistema pedido, creio que muitos que tem uma certa noção de Vb desenvolveriam de outras formas, mas estou disponibilizando a minha maneira.
Vamos lá =P
#### O que este sistema faz?
Ao um Player Normal matar um Player que está sendo considerado PK (Player Killer), ele será considerado um Player Hero.
Estarei adicionando no final uma condição para que: Caso o Player Hero assassine um Player Normal, ele seja morto pelo sistema. Além de que, outra condição para que caso o Player seja Hero, ele não poder ser atacado por Player Normais e nem outros Heros.
#### O que será necessário?
- Visual Basic
- E acesso ao source de sua engine =P
Server Side
01 - ModPlayer
Procure por :
Abaixo deste End Sub adicione:
02 - ModPlayer
Procure por:
No final desta Sub, antes do End Sub adicione:
03 - ModCombat
Procure pela por essa Função:
No final dela, antes do End Function adicione :
'Player Normal não atacar um Guardião
If GetPlayerPK(attacker) = NO And GetPlayerGuardian(victim) Then
Call PlayerMsg(attacker, "Você não pode ferir um Guardian", BrightRed)
Exit Function
End If
OBS -> Apenas adicione isto se desejar que Player's Normais não consigam ferir um Guardian(Hero) ou o que for chamar esse "Status".
03 -ModCombat
Procure por esta Sub:
Nesta sub procure por isso :
Substitua esta parte por :
Seja capaz de editar as Calls de Msg, coloque baseado em seu jogo; As minhas são decorrentes ao tema do meu Jogo.
04 - ModServerTCP
Procure por isso:
Abaixou adicione:
No mesmo ModServerTcp e.e Procure por:
(Sim é a mesma coisa, porém são para troca de msgs...) Apenas adicione:
Agora no Sub SayMsg_Global abaixo do:
Adicione:
05 - ModTypes
Procure por:
Nesta Private procure por :
Abaixo adicione:
Uff ~ Server Pronto. Hora do Cliente.
Client Side ~
01 - ModHandleData
Procure por:
Abaixo adicione:
Procure pro isso:
Nesta Sub localize:
Abaixo dela coloque:
Na mesma Sub procure por:
Abaixo adicione:
Na mesma sub procure isso:
abaixo adicione:
02 - ModText
Procure por esta Sub:
Procure por:
Acima disso adicione:
Lembre-se que no final do Select Case; possível que tenha que add um End If =P
03 - ModTypes
Procure por:
Nesta Private abaixo do :
Abaixo adicione:
04 - ModDatabase
Procure por esta Sub:
Nesta sub procure por o End Sub =P E adicione isso:
Finalmente uff... Bom se você colocou tudo certinho, nos devidos locais, irá ocorrer tudo ok.
Lembre-se de dar make em um Backup, e outra coisa:
-> Necessário deletar todas as Contas de jogadores.
Não precisa dar Crédito porque Crédito não diz que você é capaz ou um bom membro.
Desenvolvido por mim. Na verdade qualquer um poderia desenvolver, é uma coisa básica, apenas adicionar uma variação de PK. '-' Mas está ai com condições feitas por mim, e desenvolvidas por mim.
Estou a disposição para dar Support e Ajudar em modificações. Basta postar aqui ou Mandar PM. Até mesmo ajuda em outros sistemas.
ATT ~
Venho trazer um sistema pedido, creio que muitos que tem uma certa noção de Vb desenvolveriam de outras formas, mas estou disponibilizando a minha maneira.
Vamos lá =P
#### O que este sistema faz?
Ao um Player Normal matar um Player que está sendo considerado PK (Player Killer), ele será considerado um Player Hero.
Estarei adicionando no final uma condição para que: Caso o Player Hero assassine um Player Normal, ele seja morto pelo sistema. Além de que, outra condição para que caso o Player seja Hero, ele não poder ser atacado por Player Normais e nem outros Heros.
#### O que será necessário?
- Visual Basic
- E acesso ao source de sua engine =P
Server Side
01 - ModPlayer
Procure por :
- Código:
Sub SetPlayerPK(ByVal index As Long, ByVal PK As Long)
Player(index).PK = PK
End Sub
Abaixo deste End Sub adicione:
- Código:
Function GetPlayerGuardian(ByVal index As Long) As Long
If index < 1 Or index > MAX_PLAYERS Then Exit Function
GetPlayerGuardian = Player(index).Guardian
End Function
Sub SetPlayerGuardian(ByVal index As Long, ByVal Guardian As Long)
Player(index).Guardian = Guardian
End Sub
02 - ModPlayer
Procure por:
- Código:
Sub OnDeath(ByVal index As Long)
No final desta Sub, antes do End Sub adicione:
- Código:
'Caso o jogador que morra seja um Guardian - Retirar o Guardian do mesmo.
If GetPlayerGuardian(index) = YES Then
Call SetPlayerGuardian(index, NO)
Call SendPlayerData(index)
End If
03 - ModCombat
Procure pela por essa Função:
- Código:
Function CanPlayerAttackPlayer
No final dela, antes do End Function adicione :
'Player Normal não atacar um Guardião
If GetPlayerPK(attacker) = NO And GetPlayerGuardian(victim) Then
Call PlayerMsg(attacker, "Você não pode ferir um Guardian", BrightRed)
Exit Function
End If
OBS -> Apenas adicione isto se desejar que Player's Normais não consigam ferir um Guardian(Hero) ou o que for chamar esse "Status".
03 -ModCombat
Procure por esta Sub:
- Código:
Sub PlayerAttackPlayer
Nesta sub procure por isso :
- 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
Substitua esta parte por :
- Código:
If GetPlayerPK(victim) = NO Then
If GetPlayerPK(attacker) = NO Then
Call SetPlayerPK(attacker, YES)
Call SendPlayerData(attacker)
Call GlobalMsg(GetPlayerName(attacker) & " quebrou a conduta dos Players, Agora é um Player Killer [ PK ]. Precisa ser Purificado.", BrightRed)
End If
Else
Call GlobalMsg(GetPlayerName(victim) & " pagou o preço por ser um Player Killer!", BrightRed)
If GetPlayerPK(victim) = YES Then
Call SetPlayerGuardian(attacker, YES)
Call GlobalMsg(GetPlayerName(attacker) & " se tornou um Player Guardian!", BrightBlue)
End If
End If
If GetPlayerGuardian(attacker) = YES And GetPlayerPK(victim) = NO Then
Call SetPlayerPK(attacker, YES)
Call SetPlayerGuardian(attacker, NO)
Call GlobalMsg("[Guardian]" & GetPlayerName(attacker) & " corrompeu-se assassinando um Player Verde.Foi declarado um Traidor e eliminado pelo Sistema.", BrightRed)
Call OnDeath(attacker)
End If
If GetPlayerGuardian(attacker) = YES And GetPlayerPK(victim) = YES Then
Call GlobalMsg("[Guardian]" & GetPlayerName(attacker) & " mandou para a Cadeia o [PK]" & GetPlayerName(victim), BrightBlue)
End If
If GetPlayerPK(attacker) = YES And GetPlayerGuardian(victim) = YES Then
Call GlobalMsg("[PK]" & GetPlayerName(attacker) & " assassinou o [Guardian]" & GetPlayerName(victim), BrightRed)
End If
If GetPlayerPK(attacker) = YES And GetPlayerPK(victim) = NO Then
Call GlobalMsg("[PK]" & GetPlayerName(attacker) & " assassinou " & GetPlayerName(victim), BrightRed)
End If
Call OnDeath(victim)
Seja capaz de editar as Calls de Msg, coloque baseado em seu jogo; As minhas são decorrentes ao tema do meu Jogo.
04 - ModServerTCP
Procure por isso:
- Código:
buffer.WriteLong GetPlayerPK(index)
Abaixou adicione:
- Código:
buffer.WriteLong GetPlayerGuardian(index)
No mesmo ModServerTcp e.e Procure por:
- Código:
buffer.WriteLong GetPlayerPK(index)
(Sim é a mesma coisa, porém são para troca de msgs...) Apenas adicione:
- Código:
buffer.WriteLong GetPlayerGuardian(index)
Agora no Sub SayMsg_Global abaixo do:
- Código:
buffer.WriteLong GetPlayerPK(index)
Adicione:
- Código:
buffer.WriteLong GetPlayerGuardian(index)
05 - ModTypes
Procure por:
- Código:
Private Type PlayerRec
Nesta Private procure por :
- Código:
PK As Byte
Abaixo adicione:
- Código:
Guardian As Byte
Uff ~ Server Pronto. Hora do Cliente.
Client Side ~
01 - ModHandleData
Procure por:
- Código:
Call SetPlayerPK(I, buffer.ReadLong)
Abaixo adicione:
- Código:
Call SetPlayerGuardian(I, buffer.ReadLong)
Procure pro isso:
- Código:
Private Sub HandleSayMsg
Nesta Sub localize:
- Código:
Dim PK As Long
Abaixo dela coloque:
- Código:
Dim Guardian As Long
Na mesma Sub procure por:
- Código:
PK = buffer.ReadLong
Abaixo adicione:
- Código:
Guardian = buffer.ReadLong
Na mesma sub procure isso:
- Código:
' Check access level
If PK = NO Then
Select Case Access
Case 0
colour = White
Case 1
colour = DarkGrey
Case 2
colour = Cyan
Case 3
colour = BrightGreen
Case 4
colour = Yellow
End Select
Else
colour = BrightRed
abaixo adicione:
- Código:
If Guardian = YES Then
colour = Blue
End If
End If
02 - ModText
Procure por esta Sub:
- Código:
Public Sub DrawPlayerName
Procure por:
- Código:
If GetPlayerPK(Index) = NO Then
Acima disso adicione:
- Código:
If GetPlayerGuardian(Index) = YES Then
Color = BrightBlue
Else
Color = BrightRed
Lembre-se que no final do Select Case; possível que tenha que add um End If =P
03 - ModTypes
Procure por:
- Código:
Private Type PlayerRec
Nesta Private abaixo do :
- Código:
PK As Byte
Abaixo adicione:
- Código:
Guardian As Byte
04 - ModDatabase
Procure por esta Sub:
- Código:
Sub SetPlayerPK
Nesta sub procure por o End Sub =P E adicione isso:
- Código:
Function GetPlayerGuardian(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
GetPlayerGuardian = Player(Index).Guardian
' Error handler
Exit Function
ErrorHandler:
HandleError "GetPlayerGuardian", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContext
Err.Clear
Exit Function
End Function
Sub SetPlayerGuardian(ByVal Index As Long, ByVal Guardian 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).Guardian = Guardian
' Error handler
Exit Sub
ErrorHandler:
HandleError "SetPlayerGuardian", "modDatabase", Err.Number, Err.Description, Err.Source, Err.HelpContext
Err.Clear
Exit Sub
End Sub
Finalmente uff... Bom se você colocou tudo certinho, nos devidos locais, irá ocorrer tudo ok.
Lembre-se de dar make em um Backup, e outra coisa:
-> Necessário deletar todas as Contas de jogadores.
Não precisa dar Crédito porque Crédito não diz que você é capaz ou um bom membro.
Desenvolvido por mim. Na verdade qualquer um poderia desenvolver, é uma coisa básica, apenas adicionar uma variação de PK. '-' Mas está ai com condições feitas por mim, e desenvolvidas por mim.
Estou a disposição para dar Support e Ajudar em modificações. Basta postar aqui ou Mandar PM. Até mesmo ajuda em outros sistemas.
ATT ~