Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o tema • Voltar para a ficha do tema
[Prof~] Spawn de Item direto na Bolsa
3 participantes
Página 1 de 1
[Prof~] Spawn de Item direto na Bolsa
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
_________________
"Mistress of shattered hopes and forever broken dreams"
Profane ~- Colaborador
- Mensagens : 818
Créditos : 130
Re: [Prof~] Spawn de Item direto na Bolsa
bom garoto assim que eu gosto +1 credts pra oc
_________________
vem sempre aqui?
Re: [Prof~] Spawn de Item direto na Bolsa
Uma pequena modificação para enviar para qualquer pessoa.
Atenção: Para fazer esta modificação é necessário ter adicionado o sistema acima!
No cliente
Crie uma TextBox com o nome : txtNome
0.1 Botão de Enviar o Comando - Spawn Item
Dê duplo click dentro dele e substitua por esse:
- Código:
Dim ItemNum As Long
Dim Amount As Long
Dim nome as string
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)
nome = Abs(txtNome.Text)
if nome = vbnullstring then
call addtext("nome do jogador não pode está em branco!!",red)
exit sub
end if
Call SendNeedSpawnItem(ItemNum, Amount, nome)
Else
Call AddText("Invalid command!", Red)
End If
0.2 alterando Pacote de Envio de Comando
substitua toda a sub SendNeedSpawnItem por esse codigo.
- Código:
Public Sub SendNeedSpawnItem(ByVal ItemNum As Long, ByVal Amount As Long, byval nome as string)
Dim Buffer As clsBuffer
Set Buffer = New clsBuffer
Buffer.WriteLong CNeedSpawnItem
Buffer.WriteLong ItemNum
Buffer.WriteLong Amount
Buffer.Writestring nome
SendData Buffer.ToArray()
Set Buffer = Nothing
End Sub
No ModHandleData no servidor , substitua toda a sub HandleNeedSpawnItem por:
- 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
dim nome as string
Set buffer = New clsBuffer
buffer.WriteBytes Data()
itemNum = buffer.ReadLong
Amount = buffer.ReadLong
nome = buffer.Readstring
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.
'Procurando index do player, se for igual ao nome ele dara a index
for players =1 to max_players
if isplaying(players) then
if nome = getplayername(players) then
GiveInvItem players, itemNum, Amount
PlayerMsg players, "Você recebeu do Console: " & Trim$(Item(itemNum).Name) & " x" & Amount & ".", BrightGreen
else
playermsg index ,"Jogador " & nome & " Não existe ou está offline!!",red
exit sub
end if
end if
next
End Sub
_________________
MasterOp- Iniciante
- Mensagens : 72
Créditos : 4
Ficha do personagem
Nível: 1
Experiência:
(0/50)
Vida:
(30/30)
Re: [Prof~] Spawn de Item direto na Bolsa
muito bom mais não seria melhor em vez de um txtbox por um combobox puxando o idex de quem esta online isso facilitaria bastante
_________________
vem sempre aqui?
Re: [Prof~] Spawn de Item direto na Bolsa
eu acho mais pratico digitar o nome, mas depende do gosto de cada um.
_________________
MasterOp- Iniciante
- Mensagens : 72
Créditos : 4
Ficha do personagem
Nível: 1
Experiência:
(0/50)
Vida:
(30/30)
Tópicos semelhantes
» Criando um Game Direto do seu Android
» [Prof ~] NPC Evolve
» [Prof ~] Sistema de Transformação
» [Prof ~] Add-On - Transformação por Foto
» [NP V3/PEDIDO] Como que SALVA as alterações de cada jogador direto no servidor?
» [Prof ~] NPC Evolve
» [Prof ~] Sistema de Transformação
» [Prof ~] Add-On - Transformação por Foto
» [NP V3/PEDIDO] Como que SALVA as alterações de cada jogador direto no servidor?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|