O que é o sistema de atendimento On e Off?
Bom , a pedido de um amigo eu desenvolvi este sistema, ele funciona da seguinte forma, com o comando "/atendimentoon" , você ativa o atendimento e aparece uma mensagem global falando que o suporte está ativo, assim o player digitando "/atendimento" ele irá para a sala de atendimento onde será atendido pela staff, e digitando "/atendimentooff" aparece uma mensagem global falando que o atendimento foi finalizado, caso o player digite "/atendimento" ele será informado que não tem suporte ativo no momento.
Então, vamos ao tutorial !
No modEnumerations procure por
Abaixo adicione
no modInput procure por
abaixo adicione
no final do modclientTCP adicione
Fim do client~side.
Server~Side
no modEnumerations procure por
abaixo adicione
no final da modPlayer adicione
no modHandleData procure por
Abaixo adicione
no final da ModHandleData adicione
Atenção: para mudar o mapa e o local que o player nasce edite essa parte Call PlayerWarp(index, 100, 5, 6, False) 'dê as cordenadas 100 = mapa, 5 = x , 6 = y
no modTypes
procure por
Antes do End type adicione
Fim!
Créditos: Lincoln
Bom , a pedido de um amigo eu desenvolvi este sistema, ele funciona da seguinte forma, com o comando "/atendimentoon" , você ativa o atendimento e aparece uma mensagem global falando que o suporte está ativo, assim o player digitando "/atendimento" ele irá para a sala de atendimento onde será atendido pela staff, e digitando "/atendimentooff" aparece uma mensagem global falando que o atendimento foi finalizado, caso o player digite "/atendimento" ele será informado que não tem suporte ativo no momento.
Então, vamos ao tutorial !
Client~Side
No modEnumerations procure por
Código:
CPartyLeave
Abaixo adicione
Código:
CAtendimento
CPAtendimento
no modInput procure por
Código:
Case "/debug"
If GetPlayerAccess(MyIndex) < ADMIN_CREATOR Then GoTo Continue
DEBUG_MODE = (Not DEBUG_MODE)
abaixo adicione
Código:
Case "/atendimentoon"
If GetPlayerAccess(MyIndex) > 0 Then
SendAtendimento (1)
Else
AddText "Você não tem permissão para ativar o atendimento", HelpColor
End If
Case "/atendimentooff"
If GetPlayerAccess(MyIndex) > 0 Then
SendAtendimento (0)
Else
AddText "Você não tem permissão para desativar o atendimento", HelpColor
End If
Case "/atendimento"
SendPAtendimento (1)
no final do modclientTCP adicione
Código:
Sub SendAtendimento(ByVal valor As Long)
Dim Buffer As clsBuffer
' If debug mode, handle error then exit out
If Options.Debug = 1 Then On Error GoTo errorhandler
Set Buffer = New clsBuffer
Buffer.WriteLong CAtendimento
Buffer.WriteByte valor
SendData Buffer.ToArray()
Set Buffer = Nothing
' Error handler
Exit Sub
errorhandler:
HandleError "SendAtendimento", "modClientTCP", Err.Number, Err.Description, Err.Source, Err.HelpContext
Err.Clear
Exit Sub
End Sub
Sub SendPAtendimento(ByVal valor As String)
Dim Buffer As clsBuffer
' If debug mode, handle error then exit out
If Options.Debug = 1 Then On Error GoTo errorhandler
Set Buffer = New clsBuffer
Buffer.WriteLong CPAtendimento
Buffer.WriteByte valor
SendData Buffer.ToArray()
Set Buffer = Nothing
' Error handler
Exit Sub
errorhandler:
HandleError "SendPAtendimento", "modClientTCP", Err.Number, Err.Description, Err.Source, Err.HelpContext
Err.Clear
Exit Sub
End Sub
Fim do client~side.
Server~Side
no modEnumerations procure por
Código:
CPartyLeave
abaixo adicione
Código:
CAtendimento
CPAtendimento
no final da modPlayer adicione
Código:
Function GetPlayerAtendimento(ByVal index As Long) As String
GetPlayerAtendimento = Trim$(Player(index).SAtendimento)
End Function
Sub SetPlayerAtendimento(ByVal index As Long, ByVal SAtendimento As String)
Dim i As Long
For i = 1 To MAX_PLAYERS
Player(i).SAtendimento = SAtendimento
Next
End Sub
no modHandleData procure por
Código:
HandleDataSub(CPartyLeave) = GetAddress(AddressOf HandlePartyLeave)
Abaixo adicione
Código:
HandleDataSub(CAtendimento) = GetAddress(AddressOf HandleAtendimento)
HandleDataSub(CPAtendimento) = GetAddress(AddressOf HandlePAtendimento)
no final da ModHandleData adicione
Código:
Sub HandleAtendimento(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
Dim Buffer As clsBuffer
Dim Valor As String
Set Buffer = New clsBuffer
Buffer.WriteBytes Data()
Valor = Buffer.ReadByte
If Valor = 1 Then
Call GlobalMsg("O atendimento foi ativado, apartir de agora os GM estarão atendendo, para obter suporte digite /atendimento.", Yellow)
Call SetPlayerAtendimento(index, 1)
End If
If Valor = 0 Then
Call GlobalMsg("O atendimento foi desativado, apartir de agora os GM não estarão atendendo.", Yellow)
Call SetPlayerAtendimento(index, 0)
End If
End Sub
Sub HandlePAtendimento(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
Dim Buffer As clsBuffer
Dim verifica As String
Set Buffer = New clsBuffer
Buffer.WriteBytes Data()
verifica = Buffer.ReadByte
If verifica = 1 Then
If GetPlayerAtendimento(index) = 1 Then
Call PlayerWarp(index, 100, 5, 6, False) 'dê as cordenadas 100 = mapa, 5 = x , 6 = y
Call SendPlayerData(index)
Else
PlayerMsg index, "Nenhum GM disponível no momento.", BrightCyan
End If
End If
End Sub
Atenção: para mudar o mapa e o local que o player nasce edite essa parte Call PlayerWarp(index, 100, 5, 6, False) 'dê as cordenadas 100 = mapa, 5 = x , 6 = y
no modTypes
procure por
Código:
Private Type PlayerRec
Antes do End type adicione
Código:
Atendimento As Byte
SAtendimento As Byte
Fim!
Créditos: Lincoln