Ir para conteúdo
  • Cadastre-se

Wise

Membro
  • Total de itens

    1090
  • Registro em

  • Última visita

  • Dias Ganhos

    7

Tudo que Wise postou

  1. Não sei dizer os valores exatos, mas você pode calcular alterando os parâmetros que compõem a função que seta a fórmula/valores do combat: setCombatFormula(combat, type, mina, minb, maxa, maxb) Corrigi os valores da fórmula Acredito que para um servidor global, seria adequado (veja se te agrada, senão, vá alterando os valores até): setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -60, -1, -60, 5, 5, 4, 7)
  2. Ops! Falha minha, esqueci dos parâmetros da função rs local positions = { ["Treiners"] = {x = 409, y = 805, z = 7}, ["Treiners"] = {x = 344, y = 738, z = 7}, ["Treiners"] = {x = 650, y = 844, z = 7}, ["Treiners"] = {x = 757, y = 826, z = 7}, ["Treiners"] = {x = 1017, y = 709, z = 6}, ["Treiners"] = {x = 1041, y = 560, z = 6}, ["Treiners"] = {x = 800, y = 554, z = 6}, ["Treiners"] = {x = 793, y = 709, z = 7}, ["Treiners"] = {x = 796, y = 428, z = 6}, ["Treiners"] = {x = 790, y = 357, z = 6}, ["Treiners"] = {x = 547, y = 218, z = 7}, ["Treiners"]
  3. Você declarou ao for, uma variável dentro de uma tabela inexistente. E aplicou à função doSendMagicEffect uma variável que também não foi declarada. Tente: local positions = { ["Treiners"] = {x = 409, y = 805, z = 7}, ["Treiners"] = {x = 344, y = 738, z = 7}, ["Treiners"] = {x = 650, y = 844, z = 7}, ["Treiners"] = {x = 757, y = 826, z = 7}, ["Treiners"] = {x = 1017, y = 709, z = 6}, ["Treiners"] = {x = 1041, y = 560, z = 6}, ["Treiners"] = {x = 800, y = 554, z = 6}, ["Treiners"] = {x = 793, y = 709, z = 7}, ["Treiners"] = {x = 796, y = 428, z = 6}, [
  4. Não havia lido. Apenas adicione o atributo do tipo preventDrop com valor positivo/true (1) à tag do item.
  5. off.lua (data/talkactions/scripts): local stor = 54321 function ariseText(cid) local time = 2 -- seconds to repeat the function local text = 'ausente' if isPlayer(cid) then doSendAnimatedText(getCreaturePosition(cid), text, math.random(0, 255)) if getPlayerStorageValue(cid, stor) > 0 then addEvent(ariseText, time * 1000, cid) end end return true end function onSay(cid) if getPlayerStorageValue(cid, stor) < 1 then setPlayerStorageValue(cid, stor, 1) doCreatureSetNoMove(cid, true) ariseText(cid)
  6. Observe que os erros foram: [...] Cannot open.. / Cannot load script.. / No such file or directory.. [...] Ou seja, você não deve ter configurado corretamente o diretório ou nome do arquivo Lua, já que não é possível abri-lo/carregá-lo/encontrá-lo. Verifique a tag e o nome dado aos arquivos, refaça os processos e se tiver o mesmo resultado, informe as tags aqui.
  7. Basta alterar o parâmetro da tag da vocação desejada, onde está needpremium, mude para o valor 1. needpremium="1"
  8. Bem interessante, gostei da ideologia do evento em si. Dá pra gerar vários outros sistemas a partir desses códigos, com certeza contribuirá muito. Não necessariamente, TFS 1.0 também executa essas funções. Só que nos códigos acima, o parâmetro referente ao creature ID (cid) foi definido para como sendo player, basta alterar ;]
  9. idletile.lua (data/creaturescripts/scripts): function onThink(cid, interval) local kicktime = 10 local tileactionid = 54321 local idletime = getPlayerIdleTime(cid) + interval if getTileThingByPos(getCreaturePosition(cid)).actionid == tileactionid then if getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_ALLOWIDLE) then return true end doPlayerSetIdleTime(cid, idletime) if idletime > kicktime * 60 * 1000 then doRemoveCreature(cid) end end return true end Tag - creaturescripts.xml (data/creaturescripts): <event
  10. Tente: function onStepIn(cid) local items = {1903, 1904, 1905} for posx = 490, 496 do for posy = 498, 503 do local pos = {x=posx, y=posy, z=5} for i = 1, #items do local limpar = getTileItemById(pos, items[i]) if limpar.uid > 0 then doRemoveItem(limpar.uid) end end end end return true end
  11. Adicione à lib do seu servidor: string.explode = function (str, sep, limit) if(type(sep) ~= 'string' or isInArray({tostring(str):len(), sep:len()}, 0)) then return {} end local i, pos, tmp, t = 0, 1, "", {} for s, e in function() return string.find(str, sep, pos) end do tmp = str:sub(pos, s - 1):trim() table.insert(t, tmp) pos = e + 1 i = i + 1 if(limit ~= nil and i == limit) then break end end tmp = str:sub(pos):trim() table.insert(t, tmp) return t end Se não me engano, no TFS
  12. Falha minha, um erro de atenção, e sim, provavelmente foi isso mesmo. Agora que notei que eu errei ao declarar uma variável na tabela. Códigos da action: function onUse(cid, item) local gstor = 54321 if getGlobalStorageValue(gstor) < 1 then return doPlayerSendCancel(cid, "This system is disabled.") end if getItemAttribute(item.uid, "corpseowner") ~= cid then return doPlayerSendCancel(cid, "You're not the owner.") end local items = {} for x = 0, (getContainerSize(item.uid)) do local iten
  13. Veja: if getGlobalStorageValue(gstor) < 1 then return doPlayerSendCancel(cid, "This system is disabled.") end Caso a estrutura de controle seja true, ou seja, caso o valor da global storage seja menor que 1 (desativado), então retornará aquela mensagem. Aqui: local t = { ['enabled'] = {evalue = 1, dvalue = 0, msg = {'The action is now enabled.', 'The action is already enabled.'}}, ['disabled'] = {evalue = 0, dvalue = 1, msg = {'The action is now disabled.', 'The action is already disabled.'}} } Caso o parâmetro usado seja enabled e a global storage for
  14. Cara, o escopo que envolve a checagem da global storage só envia a mensagem caso o mesmo seja true, não tem nada a ver. E usando somente a storage, não vai dar pra determinar um "controle" geral da action, a storage se aplica em um creature ID específico e não para todos (como a global storage). O problema estava no valor da global storage, acabei esquecendo que por padrão (caso não esteja sendo usada em algum outro script), seria menor que 1 e resultaria nisso. Não tinha necessidade de eu postar uma tag, já que você tem esse action script, bastava substituir os códigos do mesm
  15. @lordmentos Se o seu pedido foi atendido, por favor clique no botão que está localizado abaixo do post de quem te ajudou. Automaticamente ele irá ficar destacado como a melhor resposta e o tópico ficará com o prefixo "Resolvido" no início do título.
  16. Habilitar/desabilitar uma action, no geral? Use uma global storage, é mais simples assim. Substitua o action script: function onUse(cid, item) local gstor = 54321 if getGlobalStorageValue(gstor) < 1 then return doPlayerSendCancel(cid, "This system is disabled.") end if getItemAttribute(item.uid, "corpseowner") ~= cid then return doPlayerSendCancel(cid, "You're not the owner.") end local items = {} for x = 0, (getContainerSize(item.uid)) do local itens = getContainerItem(item.uid, x)
  17. Tente: losepromotion.lua (data/creaturescripts/scripts): function onThink(cid) local stor = 33335 if getPlayerStorageValue(cid, stor) - os.time() < 1 and getPlayerPromotionLevel(cid) > 1 then doPlayerSetPromotionLevel(cid, 1) end return true end Tag - creaturescripts.xml (data/creaturescripts): <event type="think" name="LosePromotion" event="script" value="losepromotion.lua"/> Registre o creature event em login.lua (data/creaturescripts/scripts): registerCreatureEvent(cid, "LosePromotion")
  18. @Frenesy Sem problemas. Se preferir usar só o do callback onCombat que postei, não terá necessidade de outros creature events (dá pra ter o summon como target, mas não é possível atacá-lo e ele não recebe quaisquer danos). Abraços.
  19. Você pode observar que na função: doTeleportThing(cid, config.Saffari2_Pos.Enter) a posição não está disponível no mesmo script que o do npc, portanto, é bem provável que você tenha um arquivo na sua lib (data/lib) que contenha os dados do seu sistema de "saffari". Procure lá, é nesse arquivo que você vai poder modificar a variável da tabela que contém a posição na qual o player é teleportado pelo npc.
  20. Sim, dá pra fazer um creature event que determine um tempo de "Idle", e caso cid tenha os valores das storages dos sistemas, ele é teleportado e setado (após um tempo estipulado) como fora da habilidade em questão. Mas aqui é o tópico de outro membro, amigo. Crie um tópico para seu próprio pedido/dúvida.
  21. Certo. Fica mais simples com o creature event combat. ownsummon.lua (data/creaturescripts/scripts): function onCombat(cid, target) if isSummon(target) and getCreatureMaster(target) == cid then return false end return true end Tag - creaturescripts.xml (data/creaturescripts): <event type="combat" name="OwnSummon" script="ownsummon.lua"/> Registre o creature event em login.lua (data/creaturescripts/scripts): registerCreatureEvent(cid, "OwnSummon")
  22. Só não garanto sobre a criatura não se movimentar, pois há variações causadas por outros cids no local. Tente: saga.lua (data/creaturescripts/scripts): local monster = 'Demon' -- name local stor = 8000 -- storage function onCombat(cid, target) if (isPlayer(cid)) then if (isMonster(target) and (getCreatureName(target) == monster and (getPlayerStorageValue(cid, stor) == 1 or 3))) then return false end elseif (isMonster(cid)) then if (isPlayer(target) and (getPlayerStorageValue(target, stor) == 1 or 3)) then return false end end return true end functi
  23. Descarte os unique IDs. Vamos usar então, action IDs. Nesse caso, determinei como sendo os action IDs dos baús: 54001 = Sorcerer / Druid / Master Sorcerer / Elder Druid. 54002 = Paladin / Royal Paladin. 54003 = Knight / Elite Knight - Sword 54004 = Knight / Elite Knight - Club 54005 = Knight / Elite Knight - Axe Altere como preferir. Eu não testei chests.lua (data/actions/scripts): local t = { -- [actionID] = {vocs = {vocationIDs}, items = {itemIDs}} [54001] = {vocs = {1, 2, 5, 6}, items = {7424}}, -- mages [54002] = {vocs = {3, 7}, items = {8858, 2352}}, -- paladins [54
  24. Aí estão os valores usados nos metamétodos da função exhaustion, sendo a storage e o tempo em segundos, respectivamente.
  25. Colocar o action ID no item? Você criou um arquivo em actions e colocou uma action tag em talkactions(?). Amigo, doPlayerAddItem é uma função. Tags em arquivos do open tibia, são usadas na linguagem XML (extensible markup language). Lembre-se, são apenas observações e não críticas. Está indo muito bem, ajudando vários membros, parabéns. Apenas tente estar mais certo das informações que repassa. Abraços. @falling Altere a tabela com o ID e a quantidade do item (códigos do membro danihcv). local item = {5432, 1} -- {itemID, count} local pos1 = {x=1,y=1,z=1}
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo