Jump to content

PokeBar(Versão:0.3.6)


Poke X Ice

Recommended Posts

7 horas atrás, Poke X Ice disse:

 

 

sobre essa parte voce precisa ter opcode na source

 

voce tiver posso ensina como fazer isso funciona

Tem opcode sim

Link to comment
Share on other sites

Em 23/10/2019 em 23:43, Henrique disse:

Eu fiz uma alterações no design haha'
image.png.3b855101e597326414b2369a8f721969.png

#EDIT
Deixei ela mais clean, acho que fica muita informação na tela do player.
 

  Mostrar conteúdo oculto

image.png.78b9b89f75e5e3042dd9b6db6b5c4ecd.png

 

ficou muito bonito!

 

só achei estranho a barra da vida os números estão estranhos

Link to comment
Share on other sites

38 minutos atrás, mateusv123 disse:

Obrigado por compartilhar.

Fiz tudo como pediu, porém, ficou desta forma, há uma solução?

estou testando na Base dxp

 

 

image.png.5e6137d2f0bcaed2ae15b5de7df7c46a.png

 

 

 

esse script não funciona em dxp

Link to comment
Share on other sites

2 horas atrás, mateusv123 disse:

Obrigado por compartilhar.

Fiz tudo como pediu, porém, ficou desta forma, há uma solução?

estou testando na Base dxp

 

 

image.png.5e6137d2f0bcaed2ae15b5de7df7c46a.png

 

Por falta do arquivo "UIImageViewBar", gerou um erro, quem tiver o mesmo problema basta criar um arquivo .lua com o nome UIImageViewBar na pasta corelib/ui do seu otclient e adicionar isto dentro:

Spoiler

-- @docclass
UIImageViewBar = extends(UIWidget, "UIImageViewBar")

function UIImageViewBar.create()
  local imageView = UIImageViewBar.internalCreate()
  imageView.zoom = 1
  imageView.minZoom = math.pow(10, -2)
  imageView.maxZoom = math.pow(10,  2)
  imageView:setClipping(true)
  return imageView
end

function UIImageViewBar:getDefaultZoom()
  local width = self:getWidth()
  local height = self:getHeight()
  local textureWidth = self:getImageTextureWidth()
  local textureHeight = self:getImageTextureHeight()
  local zoomX = width / textureWidth
  local zoomY = height / textureHeight
  return math.min(zoomX, zoomY)
end

function UIImageViewBar:getImagePosition(x, y)
  x = x or self:getWidth() / 2
  y = y or self:getHeight() / 2
  local offsetX = self:getImageOffsetX()
  local offsetY = self:getImageOffsetY()
  local posX = (x - offsetX) / self.zoom
  local posY = (y - offsetY) / self.zoom
  return posX, posY
end

function UIImageViewBar:setImage(image)
  self:setImageSource(image)
  local zoom = self:getDefaultZoom()
  self:setZoom(zoom)
  self:center()
end

function UIImageViewBar:setZoom(zoom, x, y)
  zoom = math.max(math.min(zoom, self.maxZoom), self.minZoom)
  local posX, posY = self:getImagePosition(x, y)
  local textureWidth = self:getImageTextureWidth()
  local textureHeight = self:getImageTextureHeight()
  local imageWidth = textureWidth * zoom
  local imageHeight = textureHeight * zoom
  self:setImageWidth(imageWidth)
  self:setImageHeight(imageHeight)
  self.zoom = zoom
  self:move(posX, posY, x, y)
end

function UIImageViewBar:zoomIn(x, y)
  local zoom = self.zoom * 1.1
  self:setZoom(zoom, x, y)
end

function UIImageViewBar:zoomOut(x, y)
  local zoom = self.zoom / 1.1
  self:setZoom(zoom, x, y)
end

function UIImageViewBar:center()
  self:move(self:getImageTextureWidth() / 2, self:getImageTextureHeight() / 2)
end

function UIImageViewBar:move(x, y, centerX, centerY)
  x = math.max(math.min(x, self:getImageTextureWidth()), 0)
  y = math.max(math.min(y, self:getImageTextureHeight()), 0)
  local centerX = centerX or self:getWidth() / 2
  local centerY = centerY or self:getHeight() / 2
  local offsetX = centerX - x * self.zoom
  local offsetY = centerY - y * self.zoom
  self:setImageOffset({x=offsetX, y=offsetY})
end

function UIImageViewBar:onDragEnter(pos)
  return true
end

function UIImageViewBar:onDragMove(pos, moved)
  local posX, posY = self:getImagePosition()
  self:move(posX - moved.x / self.zoom, posY - moved.y / self.zoom)
  return true
end

function UIImageViewBar:onDragLeave(widget, pos)
  return true
end

 


 

Link to comment
Share on other sites

19 horas atrás, Henrique disse:

Por falta do arquivo "UIImageViewBar", gerou um erro, quem tiver o mesmo problema basta criar um arquivo .lua com o nome UIImageViewBar na pasta corelib/ui do seu otclient e adicionar isto dentro:

  Mostrar conteúdo oculto


-- @docclass
UIImageViewBar = extends(UIWidget, "UIImageViewBar")

function UIImageViewBar.create()
  local imageView = UIImageViewBar.internalCreate()
  imageView.zoom = 1
  imageView.minZoom = math.pow(10, -2)
  imageView.maxZoom = math.pow(10,  2)
  imageView:setClipping(true)
  return imageView
end

function UIImageViewBar:getDefaultZoom()
  local width = self:getWidth()
  local height = self:getHeight()
  local textureWidth = self:getImageTextureWidth()
  local textureHeight = self:getImageTextureHeight()
  local zoomX = width / textureWidth
  local zoomY = height / textureHeight
  return math.min(zoomX, zoomY)
end

function UIImageViewBar:getImagePosition(x, y)
  x = x or self:getWidth() / 2
  y = y or self:getHeight() / 2
  local offsetX = self:getImageOffsetX()
  local offsetY = self:getImageOffsetY()
  local posX = (x - offsetX) / self.zoom
  local posY = (y - offsetY) / self.zoom
  return posX, posY
end

function UIImageViewBar:setImage(image)
  self:setImageSource(image)
  local zoom = self:getDefaultZoom()
  self:setZoom(zoom)
  self:center()
end

function UIImageViewBar:setZoom(zoom, x, y)
  zoom = math.max(math.min(zoom, self.maxZoom), self.minZoom)
  local posX, posY = self:getImagePosition(x, y)
  local textureWidth = self:getImageTextureWidth()
  local textureHeight = self:getImageTextureHeight()
  local imageWidth = textureWidth * zoom
  local imageHeight = textureHeight * zoom
  self:setImageWidth(imageWidth)
  self:setImageHeight(imageHeight)
  self.zoom = zoom
  self:move(posX, posY, x, y)
end

function UIImageViewBar:zoomIn(x, y)
  local zoom = self.zoom * 1.1
  self:setZoom(zoom, x, y)
end

function UIImageViewBar:zoomOut(x, y)
  local zoom = self.zoom / 1.1
  self:setZoom(zoom, x, y)
end

function UIImageViewBar:center()
  self:move(self:getImageTextureWidth() / 2, self:getImageTextureHeight() / 2)
end

function UIImageViewBar:move(x, y, centerX, centerY)
  x = math.max(math.min(x, self:getImageTextureWidth()), 0)
  y = math.max(math.min(y, self:getImageTextureHeight()), 0)
  local centerX = centerX or self:getWidth() / 2
  local centerY = centerY or self:getHeight() / 2
  local offsetX = centerX - x * self.zoom
  local offsetY = centerY - y * self.zoom
  self:setImageOffset({x=offsetX, y=offsetY})
end

function UIImageViewBar:onDragEnter(pos)
  return true
end

function UIImageViewBar:onDragMove(pos, moved)
  local posX, posY = self:getImagePosition()
  self:move(posX - moved.x / self.zoom, posY - moved.y / self.zoom)
  return true
end

function UIImageViewBar:onDragLeave(widget, pos)
  return true
end

 


 

Olá, isso realmente ajudou, porém agora ficou igual do amigo ali em cima

quando eu tento usar manualmente o comando "!@pokebar@" o pokemon sai da pokeball se ele estivar na slot, no entanto, funciona apenas para sair.

image.png.60841f43c69eaa7905bbd62889e22e68.png

Edited by mateusv123
Link to comment
Share on other sites

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

 

  Mostrar conteúdo oculto

embaixo de:

  Mostrar conteúdo oculto

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

adicione isso:

  Mostrar conteúdo oculto

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/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

 

@Poke X IceNão tá atualizando quando capturo um poke, sabe o que é? 

Link to comment
Share on other sites

Essa rapaziada posta os bgl pede nem autorização e osso, ai dps nos posta base de fulano nos e errado, mais fazer oque...  como muitos falam, geral caga e anda pros trampos dos outros...

 

Link to comment
Share on other sites

Gente alguem poderia me ajudar, nessa função que está dando como não encontrada ou se é mesmo este nome:

 

Spoiler

[04/11/2019 09:28:26] [Error - CreatureScript Interface] 
[04/11/2019 09:28:26] datapack/creaturescripts/scripts/exp2.0.lua:onStatsChange
[04/11/2019 09:28:26] Description: 
[04/11/2019 09:28:26] datapack/creaturescripts/scripts/exp2.0.lua:674: attempt to call global 'doUpdatePokeInfo' (a nil value)
[04/11/2019 09:28:26] stack traceback:
[04/11/2019 09:28:26]     datapack/creaturescripts/scripts/exp2.0.lua:674: in function <datapack/creaturescripts/scripts/exp2.0.lua:63>

 

Link to comment
Share on other sites

27 minutos atrás, otomeuhugo disse:

Gente alguem poderia me ajudar, nessa função que está dando como não encontrada ou se é mesmo este nome:

 

  Ocultar conteúdo

[04/11/2019 09:28:26] [Error - CreatureScript Interface] 
[04/11/2019 09:28:26] datapack/creaturescripts/scripts/exp2.0.lua:onStatsChange
[04/11/2019 09:28:26] Description: 
[04/11/2019 09:28:26] datapack/creaturescripts/scripts/exp2.0.lua:674: attempt to call global 'doUpdatePokeInfo' (a nil value)
[04/11/2019 09:28:26] stack traceback:
[04/11/2019 09:28:26]     datapack/creaturescripts/scripts/exp2.0.lua:674: in function <datapack/creaturescripts/scripts/exp2.0.lua:63>

 

Remove ela amigo ;) 

Link to comment
Share on other sites

  • 1 month later...

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>

 

 

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...