Ir para conteúdo
  • 0

Descobrir se um item é uma armor, legs e etc...


Mazynho

Pergunta

Galera queria saber como faço para saber que um item que o player está usando é um helmet, ou uma armor, legs, shield, weapon, e etc.

 

Ex: Em item.xml os itens que são equipáveis possuem o atributo <attribute key="slotType" value="feet" /> que diz de qual slot ele é, quero saber como faço para descobrir se um item x possui atributo do tipo slot, lembrando que quero isso terá que ser em .LUA

    <item id="2195" name="boots of haste">
        <attribute key="weight" value="750" />
        <attribute key="slotType" value="feet" />
        <attribute key="speed" value="40" />
        <attribute key="showattributes" value="1" />
    </item>
Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0


<attribute key="slotType" value="feet" /> -- boots

<attribute key="slotType" value="body"/> -- armor<attribute key="slotType" value="legs" /> -- legs

<attribute key="slotType" value="head" /> -- helmet

<attribute key="slotType" value="ring" /> -- ring

 

<attribute key="weaponType" value="shield" /> -- shield

<attribute key="weaponType" value="Wand" /> -- wnad

<attribute key="weaponType" value="sword" /> -- sword

<attribute key="weaponType" value="axe" /> -- axe

<attribute key="weaponType" value="club" /> -- club

Link para o comentário
Compartilhar em outros sites

  • 0
<attribute key="slotType" value="feet" />  -- boots
<attribute key="slotType" value="body"/> -- armor<attribute key="slotType" value="legs" /> -- legs
<attribute key="slotType" value="head" /> -- helmet
<attribute key="slotType" value="ring" /> -- ring

<attribute key="weaponType" value="shield" /> -- shield
<attribute key="weaponType" value="Wand" /> -- wnad
<attribute key="weaponType" value="sword" /> -- sword
<attribute key="weaponType" value="axe" /> -- axe
<attribute key="weaponType" value="club" /> -- club

Você não entendeu o que disse, falei que queria saber isso em .Lua, quero uma função, sei la, para descobrir qual o atributo de slot do item.

Editado por Mazynho
Link para o comentário
Compartilhar em outros sites

  • 0

Acho que tá falando disso :

 

getPlayerSlotItem(cid, slot)

Checa que item tem no (slot) do player,

getPlayerSlotItem(cid, 1) -- Cabeça
getPlayerSlotItem(cid, 2) -- Amuleto
getPlayerSlotItem(cid, 3) -- Backpack
getPlayerSlotItem(cid, 4) -- Armadura
getPlayerSlotItem(cid, 5) -- Mão direita
getPlayerSlotItem(cid, 6) -- Mão esquerda 
getPlayerSlotItem(cid, 7) -- Pernas
getPlayerSlotItem(cid, 8) -- Botas
getPlayerSlotItem(cid, 9) -- Anel 
getPlayerSlotItem(cid, 10) -- Slot onde fica a torcha
Editado por DuuhCarvalho
Link para o comentário
Compartilhar em outros sites

  • 0

 

Acho que tá falando disso :

 

getPlayerSlotItem(cid, slot)

Checa que item tem no (slot) do player,

getPlayerSlotItem(cid, 1) -- Cabeça
getPlayerSlotItem(cid, 2) -- Amuleto
getPlayerSlotItem(cid, 3) -- Backpack
getPlayerSlotItem(cid, 4) -- Armadura
getPlayerSlotItem(cid, 5) -- Mão direita
getPlayerSlotItem(cid, 6) -- Mão esquerda 
getPlayerSlotItem(cid, 7) -- Pernas
getPlayerSlotItem(cid, 8) -- Botas
getPlayerSlotItem(cid, 9) -- Anel 
getPlayerSlotItem(cid, 10) -- Slot onde fica a torcha

kkkkk, ainda não é isso, tipo assim o player está com uma MPA no slot de munição, ai quero saber se o item que está no slot de munição é uma arma, um shield ou etc.., por exemplo.

Link para o comentário
Compartilhar em outros sites

  • 0

Tem sim, getItemInfo(itemid)

int32_t LuaScriptInterface::luaGetItemInfo(lua_State* L)
{
	//getItemInfo(itemid)
	const ItemType* item;
	if(!(item = Item::items.getElement(popNumber(L))))
	{
		lua_pushboolean(L, false);
		return 1;
	}

	lua_newtable(L);
	setFieldBool(L, "stopTime", item->stopTime);
	setFieldBool(L, "showCount", item->showCount);
	setFieldBool(L, "clientCharges", item->clientCharges);
	setFieldBool(L, "stackable", item->stackable);
	setFieldBool(L, "showDuration", item->showDuration);
	setFieldBool(L, "showCharges", item->showCharges);
	setFieldBool(L, "showAttributes", item->showCharges);
	setFieldBool(L, "distRead", item->allowDistRead);
	setFieldBool(L, "readable", item->canReadText);
	setFieldBool(L, "writable", item->canWriteText);
	setFieldBool(L, "forceSerialize", item->forceSerialize);
	setFieldBool(L, "vertical", item->isVertical);
	setFieldBool(L, "horizontal", item->isHorizontal);
	setFieldBool(L, "hangable", item->isHangable);
	setFieldBool(L, "usable", item->useable);
	setFieldBool(L, "movable", item->moveable);
	setFieldBool(L, "pickupable", item->pickupable);
	setFieldBool(L, "rotable", item->rotable);
	setFieldBool(L, "replacable", item->replaceable);
	setFieldBool(L, "hasHeight", item->hasHeight);
	setFieldBool(L, "blockSolid", item->blockSolid);
	setFieldBool(L, "blockPickupable", item->blockPickupable);
	setFieldBool(L, "blockProjectile", item->blockProjectile);
	setFieldBool(L, "blockPathing", item->blockPathFind);
	setFieldBool(L, "allowPickupable", item->allowPickupable);
	setFieldBool(L, "alwaysOnTop", item->alwaysOnTop);

	createTable(L, "floorChange");
	for(int32_t i = CHANGE_FIRST; i <= CHANGE_LAST; ++i)
	{
		lua_pushnumber(L, i);
		lua_pushboolean(L, item->floorChange[i - 1]);
		pushTable(L);
	}

	pushTable(L);
	setField(L, "magicEffect", (int32_t)item->magicEffect);
	setField(L, "fluidSource", (int32_t)item->fluidSource);
	setField(L, "weaponType", (int32_t)item->weaponType);
	setField(L, "bedPartnerDirection", (int32_t)item->bedPartnerDir);
	setField(L, "ammoAction", (int32_t)item->ammoAction);
	setField(L, "combatType", (int32_t)item->combatType);
	setField(L, "corpseType", (int32_t)item->corpseType);
	setField(L, "shootType", (int32_t)item->shootType);
	setField(L, "ammoType", (int32_t)item->ammoType);

	createTable(L, "transformUseTo");
	setField(L, "female", item->transformUseTo[PLAYERSEX_FEMALE]);
	setField(L, "male", item->transformUseTo[PLAYERSEX_MALE]);

	pushTable(L);
	setField(L, "transformToFree", item->transformToFree);
	setField(L, "transformEquipTo", item->transformEquipTo);
	setField(L, "transformDeEquipTo", item->transformDeEquipTo);
	setField(L, "clientId", item->clientId);
	setField(L, "maxItems", item->maxItems);
	setField(L, "slotPosition", item->slotPosition);
	setField(L, "wieldPosition", item->wieldPosition);
	setField(L, "speed", item->speed);
	setField(L, "maxTextLength", item->maxTextLen);
	setField(L, "writeOnceItemId", item->writeOnceItemId);
	setField(L, "attack", item->attack);
	setField(L, "extraAttack", item->extraAttack);
	setField(L, "defense", item->defense);
	setField(L, "extraDefense", item->extraDefense);
	setField(L, "armor", item->armor);
	setField(L, "breakChance", item->breakChance);
	setField(L, "hitChance", item->hitChance);
	setField(L, "maxHitChance", item->maxHitChance);
	setField(L, "runeLevel", item->runeLevel);
	setField(L, "runeMagicLevel", item->runeMagLevel);
	setField(L, "lightLevel", item->lightLevel);
	setField(L, "lightColor", item->lightColor);
	setField(L, "decayTo", item->decayTo);
	setField(L, "rotateTo", item->rotateTo);
	setField(L, "alwaysOnTopOrder", item->alwaysOnTopOrder);
	setField(L, "shootRange", item->shootRange);
	setField(L, "charges", item->charges);
	setField(L, "decayTime", item->decayTime);
	setField(L, "attackSpeed", item->attackSpeed);
	setField(L, "wieldInfo", item->wieldInfo);
	setField(L, "minRequiredLevel", item->minReqLevel);
	setField(L, "minRequiredMagicLevel", item->minReqMagicLevel);
	setField(L, "worth", item->worth);
	setField(L, "levelDoor", item->levelDoor);
	setField(L, "name", item->name.c_str());
	setField(L, "plural", item->pluralName.c_str());
	setField(L, "article", item->article.c_str());
	setField(L, "description", item->description.c_str());
	setField(L, "runeSpellName", item->runeSpellName.c_str());
	setField(L, "vocationString", item->vocationString.c_str());

	createTable(L, "abilities");
	setFieldBool(L, "manaShield", item->abilities.manaShield);
	setFieldBool(L, "invisible", item->abilities.invisible);
	setFieldBool(L, "regeneration", item->abilities.regeneration);
	setFieldBool(L, "preventLoss", item->abilities.preventLoss);
	setFieldBool(L, "preventDrop", item->abilities.preventDrop);
	setField(L, "elementType", (int32_t)item->abilities.elementType);
	setField(L, "elementDamage", item->abilities.elementDamage);
	setField(L, "speed", item->abilities.speed);
	setField(L, "healthGain", item->abilities.healthGain);
	setField(L, "healthTicks", item->abilities.healthTicks);
	setField(L, "manaGain", item->abilities.manaGain);
	setField(L, "manaTicks", item->abilities.manaTicks);
	setField(L, "conditionSuppressions", item->abilities.conditionSuppressions);

	//TODO: absorb, increment, reflect, skills, skillsPercent, stats, statsPercent

	pushTable(L);
	setField(L, "group", (int32_t)item->group);
	setField(L, "type", (int32_t)item->type);
	setFieldFloat(L, "weight", item->weight);
	return 1;
}

Para saber o tipo da arma, use:

 

getItemInfo(itemid).weaponType

 

O valor dessa key da tabela é numerico, e está declarado na sua lib, mas colocarei aqui:

 

WEAPON_NONE = 0
WEAPON_SWORD = 1
WEAPON_CLUB = 2
WEAPON_AXE = 3
WEAPON_SHIELD = 4
WEAPON_DIST = 5
WEAPON_WAND = 6
WEAPON_AMMO = 7
WEAPON_FIST = 8
Link para o comentário
Compartilhar em outros sites

  • 0

 

Tem sim, getItemInfo(itemid)

int32_t LuaScriptInterface::luaGetItemInfo(lua_State* L)
{
	//getItemInfo(itemid)
	const ItemType* item;
	if(!(item = Item::items.getElement(popNumber(L))))
	{
		lua_pushboolean(L, false);
		return 1;
	}

	lua_newtable(L);
	setFieldBool(L, "stopTime", item->stopTime);
	setFieldBool(L, "showCount", item->showCount);
	setFieldBool(L, "clientCharges", item->clientCharges);
	setFieldBool(L, "stackable", item->stackable);
	setFieldBool(L, "showDuration", item->showDuration);
	setFieldBool(L, "showCharges", item->showCharges);
	setFieldBool(L, "showAttributes", item->showCharges);
	setFieldBool(L, "distRead", item->allowDistRead);
	setFieldBool(L, "readable", item->canReadText);
	setFieldBool(L, "writable", item->canWriteText);
	setFieldBool(L, "forceSerialize", item->forceSerialize);
	setFieldBool(L, "vertical", item->isVertical);
	setFieldBool(L, "horizontal", item->isHorizontal);
	setFieldBool(L, "hangable", item->isHangable);
	setFieldBool(L, "usable", item->useable);
	setFieldBool(L, "movable", item->moveable);
	setFieldBool(L, "pickupable", item->pickupable);
	setFieldBool(L, "rotable", item->rotable);
	setFieldBool(L, "replacable", item->replaceable);
	setFieldBool(L, "hasHeight", item->hasHeight);
	setFieldBool(L, "blockSolid", item->blockSolid);
	setFieldBool(L, "blockPickupable", item->blockPickupable);
	setFieldBool(L, "blockProjectile", item->blockProjectile);
	setFieldBool(L, "blockPathing", item->blockPathFind);
	setFieldBool(L, "allowPickupable", item->allowPickupable);
	setFieldBool(L, "alwaysOnTop", item->alwaysOnTop);

	createTable(L, "floorChange");
	for(int32_t i = CHANGE_FIRST; i <= CHANGE_LAST; ++i)
	{
		lua_pushnumber(L, i);
		lua_pushboolean(L, item->floorChange[i - 1]);
		pushTable(L);
	}

	pushTable(L);
	setField(L, "magicEffect", (int32_t)item->magicEffect);
	setField(L, "fluidSource", (int32_t)item->fluidSource);
	setField(L, "weaponType", (int32_t)item->weaponType);
	setField(L, "bedPartnerDirection", (int32_t)item->bedPartnerDir);
	setField(L, "ammoAction", (int32_t)item->ammoAction);
	setField(L, "combatType", (int32_t)item->combatType);
	setField(L, "corpseType", (int32_t)item->corpseType);
	setField(L, "shootType", (int32_t)item->shootType);
	setField(L, "ammoType", (int32_t)item->ammoType);

	createTable(L, "transformUseTo");
	setField(L, "female", item->transformUseTo[PLAYERSEX_FEMALE]);
	setField(L, "male", item->transformUseTo[PLAYERSEX_MALE]);

	pushTable(L);
	setField(L, "transformToFree", item->transformToFree);
	setField(L, "transformEquipTo", item->transformEquipTo);
	setField(L, "transformDeEquipTo", item->transformDeEquipTo);
	setField(L, "clientId", item->clientId);
	setField(L, "maxItems", item->maxItems);
	setField(L, "slotPosition", item->slotPosition);
	setField(L, "wieldPosition", item->wieldPosition);
	setField(L, "speed", item->speed);
	setField(L, "maxTextLength", item->maxTextLen);
	setField(L, "writeOnceItemId", item->writeOnceItemId);
	setField(L, "attack", item->attack);
	setField(L, "extraAttack", item->extraAttack);
	setField(L, "defense", item->defense);
	setField(L, "extraDefense", item->extraDefense);
	setField(L, "armor", item->armor);
	setField(L, "breakChance", item->breakChance);
	setField(L, "hitChance", item->hitChance);
	setField(L, "maxHitChance", item->maxHitChance);
	setField(L, "runeLevel", item->runeLevel);
	setField(L, "runeMagicLevel", item->runeMagLevel);
	setField(L, "lightLevel", item->lightLevel);
	setField(L, "lightColor", item->lightColor);
	setField(L, "decayTo", item->decayTo);
	setField(L, "rotateTo", item->rotateTo);
	setField(L, "alwaysOnTopOrder", item->alwaysOnTopOrder);
	setField(L, "shootRange", item->shootRange);
	setField(L, "charges", item->charges);
	setField(L, "decayTime", item->decayTime);
	setField(L, "attackSpeed", item->attackSpeed);
	setField(L, "wieldInfo", item->wieldInfo);
	setField(L, "minRequiredLevel", item->minReqLevel);
	setField(L, "minRequiredMagicLevel", item->minReqMagicLevel);
	setField(L, "worth", item->worth);
	setField(L, "levelDoor", item->levelDoor);
	setField(L, "name", item->name.c_str());
	setField(L, "plural", item->pluralName.c_str());
	setField(L, "article", item->article.c_str());
	setField(L, "description", item->description.c_str());
	setField(L, "runeSpellName", item->runeSpellName.c_str());
	setField(L, "vocationString", item->vocationString.c_str());

	createTable(L, "abilities");
	setFieldBool(L, "manaShield", item->abilities.manaShield);
	setFieldBool(L, "invisible", item->abilities.invisible);
	setFieldBool(L, "regeneration", item->abilities.regeneration);
	setFieldBool(L, "preventLoss", item->abilities.preventLoss);
	setFieldBool(L, "preventDrop", item->abilities.preventDrop);
	setField(L, "elementType", (int32_t)item->abilities.elementType);
	setField(L, "elementDamage", item->abilities.elementDamage);
	setField(L, "speed", item->abilities.speed);
	setField(L, "healthGain", item->abilities.healthGain);
	setField(L, "healthTicks", item->abilities.healthTicks);
	setField(L, "manaGain", item->abilities.manaGain);
	setField(L, "manaTicks", item->abilities.manaTicks);
	setField(L, "conditionSuppressions", item->abilities.conditionSuppressions);

	//TODO: absorb, increment, reflect, skills, skillsPercent, stats, statsPercent

	pushTable(L);
	setField(L, "group", (int32_t)item->group);
	setField(L, "type", (int32_t)item->type);
	setFieldFloat(L, "weight", item->weight);
	return 1;
}

Para saber o tipo da arma, use:

getItemInfo(itemid).weaponType

O valor dessa key da tabela é numerico, e está declarado na sua lib, mas colocarei aqui:

WEAPON_NONE = 0
WEAPON_SWORD = 1
WEAPON_CLUB = 2
WEAPON_AXE = 3
WEAPON_SHIELD = 4
WEAPON_DIST = 5
WEAPON_WAND = 6
WEAPON_AMMO = 7
WEAPON_FIST = 8

Não entendi isso que você postou, poderia fazer uma demostração, por exemplo com o item "dragon scale mail" ItemID: [2492].

O que quero é uma função que receba como parâmetro um ID de item, ai nessa função ela verifica se esse item é uma armadura, legs e tal

Link para o comentário
Compartilhar em outros sites

  • 0

Devo ter falado grego ... >.<'

 

É simplesmente algo assim:

if getItemInfo(2492).weaponType == WEAPON_AMMO then -- se é munição
[...]
Editado por dalvorsn
Link para o comentário
Compartilhar em outros sites

  • 0

Dentre esses que você citou:

 

 

WEAPON_NONE = 0
WEAPON_SWORD = 1
WEAPON_CLUB = 2
WEAPON_AXE = 3
WEAPON_SHIELD = 4
WEAPON_DIST = 5
WEAPON_WAND = 6
WEAPON_AMMO = 7
WEAPON_FIST = 8

 

Qual vou usar para saber se o item é uma calça ou uma bota ou um capacete ou um anel ou um colar?

 

Tem alguma função assim: getItemInfo(2492).SlotType para saber de qual slot esse item pertence? Em items.xml os itens que são equipáveis tem SlotType ou WeaponType, quando são armas.

Link para o comentário
Compartilhar em outros sites

  • 0

Nesse caso usa-se:

 

getItemInfo(itemid).wieldPosition

 

as contantes são:

 

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_LAST = CONST_SLOT_AMMO
Link para o comentário
Compartilhar em outros sites

  • 0

 

Nesse caso usa-se:

getItemInfo(itemid).wieldPosition

as contantes são:

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_LAST = CONST_SLOT_AMMO

 

Vou testar aqui, mesmo que não funcione valeu por ajudar! Muito obrigado!

 

Dalvorsn eu fiz assim e não deu certo, não primeira condição ele entra, mas na segunda não.

Item = getPlayerSlotItem(cid, 5)
if Item.itemid > 0 then
	doPlayerSendTextMessage(cid, 22, ("O ITEM e: "..Item.itemid))
	if getItemInfo(Item.itemid).wieldPosition == CONST_SLOT_RIGHT then
		doPlayerSendTextMessage(cid, 22, ("O ITEM esta no slot da mao direita"))
	end
end

Como fiz num seria uma verificação se o item está no slot da mão direita?

 

Se o item estiver no slot da armadura está beleza, porque já sei que o item que está ali é uma armadura, mas o player pode colocar qualquer coisa nos slots das mãos e no das flechas, então como poderei fazer para saber se o item que está nesses 3 slots citados é uma armadura, uma arma, escudo e etc...

Editado por Mazynho
Link para o comentário
Compartilhar em outros sites

  • 0

primeiro vc checkslot

com

getPlayerSlotItem(cid, 4)

dps da .itemid para check item x

if getPlayerSlotItem(cid, 4).itemid == 2160 then
---
---
---
end

ou check os 3 de uma vez

if getPlayerSlotItem(cid, 4).itemid == 2160 and getPlayerSlotItem(cid, 6).itemid == 2160 and getPlayerSlotItem(cid, 9).itemid == 2160 then
---
---
---
end
Editado por notle2012
Link para o comentário
Compartilhar em outros sites

  • 0

 

 

Nesse caso usa-se:

getItemInfo(itemid).wieldPosition

as contantes são:

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_LAST = CONST_SLOT_AMMO

 

Vou testar aqui, mesmo que não funcione valeu por ajudar! Muito obrigado!

 

Dalvorsn eu fiz assim e não deu certo, não primeira condição ele entra, mas na segunda não.

Item = getPlayerSlotItem(cid, 5)
if Item.itemid > 0 then
	doPlayerSendTextMessage(cid, 22, ("O ITEM e: "..Item.itemid))
	if getItemInfo(Item.itemid).wieldPosition == CONST_SLOT_RIGHT then
		doPlayerSendTextMessage(cid, 22, ("O ITEM esta no slot da mao direita"))
	end
end

Como fiz num seria uma verificação se o item está no slot da mão direita?

 

Se o item estiver no slot da armadura está beleza, porque já sei que o item que está ali é uma armadura, mas o player pode colocar qualquer coisa nos slots das mãos e no das flechas, então como poderei fazer para saber se o item que está nesses 3 slots citados é uma armadura, uma arma, escudo e etc...

 

checa o wieldposition e o weapontype, vai ser um dos dois, não entra no segundo if porque voce está com um item que nao tem o slotType de mao direita

faz a assim, checa primeiro se é uma arma, se nao for, checa se é de algum slot

 

cara, me fala o que voce quer fazer, no script mesmo, dai eu te digo como vai usar

Link para o comentário
Compartilhar em outros sites

  • 0

 

 

 

Nesse caso usa-se:

getItemInfo(itemid).wieldPosition

as contantes são:

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_LAST = CONST_SLOT_AMMO

 

Vou testar aqui, mesmo que não funcione valeu por ajudar! Muito obrigado!

 

Dalvorsn eu fiz assim e não deu certo, não primeira condição ele entra, mas na segunda não.

Item = getPlayerSlotItem(cid, 5)
if Item.itemid > 0 then
	doPlayerSendTextMessage(cid, 22, ("O ITEM e: "..Item.itemid))
	if getItemInfo(Item.itemid).wieldPosition == CONST_SLOT_RIGHT then
		doPlayerSendTextMessage(cid, 22, ("O ITEM esta no slot da mao direita"))
	end
end

Como fiz num seria uma verificação se o item está no slot da mão direita?

 

Se o item estiver no slot da armadura está beleza, porque já sei que o item que está ali é uma armadura, mas o player pode colocar qualquer coisa nos slots das mãos e no das flechas, então como poderei fazer para saber se o item que está nesses 3 slots citados é uma armadura, uma arma, escudo e etc...

 

checa o wieldposition e o weapontype, vai ser um dos dois, não entra no segundo if porque voce está com um item que nao tem o slotType de mao direita

faz a assim, checa primeiro se é uma arma, se nao for, checa se é de algum slot

 

cara, me fala o que voce quer fazer, no script mesmo, dai eu te digo como vai usar

 

 

 

É o seguinte to tentando fazer um script tipo os de first itens, porém é assim no login do player, o script vai verificar se o player já tem (nos slots e na bp) um item do mesmo tipo (helmet, shield, potion e etc), que tem em um array e, caso não tenha ele adiciona.

 

Eu ainda não tenho nada pronto, bem dizer, pois não sei como compara tipo de item. Fiz esse esboço do que seria aqui para você ter uma melhor noção do que seria.

 

Player entrando no jogo...

function onLogin(cid)

	TodosItens = getTodosItensPlayer(cid) -- Uma função que retorne todos os itens do player para que sejam comparados no for abaixo:

	ItensAdd = { -- Itens que serão adicionados ao player caso na exista nenhum do mesmo tipo
		{ItemID1, QntItem1},
		{ItemID2, QntItem2},
		{ItemID3, QntItem3},
		{ItemID4, QntItem4},
		{ItemID5, QntItem5},
		{ItemID6, QntItem6},
		{ItemID7, QntItem7},
		{ItemID8, QntItem8}
		}

	for X = 1, #ItensAdd do -- Loop 1
		for Y = 1, #TodosItens do -- Loop 2
			if Tipo(ItensAdd[X][1]) == Tipo(TodosItens[Y]) then -- Se for do mesmo tipo Ex: Armor == Armor, Legs == Legs
				break -- irá sair do Loop 2
			elseif Y == #TodosItens then
				doPlayerAddItem(cid, ItensAdd[X][1], ItensAdd[X][2])
			end
		end
	end

	return true
end

É isso, se puder ajudar ficarei grato!

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...