Ir para conteúdo

[Encerrado] Problema ao adicionar novo slot no servidor


IvanAppel

Posts Recomendados

Bom, vou ser o mais direto possível:

Estou tentando adicionar um novo slot no servidor, de versão 8.54 e TFS 0.4, mudei nas sources e já as compilei com sucesso, segue abaixo no spoiler as alterações feitas na mesma:

 

 

items.h

#define ITEMS 13000
#define SLOTP_WHEREEVER 0xFFFFFFFF
#define SLOTP_HEAD 1 << 0
#define SLOTP_NECKLACE 1 << 1
#define SLOTP_BACKPACK 1 << 2
#define SLOTP_ARMOR 1 << 3
#define SLOTP_RIGHT 1 << 4
#define SLOTP_LEFT 1 << 5
#define SLOTP_LEGS 1 << 6
#define SLOTP_FEET 1 << 7
#define SLOTP_RING 1 << 8
#define SLOTP_AMMO 1 << 9
#define SLOTP_DEPOT 1 << 10
#define SLOTP_TWO_HAND 1 << 11
#define SLOTP_EYE 1 << 15
#define SLOTP_HAND SLOTP_LEFT | SLOTP_RIGHT

 

 

items.cpp

else if(tmpStrValue == "eye")
{
      it.slotPosition |= SLOTP_EYE;
      it.wieldPosition = SLOT_EYE;
}

 

 

movement.cpp

else if(tmpStrValue == "eye")
      slot = SLOTP_EYE;

 

case SLOT_EYE:
       slotp = SLOTP_EYE;
       break;

 

player.cpp

if((item->getSlotPosition() & SLOTP_HEAD) || (item->getSlotPosition() & SLOTP_NECKLACE) ||
	(item->getSlotPosition() & SLOTP_BACKPACK) || (item->getSlotPosition() & SLOTP_ARMOR) ||
	(item->getSlotPosition() & SLOTP_LEGS) || (item->getSlotPosition() & SLOTP_FEET) ||
	(item->getSlotPosition() & SLOTP_RING) || (item->getSlotPosition() & SLOTP_EYE))
	ret = RET_CANNOTBEDRESSED;

 

case SLOT_EYE:
        if(item->getSlotPosition() & SLOTP_EYE)
                ret = RET_NOERROR;
        break;

 

creature.h

enum slots_t
{
    SLOT_PRE_FIRST = 0,
    SLOT_WHEREEVER = SLOT_PRE_FIRST,
    SLOT_FIRST = 1,
    SLOT_HEAD = SLOT_FIRST,
    SLOT_NECKLACE = 2,
    SLOT_BACKPACK = 3,
    SLOT_ARMOR = 4,
    SLOT_RIGHT = 5,
    SLOT_LEFT = 6,
    SLOT_LEGS = 7,
    SLOT_FEET = 8,
    SLOT_RING = 9,
    SLOT_AMMO = 10,
    SLOT_DEPOT = 11,
    SLOT_LAST = SLOT_DEPOT,
    SLOT_HAND = 12,
    SLOT_EYE = 15,
    SLOT_TWO_HAND = SLOT_HAND
};

 

enums.h

enum ConditionId_t
{
    CONDITIONID_DEFAULT = -1,
    CONDITIONID_COMBAT = 0,
    CONDITIONID_HEAD,
    CONDITIONID_NECKLACE,
    CONDITIONID_BACKPACK,
    CONDITIONID_ARMOR,
    CONDITIONID_RIGHT,
    CONDITIONID_LEFT,
    CONDITIONID_LEGS,
    CONDITIONID_FEET,
    CONDITIONID_RING,
    CONDITIONID_EYE,
    CONDITIONID_AMMO,
    CONDITIONID_OUTFIT
};

 

Após as sources, o único local em que encontrei nos scripts em lua, foi no 'data/lib/000-constant.lua' e deixei assim:

CONST_SLOT_FIRST = 1
CONST_SLOT_HEAD = CONST_SLOT_FIRST
CONST_SLOT_NECKLACE = 2
CONST_SLOT_BACKPACK = 3
CONST_SLOT_ARMOR = 4
CONST_SLOT_RIGHT = 5
CONST_SLOT_LEFT = 6
CONST_SLOT_LEGS = 7
CONST_SLOT_FEET = 8
CONST_SLOT_RING = 9
CONST_SLOT_AMMO = 10
CONST_SLOT_EYE = 15
CONST_SLOT_LAST = CONST_SLOT_AMMO

Deixei um item no 'data/items/items.xml' com o slotType="eye" que foi criado, e fiz as seguintes alterações no OTClient:


modules/game_inventory/inventory.lua

InventorySlotStyles = {
  [InventorySlotHead] = "HeadSlot",
  [InventorySlotNeck] = "NeckSlot",
  [InventorySlotBack] = "BackSlot",
  [InventorySlotBody] = "BodySlot",
  [InventorySlotRight] = "RightSlot",
  [InventorySlotLeft] = "LeftSlot",
  [InventorySlotLeg] = "LegSlot",
  [InventorySlotFeet] = "FeetSlot",
  [InventorySlotFinger] = "FingerSlot",
  [InventorySlotAmmo] = "AmmoSlot",
  [InventorySlotEye] = "EyeSlot"
}

 

modules/game_inventory/inventory.otui

EyeSlot < InventoryItem
  id: slot15
  image-source: /images/game/slots/eye
  &position: {x=65535, y=14, z=0}

e

MiniWindow
  id: inventoryWindow
  !text: tr('Inventory')
  icon: /images/topbuttons/inventory
  height: 175
  @onClose: modules.game_inventory.onMiniWindowClose()
  &save: true
  MiniWindowContents
    HeadSlot
      anchors.top: parent.top
      anchors.horizontalCenter: parent.horizontalCenter
      margin-top: 3
    BodySlot
      anchors.top: prev.bottom
      anchors.horizontalCenter: prev.horizontalCenter
      margin-top: 3
    LegSlot
      anchors.top: prev.bottom
      anchors.horizontalCenter: prev.horizontalCenter
      margin-top: 3
    FeetSlot
      anchors.top: prev.bottom
      anchors.horizontalCenter: prev.horizontalCenter
      margin-top: 3
    NeckSlot
      anchors.top: slot1.top
      anchors.right: slot1.left
      margin-top: 10
      margin-right: 5
    LeftSlot
      anchors.top: prev.bottom
      anchors.horizontalCenter: prev.horizontalCenter
      margin-top: 3
    FingerSlot
      anchors.top: prev.bottom
      anchors.horizontalCenter: prev.horizontalCenter
      margin-top: 3
    BackSlot
      anchors.top: slot1.top
      anchors.left: slot1.right
      margin-top: 10
      margin-left: 5
    RightSlot
      anchors.top: prev.bottom
      anchors.horizontalCenter: prev.horizontalCenter
      margin-top: 3
    AmmoSlot
      anchors.top: prev.bottom
      anchors.horizontalCenter: prev.horizontalCenter
      margin-top: 3
    EyeSlot
      anchors.top: prev.bottom
      anchors.horizontalCenter: prev.horizontalCenter
      margin-top: 3
    PurseButton
      margin-top: 3
      anchors.top: prev.bottom
      anchors.horizontalCenter: prev.horizontalCenter

 

modules/gamelib/player.lua

InventorySlotOther = 0
InventorySlotHead = 1
InventorySlotNeck = 2
InventorySlotBack = 3
InventorySlotBody = 4
InventorySlotRight = 5
InventorySlotLeft = 6
InventorySlotLeg = 7
InventorySlotFeet = 8
InventorySlotFinger = 9
InventorySlotAmmo = 10
InventorySlotPurse = 11
InventorySlotEye = 15

InventorySlotFirst = 1
InventorySlotLast = 10

 

 

Com todas estas alterações, o que foi feito:

  • O slot foi adicionado com sucesso no OTClient, aparecendo sem erros, com imagem e posicionado;
  • O console não encontrou erro ao debugar o items.xml (testei um tipo aleatório, e dá erro o erro padrão das sources, então o tipo "eye" está correto nas sources);
  • Dei /i em um item do tipo "eye" pra ver se o mesmo iria para o slot, mesmo caso não existisse graficamente, ele deveria ficar salvo nos dados do personagem no banco de dados, e isto não ocorreu, logo o problema está entre as sources e o client;

 

Enfim, nas sources o tipo "eye" foi criado, mas ainda não é reconhecido verdadeiramente, espero que alguém possa me ajudar, segue em anexo as sources e todos os arquivos que citei ter editado:

help.rar

Link para o comentário
Compartilhar em outros sites

  • 3 months later...
A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta.

+ Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda.
* Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...