Taiger 286 Postado Outubro 24, 2019 Share Postado Outubro 24, 2019 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 para o comentário Compartilhar em outros sites More sharing options...
Poke X Ice 52 Postado Outubro 25, 2019 Autor Share Postado Outubro 25, 2019 Em 24/10/2019 em 06:38, Taiger disse: Tem opcode sim já vou atualizar o tópico! Link para o comentário Compartilhar em outros sites More sharing options...
Ayron5 40 Postado Outubro 25, 2019 Share Postado Outubro 25, 2019 Lol kkkk Mais alguém com isso? Link para o comentário Compartilhar em outros sites More sharing options...
Gerson Monteiro 0 Postado Outubro 28, 2019 Share Postado Outubro 28, 2019 Em 23/10/2019 em 23:43, Henrique disse: Eu fiz uma alterações no design haha' #EDIT Deixei ela mais clean, acho que fica muita informação na tela do player. Ocultar conteúdo Compartilha ai amigo Link para o comentário Compartilhar em outros sites More sharing options...
Poke X Ice 52 Postado Outubro 28, 2019 Autor Share Postado Outubro 28, 2019 Em 23/10/2019 em 23:43, Henrique disse: Eu fiz uma alterações no design haha' #EDIT Deixei ela mais clean, acho que fica muita informação na tela do player. Mostrar conteúdo oculto ficou muito bonito! só achei estranho a barra da vida os números estão estranhos Link para o comentário Compartilhar em outros sites More sharing options...
mateusv123 0 Postado Outubro 28, 2019 Share Postado Outubro 28, 2019 Obrigado por compartilhar. Fiz tudo como pediu, porém, ficou desta forma, há uma solução? estou testando na Base dxp Link para o comentário Compartilhar em outros sites More sharing options...
Poke X Ice 52 Postado Outubro 28, 2019 Autor Share Postado Outubro 28, 2019 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 esse script não funciona em dxp Link para o comentário Compartilhar em outros sites More sharing options...
mateusv123 0 Postado Outubro 28, 2019 Share Postado Outubro 28, 2019 1 hora atrás, Poke X Ice disse: esse script não funciona em dxp Poxa vida, que pena, mas obrigado Link para o comentário Compartilhar em outros sites More sharing options...
Hyaki 19 Postado Outubro 28, 2019 Share Postado Outubro 28, 2019 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 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 mateusv123 reagiu a isso 1 Link para o comentário Compartilhar em outros sites More sharing options...
mateusv123 0 Postado Outubro 29, 2019 Share Postado Outubro 29, 2019 (editado) 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. Editado Outubro 29, 2019 por mateusv123 Link para o comentário Compartilhar em outros sites More sharing options...
Ayron5 40 Postado Outubro 31, 2019 Share Postado Outubro 31, 2019 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 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 troque por esse:https://pastebin.com/MLZsy8AK 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: Mostrar conteúdo oculto poke_bar.rar 32 kB · 21 downloads scan:https://www.virustotal.com/gui/file/43988896fa6ff61225182a6c713395cede7153bfb4ff31e63dc48ca69fba1575/detection 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 para o comentário Compartilhar em outros sites More sharing options...
Marshmello 270 Postado Outubro 31, 2019 Share Postado Outubro 31, 2019 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 para o comentário Compartilhar em outros sites More sharing options...
otomeuhugo 4 Postado Novembro 4, 2019 Share Postado Novembro 4, 2019 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 para o comentário Compartilhar em outros sites More sharing options...
Ayron5 40 Postado Novembro 4, 2019 Share Postado Novembro 4, 2019 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 para o comentário Compartilhar em outros sites More sharing options...
AbuelaViolenta 0 Postado Dezembro 13, 2019 Share Postado Dezembro 13, 2019 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 para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados