Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Olá galerinha! Eu estou desenvolvendo um bot já faz um tempinho e já consegui fazer ele caminhar e atacar as criaturas, agora o problema é eu arrastar o loot da criatura para minha bp, eu já tentei usar algumas funções da API do Windows como o SendMessage, PostMessage mas não obtive exito, tbm tentei com mouse_event, esse ultimo funcionou mas precisa colocar as coordenadas relativas a minha tela e tbm preciso estar com a tela do tíbia em primeiro plano para funcionar.

Eu já usei o seguinte trecho de código:

SendMessage(tibia, WM_LBUTTONDOWN, 0, MAKELPARAM(x,y)); // Com x e y determinando um ponto onde está o loot

SendMessage(tibia, WM_LBUTTONUP, 0, MAKELPARAM(x,y)); // Com x e y determinando um ponto onde vou soltar o loot

E esse trecho por exemplo não funciona. Alguém com uma boa índole poderia me ajudar a resolver esse problema, como eu deveria agir para conseguir arrastar o loot? Obrigado a todos!

Link para o post
Compartilhar em outros sites

Existe um programa que captura todas as messages que uma tela recebe. (Como envio de controles de mouse / teclado)

O nome desse programa é "SPY++", serve perfeitamente para você entender como funciona o send/post messages.

The life is hard: No projects for a while.

 

adfly.350x19.1.png

Link para o post
Compartilhar em outros sites

Olá Aluccard! Eu abri o programa que você me indicou e verifiquei oq aconteceu quando arrastei, agora o problema que quando tento simular dessa forma o sendmessage me retorna false não sei exatamente o porquê, fiz como vi na simulação fiz dessa forma:

 

SendMessage( hwnd_tibia, WM_SETCURSOR, (WPARAM)hwnd_tibia, MAKELPARAM(HTCLIENT, WM_LBUTTONDOWN) );
PostMessage( hwnd_tibia, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(x_inicial, y_inicial) );

//Aqui tem os PostMessage que move o mouse

PostMessage( hwnd_tibia, WM_LBUTTONUP, 0x0, MAKELPARAM(x_final, y_final) );
SendMessage( hwnd_tibia, WM_SETCURSOR, (WPARAM)hwnd_tibia, MAKELPARAM(HTCLIENT, WM_MOUSEMOVE) );
PostMessage( hwnd_tibia, WM_MOUSEMOVE, 0x0, MAKELPARAM(x_final, y_final) );

Não sei se vc poderia me ajudar a solucionar o problema do sendmessage que seto o cursor para clicar com o botão esquerdo do mouse para depois postar a message do botão esquerdo do mouse pressionado em um tal coordenada em relação ao client do tibia onde fica a posição inicial do meu loot, depois aparece vários postmessage movimentando o mouse até a posição final e depois posto outra message para a coordenada final onde vou soltar o loot e depois envio outro send message para o mouse mover. Isso que descrevi foi oq eu observei no Spy++ e tentei replicar no meu código colocando todos os parâmetros certos. Se alguém poderia me ajudar a resolver o problema do sendmessage fica retornando false eu ficaria muito agradecido. Obrigado pela atenção de todos!
Editado por brunojbatista (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 Digoshow
      Ola eu instalei um scrip no meu otserv que e o Auto-loot, tudo certinho blz, mais eu queria editar o comando que e usado para diciona um item, o comando que esta e esse /aloot remove:2170 eu queria deixa assim /aloot remove, 2170 tirar os 2 pontos e deixa uma virgula e um espaco depois da virgula, alguem consegue editar pra mim porfavor:
      Scrip que estou usando : http://www.tibiaking.com/forum/topic/8172-sistema-auto-loot/
      Obrigado, REP+ !
    • Por Tricoder
      SCREENSHOT
      http://3.1m.yt/Zwo99Sdx.png
      http://4.1m.yt/oG_cwli8u.png
      ______________________________________________ COMANDOS
      !autoloot add, itemId ou name -- Adicionando um item na lista !autoloot remove, itemId or name -- Remover um item da lista !autoloot show -- Mostrar a lista do autoLoot !autoloot clear -- Limpar a lista do autoLoot ______________________________________________ SCRIPT data/global.lua
      -- AutoLoot config AUTO_LOOT_MAX_ITEMS = 5 -- Reserved storage AUTOLOOT_STORAGE_START = 10000 AUTOLOOT_STORAGE_END = AUTOLOOT_STORAGE_START + AUTO_LOOT_MAX_ITEMS -- AutoLoot config end talkactions/talkactions.xml
      <talkaction words="!autoloot" separator=" " script="autoloot.lua"/> talkactions/scripts/autoloot.lua
      function onSay(player, words, param) local split = param:split(",") local action = split[1] if action == "add" then local item = split[2]:gsub("%s+", "", 1) local itemType = ItemType(item) if itemType:getId() == 0 then itemType = ItemType(tonumber(item)) if itemType:getId() == 0 then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "There is no item with that id or name.") return false end end local itemName = tonumber(split[2]) and itemType:getName() or item local size = 0 for i = AUTOLOOT_STORAGE_START, AUTOLOOT_STORAGE_END do local storage = player:getStorageValue(i) if size == AUTO_LOOT_MAX_ITEMS then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "The list is full, please remove from the list to make some room.") break end if storage == itemType:getId() then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, itemName .." is already in the list.") break end if storage <= 0 then player:setStorageValue(i, itemType:getId()) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, itemName .." has been added to the list.") break end size = size + 1 end elseif action == "remove" then local item = split[2]:gsub("%s+", "", 1) local itemType = ItemType(item) if itemType:getId() == 0 then itemType = ItemType(tonumber(item)) if itemType:getId() == 0 then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "There is no item with that id or name.") return false end end local itemName = tonumber(split[2]) and itemType:getName() or item for i = AUTOLOOT_STORAGE_START, AUTOLOOT_STORAGE_END do if player:getStorageValue(i) == itemType:getId() then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, itemName .." has been removed from the list.") player:setStorageValue(i, 0) return false end end player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, itemName .." was not founded in the list.") elseif action == "show" then local text = "-- Auto Loot List --\n" local count = 1 for i = AUTOLOOT_STORAGE_START, AUTOLOOT_STORAGE_END do local storage = player:getStorageValue(i) if storage > 0 then text = string.format("%s%d. %s\n", text, count, ItemType(storage):getName()) count = count + 1 end end if text == "" then text = "Empty" end player:showTextDialog(1950, text, false) elseif action == "clear" then for i = AUTOLOOT_STORAGE_START, AUTOLOOT_STORAGE_END do player:setStorageValue(i, 0) end player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "The autoloot list has been cleared.") else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Use the commands: !autoloot {add, remove, show, clear}") end return false end creaturescripts/creaturescripts.xml
      <event type="kill" name="AutoLoot" script="autoloot.lua" /> creaturescripts/scripts/autoloot.lua
      local function scanContainer(cid, position) local player = Player(cid) if not player then return end local corpse = Tile(position):getTopDownItem() if not corpse then return end if corpse:getType():isCorpse() and corpse:getAttribute(ITEM_ATTRIBUTE_CORPSEOWNER) == cid then for i = corpse:getSize() - 1, 0, -1 do local containerItem = corpse:getItem(i) if containerItem then for i = AUTOLOOT_STORAGE_START, AUTOLOOT_STORAGE_END do if player:getStorageValue(i) == containerItem:getId() then containerItem:moveTo(player) end end end end end end function onKill(player, target) if not target:isMonster() then return true end addEvent(scanContainer, 100, player:getId(), target:getPosition()) return true end creaturescripts/scripts/login.lua
      player:registerEvent("AutoLoot") ______________________________________________ CRÉDITOS
      Printer
    • Por dragonxd
      Quando eu coloco novos monstros no meu ot tipo no pokemon eu não consigo colocar o loot dead dele quando ele morre ele deveria virar um corpo mais nesse caso qualquer um que eu faca novos no cliente vira um piso somente os que eu crio na configuracoes tipo vou criar um monstro faco  a spr de animacao normal, a spr de morte dele normal, configuro la no monsters.xml e crio o arquivo quando ele morre ele deveria virar um corpo mais vira piso msm eu sabendo que o spr e aquele.
       
       
      OBS EU TESTEI COM OS BICHOS QUE EU ADICIONEI TIPO SHINY DRAGONITE E O SHINY SALAMENCE tao com msm bugs unicos que eu tentei colocar

    • Por kinomoto
      Oi galera tudo bom? Estou com um problema..
      Estou precisando colocar no meu ot um script para que qualquer pessoa possa abrir o loot do bicho..
      Igual era antigamente, ao matar um bicho qlqr um poderia abrir o loot do bicho e arrastar o corpo...
      Alguém sabe como fazer isso?
    • Por capj26
      Boa tarde,
       
      Estou procurando incansavelmente aqui no forum por uma ajuda porém não encontrei.
       
      Estou com um OT Global, e quando eu pego gold coin de alguma criatura e coloco na BP, ele ocupa um slot dessa BP, porém quando pego mais gold coins e coloco em qualquer lugar na BP ele não soma com o que ja tem e ficam 2 slots ocupados com gold coins ao inves de se somarem, isso ocorre para todos os itens stackaveis.
       
      Poderiam me ajudar com isso por gentileza?
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo