Ir para conteúdo

moskitinho

Membro
  • Registro em

  • Última visita

  1. jeszao reagiu a uma resposta no tópico: [OTX 12.64] Baiak Styller
  2. moskitinho postou uma resposta no tópico em Anuncie seu OTServer
    Um servidor custom e com muitos recursos para você aproveitar. http://valdraken.servegame.com:8090 • A proposta é uma progressão linear e que cada conquista seja valorizada. • Mapa próprio desenvolvido pelo criador de conteúdo no YouTube TibiaEvodrael • Mais de 100 hunts. • Mais de 50 bosses com mecânicas customizadas. • Sistema de craft de itens (ao norte do templo). - Consiga tokens nos bosses. - Se aventure nas hunts e consiga o restante dos itens. • Sistema de upgrade com Legendary Tier. - Consiga jewel of bless, jewel of soul e jewel of chaos nas dungeons diárias. - Evolua seu item até o Legendary Tier 10. - Você vai ganhar HP, Mana, Chance de Crítico e até 30% mais dano. • Sistema de waypoints. - Explore o mapa e libere acesso rápido para suas hunts. • Forja • Whell of Destiny • Sistema de Tasks via ModalWidow - Na parte superior do DP • Addons e Mounts em diversas Box espalhadas pelo mapa - Consiga dinheiro ou tenha sorte e ganhe uma nova addon. • Venda todos os seus loots para o NPC Luc the Rich - Acima do templo. • Compre os principais itens de Imbuement com a NPC Brendolla - Acima do Depot. • Mapa de Thazoran • Mapa de Ahmun E você não pode perder os mistérios em Karazan! Uma área para level 1250+ e muitas hunts para você explorar.
  3. .Qual servidor ou website você utiliza como base? Canary 13.2x Qual o motivo deste tópico? Alguns itens mostram o level e vocação necessários para usar e outros simplesmente não mostram. Está surgindo algum erro? Se sim coloque-o aqui. Você tem o código disponível? Se tiver publique-o aqui: { -- boots of haste itemid = 3079, type = "equip", slot = "feet", level = 180, vocation = { {"Knight", true}, {"Paladin", true, true}, {"Elite Knight"}, {"Royal Paladin"} } }, { -- boots of haste itemid = 3079, type = "deequip", slot = "feet", level = 180 }, Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. Exemplo a boots of haste e a soft boots usam exatamente o mesmo código. Porém no jogo uma mostra o lvl e vocação necessários e a outra não. Isto está acontecendo com diversos itens. Por exemplo a paladin armor mostra. Crown armor, não. Mesmo editando o items.xml e movements.xml como acima.
  4. Revivendo porque preciso saber se chegou a ser lançado 🤔
  5. moskitinho reagiu a uma resposta no tópico: Npc Imbuiment item Seller
  6. Boa, muito obrigado pelo script! Troquei apenas a tag do remove por player:removeMoneyNpc("1000000") e adicionei o NCP funcionando 100%
  7. moskitinho postou uma resposta no tópico em Playground (Off-topic)
    Aqui esta normal, altero o IP e faço download tranquilo
  8. moskitinho postou uma resposta no tópico em Playground (Off-topic)
    Show! Muito obrigado. Estava dando uma olhada também eles possuem um serviço bacana de host, poderia pegar e passar às alterações que fiz no servidor.
  9. moskitinho reagiu a uma resposta no tópico: Criei o servidor e agora?
  10. moskitinho postou uma resposta no tópico em Playground (Off-topic)
    Fala mestre! É bem essa a ideia, tenho uma máquina disponível e fibra de 300MB bem estável. Eu segui um tutorial do Majestic mais sem sucesso. Tenho que entender como adicionar o ip ao client 12.6 para que os jogadores possam baixar no site e tudo mais.
  11. moskitinho reagiu a uma resposta no tópico: Dungeon Server
  12. moskitinho postou uma resposta no tópico em Playground (Off-topic)
    @FeeTads Valeuuu demais bro! O tutorial é bem explicado tava dando uma olhada. Eu tava querendo colocar online pelo windows só pra brincar mesmo.
  13. Kramer reagiu a uma resposta no tópico: Dungeon Server
  14. moskitinho postou uma resposta no tópico em Playground (Off-topic)
    Fala meus queridos! Bom galera fiz o download da base OTX 12.64 e se foi mais de um mês criando o mapa. Diversas hunts, bosses, ajustando pra deixar do jeito que eu gosto. Chegou na hora de deixar online que foi o terror, segui tutoriais e só passei raiva. Minha pergunta é a base esta pronta e se eu quiser contratar um host ele termina o serviço? Digo só pra colocar online o negócio mesmo. Se sim, onde encontro estes serviços? Criei aqui no off pois não é uma dúvida que se enquadra no suporte de OT.
  15. moskitinho postou uma resposta no tópico em Mapping Show Off
    Bom dia pessoal, O Dungeon Server é uma criação em que tenho trabalhado nos últimos meses. A ideia é ter um server acessível, sem quests de acesso, sem mecânicas complicadas e ao mesmo tempo sem ser mais um servidor High Exp com resets (rates como 50x são recomendadas). A cidade base é Thais, com algumas modificações para se adaptar a proposta do servidor. Adicionei NPCs que trocam Gold e Silver Tokens por addons, mounts e alguns itens. Atualmente o mapa conta com 70 respaws, alguns personalizados e outros tendo como base o mapa global e todos com acesso por TP. Também adicionei 20 bosses que foram cuidadosamente verificados para loots e danos ajustados para tornar os desafios justos aos players. Troquei quests por drops em bosses (ao invés da Demon Helmet Quest você pode desafiar Soul Reaper e dropar o item). Vou postar algumas fotos para que possam acompanhar o desenvolvimento. O que pretendo adicionar: - Cidade de Carlin - Mais 50 respawns para level 400+ Dúvidas: - Itens VIP realmente são necessários? - Cidade VIP é algo que atrai players? Vamos as fotos: Templo de Thais (dominado pelos servos de Azmodan) NPCs que compram praticamente todos os loots Novos NPCs para dar maior utilidade aos tokens Acesso aos respawns de forma intuitiva Acesso aos bosses para adquirir loots raros Respaws remodelados para uma melhor experiência de jogo e também invasão de Elites
  16. FeeTads reagiu a uma resposta no tópico: Mount Doll funcionando com 71 montarias
  17. @FeeTads ficou PERFEITO! Registrei o storage e sucesso! Mount Doll funcionando ?
  18. Qual servidor ou website você utiliza como base: OTX 12.64 Vamos lá pessoal procurei em todos os lugares algo parecido com um Mount Doll e não encontrei, então resolvi colocar a mão na massa e partir pra gambiarra baseado no script do Addon Doll. Basicamente é um script em que o player usa o item 37587 e recebe 71 montarias (deixei algumas de fora pra colocar em quests). Eu testei e funcionou! ? A gambiarra é que o script verifica o sexo do personagem o que não faz sentido algum, eu sei. E é nisto que preciso da ajuda de vocês. if getPlayerSex(cid) == 1 then for name, id in pairs(maleOutfits) do Gostaria que ao invés de verificar o sexo, ao usar o script o player ganhe o storage 64801 e se tentar usar novamente o script verifique se o player já possui o determinado storage. Abaixo segue o script atual pra quem quiser usar está funcionando sem bugs. local addondoll = Action() function addondoll.onUse(cid, item, toPosition, itemEx, fromPosition) local femaleOutfits = { ["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}, } local maleOutfits = { ["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 getPlayerSex(cid) == 1 then for name, id in pairs(maleOutfits) do doPlayerAddMount(cid, id[1]) doSendMagicEffect(getThingPos(cid), CONST_ME_FIREWORK_YELLOW) doRemoveItem(item.uid) end else for name, id in pairs(femaleOutfits) do doPlayerAddMount(cid, id[1]) doSendMagicEffect(getThingPos(cid), CONST_ME_FIREWORK_YELLOW) doRemoveItem(item.uid) end end return true end addondoll:id(37587) addondoll:register() Fico grato a quem puder ajudar!
  19. Qual servidor ou website você utiliza como base? OTX 12.64 Qual o motivo deste tópico? Fala pessoal olha eu aqui de novo, vou me virando como posso nos scripts, abro um por um e vou tentando montar as coisas que preciso. Neste caso meu NPC deveria trocar 100 gold token por 1 addon doll e 100 silver token por 1 item umbral. Ele realiza a troca porém o servidor registra o seguinte erro: Lua Script Error: [Npc interface] data/npc/scripts/garatoken.lua:onCreatureSay data/npc/scripts/garatoken.lua:30: attempt to call global 'getItemNameById' (a nil value) stack traceback: [C]: in function 'getItemNameById' data/npc/scripts/garatoken.lua:30: in function 'callback' data/npc/lib/npcsystem/npchandler.lua:433: in function 'onCreatureSay' data/npc/scripts/garatoken.lua:8: in function <data/npc/scripts/garatoken.lua:8> Estou usando o seguinte script: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local items = { item1 = {25377, 2322}, -- item1 item que será pedido e que será dado na primeira troca item2 = {25172, 22409} -- item2 item que será pedido e que será dado na segunda troca } local counts = { count1 = {100, 1}, -- count1 quantidade que será pedido e que será dado na primeira troca count2 = {100, 1} -- count2 quantidade que será pedido e que será dado na segunda troca } function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'addon doll') then if getPlayerItemCount(cid, items.item1[1]) >= counts.count1[1] then doPlayerRemoveItem(cid, items.item1[1], counts.count1[1]) doPlayerAddItem(cid, items.item1[2], counts.count1[2]) selfSay('You just swap '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..' for '.. counts.count1[2] ..' '.. getItemNameById(items.item1[2]) ..'.', cid) else selfSay('You need '.. counts.count1[1] ..' '.. getItemNameById(items.item1[1]) ..'.', cid) end elseif msgcontains(msg, 'umbral') then if getPlayerItemCount(cid, items.item2[1]) >= counts.count2[1] then doPlayerRemoveItem(cid, items.item2[1], counts.count2[1]) doPlayerAddItem(cid, items.item2[2], counts.count2[2]) selfSay('You just swap '.. counts.count2[1] ..' '.. getItemNameById(items.item2[1]) ..' for '.. counts.count2[2] ..' '.. getItemNameById(items.item2[2]) ..'.', cid) else selfSay('You need '.. counts.count2[1] ..' '.. getItemNameById(items.item2[1]) ..'.', cid) end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) O script funciona pórem gostaria de remover esse erro no console pra deixar ele 100% Podem fechar pessoal o erro era na função getItemNameById Como não faço questão destas refinarias eu troquei pra uma mensagem simples mesmo e dalê 100% funcional. Alias pra quem precisa de npc trocando Item X por Item Y fica abaixo o script caso você queira seguir adicionando vai precisar adicionar mais itens, counts e linhas 'elseif' e ir alterando o número nos locais, da pra entender olhando o script... local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local items = { item1 = {25377, 2322}, -- item1 item que será pedido / que será dado na primeira troca item2 = {25172, 22409}, -- item2 item que será pedido / que será dado na segunda troca item3 = {25172, 22403}, -- item3 item que será pedido / que será dado na segunda troca item4 = {25172, 22415}, -- item4 item que será pedido / que será dado na segunda troca } local counts = { count1 = {100, 1}, -- count1 quantidade que será pedido / que será dado na primeira troca count2 = {100, 1}, -- count2 quantidade que será pedido / que será dado na segunda troca count3 = {100, 1}, -- count3 quantidade que será pedido / que será dado na segunda troca count4 = {100, 1}, -- count4 quantidade que será pedido / que será dado na segunda troca } function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'addon doll') then if getPlayerItemCount(cid, items.item1[1]) >= counts.count1[1] then doPlayerRemoveItem(cid, items.item1[1], counts.count1[1]) doPlayerAddItem(cid, items.item1[2], counts.count1[2]) selfSay('You received addon doll.', cid) else selfSay('You need more silver tokens.', cid) end elseif msgcontains(msg, 'umbral axe') then if getPlayerItemCount(cid, items.item2[1]) >= counts.count2[1] then doPlayerRemoveItem(cid, items.item2[1], counts.count2[1]) doPlayerAddItem(cid, items.item2[2], counts.count2[2]) selfSay('You received Umbral Axe.', cid) else selfSay('You need more silver tokens.', cid) end elseif msgcontains(msg, 'umbral sword') then if getPlayerItemCount(cid, items.item3[1]) >= counts.count3[1] then doPlayerRemoveItem(cid, items.item3[1], counts.count3[1]) doPlayerAddItem(cid, items.item3[2], counts.count3[2]) selfSay('You received Umbral Sword.', cid) else selfSay('You need more silver tokens.', cid) end elseif msgcontains(msg, 'umbral club') then if getPlayerItemCount(cid, items.item4[1]) >= counts.count4[1] then doPlayerRemoveItem(cid, items.item4[1], counts.count4[1]) doPlayerAddItem(cid, items.item4[2], counts.count4[2]) selfSay('You received Umbral Club.', cid) else selfSay('You need more silver tokens.', cid) end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Podem fechar pessoal o erro era na função getItemNameById Como não faço questão destas refinarias eu troquei pra uma mensagem simples mesmo e dalê 100% funcional. Alias pra quem precisa de npc trocando Item X por Item Y fica abaixo o script caso você queira seguir adicionando vai precisar adicionar mais itens, counts e linhas 'elseif' e ir alterando o número nos locais, da pra entender olhando o script... local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local items = { item1 = {25377, 2322}, -- item1 item que será pedido / que será dado na primeira troca item2 = {25172, 22409}, -- item2 item que será pedido / que será dado na segunda troca item3 = {25172, 22403}, -- item3 item que será pedido / que será dado na segunda troca item4 = {25172, 22415}, -- item4 item que será pedido / que será dado na segunda troca } local counts = { count1 = {100, 1}, -- count1 quantidade que será pedido / que será dado na primeira troca count2 = {100, 1}, -- count2 quantidade que será pedido / que será dado na segunda troca count3 = {100, 1}, -- count3 quantidade que será pedido / que será dado na segunda troca count4 = {100, 1}, -- count4 quantidade que será pedido / que será dado na segunda troca } function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'addon doll') then if getPlayerItemCount(cid, items.item1[1]) >= counts.count1[1] then doPlayerRemoveItem(cid, items.item1[1], counts.count1[1]) doPlayerAddItem(cid, items.item1[2], counts.count1[2]) selfSay('You received addon doll.', cid) else selfSay('You need more silver tokens.', cid) end elseif msgcontains(msg, 'umbral axe') then if getPlayerItemCount(cid, items.item2[1]) >= counts.count2[1] then doPlayerRemoveItem(cid, items.item2[1], counts.count2[1]) doPlayerAddItem(cid, items.item2[2], counts.count2[2]) selfSay('You received Umbral Axe.', cid) else selfSay('You need more silver tokens.', cid) end elseif msgcontains(msg, 'umbral sword') then if getPlayerItemCount(cid, items.item3[1]) >= counts.count3[1] then doPlayerRemoveItem(cid, items.item3[1], counts.count3[1]) doPlayerAddItem(cid, items.item3[2], counts.count3[2]) selfSay('You received Umbral Sword.', cid) else selfSay('You need more silver tokens.', cid) end elseif msgcontains(msg, 'umbral club') then if getPlayerItemCount(cid, items.item4[1]) >= counts.count4[1] then doPlayerRemoveItem(cid, items.item4[1], counts.count4[1]) doPlayerAddItem(cid, items.item4[2], counts.count4[2]) selfSay('You received Umbral Club.', cid) else selfSay('You need more silver tokens.', cid) end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  20. @FeeTads aproveitando sua explicação, posso por exemplo usar seu sistema para que o player receba 1 addon por vez trocando sempre por 10 gold tokens por exemplo? E aproveitando existe uma forma de usar esse mesmo formato para dar montarias em troca de 10 silver tokens?
  21. Qual servidor ou website você utiliza como base? OTX 12.64 Qual o motivo deste tópico? O sistema funciona e o player consegue acessar a shrine e tem todas as opções de imbuement. Porém nos novos itens (Falcon, Cobra, Lion) os efeitos não são aplicados. Testei em uma crown armor, demon armor e fucnionou normal, life leech e etc. Dei uma olhada no xml dos imbuements e mesmo adicionando o ID dos itens não funciona. Os itens estão com slots no itens.xml. Teria outro lugar parar adicionar o ID dos itens novos? MESSAGEDIALOG_IMBUEMENT_ERROR = 1 MESSAGEDIALOG_IMBUEMENT_ROLL_FAILED = 2 MESSAGEDIALOG_IMBUING_STATION_NOT_FOUND = 3 MESSAGEDIALOG_CLEARING_CHARM_SUCCESS = 10 MESSAGEDIALOG_CLEARING_CHARM_ERROR = 11 -- tables Imbuements_Weapons = { ["armor"] = {21692, 2500, 2656, 2464, 2487, 2494, 2492, 2503, 12607, 2505, 32419, 2466, 23538, 10296, 2476, 3968, 2472, 7463, 8888, 23537, 2486, 15406, 8891, 18404, 38992, 38929, 38930,32419,28719}, -- ok ["shield"] = {34068, 2537, 2518, 15491, 2535, 2519, 25414, 2520, 15411, 2516, 32422, 32421, 30885, 2522, 2533, 21707, 2514, 10289, 2536, 6433, 6391, 7460, 2524, 15413, 2539, 25382, 21697, 3974, 10297, 12644, 10294, 2509, 2542, 2528, 2534, 2531, 15453, 38989, 38934}, -- ok ["boots"] = {34062, 24742, 2195, 2644, 9931, 3982, 11117, 15410, 11118, 12646, 7457, 7892, 2646, 11240, 2643, 7893, 7891, 23540, 24637, 2641, 5462, 18406, 2642, 2645, 7886, 25412, 21708, 11303, 35229, 36452, 38932, 38933}, --ok ["helmet"] = {34065, 2499, 2139, 3972, 2458, 2491, 2497, 2493, 2502, 12645, 32415, 7458, 2471, 10299, 20132, 10298, 2662, 10291, 2498, 24848, 5741, 25410, 2475, 11302, 35232, 36412, 38991}, --ok ["helmetmage"] = {10016, 2323, 11368, 8820, 10570, 9778, 32414, 30882, 36417}, -- ok ["bow"] = {34055, 25946, 30690, 8855, 7438, 32418, 15643, 21696, 10295, 18454, 25522, 8857, 22417, 22418, 8854, 36416, 38923, 38985}, -- ok ["crossbow"] = {25950, 8850, 2455, 30691, 8849, 25523, 8851, 8852, 8853, 16111, 21690, 22420, 22421, 35228, 38924}, -- ok ["backpack"] = {1988, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2365, 3940, 3960, 5801, 5926, 5949, 7342, 9774, 10518, 10519, 10521, 10522, 11119, 11241, 11243, 11244, 11263, 15645, 15646, 16007, 18393, 18394, 21475, 22696, 23666, 23816, 24740, 26181, 27061, 27063, 35056, 33318}, ["wand"] = {29005, 2191, 8920, 8921, 8922}, --ok ["rod"] = {8910, 8911, 24839}, --ok ["axe"] = {30686, 2429, 3962, 7412, 30687, 18451, 8926, 2414, 11305, 7419, 2435, 7453, 2415, 2427, 7380, 8924, 7389, 15492, 7435, 2430, 7455, 7456, 2443, 25383, 7434, 6553, 8925, 2431, 2447, 22405, 22408, 22406, 22409, 2454, 15451, 11323}, --ok ["club"] = {7414, 7426, 2453, 7429, 2423, 7415, 2445, 15647, 7431, 7430, 23543, 30689, 2444, 2452, 20093, 7424, 30688, 25418, 18452, 8928, 7421, 7392, 15414, 7410, 7437, 7451, 2424, 2436, 7423, 12648, 7452, 8929, 22414, 22411, 22415, 22412, 2421, 2391}, --ok ["sword"] = {7404, 7403, 7406, 12649, 30684, 7416, 2407, 2413, 7385, 7382, 2451, 7402, 8930, 2438, 32423, 2393, 7407, 7405, 2400, 7384, 7418, 7383, 7417, 18465, 30685, 2383, 2376, 7391, 6528, 8931, 12613, 11309, 22399, 22403, 22400, 22402, 7408, 11307, 35233}, --ok ["spellbooks"] = {25411, 2175, 8900, 8901, 22423, 22424, 29004, 34069, 34058, 34064, 38988}, -- ok ["special_strike"] = {32417, 32416, 30693, 30692, 32523, 32522, 34063, 38925, 38926}, --ok ["crit_wandrod"] = {35234, 38986}, ["life_wandrod"] = {35235, 38987}, ["elemental_swords"] = {30886, 34059, 34060, 36449, 38918, 38917, 38990}, ["elemental_axes"] = {32424, 35231, 39088, 38919, 38920, 37451}, ["elemental_clubs"] = {32425, 34057, 35230, 36415, 38922, 38921, 39089}, -- Note: if an armor has native protection, it can't be imbue with this protection ["armor_energy"] = {30883}, ["armor_only_energy"] = {34061}, ["armor_ice"] = {36414}, ["armor_earth"] = {34056, 36413}, ["armor_death"] = {15407, 36418, 38931} } local equipitems = { ["lich shroud"] = {"armor", "armor_energy", "armor_only_energy", "armor_ice", "armor_earth", "spellbooks", "shield"}, ["reap"] = {"axe", "club", "sword", "bow", "crossbow"}, ["vampirism"] = {"axe", "club", "sword", "wand", "rod", "special_strike", "bow", "crossbow", "armor", "armor_energy", "armor_only_energy", "armor_ice", "armor_earth", "armor_death", "elemental_swords", "elemental_axes", "elemental_clubs", "crit_wandrod"}, ["cloud fabric"] = {"armor", "armor_earth", "armor_death", "spellbooks", "shield"}, ["electrify"] = {"axe", "club", "sword", "bow", "crossbow"}, ["swiftness"] = {"boots"}, ["snake skin"] = {"armor", "armor_energy", "armor_only_energy", "armor_ice", "armor_death", "spellbooks", "shield"}, ["venom"] = {"axe", "club", "sword", "bow", "crossbow"}, ["slash"] = {"sword", "helmet", "elemental_swords"}, ["chop"] = {"axe", "helmet", "elemental_axes"}, ["bash"] = {"club", "helmet", "elemental_clubs"}, ["dragon hide"] = {"armor", "armor_energy", "armor_only_energy", "armor_ice", "armor_death", "spellbooks", "shield"}, ["scorch"] = {"axe", "club", "sword", "bow", "crossbow"}, ["void"] = {"axe", "club", "sword", "wand", "rod", "special_strike", "bow", "crossbow", "helmet","helmetmage", "elemental_swords", "elemental_axes", "elemental_clubs", "crit_wandrod", "life_wandrod"}, -- Mana ["quara scale"] = {"armor", "armor_only_energy", "armor_earth", "armor_death", "spellbooks", "shield"}, ["frost"] = {"axe", "club", "sword", "bow", "crossbow"}, ["blockade"] = {"shield", "helmet", "spellbooks", "shield"}, ["demon presence"] = {"armor", "armor_energy", "armor_only_energy", "armor_ice", "armor_earth", "armor_death", "spellbooks", "shield"}, ["precision"] = {"bow", "crossbow", "helmet"}, ["strike"] = {"axe", "club", "sword", "bow", "crossbow", "special_strike", "elemental_swords", "elemental_axes", "elemental_clubs", "life_wandrod"}, ["epiphany"] = {"wand", "rod", "helmetmage", "special_strike", "special_wand", "special_rod", "crit_wandrod", "life_wandrod"}, ["featherweight"] = {"backpack"}, } local enablingStorages = { ["lich shroud"] = Storage.ForgottenKnowledge.LadyTenebrisKilled, ["reap"] = Storage.ForgottenKnowledge.LadyTenebrisKilled, ["vampirism"] = Storage.ForgottenKnowledge.LadyTenebrisKilled, ["cloud fabric"] = Storage.ForgottenKnowledge.LloydKilled, ["electrify"] = Storage.ForgottenKnowledge.LloydKilled, ["swiftness"] = Storage.ForgottenKnowledge.LloydKilled, ["snake skin"] = Storage.ForgottenKnowledge.ThornKnightKilled, ["venom"] = Storage.ForgottenKnowledge.ThornKnightKilled, ["slash"] = Storage.ForgottenKnowledge.ThornKnightKilled, ["chop"] = Storage.ForgottenKnowledge.ThornKnightKilled, ["bash"] = Storage.ForgottenKnowledge.ThornKnightKilled, ["dragon hide"] = Storage.ForgottenKnowledge.DragonkingKilled, ["scorch"] = Storage.ForgottenKnowledge.DragonkingKilled, ["void"] = Storage.ForgottenKnowledge.DragonkingKilled, ["quara scale"] = Storage.ForgottenKnowledge.HorrorKilled, ["frost"] = Storage.ForgottenKnowledge.HorrorKilled, ["blockade"] = Storage.ForgottenKnowledge.HorrorKilled, ["demon presence"] = Storage.ForgottenKnowledge.TimeGuardianKilled, ["precision"] = Storage.ForgottenKnowledge.TimeGuardianKilled, ["strike"] = Storage.ForgottenKnowledge.LastLoreKilled, ["epiphany"] = Storage.ForgottenKnowledge.LastLoreKilled, ["featherweight"] = -1, } function Player.canImbueItem(self, imbuement, item) local item_type = "" for tp, items in pairs(Imbuements_Weapons) do if isInArray(items, item:getId()) then item_type = tp break end end local imb_type = "" for ibt, imb_n in pairs(enablingStorages) do if string.find(ibt, imbuement:getName():lower()) then imb_type = ibt break end end if imb_type == "" then print(">> [Imbuement::canImbueItem] Error on search imbuement '".. imbuement:getName() .. "'") return false end local equip = equipitems[imb_type] if not equip then print(">> [Imbuement::canImbueItem] Error on search Weapons imbuement '" .. imbuement:getName() .. "'") return false end local imbuable = false for i, p in pairs(equip) do if p:lower() == item_type then imbuable = true break end end if not imbuable then return false end local stg = enablingStorages[imb_type] if not stg then print(">> [Imbuement::canImbueItem] Error on search Storage imbuement '" .. imbuement:getName() .. "'") return false end if imbuement:getBase().id == 3 and not self:getGroup():getAccess() and stg > -1 and self:getStorageValue(stg) < 1 then return false end return true end -- Player functions function Player.sendImbuementResult(self, errorType, message) local msg = NetworkMessage() msg:addByte(0xED) msg:addByte(errorType or 0x01) msg:addString(message) msg:sendToPlayer(self) msg:delete() return end function Player.closeImbuementWindow(self) local msg = NetworkMessage() msg:addByte(0xEC) msg:sendToPlayer(self) end -- Items functions function Item.getImbuementDuration(self, slot) local info = 0 local binfo = tonumber(self:getCustomAttribute(IMBUEMENT_SLOT + slot)) if binfo then info = bit.rshift(binfo, 8) end return info end function Item.getImbuement(self, slot) local binfo = tonumber(self:getCustomAttribute(IMBUEMENT_SLOT + slot)) if not binfo then return false end local id = bit.band(binfo, 0xFF) if id == 0 then return false end return Imbuement(id) end function Item.addImbuement(self, slot, id) local imbuement = Imbuement(id) if not imbuement then return false end local duration = imbuement:getBase().duration local imbue = bit.bor(bit.lshift(duration, 8), id) self:setCustomAttribute(IMBUEMENT_SLOT + slot, imbue) return true end function Item.cleanImbuement(self, slot) self:setCustomAttribute(IMBUEMENT_SLOT + slot, 0) return true end

Informação Importante

Confirmação de Termo