Tudo que FeeTads postou
-
[Pedido] NPC Daily Kill.
basicamente sim, porém vai ter outras funções que são TFS, ai vc vai ter que meio que entender oq é TFS e oq é OTX kkkk, posso postar aqui o código certo qualquer hora, mas isso demoraria alguns dias pra eu refazer e testar, mas vai tentando refazer
-
(Resolvido)ajuda com enchanting
cara creio que seja esses for eles percorrem de 1 ao tamanho dos itens e transforma, se tu puder identar seu código e posta em spoiler seria mais facil pra eu visualizar e tentar te responder, mas a principio, tenta tirar os 2 for do seu código e testar
-
[Pedido] NPC Daily Kill.
tu pode usar o msm script, só adaptar mano, Player:get pra getPlayer ... não é muito dificil mas eh um pouco chato q vai demorar algumas horas de teste kkkkk
-
[Pedido] NPC Daily Kill.
sua distro eh TFS ou OTX? se for OTX não funciona msm teria que adaptar, oq não eh muito dificil, se for TFS é qual versão?
-
[Pedido] NPC Daily Kill.
cara o mais próximo que achei do que vc falou foi esse post aqui. https://tibiaking.com/forums/topic/100304-npc-daily-task-com-4-opções-diarias
-
Erro castle actions
é pq teu gsto, não ta recebendo nada mano o certo era getGlobalStorageValue(6565656), ai sim funcionaria normal, tem q ver daonde ele puxa essa global storage isso foi só um exemplo ta, ele precisa receber algum numero que ta no seu script. eu tenho aqui esse script 100% funcional, mas ele n tem o removeplayers, que no caso serve pra hunt do castelo, se vc não tiver hunt dentro do castelo posso te passar, ou se usar tbm, ai vc só precisar ajustar ele
-
Mount Doll funcionando com 71 montarias
@moskitinho tava revendo esse script, e percebi que se o player falar ou usar não sei, o script não ta checando se ele tem o itrm antes Então deveria ficar assim eu acho. if getPlayerStorageValue(cid, 64801) < 1 then if getPlayerItemCount(cid, item.uid) >= 1 then ... Não lembro ao certo se no playe item count é UID ou Item.itemID PORÉM, vc pode por o id do mount doll que vai funcionar Caso ele esteja funcionando somente com o doll desconsidere kkk, mas trnho quase ctz que esta funcionando e dando as mounts sem o doll
-
Mount Doll funcionando com 71 montarias
boa kkkk, não sei muito bem ainda como funciona revScript, mas to pegando o jeito kkkkk, agora só vai
-
Mount Doll funcionando com 71 montarias
local addondoll = Action() function addondoll.onUse(cid, item, toPosition, itemEx, fromPosition) local mounts = { ["Black Sheep"]={4}, ["War Bear"]={3}, ["Tamed Panda"]={19}, ["Crystal Wolf"]={16}, ["Undead Cavebear"]={12}, ["Siegebreaker"]={56}, ["Ringtail Waccoon"]={68}, ["Gnarlhound"]={32}, ["Ladybug"]={27}, ["Tiger Slug"]={14}, ["Widow Queen"]={1}, ["Rapid Boar"]={10}, ["Stampor"]={11}, ["Racing Bird"]={2}, ["Armoured War Horse"]={23}, ["Tundra Rambler"]={62}, ["Draptor"]={6}, ["Dragonling"]={31}, ["Jade Lion"]={48}, ["Kingly Deer"]={18}, ["Dromedary"]={20}, ["Donkey"]={13}, ["Water Buffalo"]={35}, ["Blazebringer"]={9}, ["Jade Pincer"]={49}, ["Undead Cavebear"]={12}, ["Titanica"]={7}, ["Manta"]={28}, ["Plumfish"]={80}, ["Tin Lizzard"]={8}, ["Walker"]={43}, ["Ironblight"]={29}, ["Magma Crawler"]={30}, ["Shock Head"]={42}, ["Flamesteed"]={47}, ["Doombringer"]={53}, ["Flitterkatzen"]={75}, ["Slagsnare"]={93}, ["Nightdweller"]={100}, ["Gorongra"]={98}, ["Mouldpincer"]={104}, ["Reed Lurker"]={109}, ["Sparkion"]={110}, ["Shadow Claw"]={114}, ["Dreadhare"]={117}, ["Stone Rhino"]={119}, ["Shadow Sphinx"]={122}, ["Jungle Saurian"]={123}, ["Blazing Unicorn"]={126}, ["Cranium Spider"]={129}, ["Marsh Toad"]={133}, ["Ebony Tiger"]={136}, ["Tawny Owl"]={140}, ["Lacewing Moth"]={143}, ["Festive Snowman"]={148}, ["Rabbit Rickshaw"]={151}, ["River Crocovile"]={154}, ["Gryphon"]={157}, ["Jousting Eagle"]={158}, ["Cerberus Champion"]={159}, ["Battle Badger"]={160}, ["Floating Sage"]={166}, ["Haze"]={169}, ["Antelope"]={170}, ["Snow Strider"]={171}, ["Eventide Nandu"]={178}, ["Spectral Horse"]={179}, ["Voracious Hyaena"]={180}, ["Krakoloss"]={184}, ["Rift Watcher"]={190}, } if getPlayerStorageValue(cid, 64801) < 1 then for name, id in pairs(mounts) do doPlayerAddMount(cid, id[1]) end doSendMagicEffect(getThingPos(cid), CONST_ME_FIREWORK_YELLOW) doRemoveItem(item.uid) setPlayerStorageValue(cid, 64801, 1) end return true end addondoll:id(37587) addondoll:register() creio que 12.64 é tfs 1.5, então pode ser que seja "Player:getStorage(64801)", porém acho q deve funcionar assim tbm bobiei não tinha lido que eh OTX, assim creio que vai funcionar normal caso não funcione posta o erro do console em spoiler pf
-
AutoLoot Sources pra Otx2 (modificando o script do naze)
salve rapaziada, do TK, esses tempos eu tava a procura de um autoloot bom e eficiente, e como vocês devem saber, o autoloot usado nos scripts .lua são bem "pesados" o @Naze fez um excelentíssimo trabalho e disponibilizou um script de autoloot na source, porém como a vida é dificil, ele tem alguns bugs de função e um deles é no "remove autoloot" que quando o player digita "!autoloot remove, nome-do-item" nada acontece, eu decidi mexer e vim disponibilizar arrumado pra vcs. LEMBRANDO QUE 100% DOS CRÉDITOS SÃO AO @Naze porém se vc procurar no tópico dele ainda vai estar bugado, então resolvi deixar aqui certinho pra ajudar quem precisar. Link do tópico do naze: https://tibiaking.com/forums/topic/101086-otimizado-autoloot-in-sources-for-otx2-ou-menor/ caso alguém ja utilize esse autoloot e esteja com o problema de remover items do autoloot só ir em player.cpp e trocar isso: void Player::removeAutoLoot(uint16_t id) { if(checkAutoLoot(id)) { return; } AutoLoot.remove(id); } por isso: void Player::removeAutoLoot(uint16_t id) { if(!checkAutoLoot(id)) return; for(std::list<uint16_t>::iterator it = AutoLoot.begin(); it != AutoLoot.end(); ++it) { if((*it) == id) { AutoLoot.erase(it); break; } } } todos os créditos ao Naze, não sei se alguém mais fez esse código, mas como peguei do link citado acima que é post dele deixo aqui o autoloot 100% funcional direto nas sources
-
Como removo o limite da barra de vida e mana?
mano, não tem como remover pq 65536 é a quantidade maxima de bits que o tibia 8.6 suporta, não tem como modificar isso, pelo menos no OT 8.6, oq vc pode fazer é colocar a vida em porcentagem, ai vai ficar 100/100 indicando a porcentagem de vida da pessoa. esse link aki do TK ensina como fazer.
-
procuro DataBase Clean, só com o necessário
Salve rapaziada do TibiaKing, estou a procura de uma database clean, mysql, pra poder resetar meu OT, a minha database depois de um tempo, o save fica pesado e demora +5 segundos pra executar, então to a procura de uma database, limpa que eu possa adicionar as coisas necessárias e que tenha só o necessário. DB = MySql, phpmyadmin Site = Gesior pra OTX 2x
-
(Resolvido)Erro Em Globalevents
boa mano, obrigado pela dica, eu não curto mt usar o print, mas vou começar que isso ajuda mt msm, principalmente em scripts que usam data e hora e são mais de 1
-
(Resolvido)Erro Em Globalevents
kkkkkkkkk tmj mano qualquer coisa só postar, se eu ver e estiver ao meu alcance to ai pra ajudar
-
(Resolvido)Erro Em Globalevents
troca isso local invasion = configInv[tostring(os.date("%X"))(1, 5)] por isso também local invasion = configInv[tostring(os.date("%X")):sub(1, 5)]
-
(Resolvido)Erro Em Globalevents
@Thony D. Serv cara, creio que seja pq vc n botou return true ali kkkkkkkkkkkkkkkkkkk function onThink(interval, lastExecution) local invasion = configInv[tostring(os.date("%X"))(1, 5)] if invasion then setWorldType(WORLD_TYPE_NO_PVP) doBroadcastMessage(invasion.nombre .. " inicia em 1 minutos.") addEvent(executeInvasion, 1000 * 60 * 1, invasion) addEvent(setWorldType, 1000 * 60 * noPvpDelay, WORLD_TYPE_PVP) end end no lugar disso bota isso function onThink(interval, lastExecution) local invasion = configInv[tostring(os.date("%X"))(1, 5)] if invasion then setWorldType(WORLD_TYPE_NO_PVP) doBroadcastMessage(invasion.nombre .. " inicia em 1 minutos.") addEvent(executeInvasion, 1000 * 60 * 1, invasion) addEvent(setWorldType, 1000 * 60 * noPvpDelay, WORLD_TYPE_PVP) end return true end
-
(Resolvido)Erro Em Globalevents
mostra o erro do console em spoiler
-
(Resolvido)Erro Em Globalevents
hmm, nesse quesito faz sentido, mas ai você poderia colocar 20s e botar doBroadcastMessage(tab_val.text, MESSAGE_STATUS_CONSOLE_RED) ai vai aparecer no chat Default do player, mas do jeito q vc explicou também funciona kkkkk, boa mano, só vai agora
-
(Resolvido)Erro Em Globalevents
local msg = { ["Monday"] = { --Segunda ['19:00'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:05'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:10'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:15'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:20'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:25'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:29'] = {text = 'Evento Up Acaba Em 1 Minuto', type = 21}, }, ["Wednesday"] = { --Quarta ['19:00'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:05'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:10'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:15'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:20'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:25'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:29'] = {text = 'Evento Up Acaba Em 1 Minuto', type = 21}, }, ["Saturday"] = { --Sabado ['19:00'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:05'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:10'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:15'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:20'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:25'] = {text = 'Evento Up Aberto No Segundo Andar Do Temple', type = 21}, ['19:29'] = {text = 'Evento Up Acaba Em 1 Minuto', type = 21}, }, } function onThink(interval, lastExecution) if msg[os.date("%A")] then hours = tostring(os.date("%X")):sub(1, 5) tab_val = msg[os.date("%A")][hours] if tab_val then return tab_val and doBroadcastMessage(tab_val.text, tab_val.type) or true end end return true end tenta esse script, mudei pra ele checar o dia logo no começo, diferente do seu que recebe data e hora antes de checar kkk, acho q assim deve funcionar e alias monday é segunda e Wednesday é quarta kkkkkkk, isso pode te atrapalhar depois, arrumei no script, vai que sla e creio também que Type = 21 pra broadcast não funciona, tem que colocar no lugar desse tab_cal.type o tipo de message, tipo doBroadcastMessage(tab_val.text, MESSAGE_STATUS_CONSOLE_RED) e vc tem ctz que quer esse script mandando a cada 5s na tela de todos mano? eu acho isso meio poluido sabe, magina em 1 minuto aparecer 12 mensagens dessa que duram 5s, a mensagem nem vai sair da tela durante o minuto todo, se eu fosse vc, ja que tem 7 horarios com aviso, colocaria o interval em 20000, que seria 20s, seria mais clean, isso é só minha opnião kkk as vezes a cada 5s eh melhor, mas ai eh com vc
-
Magic Wall Bug
o char fica indo pra cima e voltando pra tras? como um PK tentando entrar no PZ? ou ele sobe em cima? se ele ficar subindo e voltando tem que modificar na source o magicfield
-
(Resolvido)Erro Em Globalevents
no lugar desse msg[day][hours] bota isso if (msg[day][hours]) ~= nil then
-
ajustar remove item
sim, no começo onde tem "itemsID" ali vc bota os ID's que quiser, tipo 9693 do addon doll, e 10000, por exemplo, ai todos os addons q os players quiserem fazer vai precisar desses 2 items, e de montaria, creio que esse script ja n funcione, pq não sei como funciona as montarias do 9x+ por script, até onde eu sei esse script q te mandei só da addon mesmo, agora se teu OT for aqueles que o addon tem uma montaria, ai sim esse script funciona tbm existe sim, porém seria outro script, mas ai eu ja n manjo mt
-
ajustar remove item
local itemsID = {9693, 10503} local maleOutfits = {["addon"] = {273}} local femaleOutfits = {["addon"] = {270}} -- aqui abaixa ta comentado a minha lista de addons, só descomentar e comentar o de cima que funciona pra todos esses addons --como o seu só da 1 addon, esse dará todos em 1 só arquivo --local femaleOutfits = { ["citizen"]={136}, ["hunter"]={137}, ["mage"]={138}, ["knight"]={139}, ["nobleman"]={140}, ["summoner"]={141}, ["warrior"]={142}, ["barbarian"]={147}, ["druid"]={148}, ["wizard"]={149}, ["pirate"]={155}, ["assassin"]={156}, ["shaman"]={158}, ["nightmare"]={269}, ["brotherhood"]={279}, ["demonhunter"]={288}, ["yalaharian"]={324} } --local maleOutfits = { ["citizen"]={128}, ["hunter"]={129}, ["mage"]={130}, ["knight"]={131}, ["nobleman"]={132},["summoner"]={133}, ["warrior"]={134}, ["barbarian"]={143}, ["druid"]={144}, ["wizard"]={145}, ["pirate"]={151}, ["assassin"]={152}, ["shaman"]={154}, ["nightmare"]={268}, ["brotherhood"]={278}, ["demonhunter"]={289}, ["yalaharian"]={325} } local msg = {"Este addon não existe!", "Você precisa ter o "..getItemNameById(itemsID[1]).." para trocar no addon.", "Parâmetro incorreto!", "Você liberou um novo addon"} function onSay(cid, words, param) local param = string.lower(param) if(getPlayerItemCount(cid, itemsID[1]) > 0) then if (getPlayerItemCount(cid, itemsID[2]) > 0) then if(param ~= "" and maleOutfits[param] and femaleOutfits[param]) then for i=1, #itemsID do doPlayerRemoveItem(cid, itemsID[i], 1) end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg[4]) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_GIFT_WRAPS) if(getPlayerSex(cid) == 0)then doPlayerAddOutfit(cid, femaleOutfits[param][1], 3) else doPlayerAddOutfit(cid, maleOutfits[param][1], 3) end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg[1]) end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não possui o item "..getItemNameById(itemsID[2]).."!") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg[2]) end end @carloos creio que esse funcione, ele checa se o player tem os 2 items, se tiver ele da o addon e remove os 2 items, PORÉM, aonde ta local maleOutfits = {["addon"] = {273}} local femaleOutfits = {["addon"] = {270}} o "addon" precisa ser trocado pro nome do outfit mesmo, ali vc deve botar tipo "mage", pq ai quando a pessoa digitar "!addon mage" vai entrar nesse script se não a pessoa vai ter que digitar "!addon addon" no caso que eu comentei, vai dar todos, mas 1 por vez kkk, 2 items = 1 addon, vai ficar mais simples pra vc
-
npc que pode ser protegido de ser morto
até onde sei, você poderia fazer um monstro com algum creaturescript que anda tal posição após falar com ele, e que seja sumon, não sei se isso seria possivel, e se for, creio q seria extremamente complexo kkkkkk
-
( PEDIDO ) Upgrader Vip & Donate
o pior que eu fiz um que funciona só no creatureScript e DataBase mano kkkkkk ainda mostra no site, se quiser posso te passar boa mano, ja ajuda quem precisar, vai ser bom pra comunidade kkkkkkkkkk, pior que eu to aprendendo muita coisa com .lua, sou programador mas mexo com lua faz 1 mes, ai usei teu pedido ai como cobaia tbm kkkkkkkkk, tmj mano, quando precisar de alguma ajuda chama discord ou marca em algum post, o woox e o vodkart dificilmente vão responder os caras são bem ocupados