Postado Janeiro 21, 2020 5 anos Queria pedir ajuda de vocês, procurei por toda a internet mas não achei essa talkaction, bom como funciona. O player vai digitar !auto spell,mana (!auto exura,20) exemplo, com 20 de mana o player vai soltar exura automatico, e irá comer food, é um sistema para treinar em oldserver, ai com o sistema !auto off ele irá dar clear na spell que estava, a base que estou usando é aqui do server. Alguém poderia me ajudar? Vi essa ideia no servidor tibia-old.com, vou postar oque acontece ao digitar os comandos. !auto >> 20:26 Parameters are necessary: <!auto spellwords, requiredManaToUse>. Use <!auto off> or <!auto exura, 25> for example. !auto exura,2000 >> 20:27 You are also automatically eating food now. Type !auto off to stop. !auto off >> 20:27 Auto spell/food eater off.
Postado Dezembro 2, 2021 3 anos Conseguimos chegar até uma talkaction que funciona, porém ainda tem alguns bugs: * Anti-idle não funciona * Magias de conjure (runas, flechas, etc) não funcionam Minha versão está ok para OTX 2 (TFS 0.3.7). Algum mago do LUA (alô @Vodkart) poderia nos auxiliar a finalizar o script. local players = {} local FOODS, MAX_FOOD = { [2328] = {84, "Gulp."}, [2362] = {48, "Yum."}, [2666] = {180, "Munch."}, [2667] = {144, "Munch."}, [2668] = {120, "Mmmm."}, [2669] = {204, "Munch."}, [2670] = {48, "Gulp."}, [2671] = {360, "Chomp."}, [2672] = {720, "Chomp."}, [2673] = {60, "Yum."}, [2674] = {72, "Yum."}, [2675] = {156, "Yum."}, [2676] = {96, "Yum."}, [2677] = {12, "Yum."}, [2678] = {216, "Slurp."}, [2679] = {12, "Yum."}, [2680] = {24, "Yum."}, [2681] = {108, "Yum."}, [2682] = {240, "Yum."}, [2683] = {204, "Munch."}, [2684] = {60, "Crunch."}, [2685] = {72, "Munch."}, [2686] = {108, "Crunch."}, [2687] = {24, "Crunch."}, [2688] = {24, "Mmmm."}, [2689] = {120, "Crunch."}, [2690] = {72, "Crunch."}, [2691] = {96, "Crunch."}, [2695] = {72, "Gulp."}, [2696] = {108, "Smack."}, [8112] = {108, "Urgh."}, [2787] = {108, "Crunch."}, [2788] = {48, "Munch."}, [2789] = {264, "Munch."}, [2790] = {360, "Crunch."}, [2791] = {108, "Crunch."}, [2792] = {72, "Crunch."}, [2793] = {144, "Crunch."}, [2794] = {36, "Crunch."}, [2795] = {432, "Crunch."}, [2796] = {300, "Crunch."} }, 1200 local function autoEat(cid) for food, foodinfo in pairs(FOODS) do if getPlayerItemCount(cid, food) > 0 then if getPlayerFood(cid) + foodinfo[1] * 3 < MAX_FOOD then doPlayerFeed(cid, foodinfo[1]) doPlayerRemoveItem(cid, food, 1) doCreatureSay(cid, foodinfo[2], TALKTYPE_MONSTER) end break end end end local function trainMana(cid, startTime) if not isPlayer(cid) then players[cid] = nil return end if not players[cid] or players[cid][3] ~= startTime then return end if getCreatureMana(cid) >= players[cid][2] then if not doCreatureCastSpell(cid, players[cid][1]) then doCreatureSay(cid, "Cannot cast spell.") players[cid] = nil return end local mana = getInstantSpellInfo(cid, players[cid][1]).mana doCreatureAddMana(cid, -(mana), false) doPlayerAddSpentMana(cid, mana, true) doCreatureSay(cid, getInstantSpellInfo(cid, players[cid][1]).words, TALKTYPE_MONSTER_SAY) end if getPlayerFood(cid) < 10 then -- if less then 10 seconds of food time left autoEat(cid) end --doPlayerSetIdleTime(cid, 0) addEvent(trainMana, 3000, cid, startTime) end local function showSpellList(cid) local t = {} for i = 0, getPlayerInstantSpellCount(cid) - 1 do local spell = getPlayerInstantSpellInfo(cid, i) if(spell.mlevel ~= 0) then if(spell.manapercent > 0) then spell.mana = spell.manapercent .. "%" end table.insert(t, spell) end end table.sort(t, function(a, b) return a.mlevel < b.mlevel end) local text, prevLevel = "", -1 for i, spell in ipairs(t) do local line = "" if(prevLevel ~= spell.mlevel) then if(i ~= 1) then line = "\n" end line = line .. "Spells for Magic Level " .. spell.mlevel .. "\n" prevLevel = spell.mlevel end text = text .. line .. " " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n" end doShowTextDialog(cid, 2175, text) end function onSay(cid, words, param, channel) if players[cid] then if players[cid][3] == os.time() then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Training cannot be stopped this quickly. Please wait a few seconds.") return true end players[cid] = nil doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Training has been stopped.") return true end if param == "" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spell name and mana threshold required. Ex: !train Light Healing, 400 | !train list -> will show list of owned spells") return true elseif param == "list" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Here is a list of your current spells.") showSpellList(cid) return true end local t = string.explode(param, ",") if t[1] == nil or t[2] == nil then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spell name and mana threshold required. Ex: !train Light Healing, 400") return true end t[1] = t[1]:lower() local spell for i = 0, getPlayerInstantSpellCount(cid) - 1 do spell = getPlayerInstantSpellInfo(cid, i) if spell.name:lower() == t[1] or spell.words:lower() == t[1] then t[1] = spell.name:lower() spell = true break end end if spell ~= true then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The spell (" .. t[1] .. ") does not exist.") return true end local manaThreshold = tonumber(t[2]) if manaThreshold == nil then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The mana threshold chosen (" .. t[2] .. ") is not a known number. Mana threshold has been set to your maximum mana.") manaThreshold = getCreatureMaxMana(cid) end manaThreshold = math.floor(manaThreshold) -- to get rid of any decimals player might have thrown in if manaThreshold < 0 or manaThreshold < getInstantSpellInfo(cid, t[1]).mana then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The mana threshold chosen (" .. t[2] .. ") is lower then the spell cost of the spell (" .. t[1] .. "). Mana threshold has been set to your maximum mana.") manaThreshold = getCreatureMaxMana(cid) elseif manaThreshold > getCreatureMaxMana(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The mana threshold chosen (" .. t[2] .. ") is higher then your maxmimum mana. Mana threshold has been set to your maximum mana.") manaThreshold = getCreatureMaxMana(cid) end players[cid] = {getInstantSpellInfo(cid, t[1]).name, manaThreshold, os.time()} doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Training has started! Spell: (" .. t[1] .. "), Mana Threshold: " .. manaThreshold .. "") trainMana(cid, os.time()) return true end
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.