Boa tarde, muito gente estava pedindo como adicionar essa pokemonbar ao jogo.
então decidi postar
testado na pokemon dash bolz 2.0
futura atualização:
depois vou atualizar esse tópico, poderá revive seu pokemon pela pokemonbar
já tenho depois vou publicar.
foto:
vamos começar?
vá até servidor/data/action/goback.lua
embaixo de:
local effect = pokeballs[btype].effect
if not effect then
effect = 21
end
adicione isso:
if not getItemAttribute(item.uid, "tadport") and ballName then
doItemSetAttribute(item.uid, "tadport", fotos[ballName])
end
embaixo de:
doCreatureSay(cid, mgo, TALKTYPE_MONSTER)
adicione isso:
if getItemAttribute(item.uid, "ballorder") then
doPlayerSendCancel(cid, "KGT,"..getItemAttribute(item.uid, "ballorder").."|".."0")
doPlayerSendCancel(cid, "")
end
embaixo de:
if useOTClient then
doPlayerSendCancel(cid, '12//,show') --alterado v1.7
end
adicione isso:
local owner = getCreatureMaster(cid)
doOTCSendPokemonHealth(owner)
agora em servidor/data/lib/ crie um arquivo chamado liferBar.lua
e coloque isso dentro:
function onPokeBarLife(cid)
if isSummon(cid) and isPlayer(getCreatureMaster(cid)) then
local itemBall = getPlayerSlotItem(getCreatureMaster(cid), CONST_SLOT_FEET)
local hp = math.ceil((getCreatureHealth(cid) * 100) / getCreatureMaxHealth(cid))
local orde = getItemAttribute(itemBall.uid, "ballorder")
if orde then
doPlayerSendCancel(getCreatureMaster(cid), "pGS,"..hp.."|"..orde.."|"..getPokeName(cid))
doPlayerSendCancel(getCreatureMaster(cid), "")
end
end
end
agora em servido/data/lib/somefunctions.lua
procure por:
doItemSetAttribute(item, "fakedesc", "Contains a "..pokemon..".")
em baixo adicione:
doItemSetAttribute(item, "tadport", fotos[pokemon])
agora vá até ultima linha de dois espaços e adicione isso:
agora vá em servidor/data/lib/catch system.lua
embaixo de
doItemSetAttribute(item, "description", description)
adicione embaixo isso:
doItemSetAttribute(item, "tadport", fotos[poke])
agora vá em servidor/data/lib/cooldown bar.lua
troque por esse:https://pastebin.com/MLZsy8AK
agora vá em servidor/data/lib/level system.lua
procure por:
doSendMagicEffect(getThingPos(item2.uid), 18)
embaixo adicione isso:
doTransformItem(getPlayerSlotItem(cid, 7).uid, fotos[theevo])
doItemSetAttribute(pokeball.uid, "tadport", fotos[theevo])
doUpdatePokemonsBar(cid)
agora vá em servidor/data/creaturescript/script/exp2.0.lua
embaixo de :
if isSummon(cid) and valor ~= 0 then
adicione isso
local owner = getCreatureMaster(cid)
doOTCSendPokemonHealth(owner)
doUpdatePokeInfo(owner)
onPokeBarLife(cid)
ficando assim:
if isSummon(cid) and valor ~= 0 then
local owner = getCreatureMaster(cid)
doOTCSendPokemonHealth(owner)
doUpdatePokeInfo(owner)
onPokeBarLife(cid)
agora vá em servidor/data/creaturescript/script/goback.lua
dentro da função:
if useOTClient then
end
deixe ela assim:
if useOTClient then
doPlayerSendCancel(owner, '12//,hide') --alterado v1.7
doPlayerSendCancel(owner, "pGS,".."0".."|"..getItemAttribute(thisball.uid, "ballorder").."|"..getPokeName(cid))
doPlayerSendCancel(owner, "")
end
agora vá em servidor/data/creaturescript/script/login.lua
procure por:
function onLogin(cid)
adicione embaixo
doUpdatePokemonsBar(cid)
procure por:
registerCreatureEvent(cid, "task_count")
adicione embaixo:
doUpdatePokemonsBar(cid)
agora vá em servidor/data/talkactions/script
crie um arquivo chamado: poke.lua e adicione isso dentro
local EFFECTS = {
["Perfect Zygarde Full"] = 45,
["Mystic Mewtwo"] = 136,
["Groudon"] = 34,
["Shiny Groudon"] = 44,
["Arch Heatran"] = 105,
["Obscure Arceus"] = 55,
["Zygarde M1"] = 45,
["Zygarde M2"] = 45,
["Zygarde M3"] = 105,
["Tornadus"] = 152,
["Landorus"] = 152,
["Thundurus"] = 152,
["Majestic Lugia M1"] = 136,
["Majestic Lugia M2"] = 136,
["Majestic Lugia M3"] = 136,
["Mew"] = 136,
["Mewtwo"] = 136,
["Shiny Mew"] = 136,
["Shiny Mewtwo"] = 136,
["Giratina Star"] = 55,
["Giratina Star M1"] = 55,
["Giratina Star M2"] = 55,
["Giratina Star M3"] = 55,
["Raikou"] = 360,
["Kyogre"] = 17,
["Shiny Kyogre"] = 17,
["Rayquaza"] = 17,
["Suicune"] = 17,
["Ditto"] = 17,
["Phione"] = 17,
["Zoroak"] = 55,
["Shiny Zoroak"] = 55,
["Zygard"] = 55,
["Regigigas"] = 35,
["Shiny Regigigas"] = 26,
["Genesect"] = 26,
["Zekrom"] = 26,
["Shiny Zekrom"] = 26,
["Black Zygarde"] = 55,
["Black Alpha Zekrom"] = 55,
["Black Groudon"] = 55,
["Deoxys Lunar"] = 55,
}
local cd = 1
local function volta(cid, init)
exhausted = 10
storage = 31332
if(getPlayerStorageValue(cid, storage) > os.time() and getPlayerStorageValue(cid, storage) < 100+os.time()) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "You must wait another " .. getPlayerStorageValue(cid, storage) - os.time() .. ' second' .. ((getPlayerStorageValue(cid, storage) - os.time()) == 1 and "" or "s") .. " to use new pokemon.")
return true
end
-- if getPlayerStorageValue(cid, 69891) >= 1 then
-- doPlayerSendCancel(cid, "Voce nao pode chamar seu pokemon enquanto usa seu pet.")
-- return false --alterado v1.5
-- end
if getPlayerSlotItem(cid, CONST_SLOT_FEET).uid > 0 then
local item = getPlayerSlotItem(cid, CONST_SLOT_FEET)
if getPlayerStorageValue(cid, 912351) > os.time () then
doPlayerSendCancel(cid, "Espere "..getPlayerStorageValue(cid, 912351) - os.time ().." segundo(s) para usar novamente")
return true
end
if exhaustion.get(cid, 6666) and exhaustion.get(cid, 6666) > 0 then return true end
if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1
or getPlayerStorageValue(cid, 75846) >= 1 or getPlayerStorageValue(cid, 5700) >= 1 then --alterado v1.9 <<
return true
end
local ballName = getItemAttribute(item.uid, "poke")
local btype = getPokeballType(item.itemid)
local usando = pokeballs[btype].use
local effect = pokeballs[btype].effect
if not effect then
effect = 21
end
if not getItemAttribute(item.uid, "tadport") and ballName then
doItemSetAttribute(item.uid, "tadport", fotos[ballName])
end
unLock(item.uid) --alterado v1.8
if item.itemid == usando then
-- if getPlayerStorageValue(cid, 990) == 1 then -- GYM
-- doPlayerSendCancel(cid, "You can't return your pokemon during gym battles.")
-- return true
-- end
if #getCreatureSummons(cid) > 1 and getPlayerStorageValue(cid, 212124) <= 0 then --alterado v1.6
if getPlayerStorageValue(cid, 637501) == -2 or getPlayerStorageValue(cid, 637501) >= 1 then
BackTeam(cid)
end
end
if #getCreatureSummons(cid) == 2 and getPlayerStorageValue(cid, 212124) >= 1 then
doPlayerSendCancel(cid, "You can't do that while is controling a mind")
return true --alterado v1.5
end
if #getCreatureSummons(cid) <= 0 then
if isInArray(pokeballs[btype].all, item.itemid) then
doTransformItem(item.uid, pokeballs[btype].off)
doItemSetAttribute(item.uid, "hp", 0)
doPlayerSendCancel(cid, "This pokemon is fainted.")
return true
end
end
local cd = getCD(item.uid, "blink", 30)
if cd > 0 then
setCD(item.uid, "blink", 0)
end
local z = getCreatureSummons(cid)[1]
if getCreatureCondition(z, CONDITION_INVISIBLE) and not isGhostPokemon(z) then
return true
end
doReturnPokemon(cid, z, item, effect)
end
if init then
if item.itemid == pokeballs[btype].on then
if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid then
doPlayerSendCancel(cid, "You must put your pokeball in the correct place!")
return TRUE
end
local thishp = getItemAttribute(item.uid, "hp")
if thishp <= 0 then
if isInArray(pokeballs[btype].all, item.itemid) then
doTransformItem(item.uid, pokeballs[btype].off)
doItemSetAttribute(item.uid, "hp", 0)
doPlayerSendCancel(cid, "This pokemon is fainted.")
return true
end
end
local pokemon = getItemAttribute(item.uid, "poke")
if not pokes[pokemon] then
return true
end
---------------------------------------------------------------------------------------------------------------------------------------------------
local x = pokes[pokemon]
local boost = getItemAttribute(item.uid, "boost") or 0
if getPlayerLevel(cid) < (x.level+boost) then
doPlayerSendCancel(cid, "You need level "..(x.level+boost).." to use this pokemon.")
return true
end
--------------------------------------------------------------------------------------
doSummonMonster(cid, pokemon)
local pk = getCreatureSummons(cid)[1]
if not isCreature(pk) then return true end
------------------------passiva hitmonchan------------------------------
if isSummon(pk) then --alterado v1.8 \/
if pokemon == "Shiny Hitmonchan" or pokemon == "Hitmonchan" then
if not getItemAttribute(item.uid, "hands") then
doSetItemAttribute(item.uid, "hands", 0)
end
local hands = getItemAttribute(item.uid, "hands")
doSetCreatureOutfit(pk, {lookType = hitmonchans[pokemon][hands].out}, -1)
end
end
-------------------------------------------------------------------------
---------movement magmar, jynx-------------
if EFFECTS[getCreatureName(pk)] then
markPosEff(pk, getThingPos(pk))
sendMovementEffect(pk, EFFECTS[getCreatureName(pk)], getThingPos(pk))
end
--------------------------------------------------------------------------
---if getCreatureName(pk) == "Ditto" or getCreatureName(pk) == "Shiny Ditto" then --edited
-- local left = getItemAttribute(item.uid, "transLeft")
-- local name = getItemAttribute(item.uid, "transName")
-- if left and left > 0 then
-- setPlayerStorageValue(pk, 1010, name)
-- doSetCreatureOutfit(pk, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1)
-- addEvent(deTransform, left * 1000, pk, getItemAttribute(item.uid, "transTurn"))
-- doItemSetAttribute(item.uid, "transBegin", os.clock())
-- else
-- setPlayerStorageValue(pk, 1010, getCreatureName(pk) == "Ditto" and "Ditto" or "Shiny Ditto") --edited
-- end
-- end
if isGhostPokemon(pk) then doTeleportThing(pk, getPosByDir(getThingPos(cid), math.random(0, 7)), false) end
doCreatureSetLookDir(pk, 2)
adjustStatus(pk, item.uid, true, true, true)
-- doCureWithY(getCreatureMaster(pk), pk)
doTransformItem(item.uid, item.itemid+1)
local pokename = getPokeName(pk) --alterado v1.7
local mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", pokename)
doCreatureSay(cid, mgo, TALKTYPE_ORANGE_1)
if getItemAttribute(item.uid, "ballorder") then
doPlayerSendCancel(cid, "KGT,"..getItemAttribute(item.uid, "ballorder").."|".."0")
end
setPlayerStorageValue(cid, 912351, os.time () + cd)
doSendMagicEffect(getCreaturePosition(pk), effect)
local pk = getCreatureSummons(cid)[1]
local pb = getPlayerSlotItem(cid, 8).uid
local look = getItemAttribute(pb, "addon")
if not look then
doSetItemAttribute(pb, "addon", 0)
end
if look and look > 0 then
doSetCreatureOutfit(pk, {lookType = look}, -1)
end
if useOTClient then
doPlayerSendCancel(cid, '12//,show') --alterado v1.7
end
local pk = getCreatureSummons(cid)[1]
local pb = getPlayerSlotItem(cid, 8).uid
local look = getItemAttribute(pb,"addon")
if not look then
doSetItemAttribute(pb,"addon",0)
end
if look > 0 then
doSetCreatureOutfit(pk, {lookType = look}, -1)
end
end
end
end
if useKpdoDlls then
doUpdateMoves(cid)
end
return true
end
function onSay(cid, words, param, channel)
if getPlayerSlotItem(cid, CONST_SLOT_FEET).uid > 0 then
if getItemAttribute(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid, "ballorder") == tonumber(param) then
volta(cid, true)
return true
else
volta(cid, false)
end
end
doMoveBar(cid, tonumber(param))
volta(cid, true)
return true
end
agora em servidor/data/talkactions.xml
adicione essa tag
<talkaction words="!@pokebar@" script="poke.lua"/>
agora vamos para source do jogo:
vamos em game.cpp
embaixo de:
void Game::showHotkeyUseMessage(Player* player, Item* item)
{
int32_t subType = -1;
if(item->hasSubType() && !item->hasCharges())
subType = item->getSubType();
const ItemType& it = Item::items[item->getID()];
uint32_t count = player->__getItemTypeCount(item->getID(), subType, false);
char buffer[40 + it.name.size()];
if(count == 1)
sprintf(buffer, "Using the last %s...", it.name.c_str());
else
sprintf(buffer, "Using one of %d %s...", count, it.pluralName.c_str());
player->sendTextMessage(MSG_INFO_DESCR, buffer);
}
adicione isso:
bool Game::doMoveBar(uint32_t playerId, uint8_t opId)
{
Player* player = getPlayerByID(playerId);
Container* container;
for(int32_t i = SLOT_FIRST; i < SLOT_LAST; ++i)
{
if(Item* item = player->getInventoryItem((slots_t)i))
{
boost::any value = (item)->getAttribute("poke");
boost::any border = (item)->getAttribute("ballorder");
if(value.type() == typeid(std::string) && border.type() == typeid(int32_t))
{
if(boost::any_cast<int32_t>(border) == opId && i == ?
return false;
if(boost::any_cast<int32_t>(border) == opId && i == 10)
{
Thing* bthing = player->__getThing(10);
Thing* ballPoke = player->__getThing(8);
if(ballPoke && !ballPoke->getItem()->isNotMoveable())
{
if(bthing)
{
boost::any bbpb1 = ballPoke->getItem()->getAttribute("poke");
boost::any bbpb2 = bthing->getItem()->getAttribute("poke");
boost::any borderS = bthing->getItem()->getAttribute("ballorder");
if (!bbpb1.empty() && !bbpb2.empty() && borderS.type() == typeid(int32_t))
{
int32_t pouitS = boost::any_cast<int32_t>(borderS);
if(opId == pouitS)
{
Cylinder* acylinder = ballPoke->getItem()->getParent();
Cylinder* bcylinder = bthing->getItem()->getParent();
int32_t aitemIndex = acylinder->__getIndexOfThing(ballPoke->getItem());
int32_t bitemIndex = bcylinder->__getIndexOfThing(bthing->getItem());
internalRemoveItem(NULL, ballPoke->getItem());
internalRemoveItem(NULL, bthing->getItem());
Item* aa = Item::CreateItem(ballPoke->getItem()->getID(), ballPoke->getItem()->getItemCount());
aa->copyAttributes(ballPoke->getItem());
internalAddItem(NULL, acylinder, aa, INDEX_WHEREEVER, FLAG_NOLIMIT);
int16_t stcpos;
Position posa;
Position posb;
posb.x = 65535; posb.y = 10; posb.z = 0;
internalGetPosition(aa, posa, stcpos);
playerMoveThing(playerId, posa, aa->getClientID(), 0, posb, 1);
Item* bb = Item::CreateItem(bthing->getItem()->getID(), bthing->getItem()->getItemCount());
bb->copyAttributes(bthing->getItem());
internalAddItem(NULL, acylinder, bb, INDEX_WHEREEVER, FLAG_NOLIMIT);
internalGetPosition(bb, posa, stcpos);
posb.y = 8;
playerMoveThing(playerId, posa, bb->getClientID(), 0, posb, 1);
return true;
}
}
}
}else
{
if(bthing)
{
boost::any bbpb1 = bthing->getItem()->getAttribute("poke");
boost::any borderS = bthing->getItem()->getAttribute("ballorder");
if (!bbpb1.empty() && borderS.type() == typeid(int32_t))
{
int32_t pouitS = boost::any_cast<int32_t>(borderS);
if(opId == pouitS)
{
int16_t stcpos;
Position posa;
Position posb;
posb.x = 65535; posb.y = 8; posb.z = 0;
internalGetPosition(bthing->getItem(), posa, stcpos);
playerMoveThing(playerId, posa, bthing->getItem()->getClientID(), 0, posb, 1);
return true;
}
}
}
}
}
}
///////////////////////////////////////////////
if(item->getContainer())
{
container = item->getContainer();
for(ContainerIterator sb = container->begin(), end = container->end(); sb != end; ++sb)
{
Item* ballSLot = (*sb)->getItem();
if(ballSLot);
{
boost::any value = ballSLot->getAttribute("poke");
boost::any border = ballSLot->getAttribute("ballorder");
if(value.type() == typeid(std::string) && border.type() == typeid(int32_t))
{
int32_t pouit = boost::any_cast<int32_t>(border);
if(opId == pouit)
{
Thing* ballPoke = player->__getThing(8);
if(ballPoke && !ballPoke->getItem()->isNotMoveable())
{
Cylinder* ballPokeCylinder = ballPoke->getItem()->getParent(); //slot8
Cylinder* ballOrderCylinder = ballSLot->getParent(); //slotbag
int32_t ballPokeIndex = ballPokeCylinder->__getIndexOfThing(ballPoke->getItem()); //slot8
int32_t ballOrderIndex = ballOrderCylinder->__getIndexOfThing(ballSLot); //slotbag
internalRemoveItem(NULL, ballPoke->getItem()); //slot8
internalRemoveItem(NULL, ballSLot); //slotbag
Item* CreateBallSLot = Item::CreateItem(ballSLot->getID(), ballSLot->getItemCount()); //slotbag
CreateBallSLot->copyAttributes(ballSLot); //slotbag
internalAddItem(NULL, ballPokeCylinder, CreateBallSLot, INDEX_WHEREEVER, FLAG_NOLIMIT); //slotbag
Item* CreateBallBag = Item::CreateItem(ballPoke->getItem()->getID(), ballPoke->getItem()->getItemCount()); //slot8
CreateBallBag->copyAttributes(ballPoke->getItem()); //slot8
internalPlayerAddItem(NULL, player, CreateBallBag, false);//
return true;
}else
{
Cylinder* ballOrderCylinder = ballSLot->getParent();
int32_t ballOrderIndex = ballOrderCylinder->__getIndexOfThing(ballSLot);
internalRemoveItem(NULL, ballSLot);
Item* CreateBallSLot = Item::CreateItem(ballSLot->getID(), ballSLot->getItemCount());
CreateBallSLot->copyAttributes(ballSLot);
internalPlayerAddItem(NULL, player, CreateBallSLot, false);
return true;
}
}
}
}
}
}
}
}
return false;
}
agora em game.h:
embaixo de:
bool playerCancelRuleViolation(uint32_t playerId);
adicione isso:
bool doMoveBar(uint32_t playerId, uint8_t opId);
agora em luascript.cpp:
embaixo de :
//getCreatureSummons(cid)
lua_register(m_luaState, "getCreatureSummons", LuaScriptInterface::luaGetCreatureSummons);
adicione:
//doUpdatePokemonsBar(cid)
lua_register(m_luaState, "doUpdatePokemonsBar", LuaScriptInterface::luaDoUpdatePokemonsBar);
//doMoveBar(playerid, item)
lua_register(m_luaState, "doMoveBar", LuaScriptInterface::luaDoMoveBar);
agora em baixo de:
int32_t LuaScriptInterface::luaDoSendPlayerExtendedOpcode(lua_State* L)
{
//doSendPlayerExtendedOpcode(cid, opcode, buffer)
std::string buffer = popString(L);
int opcode = popNumber(L);
ScriptEnviroment* env = getEnv();
if(Player* player = env->getPlayerByUID(popNumber(L))) {
player->sendExtendedOpcode(opcode, buffer);
lua_pushboolean(L, true);
}
lua_pushboolean(L, false);
return 1;
}
ou de
int32_t LuaScriptInterface::luaBitUNot(lua_State* L)
{
uint32_t number = (uint32_t)popNumber(L);
lua_pushnumber(L, ~number);
return 1;
}
adicione isso:
int32_t LuaScriptInterface::luaDoMoveBar(lua_State* L)
{
ScriptEnviroment* env = getEnv();
uint8_t opId = popNumber(L);
uint32_t playerId = popNumber(L);
if(Player* player = env->getPlayerByUID(playerId))
lua_pushboolean(L, g_game.doMoveBar(playerId, opId));
else
{
errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));
lua_pushboolean(L, false);
}
return 1;
}
int32_t LuaScriptInterface::luaDoUpdatePokemonsBar(lua_State* L)
{
//doUpdatePokemonsBar(cid)
ScriptEnviroment* env = getEnv();
if(Player* player = env->getPlayerByUID(popNumber(L)))
{
player->doUpdatePokemonsBar();
lua_pushboolean(L, true);
}
else
{
errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND));
lua_pushboolean(L, false);
}
return 1;
}
agora em luascript.h.
embaixo de :
//lua functions
adicione isso
static int32_t luaDoUpdatePokemonsBar(lua_State* L);
static int32_t luaDoMoveBar(lua_State* L);
agora em player.cpp:
embaixo de :
void Player::updateInventoryWeight()
{
inventoryWeight = 0.00;
if(hasFlag(PlayerFlag_HasInfiniteCapacity))
return;
for(int32_t i = SLOT_FIRST; i < SLOT_LAST; ++i)
{
if(Item* item = getInventoryItem((slots_t)i))
inventoryWeight += item->getWeight();
}
}
adicione isso:
void Player::doUpdatePokemonsBar()
{
uint32_t slot = SLOT_FEET;
const Container* container;
std::stringstream s;
s << "p#";
std::stringstream sd;
int32_t bo = 1;
for(int32_t i = SLOT_LAST-1; i >= SLOT_FIRST; --i)
{
if(Item* item = getInventoryItem((slots_t)i))
{
boost::any value = (item)->getAttribute("poke");
if(value.type() == typeid(std::string))
{
boost::any vanick = (item)->getAttribute("nick");
std::string pokename = boost::any_cast<std::string>(value);
if(vanick.type() == typeid(std::string))
pokename = boost::any_cast<std::string>(vanick);
boost::any tapot = (item)->getAttribute("tadport");
if(tapot.type() == typeid(int32_t))
{
boost::any boostpo = (item)->getAttribute("boost");
boost::any hpPo = (item)->getAttribute("hp");
int32_t boost = 0;
int32_t hpPok = 0;
if(boostpo.type() == typeid(int32_t))
boost = boost::any_cast<int32_t>(boostpo);
if(hpPo.type() == typeid(float))
hpPok = (int32_t)std::ceil((boost::any_cast<float>(hpPo)*100));
else if(hpPo.type() == typeid(int32_t))
hpPok = (int32_t)std::ceil((boost::any_cast<int32_t>(hpPo)*100));
(item)->setAttribute("ballorder", bo);
const ItemType* foto;
if(!(foto = Item::items.getElement(boost::any_cast<int32_t>(tapot))))
foto = Item::items.getElement(2395);
if(hpPok <= 0)
{
sd << "," << foto->clientId << "|" << pokename << "|" << bo << "|" << hpPok << "|" << boost;
bo += 1;
continue;
}
s << "," << foto->clientId << "|" << pokename << "|" << bo << "|" << hpPok << "|" << boost;
bo += 1;
}else
{
(item)->setAttribute("ballorder", bo);
const ItemType* foto = Item::items.getElement(2395);
s << "," << foto->clientId << "|" << " " << "|" << bo << "|" << 0 << "|" << 0;
bo += 1;
}
}
if(container = item->getContainer())
{
for(ContainerIterator it = container->begin(), end = container->end(); it != end; ++it)
{
boost::any value = (*it)->getAttribute("poke");
if(value.type() == typeid(std::string))
{
boost::any vanick = (*it)->getAttribute("nick");
std::string pokename = boost::any_cast<std::string>(value);
if(vanick.type() == typeid(std::string))
pokename = boost::any_cast<std::string>(vanick);
boost::any tapot = (*it)->getAttribute("tadport");
if(tapot.type() == typeid(int32_t))
{
boost::any boostpo = (*it)->getAttribute("boost");
boost::any hpPo = (*it)->getAttribute("hp");
int32_t boost = 0;
int32_t hpPok = 0;
if(boostpo.type() == typeid(int32_t))
boost = boost::any_cast<int32_t>(boostpo);
if(hpPo.type() == typeid(float))
hpPok = (int32_t)std::ceil((boost::any_cast<float>(hpPo)*100));
else if(hpPo.type() == typeid(int32_t))
hpPok = (int32_t)std::ceil((boost::any_cast<int32_t>(hpPo)*100));
(*it)->setAttribute("ballorder", bo);
const ItemType* foto;
if(!(foto = Item::items.getElement(boost::any_cast<int32_t>(tapot))))
foto = Item::items.getElement(2395);
if(hpPok <= 0)
{
sd << "," << foto->clientId << "|" << pokename << "|" << bo << "|" << hpPok << "|" << boost;
bo += 1;
continue;
}
s << "," << foto->clientId << "|" << pokename << "|" << bo << "|" << hpPok << "|" << boost;
bo += 1;
}else
{
(*it)->setAttribute("ballorder", bo);
const ItemType* foto = Item::items.getElement(2395);
s << "," << foto->clientId << "|" << " " << "|" << bo << "|" << 0 << "|" << 0;
bo += 1;
}
}
}
}
}
}
s << sd.str();
sendCancel(s.str());
sendCancel("");
}
agora em player.h
embaixo de:
void updateItemsLight(bool internal = false);
adicione isso:
void doUpdatePokemonsBar();
Download:
Creditos: