Ir para conteúdo
  • Cadastre-se

Wise

Membro
  • Total de itens

    1090
  • Registro em

  • Última visita

  • Dias Ganhos

    7

Tudo que Wise postou

  1. local storage = 8910 -- storage local effect = {10, 11} -- {efeito de ida, efeito da volta} local vocs = {1, 2, 3} -- vocation IDs local position = {x=32263, y=32341, z=7} --Position pra onde o player vai ao usar a spell local pos = {} function onSay(cid) if not isInArray(vocs, getPlayerVocation(cid)) then return doPlayerSendCancel(cid, 'Your vocation is not allowed to use this command.') end if getPlayerStorageValue(cid, storage) ~= 1 then setPlayerStorageValue(cid, storage, 1) table.insert(pos, getCreaturePosition(cid)) doTele
  2. table.remove(table [, pos]) Esse metamétodo remove um elemento de uma posição da tabela, ou se a posição não for especificada, remove o último elemento da mesma. Ex: t = {'Suicide', 0, 1, 2, 'TibiaKing'} #t = 5 table.remove(t, 4) -- remove o elemento número 4 table.foreach(t, print) -- exibe o conteúdo da tabela posição - elemento 1 - Suicide 2 - 0 3 - 1 4 - TibiaKing Logo: #t = 4
  3. Criar um arquivo com callback onSay em actions e adicionar a tag em talkactions? Não vai dar certo.
  4. Fiz para que o player fique mudo, imóvel e receba danos de fogo por tempo indeterminado (até morrer). Tente: deathground.lua (data/movements/scripts): local muted = createConditionObject(CONDITION_MUTED) setConditionParam(muted, CONDITION_PARAM_TICKS, -1) local fire = createConditionObject(CONDITION_FIRE) setConditionParam(fire, CONDITION_PARAM_PERIODICDAMAGE, -1000) setConditionParam(fire, CONDITION_PARAM_TICKS, -1) setConditionParam(fire, CONDITION_PARAM_TICKINTERVAL, 2000) function onStepIn(cid) doAddCondition(cid, muted) doAddCondition(cid, fire) doCreatureSetNoMove(cid, true)
  5. Não. Nesse caso, eu fiz por storage, e não por uma coluna numa tabela na database.
  6. Veja que o exhaustion time é setado de modo geral, através dessa condição que, faz uso de um valor estipulado em config.lua e subtrai-se 100. Em config.lua, procure por timeBetweenExActions. Lá vai estar o valor desse tempo em milissegundos. Ex: timeBetweenExActions = 1000 Logo, o exhaustion time será 1000 - 100 = 900 milissegundos. Você pode definir o exhaust por uma variável no script, por exemplo. Basta alterar a condição que eu citei no início por: local etime = 700 -- exhaustion in milliseconds local exhaust = createConditionObject(CONDITION_EXHAUST) setConditionParam(exhaust,
  7. Já que não é por stages, não tem necessidade de um escopo pra redefinir a variável. Tente: function onSay(cid) return doPlayerPopupFYI(cid, 'Server Information:\n\nExperience rate: x'..getConfigInfo('rateExperience')..'\nSkills rate: x'..getConfigInfo('rateSkill')..'\nLoot rate: x'..getConfigInfo('rateLoot')..'\nMagic rate: x'..getConfigInfo('rateMagic')..'\nSpawns rate: x'..getConfigInfo('rateSpawn')..'\nProtection level: '..getConfigInfo('protectionLevel')) and true end
  8. Tentou corretamente? function onDeEquip(cid) return doPlayerSendCancel(cid, "You can't remove this item.") and false end <movevent type="DeEquip" itemid="ITEMID" slot="ring" event="script" value="filename.lua"/>
  9. Sim. Não notei que você queria assim, desculpe. Editei o post anterior. Basta alterar a tabela: local t = { -- [actionID] = {vocs = {vocationIDs}, items = {itemIDs}} [54001] = {vocs = {1, 2, 5, 6}, items = {7424}}, -- mages [54002] = {vocs = {3, 7}, items = {8858, 2352}}, -- paladins [54003] = {vocs = {4, 8}, items = {7417}}, -- knights/sword [54004] = {vocs = {3, 7}, items = {7450}}, -- knights/club [54005] = {vocs = {3, 7}, items = {8926}} -- knights/axe } E a tag: <action actionid="54001-54005" event="script" value="chests.lua"/>
  10. @falling Apesar de ter partes semelhantes, o que você quer não convém muito com o propósito desse tópico. E além do mais, ele já foi resolvido. Crie o seu próprio tópico, amigo, e nele informe sobre o pedido.
  11. subnivel.lua (data/creaturescripts/scripts): function onKill(cid, target) local b = {'Ghazbaran', 'Morgaroth', 'Orshabaal'} -- bosses local subnivel = 98765 -- storage for i = 1, #b do if getCreatureName(target):lower() == b[i]:lower() then if getPlayerStorageValue(cid, subnivel) < 0 then return setPlayerStorageValue(cid, subnivel, 1) and true end setPlayerStorageValue(cid, subnivel, getPlayerStorageValue(cid, subnivel) + 1) end end return true end Tag - creaturescritps.xml (d
  12. Procure pelo arquivo das potions nas actions do seu servidor (data/actions/scripts) e poste os códigos do arquivo aqui. Se não encontrar, procure os IDs das potions nas tags do arquivo actions.xml e você poderá identificar o diretório e nome do script.
  13. Fiz simples, sem o efeito constante durante a double experience. Veja se te agrada. local rate = {2, 30} -- {exp, time} ~ time in minutes local stor = 43210 -- storage function NormalExp(cid) if isPlayer(cid) then doPlayerSetRate(cid, SKILL__LEVEL, 1) setPlayerStorageValue(cid, stor, -1) doCreatureSay(cid, 'NORMAL EXPERIENCE..', TALKTYPE_ORANGE_1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Effect of the double experience potion over and now you\'re with normal experience again.') end return true end function onUse(cid, ite
  14. Desconheço sobre servidores derivados, mas provavelmente é um action script. Então procure pelo script (data/actions/scripts), veja através da tag (procurando pelo ID do item que você usa como "vara de pesca", ou o que quer que seja) e poste aqui.
  15. Retornando false ao callback onDeath, irá fazer com que o corpse do creature ID não seja criado.
  16. @ricksi2012 Amigo, eu não entendi qual a sua dificuldade nisso. Escolha qualquer item que te agrade e aplique o ID na tag, fim.
  17. function isOnSameFloor(fromPos, toPos) return fromPos.z == toPos.z and true or false end function isEven(arg) return arg % 2 == 0 and true or false end function getMiddlePos(fromPos, toPos) if not isOnSameFloor(fromPos, toPos) then return false end local middle = {x = 0, y = 0, z = 0} middle.x = isEven(fromPos.x + toPos.x) and (fromPos.x + toPos.x)/2 or math.floor((fromPos.x + toPos.x)/2) + 1 middle.y = isEven(fromPos.y + toPos.y) and (fromPos.y + toPos.y)/2 or math.floor((fromPos.y + toPos.y)/2) + 1 middle.z = fromPos.z or toPos.z
  18. Já que os textos exibidos serão os mesmos, simplifique: local pos = { {x = 409, y = 805, z = 7}, {x = 344, y = 738, z = 7}, {x = 650, y = 844, z = 7}, {x = 757, y = 826, z = 7}, {x = 1017, y = 709, z = 6}, {x = 1041, y = 560, z = 6}, {x = 800, y = 554, z = 6}, {x = 793, y = 709, z = 7}, {x = 796, y = 428, z = 6}, {x = 790, y = 357, z = 6}, {x = 547, y = 218, z = 7}, {x = 520, y = 182, z = 7} } function onThink(cid, interval, lastExecution) for i = 1, #pos do doSendMagicEffect(pos[i], math.random(CONST_ME_DRAWBLOOD, CONST_ME_LAST
  19. E como é esse "vip"? Já há algum sistema que faça o uso de storages pra determinar um creature ID vip no seu servidor, ou é por premium account? Especifique.
  20. Não. Olha, calculei alguns valores, veja se te agrada: <?xml version="1.0" encoding="UTF-8"?> <groups> <group id="1" name="Player" flags="0" access="0" maxdepotitems="0" maxvipentries="0" /> <group id="2" name="Tutor" flags="137455730688" access="0" maxdepotitems="0" maxvipentries="200" /> <group id="3" name="Admin" flags="272730398714" access="1" maxdepotitems="0" maxvipentries="200" /> </groups>
  21. O mais importante você já tem. Agora apenas continue, você se aperfeiçoa conforme estuda e pratica.
  22. Detesto refazer um script a partir de códigos imensos de outra pessoa. Então eu apenas apliquei a tabulação e algumas funções (um pouco modificadas) da New Library v. 1.2 de @xWhiteWolf. function isOnSameFloor(fromPos, toPos) return fromPos.z == toPos.z and true or false end function isEven(arg) return arg % 2 == 0 and true or false end function getMiddlePos(fromPos, toPos) if not isOnSameFloor(fromPos, toPos) then return false end local middle = {x = 0, y = 0, z = 0} middle.x = isEven(fromPos.x + toPos.x) and (fromPos.x + toPos.x)/2 or math.fl
  23. Bem lembrado. A função doSendAnimatedText foi retirada na versão 8.7 se não me engano.
  24. Provavelmente essas vocações "epic" devem ter a promotion level como sendo 2. Então.. autopromotion.lua (data/creaturescripts/scripts): function onThink(cid) if getPlayerPremiumDays(cid) > 0 then if getPlayerPromotionLevel(cid) == 2 then return true end doPlayerSetPromotionLevel(cid, 2) else if getPlayerPromotionLevel(cid) == 1 then return true end doPlayerSetPromotionLevel(cid, 1) end return true end Tag - creaturescripts.xml (data/creaturescripts): <event type="think" name="AutoPromotion" event="script" value="autopromotion.lua"/> Registre o creatu
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo