Ir para conteúdo
  • Cadastre-se

Client UE spells make dmg to players without pk on ;/


Posts Recomendados

As the title, player do dmg to other players by ue without pk turned on, but only with ue, to use normal spells/atk players he need to turn on pk so whats the reason that ue makes the dmg? Is it fault of spell?

Here's example of one ue spell:

local combat1 = createCombatObject()

setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -125.0, 0, -150.0, 0)

 

local combat2 = createCombatObject()

setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat2, COMBAT_PARAM_EFFECT, 5)

 

local combat3 = createCombatObject()

setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat3, COMBAT_PARAM_EFFECT, 5)

 

 

arr1 = {

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},

{0, 0, 0, 1, 1, 2, 1, 1, 0, 0, 0},

{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

}

 

arr2 = {

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

}

 

arr3 = {

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0},

{0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0},

{0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

}

 

local area1 = createCombatArea(arr1)

local area2 = createCombatArea(arr2)

local area3 = createCombatArea(arr3)

 

setCombatArea(combat1, area1)

setCombatArea(combat2, area2)

setCombatArea(combat3, area3)

 

local function onCastSpell1(parameters)

    doCombat(parameters.cid, parameters.combat1, parameters.var)

end

 

local function onCastSpell2(parameters)

    doCombat(parameters.cid, parameters.combat2, parameters.var)

end

 

local function onCastSpell3(parameters)

    doCombat(parameters.cid, parameters.combat3, parameters.var)

end

 

function onCastSpell(cid, var)

local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3 }

addEvent(onCastSpell1, 0, parameters)

addEvent(onCastSpell2, 0, parameters)

addEvent(onCastSpell3, 150, parameters)

return true

end[/CODE]
	 
	But i dont see here nothing wrong?
	Do i need to add any script that gonna want PK on to do dmg on players? Or maybe something at source?
	oh i forgot : tibia 8,6  tfs 0.4 rev 3777
	 
	Looks like its fault of that combat area cuz even whis staff makes dmg to player so whats wrong here ;x
	 
	Same, kame/flash blabla also do dmg to player w/o pk turned on ;x dunno what is going on, and yea ofc it generate skull after that but why it does dmg w/o pk turned on thats the prob
	 
	Maybe is it fault that worldtype = "open" ? so like pvp enforced?
	 
	I found this at source:[code]

    if(worldType == "open" || worldType == "2" || worldType == "openpvp")

    {

        g_game.setWorldType(WORLDTYPE_OPEN);

        std::clog << "Open PvP" << std::endl;

    }

    else if(worldType == "optional" || worldType == "1" || worldType == "optionalpvp")

    {

        g_game.setWorldType(WORLDTYPE_OPTIONAL);

        std::clog << "Optional PvP" << std::endl;

But then if i set to optional then even if i turn PK on on char, cant attack 2nd char image.gif.bcf19b83e2c6391119037a0db966e8c1.gif

Or maybe its possible with one of those errors?

Those are warnings while i compile source:

Well problem is i got pretty much of those warnings cuz i been trying to change skills etc and thats why im asking cuz my skills grows so fast even with config script for them+they have no limit ;/ one guy have 300+ fishing (energy def at my ots/ while i had it on windows it been fine, but now while using vps and compiled for linux thats happend ;x)

 

Okay so i post all i have of them for now:

 

luascript.h:

In file included from baseevents.h:22:0,


                 from actions.h:20,

                 from actions.cpp:20:

luascript.h: In member function ‘virtual bool Action::executeUse(Player*, Item*, const PositionEx&, const PositionEx&, bool, uint32_t)’:

luascript.h:277:106: warning: ‘<anonymous>.PositionEx::stackpos’ may be used uninitialized in this function [-Wmaybe-uninitialized]

  L, const PositionEx& position) {pushPosition(L, position, position.stackpos);}

        [/CODE]

As i guess its about push, works but dunno can it cause any bug?

 

game.cpp:

[CODE]game.cpp: In member function ‘bool Game::combatChangeHealth(CombatType_t, Creature*, Creature*, int64_t, MagicEffect_t, Color_t, bool)’:

game.cpp:4431:39: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘int64_t {aka long int}’ [-Wformat=]

    sprintf(buffer, "+%d", healthChange);

                                       ^

game.cpp:4456:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]

         if (random_range(1, 500) <= critx) //use that random function if it works for you, but I used to always use the uniform_random(int,int) func on tfs

             ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~

game.cpp:4483:38: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘int64_t {aka long int}’ [-Wformat=]

      sprintf(buffer, "%d", manaDamage);

                                      ^

game.cpp:4664:34: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘int64_t {aka long int}’ [-Wformat=]

      sprintf(buffer, "%d", damage);

                                  ^

game.cpp: In member function ‘bool Game::combatChangeMana(Creature*, Creature*, int64_t)’:

game.cpp:4697:37: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘int64_t {aka long int}’ [-Wformat=]

    sprintf(buffer, "+%d", manaChange);

                                     ^

game.cpp:4735:34: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘int64_t {aka long int}’ [-Wformat=]

    sprintf(buffer, "%d", manaLoss);

                                  ^

game.cpp: In constructor ‘Game::Game()’:

game.cpp:80:24: warning: iteration 2 invokes undefined behavior [-Waggressive-loop-optimizations]

   globalSaveMessage[i] = false;

   ~~~~~~~~~~~~~~~~~~~~~^~~~~~~

game.cpp:79:23: note: within this loop

  for(int32_t i = 0; i < 3; i++)

                     ~~^~~

In file included from game.cpp:18:0:

game.h: In member function ‘void Game::globalSave()’:

game.h:615:78: warning: iteration 2 invokes undefined behavior [-Waggressive-loop-optimizations]

setGlobalSaveMessage(int16_t key, bool value) {globalSaveMessage[key] = value;}

                                                ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~

game.cpp:6384:23: note: within this loop

  for(int16_t i = 0; i < 3; i++)

                     ~~^~~

[/CODE]

Most of them are int64 not 32, cuz of hp/mp% but the other? Ah and critical skill there too

 

 

item.cpp:

[CODE]item.cpp: In member function ‘virtual Attr_ReadValue Item::readAttr(AttrTypes_t, PropStream&)’:

item.cpp:649:10: warning: this statement may fall through [-Wimplicit-fallthrough=]

     break;

          ^

item.cpp:652:3: note: here

   default:

   ^~~~~~~[/CODE]

No idea

 

 

manager.cpp:

[CODE]

manager.cpp: In member function ‘virtual void ProtocolManager::parsePacket(NetworkMessage&)’:

manager.cpp:254:4: warning: this statement may fall through [-Wimplicit-fallthrough=]

    }

    ^

manager.cpp:257:3: note: here

   case MP_MSG_CHAT_REQUEST:

   ^~~~

[/CODE]

Same here...

 

monster.cpp:

[CODE]

monster.cpp: In member function ‘bool Monster::isFriend(const Creature*)’:

monster.cpp:315:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]

     if(creature->getPlayer() && !targetPlayers)

     ^~

monster.cpp:318:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’

  if(!isSummon() || !master->getPlayer())

  ^~

[/CODE]

delete if?

 

player.cpp:

[CODE]

player.cpp: In member function ‘int32_t Player::getWeaponSkill(const Item*) const’:

player.cpp:400:60: warning: left operand of comma operator has no effect [-Wunused-value]

    return getSkill(SKILL_SWORD, SKILL_LEVEL) && (SKILL_AXE,SKILL_LEVEL);

                                                            ^~~~~~~~~~~

player.cpp:406:60: warning: left operand of comma operator has no effect [-Wunused-value]

    return getSkill(SKILL_AXE, SKILL_LEVEL) && (SKILL_SWORD,SKILL_LEVEL);

                                                            ^~~~~~~~~~~

player.cpp:409:60: warning: left operand of comma operator has no effect [-Wunused-value]

    return getSkill(SKILL_AXE, SKILL_LEVEL) && (SKILL_SWORD,SKILL_LEVEL);

                                                            ^~~~~~~~~~~

player.cpp: In member function ‘virtual void Player::drainHealth(Creature*, CombatType_t, int64_t)’:

player.cpp:1870:143: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 3 has type ‘int64_t {aka long int}’ [-Wformat=]

s.", damage, (damage != 1 ? "s" : ""), attacker->getNameDescription().c_str());

                                                                              ^

player.cpp:1872:80: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 3 has type ‘int64_t {aka long int}’ [-Wformat=]

sprintf(buffer, "You lose %lld hitpoint%s.", damage, (damage != 1 ? "s" : ""));

                                                                              ^

player.cpp: In member function ‘virtual void Player::drainMana(Creature*, CombatType_t, int64_t)’:

player.cpp:1883:111: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘int64_t {aka long int}’ [-Wformat=]

na blocking an attack by %s.", damage, attacker->getNameDescription().c_str());

                                                                              ^

player.cpp:1885:46: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘int64_t {aka long int}’ [-Wformat=]

   sprintf(buffer, "You lose %d mana.", damage);

                                              ^

player.cpp: In member function ‘virtual void Player::onAttackedCreatureDrain(Creature*, int64_t)’:

player.cpp:3858:93: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 3 has type ‘int64_t {aka long int}’ [-Wformat=]

, "You deal %lld damage to %s.", points, target->getNameDescription().c_str());

                                                                              ^

player.cpp: In member function ‘virtual void Player::onSummonAttackedCreatureDrain(Creature*, Creature*, int64_t)’:

player.cpp:3867:124: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 4 has type ‘int64_t {aka long int}’ [-Wformat=]

%s.", summon->getName().c_str(), points, target->getNameDescription().c_str());

                                                                              ^

player.cpp: In member function ‘ItemVector Player::getWeapons() const’:

player.cpp:345:5: warning: this statement may fall through [-Wimplicit-fallthrough=]

     if(item->getAmmoType() != AMMO_NONE)

     ^~

player.cpp:348:4: note: here

    case WEAPON_SWORD:

    ^~~~

player.cpp: In member function ‘void Player::manageAccount(const string&)’:

player.cpp:4870:20: warning: iteration 11 invokes undefined behavior [-Waggressive-loop-optimizations]

       talkState[i] = false;

       ~~~~~~~~~~~~~^~~~~~~

player.cpp:4869:26: note: within this loop

      for(int8_t i = 2; i <= 14; i++)

                        ~~^~~~~

[/CODE]

As i said few of them are here cuz i changed skills from fist etc to crit blabla, and made to advance 2 skills from 1 weap

 

 

protocolgame.cpp:

[CODE]

protocolgame.cpp: In member function ‘void ProtocolGame::sendMagicEffect(const Position&, uint8_t)’:

protocolgame.cpp:2260:10: warning: comparison is always false due to limited range of data type [-Wtype-limits]

  if(type > MAGIC_EFFECT_LAST || !canSee(pos))

     ~~~~~^~~~~~~~~~~~~~~~~~~

protocolgame.cpp: In member function ‘void ProtocolGame::AddCreatureSpeak(NetworkMessage_ptr, const Creature*, SpeakClasses, std::__cxx11::string, uint16_t, uint32_t, Position*, ProtocolGame*)’:

protocolgame.cpp:2978:158: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]

CustomFlag(PlayerCustomFlag_HideLevel) && (pg == NULL || pg != NULL && !pg->getIsCast()))

                                                          ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~

[/CODE]

 

weapons.cpp:

[CODE]

weapons.cpp: In member function ‘bool Weapons::loadDefaults()’:

weapons.cpp:85:6: warning: this statement may fall through [-Wimplicit-fallthrough=]

      if(it->ammoType != AMMO_NONE)

      ^~

weapons.cpp:88:5: note: here

     case WEAPON_AMMO:

     ^~~~[/CODE]

Editado por kobrapl (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por matiasz123
      [OTCLIENT SHOWOFF] Questlog Actualizado
      Updated quest log, showing quest details:
      Npc name Npc level Npc outfit Mission status Description Amount of reward experience Number of reward points Enemies you must kill Items to collect  
       

       
      When you click on the follow button, an alternative map opens that shows you the next objective of the mission and at what coordinates:


       
      If you want the system write a comment with your discord
    • Por Mutio
      PokeDash by Pota TFS 1.2
      OTCv8
      Dialogue module by Gengo (Reworked)
       
      Hello everyone, would anyone be able to help me improve this dialogue system?
      When I have a lot of text, it expands, and there's a write effect. I made this primarily for myself, but you can also benefit from it.
      The problem is that if there's a lot of text, the window doesn't layout as I intended, specifically regarding the buttons. They get cut off, and I'd like the window to adjust its size based on the amount of text and buttons. For example, if there are 3 buttons, the window should not cut them off but should expand, adding a few pixels at the bottom to display the buttons correctly.
      Additionally, I've implemented a feature in the code to display items in the center if they are required for quests or anything an NPC might ask from the player. I'd like to make sure this feature also adapts correctly to the window size.
      Perhaps there is an expert in the OTC module who could guide me or correct and remove unnecessary code that I've written and is not needed. I must admit that I'm not a very skilled developer in OTC, but I managed to accomplish something. If someone can help me, I can share this dialogue system. (Modified version of Gengo)



      LUA:
       
      local npcWindowDialog local buttonHolder local lblTitle local outfitBox local panelMsg local scrollPanel local lblMessage local LabelText local itemBox local buttondialog local fadeOutEvent = nil local initialHeight = 200 function init() connect(g_game, { onGameEnd = offline }) connect(LocalPlayer, { onPositionChange = onCreaturePositionChange }) ProtocolGame.registerExtendedOpcode(80, function(protocol, opcode, buffer) print("Received extended opcode data: " .. buffer) local data = json.decode(buffer) if (data.action == "close") then offline() elseif (data.action == "create") then NpcDialog(data.data) end end) npcWindowDialog = g_ui.displayUI('npcdialog') buttonHolder = npcWindowDialog:getChildById('buttonHolder') lblTitle = npcWindowDialog:getChildById('lblTitle') scrollPanel = npcWindowDialog:getChildById('scrollPanel') panelMsg = npcWindowDialog:getChildById('panelMsg') outfitBox = npcWindowDialog:getChildById('outfitBox') itemBox = npcWindowDialog:getChildById('itemBox') buttondialog = npcWindowDialog:getChildById('buttondialog') lblMessage = g_ui.createWidget('LabelText', panelMsg) end function terminate() disconnect(g_game, { onGameEnd = offline }) disconnect(Creature, { onPositionChange = onCreaturePositionChange }) ProtocolGame.unregisterExtendedOpcode(80) removeEvent(npcWindowDialog.fadeEvent) npcWindowDialog:destroy() end function clearItemBox() itemBox:destroyChildren() end function offline() clearItemBox() buttondialog:destroyChildren() npcWindowDialog:hide() npcWindowDialog:setHeight(initialHeight) if fadeOutEvent then removeEvent(fadeOutEvent) end end function onCreaturePositionChange(creature, newPos, oldPos) if creature:isLocalPlayer() then clearItemBox() npcWindowDialog:setHeight(initialHeight) npcWindowDialog:hide() end end function openDialog() npcWindowDialog:raise() npcWindowDialog:show() npcWindowDialog:setOpacity(0) npcWindowDialog:setHeight(initialHeight) g_effects.fadeIn(npcWindowDialog, 150) if fadeOutEvent then removeEvent(fadeOutEvent) end fadeOutEvent = scheduleEvent(function() g_effects.fadeOut(npcWindowDialog, 150) end, 30000) end function writeTextEffect(lblMessage, text, delay, callback) lblMessage:clearText() local textSize = #text local initialHeight = npcWindowDialog:getHeight() for i = 1, textSize do scheduleEvent(function() lblMessage:setText(lblMessage:getText() .. text:sub(i, i)) local newHeight = initialHeight + lblMessage:getTextSize().height npcWindowDialog:setHeight(newHeight) end, delay * i) end end function NpcDialog(value) clearItemBox() local Npc = g_map.getCreatureById(value.npcId) lblTitle:setText(Npc:getName()) outfitBox:setOutfit(Npc:getOutfit()) lblMessage:clearText() writeTextEffect(lblMessage, tr(value.message), 15) scrollPanel:setVisible(lblMessage:getTextSize().height > panelMsg.limitText) local textLength = string.len(value.message) local windowHeight = textLength * 10 if value.items ~= nil then local itemHeight = 10 windowHeight = windowHeight + (#value.items * itemHeight) end local maxHeight = 800 if windowHeight > maxHeight then windowHeight = maxHeight end npcWindowDialog:setHeight(windowHeight) if value.items ~= nil then for _, itemId in ipairs(value.items) do local item = g_ui.createWidget('Item', itemBox) item:setItemId(itemId) end end buttondialog:destroyChildren() if value.options ~= '' then local option = value.options:split('&') for i = 1, #option do local button = g_ui.createWidget('OptionButton', buttondialog) button:setText(tr(option[i])) button:setWidth(500) button:setHeight(150) button:setVisible(false) button.onClick = function() g_game.talkChannel(MessageModes.NpcTo, 0, option[i]) npcWindowDialog:setHeight(initialHeight) button:setVisible(false) end end buttondialog:setHeight(#option > 25 and 88 or 25) scheduleEvent(function() for i, child in ipairs(buttondialog:getChildren()) do child:setVisible(true) g_effects.fadeIn(child, 500) end end, (#value.message * 8) + 500) end openDialog() end

      OTUI:

       
      LabelText < Label padding-bottom: 5 font: sans-bold-16px color: #e8c05e text-wrap: true text-auto-resize: true OptionButton < UIButton image-source: /images/ui/buttondialog image-repeated: true text-offset: 0 1 change-cursor-image: true cursor: pointer $pressed: image-color: #dfdfdf44 $disabled: image-color: #dfdfdf55 change-cursor-image: false UIWindow id: npcWindowDialog size: 690 381 visible: false focusable: false image-source: window image-repeated: false anchors.centerIn: parent @onEscape: modules.game_npcdialog.offline() Label id: lblTitle font: sans-bold-16px anchors.top: parent.top anchors.left: parent.left !text: tr('Title') margin: 18 0 5 25 color: #e8c05e text-auto-resize: true UICreature id: outfitBox size: 58 58 anchors.top: prev.bottom anchors.left: parent.left margin: 20 0 5 34 VerticalScrollBar id: scrollPanel height: 65 anchors.top: panelMsg.top anchors.left: panelMsg.right anchors.bottom: panelMsg.bottom pixels-scroll: true step: 14 margin-left: 5 visible: false ScrollablePanel id: panelMsg size: 0 60 anchors.top: lblTitle.bottom anchors.left: outfitBox.right anchors.right: parent.right margin: 8 30 10 25 vertical-scrollbar: scrollPanel layout: verticalBox &limitText: 80 UIItem id: itemBox size: 50 50 anchors.horizontalCenter: parent.horizontalCenter anchors.top: panelMsg.bottom layout: type: horizontalBox cell-size: 50 50 cell-spacing: 12 num-columns: 10 fit-children: true UIScrollArea id: buttondialog anchors.top: itemBox.bottom anchors.left: parent.left anchors.right: parent.right margin: 15 10 25 10 layout: type: grid cell-size: 500 42 flow: true fit-children: true
       

       


    • Por AddroJhonny
      Andei buscando de tudo que é forma para que o minimap fique com a imagem já liberada, assim como é no PxG. Porém, não encontrei em nenhum lugar alguma instrução. Comecei a mexer no arquivo minimap.lua e consegui avançar em algo.
       
      Meu script ficou assim:
      function updateCameraPosition() local player = g_game.getLocalPlayer() if not player then return end local pos = player:getPosition() if not pos then return end if not minimapWidget:recursiveGetChildById('posLabel') then local minimap = g_ui.createWidget('Minimap', minimapWidget) minimapWidget:setImageSource('/mapa/pisos/piso1') minimapWidget:setId('posLabel') minimapWidget:setOpacity(0.3) minimapWidget:centerInPosition(map, {x = 1015, y=1012, z=7}) end if not minimapWidget:isDragging() then if not fullmapView then minimapWidget:setCameraPosition(player:getPosition()) end minimapWidget:setCrossPosition(player:getPosition()) end minimapPos = minimapWindow:recursiveGetChildById('posLabel') minimapPos:setText('X:'..pos.x..' Y:'..pos.y..' Z:'..pos.z) if minimapWidget:getCameraPosition().z ~= 7 then local minimap = minimapWidget:recursiveGetChildById('posLabel') minimap:setVisible(false) minimapWidget:setColor('black') end end  
      Agora a imagem realmente está aparecendo no minimap com transparência... e quase perfeito. Mas ainda falta conseguir fazer ela acompanhar a posição do player no lugar de ficar aberto por inteiro.
       
      Segue como ficou:
       

       
      Alguém consegue ajudar a melhor maneira de fazer isso? Ou se fiz errado também...
       
      Ty.
    • Por PokemonXdemon
      .Qual servidor ou website você utiliza como base? 
      Servidor Pxu  versão 0.3.6
      Qual o motivo deste tópico? 
      Estou com cliente crashando dentro das quests
       
       
       

    • Por becertified
      Oi pessoal, gostaria de saber como posso mudar meu otc para um otcv8 com uma base poketibia tfs 0.3.6
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo