Jump to content
Gengo

[OtClient] Auto-Loot

Recommended Posts

Fala ai galera do xtibia estou aqui trazendo mais um module para o otClient.
Esses dias atras estavo jogando pokestorm e me deparei com o autoloot e decidi fazer um parecido com o deles e então pensei porque não trazer para a comunidade? Afinal não vejo muitos modulos de autoloot para otClient o unico que vi foi o autoloot da DxP, porem não é muito intuitivo comparado com modulo da pokestorm, bom sem mais enrolação vamos lá.

 

Feito o download do arquivo, coloque-o na pasta do seu otClient em /modules/ e pronto já é possível "utilizar-lo", porem com algumas exceções de algumas configurações básicas que temos que fazer para poder utilizar-lo com algumas eficiências.

 

Na pasta do seu otClient/data/ crie uma pasta chamada items e coloque o seus arquivos items.otb e items.xml.

Vai até a pasta do seu otClient/modules/game_things abre o arquivo things.lua e procure a função load(), e coloque o seguinte:

g_things.loadOtb ('/items/items.otb')
g_things.loadXml('/items/items.xml')

Obs: Não se assustem quando entrarem no client para logar, no inicio vai dar uma travada, mas depois de esperar uns segundos ele normaliza, pois o único problema é que o carregamento dos arquivos dos items eles são demorados.

 

Também é preciso fazer umas configurações rápida na parte do servidor para poder funcionar.


Copie e cole esse script e coloque na pasta do servidor em  mods/ e de o nome de autoloot.xml

Please login or register to see this spoiler.

 

Share this post


Link to post
Share on other sites
2 minutos atrás, Thalles Vitor disse:

Seus sistemas são excelentes! vou usa-lo, bom se não for pedir demais é possível que o autoloot funcione sem o button de autoloot?  no caso da imagem em png,quero que funcione sem botão se puder ajudar.

Você fala usar sem o topbutton que fica lá no topo?

 

Share this post


Link to post
Share on other sites

É só remover essa linha:

btnAutoLoot = modules.client_topmenu.addRightGameToggleButton('lootButton', tr('Auto-Loot'), 'loot', toggle)

E caso queira chamar pela tecla de atalho utilize essa:

g_keyboard.bindKeyPress('Ctrl+E', toggle)

 

Share this post


Link to post
Share on other sites
3 minutos atrás, Thalles Vitor disse:

data/creaturescripts/scripts/login.lua:onLogin
Description:
data/creaturescripts/scripts/login.lua:22: attempt to call global 'doSendPlayerExtendedOpcode' (a nil value)
stack traceback:
        data/creaturescripts/scripts/login.lua:22: in function <data/creaturescripts/scripts/login.lua:8>

E seu servidor tem suporte a opcodes?

Share this post


Link to post
Share on other sites
2 minutos atrás, Thalles Vitor disse:

Acho que sim ,meu servidor é base OTPokémon

Certeza? Me parece se não me engano o erro fala que vc não tem a função doSendPlayerExtendedOpcode e ainda manda algo nulo.

Ou então você deve ter configurado algo errado, por favor faça um teste com outra coisa só para tirar a duvida se vc tem essa função, já tem 2 servidores que testei esse autoloot e estão funcionando normal sem esse erro que vc cita.

Share this post


Link to post
Share on other sites
6 minutos atrás, Tiu Biel disse:

Oi amigo, coloquei tudo certinho no meu, mas ao matar o Pokémon ele não pega o loot selecionado na aba, sabe o por que?

Tenta outro autoloot da parte do servidor para poketibia e adapta para usar no módulo, como o autoloot que fica no servidor não foi eu que desenvolvi, não vou saber oque pode estar ocorrendo de errado no seu.

Share this post


Link to post
Share on other sites

@Gengo estou com o seguinte erro:

[16/01/2019 19:24:37] [Error - LuaScriptInterface::loadFile] data/creaturescripts/scripts/login.lua:21: unexpected symbol near 'ï'
[16/01/2019 19:24:37] [Warning - Event::loadScript] Cannot load script (data/creaturescripts/scripts/login.lua)
[16/01/2019 19:24:37] data/creaturescripts/scripts/login.lua:21: unexpected symbol near 'ï'


O código:
 

Please login or register to see this spoiler.

 

Share this post


Link to post
Share on other sites
2 horas atrás, Rookie disse:

@Gengo estou com o seguinte erro:

[16/01/2019 19:24:37] [Error - LuaScriptInterface::loadFile] data/creaturescripts/scripts/login.lua:21: unexpected symbol near 'ï'
[16/01/2019 19:24:37] [Warning - Event::loadScript] Cannot load script (data/creaturescripts/scripts/login.lua)
[16/01/2019 19:24:37] data/creaturescripts/scripts/login.lua:21: unexpected symbol near 'ï'


O código:
 

Please login or register to see this spoiler.

O erro que acontece é que quando cópia código daqui do forum e coloca em um editor, vem bugado, escreva manualmente ou atente-se os caracteres especiais do code que veio bugado do forum e corriga no seu.

Share this post


Link to post
Share on other sites
3 minutos atrás, braisvilela disse:

Aqui vai até a tela de Login, escolho o personagem e o jogo não loga, o que pode ser?

Devido o carregamento dos arquivo do item xml e otb, ele gera uma lentidão na hora de carregar, porem uma vez carregada ele fica normal, espere um pouco e veras que vai carregar, mas é logico se vc fez tudo certo.

Share this post


Link to post
Share on other sites
Citar


[06/02/2019 16:41:03] [Error - CreatureScript Interface]
[06/02/2019 16:41:03] data/creaturescripts/scripts/player/login.lua:onLogin
[06/02/2019 16:41:03] Description:
[06/02/2019 16:41:03] data/creaturescripts/scripts/player/login.lua:170: attempt to index global 'info' (a nil value)
[06/02/2019 16:41:03] stack traceback:
[06/02/2019 16:41:03]     data/creaturescripts/scripts/player/login.lua:170: in function <data/creaturescripts/scripts/player/login.lua:43>

Eu tenho um problema, eu recebo este erro, você poderia me ajudar?

Mylogin.lua


 

Citar

local config = {
    loginMessage = getConfigValue('loginMessage'),
    useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
}
local megasStones = {15131, 15133, 15136, 15793, 15783, 15781, 15794, 15784, 15780, 15792}
local megasToPlayer = {
    ["Alakazite"] = {id = 15131, megaID = "", pokeName = "Alakazam"},
    ["Blastoisinite"] = {id = 15133, megaID = "", pokeName = "Blastoise"},    
    ["Gengarite"] = {id = 15136, megaID = "", pokeName = "Gengar"},    
    
    ["Venusaurite"] = {id = 15793, megaID = "", pokeName = "Venusaur"},    
    ["Kangaskhanite"] = {id = 15783, megaID = "", pokeName = "Kangaskhan"},
    ["Tyranitarite"] = {id = 15781, megaID = "", pokeName = "Tyranitar"},
    ["Ampharosite"] = {id = 15794, megaID = "", pokeName = "Ampharos"},    
    ["Scizorite"] = {id = 15784, megaID = "", pokeName = "Scizor"},    
    
    ["Aggronite"] = {id = 15780, megaID = "", pokeName = "Aggron"},        
    ["Blazikenite"] = {id = 15792, megaID = "", pokeName = "Blaziken"},    
}


function BetaItem(cid)
    if getPlayerStorageValue(cid, storages.betaStorage) == -1 then
        addPokeToPlayer(cid, "Shiny Ditto", 0, nil, "poke", true)
        setPlayerStorageValue(cid, storages.betaStorage, 1)
        doSendMsg(cid, "Você ganhou um Shiny Ditto, uma TV Cam e uma Mega Stone para testalos a vontade.")
        
        item = doCreateItemEx(12330)
        doItemSetAttribute(item, "unique", getCreatureName(cid))
        doPlayerAddItemEx(cid, item)
        
        local mega = megasStones[math.random(1, #megasStones)]
        
        for a, b in pairs(megasToPlayer) do
            if mega == b.id then
                addPokeToPlayer(cid, b.pokeName, 0, nil, "shinyyume", true, a)
                break
            end
        end    
    end
end

function onLogin(cid)    

    
    doPlayerSetVocation(cid, 10)
    doSendPlayerExtendedOpcode(cid, 126, "nao")
    doResetPlayerTVSystem(cid)
    
    if not isGod(cid) then
       setPlayerGroupId(cid, 1)
       doRegainSpeed(cid)
    end
    
        if isGod(cid) then -- Resetar diarias se for God
            setPlayerStorageValue(cid, storages.miniQuests.storDayTask1, -1)
            setPlayerStorageValue(cid, storages.miniQuests.storDayTask2, -1)
            setPlayerStorageValue(cid, storages.miniQuests.storDayTask3, -1)
            setPlayerStorageValue(cid, storages.miniQuests.storDayTask4, -1)
        end
        
    if getPlayerLevel(cid) >= 1 and getPlayerLevel(cid) <= 10 then
       doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, 0)
    else     
       doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, (getPlayerLevel(cid) >= 200 and 100 or math.floor(getPlayerLevel(cid)/2)) )
    end

    doRegainSpeed(cid)
 print(getCreatureName(cid).. " Se ha conectado")
 --////// storages \\\\\\--
 setPlayerStorageValue(cid, 98988, 0)
   doEreaseDuel(cid)
   setPlayerStorageValue(cid, 500, -1)
   setPlayerStorageValue(cid, 8085, 0)
   --// duel
   setPlayerStorageValue(cid, storages.requestCountPlayer, 0)
   setPlayerStorageValue(cid, storages.requestCountPokemon, 0)
   setPlayerStorageValue(cid, storages.requestedPlayer, 0)
   --// duel
 --////// storages \\\\\\--
 
 --////// Eventos \\\\\\--
registerCreatureEvent(cid, "GodLight")
     registerCreatureEvent(cid, "ShowPokedex")
     registerCreatureEvent(cid, "ClosePokedex")
      registerCreatureEvent(cid, "Mail")
     registerCreatureEvent(cid, "WildAttack")
     registerCreatureEvent(cid, "GuildMotd")
     registerCreatureEvent(cid, "Idle")
     registerCreatureEvent(cid, "ReportBug")
     registerCreatureEvent(cid, "AdvanceSave")
     --Adicionados \/
     registerCreatureEvent(cid, "PlayerLogout")
     registerCreatureEvent(cid, "LookSystem")
     registerCreatureEvent(cid, "Opcode")
     registerCreatureEvent(cid, "EmeraldShop")
     registerCreatureEvent(cid, "PokeStats")
     registerCreatureEvent(cid, "PokeWalk")
     registerCreatureEvent(cid, "PokeSleep")
     registerCreatureEvent(cid, "MoveItem")
     registerCreatureEvent(cid, "UpLevel")
     registerCreatureEvent(cid, "BlockWords")
     --registerCreatureEvent(cid, "PartySystem")
     registerCreatureEvent(cid, "Target")
     registerCreatureEvent(cid, "GeneralConfiguration")
     registerCreatureEvent(cid, "EffectOnAdvance")
     registerCreatureEvent(cid, "TradeRequest")
     registerCreatureEvent(cid, "TradeAccpet")
     registerCreatureEvent(cid, "onAdvance")
     registerCreatureEvent(cid, "onAdvance2")
     registerCreatureEvent(cid, "onAdvance3")
     registerCreatureEvent(cid, "onAdvance4")
     registerCreatureEvent(cid, "onAdvance5")
 --////// Eventos \\\\\\--
 
    if(not isPlayerGhost(cid)) then
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
    end
   
local legs = getPlayerSlotItem(cid, CONST_SLOT_LEGS)
local ball = getPlayerSlotItem(cid, ?

    if getPlayerSlotItem(cid, CONST_SLOT_FEET).uid ~= 0 then
        doItemEraseAttribute(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid, "healthChanged")
    end
    --doOTCSendPokemonHealth(cid)
    --doClearPokemonStatus(cid)

    if isRiderOrFlyOrSurf(cid) and ball.uid ~= 0 then
    local pokeName = getItemAttribute(ball.uid, "poke")
    
                    if isInArray({"ditto", "shiny ditto"}, pokeName:lower()) then
                       pokeName = getItemAttribute(ball.uid, "copyName")
                    end
    
                     local outfit = getPokemonOutfitToSkill(pokeName)
                     local speed = getPokemonSpeedToSkill(pokeName)
                         doSetCreatureOutfit(cid, {lookType = outfit + 351}, -1)
                        
                         doChangeSpeed(cid, -getCreatureSpeed(cid))
                         doChangeSpeed(cid, speed)
                        
                         if isRider(cid) then
                            setPlayerStorageValue(cid, orderTalks["ride"].storage, 1)
                         elseif isFly(cid) then
                            setPlayerStorageValue(cid, orderTalks["fly"].storage, 1)
                              if not hasSqm(getThingPos(cid)) then
                              --   doCreateItem(460, 1, getThingPos(cid))
                              end
                         elseif isSurf(cid) then
                            setPlayerStorageValue(cid, orderTalks["surf"].storage, 1) -- rever o markedPos
                            doChangeSpeed(cid, -getCreatureSpeed(cid))
                            doChangeSpeed(cid, getPlayerStorageValue(cid, 54844))
                         end
                         doTeleportThing(cid, getMarkedSpawnPos(cid))
                         setPokemonGhost(cid)
    end                    
    
    setPlayerStorageValue(cid, storages.gobackDelay, -1)
    setPlayerStorageValue(cid, storages.pokedexDelay, -1)
    setPlayerStorageValue(cid, 154585, -1)
    doAddFirstItemsToPlayer(cid)
    --doAddShoppingItem(cid)
        
    -- otclient life
        doSendLifePokeToOTC(cid)
    -- otclient life
    
    local loot = ''
        for i = 1, #getPlayerStorageTable(cid, info.Storages[1]) do
        loot = loot..getItemInfo(getPlayerStorageTable(cid, info.Storages[1])).clientId..'-'..getItemNameById(getPlayerStorageTable(cid, info.Storages[1]))..'@'
end
doSendPlayerExtendedOpcode(cid, 157, loot)
    
    
    return true
end
function doAddFirstItemsToPlayer(cid)
local config = {
            storage = 30001,
            items = {1988, 1987, 2382, 2120, 2550, 2580, 7385, 2395}
            -- 7385 (pokeinfo)
            -- 2395 (portfoil)  ok
            -- 2382    (pokedex)    ok
            -- 2550 (order)        ok
            -- 1987 (bag)        ok
            -- 1988 (badge case)    ok
            -- 2120 (rope)        ok
            -- 2580 (fishing rod)    ok
        }
            setPlayerCap(cid, 7)
            if getCreatureName(cid) == "Account Manager" then
                doSetCreatureOutfit(cid, {lookType = 655}, -1)
            return true
            end
            if getPlayerStorageValue(cid, storages.BugFishing) ~= -1 then return true end
            
            if getPlayerSlotItem(cid, CONST_SLOT_ARMOR).itemid > 0 then
            return true
            end
            
            for _, id in ipairs(config.items) do
                doPlayerAddItem(cid, id, 1)
            end
            local bag = getPlayerItemById(cid, false, 1988).uid
            doAddContainerItem(bag, 12267, 1)
            doAddContainerItem(bag, 12266, 1)
            doAddContainerItem(bag, 12264, 1)
            doAddContainerItem(bag, 12265, 1)
            doAddContainerItem(bag, 12263, 1)
            doAddContainerItem(bag, 12262, 1)
            doAddContainerItem(bag, 12261, 1)
            doAddContainerItem(bag, 12260, 1)
            setPlayerStorageValue(cid, duelTable.wins, 0)
            setPlayerStorageValue(cid, duelTable.loses, 0)
            local pokeBag = getPlayerItemById(cid, false, 1987).uid
            setPlayerStorageValue(cid, storages.BugFishing, 1)
            doTeleportThing(cid, getTownTemplePosition(1), false)

return true
end

local itensShopping = {
    [1] = {{2394, 100}, {12344, 25}, {12286, 2}},
    [2] = {{2391, 200}, {2393, 100}, {2392, 100}},
    [3] = {{12832, 1}},
    [4] = {{12286, 1}},
    [5] = {premiumDays = 30}
}

function doAddShoppingItem(cid)
    local allItems = {}
    local compra = 0
    local msg = ""
    local result = db.getResult("SELECT itemID, compraID FROM playercompras WHERE playerID = '" .. getPlayerGUID(cid) .. "' AND entregue = 0")
    if result:getID() ~= -1 then
        compra = result:getDataInt("compraID")
        allItems[#allItems+1] = result:getDataInt("itemID")
        db.executeQuery("UPDATE playercompras SET entregue = 13 WHERE compraID = ".. compra ..";")
        while(result:next()) do
            allItems[#allItems+1] = result:getDataInt("itemID")
            compra = result:getDataInt("compraID")
            db.executeQuery("UPDATE playercompras SET entregue = 13 WHERE compraID = ".. compra ..";")
        end
    end
    
    if #allItems > 0 then
        for i = 1, #allItems do
            if allItems == 5 then
                doPlayerAddPremiumDays(cid, itensShopping[allItems].premiumDays)
                msg = "Seu pacote de '30 premium days' foi adicionado a sua conta com sucesso!"
                doSendMsg(cid, msg)
            else
            local bag = doCreateItemEx(12694) -- cubone bag de gratis
                for j = 1, #itensShopping[allItems] do
                    doAddContainerItem(bag, itensShopping[allItems][j][1], itensShopping[allItems][j][2])
                end
            
                doPlayerSendMailByName(getCreatureName(cid), bag, 1)
                msg = "Os itens que foram comprados pelo shopping foram enviados para seu cp."
                doSendMsg(cid, msg)
            end
        end
    end
end

function addSkillsToDB(cid)
        local str1 = "INSERT INTO player_skills (player_id, skillid, value, count) VALUES (" .. getPlayerGUID(cid) .. ", 5, 5, 0);"
        local str2 = "INSERT INTO player_skills (player_id, skillid, value, count) VALUES (" .. getPlayerGUID(cid) .. ", 6, 5, 0);"
            db.executeQuery(str1)
            db.executeQuery(str2)
end

 

Edited by Step Records

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Devatensei
      Otclient Mobile 740,760,772,800,810,854,860,1090,1099
      Server Testados
      carnage76.4vps.eu:7171 "760"🇵🇱
      Mdq.pl:7171 "772"🇵🇱
      Devlandot.eu:7171 "800"🇲🇫
      854"Só achei derivado"
      Baiak-pelego24hrs.online:7171 "860"🇧🇷
      Realots.pl:7171  "1090"🇵🇱
      Oceraglobal.servegame.com:7171 "1099"🇧🇷
      Link: "Mega"

      Please login or register to see this link.
      Arquivo:
      gen_signed.apk
      Tamanho:
      190,02MB
      Instagram.com/deva.tenseisk8

      Please login or register to see this attachment.
    • By mastof
      Please login or register to see this link.
      : Please login or register to see this link.


      PokeVerse vem com a proposta de não ser só mais um servidor que nasce e morre na mesma semana, estamos dedicados a torna-lo um dos maiores servidores, e para isso precisamos da ajuda de vocês, estamos trabalhando para fazer uma ClosedBeta ainda nesse mes, com previa de lançamento em Abril, nos acompanhe pelo: Please login or register to see this link.
      , iremos disponibilizar informações e atualizações por lá

      Facebook: Please login or register to see this link.
    • By wenderotpoke
      Não sei por que mas no meu client a funçao de usar um item da Hotkey no pokemon não pega.....

      Se eu colocar pra usar a potion no poke automaticamente ele abre o MultUse e eu tenho que clikar no poke para usar a pot, não está usando automaticamente mesmo com a função ativa
       
      Alguém pode me ajudar a resolver
       
       
      Obrigado desde já

      Please login or register to see this attachment.
    • By brazvct
      Eu que fiz pra um amigo, créditos são meus
      Não fiz modificações na source, se quiserem pode pegar src e vc14 do edubart no github

      Download: 
      Please login or register to see this link.
      Scan: 
      Please login or register to see this link.
      Tamanho: 6MB

      Como usar:
      1. TrocarIP:
      modules/client_entergame/entergame.lua
      Alterar: EnterGame.setUniqueServer('127.0.0.1', 7171, 772, 270, 210)
      127.0.0.1 = IP do SV, 772 = Versão do Client 

      2. Adicionar sua SPR e DAT
      Coloque em data/things/versão
       
      3. Alterar Links dos botões na tela inicial
      client_background/background.lua

      4. Alterar funções dos botões do cliente:
      game_inventory/inventory.lua

      Please login or register to see this attachment.

      Please login or register to see this attachment.
    • By sirvitor4
      Boa noite, rapaziada.
      Alguém saberia resolver esse problema que aparece no terminal do meu otclient?
       
      /game_topslot/topslot.lua:79 attempt to index a nill value
      in function game_topslot/topslot.lua:52
       

      Please login or register to see this attachment.
       
      Esse erro ocorre quando tento dar Dex em algum pokemon... A vara de pesca funciona normalmente
       
       

×
×
  • Create New...