Oin turu baum?
Sisteminha simples, pedido pelo @MasterOp
Eu ia passar para ele via Discord, ele então viria postar, mas para ser mais rápido venho postar logo /o/
Qual a Lógica por trás?
Teremos no painel de Admin ou em qualquer outra tela em sí de administração a qual você queira, uma Listagem com os Itens disponiveis, você poderá selecionar o item, setar quantidade e então mandar enviar direto esse item para A SUA bolsa.
Com uma simples modificação poderá enviar isso para quaisquer outros jogadores online.
Ficha Técnina
Dificuldade: Fácil
Compatibilidade: Qualquer EO/CS
Necessário:
- Visual Basic 6
Ao Sistema
Client Side ~
0.1 - Criando a Área
Crie uma área para que possamos fazer uso das coisas
Em ex:
- ComboBox (Name: lstItemSpawn)
- TextBox (Name: txtItemSpawnQuant)
Botões não importa o Nome.
0.2 Botão Reload List
Esse botão eu coloquei já que eu não sei como a SUA engine faz a leitura e abertura da forma de adm, ou se é que tem... Mas de forma geral, com ele ai se torna meio universal a função desejada.
Dê um duplo-click dentro dele e adicione isso aqui:
- Código:
Dim i As Long
'''''''''''''''''
'Item Spawn List'
lstItemSpawn.Clear
lstItemSpawn.AddItem "None " 'Popular Listagem
For i = 1 To MAX_ITEMS
lstItemSpawn.AddItem i & ": " & Trim$(Item(i).Name)
Next
Ao clicar nele, ele limpara a listagem de itens e repopulará ela para você.
Assim você terá a listagem atualizada sempre que clicar nele.
0.3 Botão de Enviar o Comando - Spawn Item
Dê duplo click dentro dele e adicione:
- Código:
Dim ItemNum As Long
Dim Amount As Long
If GetPlayerAccess(MyIndex) >= ACCESS_DEVELOPER Then 'Note que essa parte de Access pode ser diferente na sua engine.
ItemNum = lstItemSpawn.ListIndex
If ItemNum <= 0 Or ItemNum > Max_Items Then Exit Sub 'Note que essa parte de MAX_Items constant pode ser diferente na sua engine.
Amount = Abs(txtAmountSpawn.Text)
Call SendNeedSpawnItem(ItemNum, Amount)
Else
Call AddText("Invalid command!", Red)
End If
0.4 Criando Pacote de Envio de Comando
Vá ao modClientTCP, no final dele adicione:
- Código:
Public Sub SendNeedSpawnItem(ByVal ItemNum As Long, ByVal Amount As Long)
Dim Buffer As clsBuffer
Set Buffer = New clsBuffer
Buffer.WriteLong CNeedSpawnItem
Buffer.WriteLong ItemNum
Buffer.WriteLong Amount
SendData Buffer.ToArray()
Set Buffer = Nothing
End Sub
0.5 Adicionando Enumerations do Cliente
Vá ao modEnumerations, procure por:
- Código:
' Make sure CMSG_COUNT is below everything else
CMSG_COUNT
Acima dele adicione:
- Código:
CNeedSpawnItem
Cliente está pronto, vamos ao Servidor.
Server Side ~
0.6 Adicionando Enumerations do Servidor
Vá ao modEnumerations do Servidor, procure por
- Código:
' Make sure CMSG_COUNT is below everything else
CMSG_COUNT
Acima dele adicione:
- Código:
CNeedSpawnItem
0.7 Recebendo o Pacote e Creditando ao Player
Dentro do ModHandleData no servidor, no começo dele (em geral) primera sub, procure por:
- Código:
Public Sub InitMessages()
dentro dela e antes do End Sub adicione:
- Código:
HandleDataSub(CNeedSpawnItem) = GetAddress(AddressOf HandleNeedSpawnItem)
No Final do ModHandleData no servidor , adicione:
- Código:
Private Sub HandleNeedSpawnItem(ByVal Index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
Dim buffer As clsBuffer
Dim itemNum As Long
Dim Amount As Long
Set buffer = New clsBuffer
buffer.WriteBytes Data()
itemNum = buffer.ReadLong
Amount = buffer.ReadLong
Set buffer = Nothing
'Prevent out
If itemNum <= 0 Or itemNum > Max_Items Then Exit Sub 'Note que o Max_Items pode ser diferente na sua Engine.
GiveInvItem Index, itemNum, Amount
PlayerMsg Index, "Você recebeu do Console: " & Trim$(Item(itemNum).Name) & " x" & Amount & ".", BrightGreen
End Sub
Pronto, agora o item de Spawn será entregue direto na bolsa do (Index) que é o Usuário Administrador que solicitou o comando.
Com uma pequena edição é possível enviar isso para outros jogadores online, bastando alterar o Index que chegar, ou enviar o nome do usuário em conjunto e usar o FindPlayer(Nome) para conseguir o index desse jogador.
Com mais tempo eu posto add-on's para essa função.
Att