PO

PokeBar(Versão:0.3.6)

Por Poke X Ice, 22 de out. de 2019 em Tutoriais de Scripting

66
43k
JG6J
13 de dezembro de 2019 às 09:35
4 horas atrás, AbuelaViolenta disse:

Por que eu recebo esse erro? Estou em um PDA Level System v2.9

 

Porque me sale este error? Estoy en un PDA Level System v2.9

 

[13/12/2019 04:48:34] [Error - Action Interface] 
[13/12/2019 04:48:34] data/actions/scripts/goback.lua:onUse
[13/12/2019 04:48:34] Description: 
[13/12/2019 04:48:34] data/lib/some functions.lua:1886: attempt to call global 'DoSendPlayerExtendedOpcode' (a nil value)
[13/12/2019 04:48:34] stack traceback:
[13/12/2019 04:48:34]     data/lib/some functions.lua:1886: in function 'doOTCSendPokemonHealth'
[13/12/2019 04:48:34]     data/actions/scripts/goback.lua:208: in function <data/actions/scripts/goback.lua:10>

 

 

Tu servidor no tienes opcode

13 de dezembro de 2019 às 21:28

¿Cómo puedo agregar opcode al servidor?

es un pda con sistema de nivel v2.9

 

Como posso adicionar o opcode ao servidor? é um pda com sistema de nível v2.9

14 de dezembro de 2019 às 18:23
Em 13/12/2019 em 04:55, AbuelaViolenta disse:

Por que eu recebo esse erro? Estou em um PDA Level System v2.9

 

Porque me sale este error? Estoy en un PDA Level System v2.9

 

[13/12/2019 04:48:34] [Error - Action Interface] 
[13/12/2019 04:48:34] data/actions/scripts/goback.lua:onUse
[13/12/2019 04:48:34] Description: 
[13/12/2019 04:48:34] data/lib/some functions.lua:1886: attempt to call global 'DoSendPlayerExtendedOpcode' (a nil value)
[13/12/2019 04:48:34] stack traceback:
[13/12/2019 04:48:34]     data/lib/some functions.lua:1886: in function 'doOTCSendPokemonHealth'
[13/12/2019 04:48:34]     data/actions/scripts/goback.lua:208: in function <data/actions/scripts/goback.lua:10>

 

 

voce não tem opcode ativado na sua source

15 de dezembro de 2019 às 18:14
23 horas atrás, Poke X Ice disse:

voce não tem opcode ativado na sua source

e como eu poderia ativar o código na sua source?

 

y como podria activar el codigo en el source?

Ayron5A
15 de dezembro de 2019 às 18:25
9 minutos atrás, AbuelaViolenta disse:

e como eu poderia ativar o código na sua source?

 

y como podria activar el codigo en el source?

Veja. 

opcodes 8.54+

19 de dezembro de 2019 às 16:55
Em 15/12/2019 em 18:25, Ayron5 disse:

Veja. 

opcodes 8.54+

Como posso compilar o source? Eu os abro com o caderno, mas ele não me deixa ficar com ele

 

como puedo compilar los source? los abro con el bloc de notas pero no me deja guardarlo

DilooowD
19 de dezembro de 2019 às 22:38
Em 22/10/2019 em 16:01, Poke X Ice disse:

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:

  Mostrar conteúdo oculto

depois vou atualizar esse tópico, poderá revive seu pokemon pela pokemonbar

 

já tenho depois vou publicar.

 

foto:

  Mostrar conteúdo oculto

image.png.d0076038e253851aa3cacbf5fce875b4.png

 

vamos começar?

 

vá até servidor/data/action/goback.lua

 

  Ocultar conteúdo

embaixo de:

  Ocultar conteúdo

local effect = pokeballs[btype].effect
    if not effect then
        effect = 21
    end

adicione isso:

  Ocultar conteúdo

if not getItemAttribute(item.uid, "tadport") and ballName then
    doItemSetAttribute(item.uid, "tadport", fotos[ballName])
end

 

embaixo de:

  Mostrar conteúdo oculto

doCreatureSay(cid, mgo, TALKTYPE_MONSTER)

 

adicione isso:

  Mostrar conteúdo oculto

if getItemAttribute(item.uid, "ballorder") then
        doPlayerSendCancel(cid, "KGT,"..getItemAttribute(item.uid, "ballorder").."|".."0")
        doPlayerSendCancel(cid, "")
end

 

embaixo de:

  Mostrar conteúdo oculto

if useOTClient then
       doPlayerSendCancel(cid, '12//,show') --alterado v1.7
 end

 

adicione isso:

  Mostrar conteúdo oculto

    local owner = getCreatureMaster(cid)
    doOTCSendPokemonHealth(owner)

 

 

agora em servidor/data/lib/ crie um arquivo chamado liferBar.lua

  Mostrar conteúdo oculto

e coloque isso dentro:

  Mostrar conteúdo oculto

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

  Mostrar conteúdo oculto

procure por:

  Mostrar conteúdo oculto

doItemSetAttribute(item, "fakedesc", "Contains a "..pokemon..".") 

em baixo adicione:

  Mostrar conteúdo oculto

doItemSetAttribute(item, "tadport", fotos[pokemon])

 

agora vá até ultima linha de dois espaços e adicione isso:

  Mostrar conteúdo oculto

postado na pastebin pq aqui fica bugado:

 

https://pastebin.com/qTd3dEzs

 

agora vá em servidor/data/lib/catch system.lua

  Mostrar conteúdo oculto

embaixo de 

  Mostrar conteúdo oculto

doItemSetAttribute(item, "description", description)

adicione embaixo isso:

  Mostrar conteúdo oculto

doItemSetAttribute(item, "tadport", fotos[poke])

 

agora vá em servidor/data/lib/cooldown bar.lua

  Mostrar conteúdo oculto

 

agora vá em servidor/data/lib/level system.lua

  Mostrar conteúdo oculto

procure por:

  Mostrar conteúdo oculto

doSendMagicEffect(getThingPos(item2.uid), 18)

embaixo adicione isso:

  Mostrar conteúdo oculto

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

  Mostrar conteúdo oculto

embaixo de :

  Mostrar conteúdo oculto

if isSummon(cid) and valor ~= 0 then

 

adicione isso

  Mostrar conteúdo oculto

local owner = getCreatureMaster(cid)
        doOTCSendPokemonHealth(owner)
        doUpdatePokeInfo(owner)
        onPokeBarLife(cid)

 

ficando assim:

  Mostrar conteúdo oculto

        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

  Mostrar conteúdo oculto

dentro da função:

  Mostrar conteúdo oculto

if useOTClient then

end

deixe ela assim:

  Mostrar conteúdo oculto

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

  Mostrar conteúdo oculto

procure por:

  Mostrar conteúdo oculto

function onLogin(cid)

adicione embaixo

  Mostrar conteúdo oculto

doUpdatePokemonsBar(cid)

 

procure por:

  Mostrar conteúdo oculto

registerCreatureEvent(cid, "task_count")

adicione embaixo:

  Mostrar conteúdo oculto

doUpdatePokemonsBar(cid)

 

 

agora vá em servidor/data/talkactions/script

  Mostrar conteúdo oculto

crie um arquivo chamado: poke.lua e adicione isso dentro

  Mostrar conteúdo oculto

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

  Mostrar conteúdo oculto

adicione essa tag

 

<talkaction words="!@pokebar@" script="poke.lua"/>

 

 

agora vamos para source do jogo:

 

  Mostrar conteúdo oculto

vamos em game.cpp

 

embaixo de:

  Mostrar conteúdo oculto

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:

  Mostrar conteúdo oculto

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:

  Mostrar conteúdo oculto

bool playerCancelRuleViolation(uint32_t playerId);

adicione isso:

  Mostrar conteúdo oculto

bool doMoveBar(uint32_t playerId, uint8_t opId);

 

 

agora em luascript.cpp:

 

embaixo de :

  Mostrar conteúdo oculto

//getCreatureSummons(cid)
    lua_register(m_luaState, "getCreatureSummons", LuaScriptInterface::luaGetCreatureSummons);

 

adicione:

  Mostrar conteúdo oculto

    //doUpdatePokemonsBar(cid)
    lua_register(m_luaState, "doUpdatePokemonsBar", LuaScriptInterface::luaDoUpdatePokemonsBar);

 

    //doMoveBar(playerid, item)
    lua_register(m_luaState, "doMoveBar", LuaScriptInterface::luaDoMoveBar);

 

agora em baixo de:

  Mostrar conteúdo oculto

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:

  Mostrar conteúdo oculto

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 :

  Mostrar conteúdo oculto

//lua functions

 

adicione isso

  Mostrar conteúdo oculto

static int32_t luaDoUpdatePokemonsBar(lua_State* L);
static int32_t luaDoMoveBar(lua_State* L);

 

agora em player.cpp:

 

embaixo de :

  Mostrar conteúdo oculto

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:

  Mostrar conteúdo oculto

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:

  Mostrar conteúdo oculto

void updateItemsLight(bool internal = false);

 

adicione isso:

  Mostrar conteúdo oculto

void doUpdatePokemonsBar();

 

 

 

Download:

Creditos:

  Mostrar conteúdo oculto

Marshmello

 

eu por posta no xtibia

 

na base zr nao tem como por '-' eu tentei porem ela nao tem a maioria das coisas que ai pede  tipo '' doCreatureSay(cid, mgo''

19 de dezembro de 2019 às 22:39
Agora, Dilooow disse:

na base zr nao tem como por '-' eu tentei porem ela nao tem a maioria das coisas que ai pede  tipo '' doCreatureSay(cid, mgo''

tem sim, já adaptei nela.

DilooowD
19 de dezembro de 2019 às 22:45
5 minutos atrás, Poke X Ice disse:

tem sim, já adaptei nela.

poderia me ajudar nao tou conseguindo ?

19 de dezembro de 2019 às 22:45
Agora, Dilooow disse:

poderia me ajudar nao tou conseguindo ?

abre um topico.

DilooowD
19 de dezembro de 2019 às 22:49
3 minutos atrás, Poke X Ice disse:

abre um topico.

sou novo na comunidade nao entendo muito sobre nada na real 

1 mês depois...
M i s sM
01 de janeiro de 2020 às 16:24

Oi, então na parte do Goback ainda diz pra encontrar doCreatureSay(cid, mgo, TALKTYPE_MONSTER) eu só encontrei     doCreatureSay(cid, mgo, TALKTYPE_ORANGE_1)   seria a mesma coisa?

01 de janeiro de 2020 às 16:25
1 minuto atrás, R e d disse:

Oi, então na parte do Goback ainda diz pra encontrar doCreatureSay(cid, mgo, TALKTYPE_MONSTER) eu só encontrei     doCreatureSay(cid, mgo, TALKTYPE_ORANGE_1)   seria a mesma coisa?

Sim é a mesma coisa ,-,

 

M i s sM
01 de janeiro de 2020 às 16:42

C precisava ver minha cara dps de ter colocado td bonitinho e chega na parte da source '-'

01 de janeiro de 2020 às 19:17
2 horas atrás, R e d disse:

C precisava ver minha cara dps de ter colocado td bonitinho e chega na parte da source '-'

n tem source?