Uma simples modificação que faz o jogador ficar com a sprite desejada enquanto
o equipamento estiver equipado.
Pedido feito por Akio
Client e Server - Side
no modTypes, na Private Type playerrec antes do end type adicione:
- Código:
SpriteOld as long
No modTypes, na Private Type ItemRec antes do end type adicione:
- Código:
Sprite as Long
Client - Side (apenas)
Na frmEditor_item cria 1frame, 1 hscroll e 1 label. Propriedades:
Frame:
Name: fraSprite
Caption: Sprite
Visible: False
HScroll:
Name: scrlSprite
Min: 0
Max: 500 (Ou o numero de sprites que você tem)
Label:
Name: lblSprite
Caption: Sprite: 0
Agora de dois cliques na scrlSprite e coloque:
- Código:
' If debug mode, handle error then exit out
If Options.Debug = 1 Then On Error GoTo errorhandler
lblSprite.Caption = "Sprite: " & scrlSprite.Value
Item(EditorIndex).Sprite = scrlSprite.Value
' Error handler
Exit Sub
errorhandler:
HandleError "scrlSprite_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext
Err.Clear
Ainda na frmEditor_item de 2 cliques na cmbType, procure por:
- Código:
If (cmbType.ListIndex >= ITEM_TYPE_WEAPON) And (cmbType.ListIndex <= ITEM_TYPE_SHIELD) Then
Abaixo de fraEquipment.Visible = True coloque:
- Código:
fraSprite.Visible = True
abaixo de fraEquipment.Visible = False coloque:
- Código:
fraSprite.Visible = False
- Código:
With Item(EditorIndex)
frmEditor_Item.txtName.text = Trim$(.Name)
If .Pic > frmEditor_Item.scrlPic.Max Then .Pic = 0
frmEditor_Item.scrlPic.Value = .Pic
frmEditor_Item.cmbType.ListIndex = .Type
frmEditor_Item.scrlAnim.Value = .Animation
frmEditor_Item.txtDesc.text = Trim$(.Desc)
Em baixo adicione:
- Código:
frmEditor_Item.scrlSprite.Value = .Sprite
Server - Side (Apenas)
No modPlayer, na sub Sub CheckEquippedItems procure:
- Código:
Select Case i
Case Equipment.Weapon
If Item(itemNum).Type <> ITEM_TYPE_WEAPON Then SetPlayerEquipment Index, 0, i
Case Equipment.Armor
If Item(itemNum).Type <> ITEM_TYPE_ARMOR Then SetPlayerEquipment Index, 0, i
Case Equipment.Helmet
If Item(itemNum).Type <> ITEM_TYPE_HELMET Then SetPlayerEquipment Index, 0, i
Case Equipment.Shield
If Item(itemNum).Type <> ITEM_TYPE_SHIELD Then SetPlayerEquipment Index, 0, i
End Select
E troque por:
- Código:
Select Case i
Case Equipment.Weapon
If Item(itemNum).Type <> ITEM_TYPE_WEAPON Then SetPlayerEquipment Index, 0, i
Player(Index).Sprite = Item(itemNum).Sprite
SendPlayerData Index
Case Equipment.Armor
If Item(itemNum).Type <> ITEM_TYPE_ARMOR Then SetPlayerEquipment Index, 0, i
Player(Index).Sprite = Item(itemNum).Sprite
SendPlayerData Index
Case Equipment.Helmet
If Item(itemNum).Type <> ITEM_TYPE_HELMET Then SetPlayerEquipment Index, 0, i
Player(Index).Sprite = Item(itemNum).Sprite
SendPlayerData Index
Case Equipment.Shield
If Item(itemNum).Type <> ITEM_TYPE_SHIELD Then SetPlayerEquipment Index, 0, i
Player(Index).Sprite = Item(itemNum).Sprite
SendPlayerData Index
End Select
Ou apenas adicione Player(Index).Sprite = Item(itemNum).Sprite caso preferir.
Em modPlayer na sub UseItem procure por:
- Código:
SetPlayerEquipment index, itemNum, Weapon
E cima adicione:
- Código:
If Item(itemNum).Sprite > 0 Then
if GetPlayerEquipment(index, Weapon) = 0 then
Player(Index).SpriteOld = Player(Index).Sprite
END IF
player(index).sprite = item(itemnum).sprite
SendPlayerData Index
End If
Ainda na sub UseItem procure por:
- Código:
SetPlayerEquipment index, itemNum, Armor
E cima adicione:
- Código:
If Item(itemNum).Sprite > 0 Then
if GetPlayerEquipment(index, Armor) = 0 then
Player(Index).SpriteOld = Player(Index).Sprite
END IF
player(index).sprite = item(itemnum).sprite
SendPlayerData Index
End If
Ainda na sub UseItem procure por:
- Código:
SetPlayerEquipment index, itemNum, Helmet
E cima adicione:
- Código:
If Item(itemNum).Sprite > 0 Then
if GetPlayerEquipment(index, Helmet) = 0 then
Player(Index).SpriteOld = Player(Index).Sprite
END IF
player(index).sprite = item(itemnum).sprite
SendPlayerData Index
End If
Ainda na sub UseItem procure por:
- Código:
SetPlayerEquipment index, itemNum, Shield
E cima adicione:
- Código:
If Item(itemNum).Sprite > 0 Then
if GetPlayerEquipment(index, Shield) = 0 then
Player(Index).SpriteOld = Player(Index).Sprite
END IF
player(index).sprite = item(itemnum).sprite
SendPlayerData Index
End If
no modGameLogic, na Sub PlayerUnequipItem procure por:
- Código:
If TempPlayer(index).inParty > 0 Then SendPartyVitals TempPlayer(index).inParty, index
em baixo adicione:
- Código:
' Volta ele para sua sprite de antes de equipar o equipamento
If Item(EqSlot).Sprite > 0 Then
If Player(index).SpriteOld > 0 Then
Player(index).Sprite = Player(index).SpriteOld
SendPlayerData index
End If
End If
Não se esqueça de deletar todas as contas e itens antes de iniciar o servidor
Não equipe ao mesmo tempo varios equipamentos que trocam a sprite! Isso fara o
sistema bugar e acabar setando a sprite padrao errada. De preferencia use somente os equipamentos
de um mesmo tipo (SHIELD por exemplo) para fazer essa troca de sprite.
Última edição por GalaxyHells em Sex Out 05, 2018 8:26 pm, editado 12 vez(es)