Ir para conteúdo
Banner com Efeitos

xWhiteWolf

Héroi
  • Registro em

  • Última visita

Tudo que xWhiteWolf postou

  1. xWhiteWolf postou uma resposta no tópico em Suporte Tibia OTServer
    o problema não tá aí não pelo que eu percebi.. deve ser algo com seu foods. Tenta comer todos os tipos de food do server e vê se alguma faz sua mana/vida subir
  2. xWhiteWolf postou uma resposta no tópico em Suporte Tibia OTServer
    cara isso não é o script inteiro, vc muda os pontos que ganha na outra parte do script. Aí tá escrito q é do MaxWellden, Procura ele aqui no TK e procura o tópico de onde vc pegou esse script que lá tá tudo explicado certinho
  3. xWhiteWolf postou uma resposta no tópico em Suporte Tibia OTServer
    o elemento é holy e death.. vc mesmo disse kkk ele só mudou o efeito no items.xml pra cake
  4. substitui isso: <defenses armor="1" defense="2"/> por isso: <defenses armor="1" defense="2"> <defense name="healing" interval="10000" chance="100" min="24000" max="24000"/> </defenses> aqui é a chance de ele recuperar 24000 de vida a cada 10 segundos.
  5. weapons.xml: <melee id="8927" level="120" unproperly="1" event="script" value="new2.lua"/> muda aqui o id do item que vai utilizar esse sistema e o level. Value é o nome do script. weapons\scripts\new2.lua: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 34) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0) local xCombat = createCombatObject() setCombatParam(xCombat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(xCombat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(xCombat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(xCombat, COMBAT_PARAM_EFFECT, 34) setCombatFormula(xCombat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0) local area = createCombatArea({ {0, 1, 1, 1, 0}, {1, 1, 1, 1, 1}, {1, 1, 3, 1, 1}, {1, 1, 1, 1, 1}, {0, 1, 1, 1, 0} }) local area1 = createCombatArea({ {0, 0, 0}, {0, 3, 0}, {0, 0, 0} }) setCombatArea(xCombat, area) setCombatArea(combat, area1) local config = { storageativ = 76650, smallstoneid = 1294 } function onUseWeapon(cid, var) if getPlayerStorageValue(cid, config.storageativ) == 1 and doPlayerRemoveItem(cid, config.smallstoneid, 1) then retorn = doCombat(cid, xCombat, var) else retorn = doCombat(cid, combat, var) end return retorn end vc muda os efeitos aqui: setCombatParam(combat, COMBAT_PARAM_EFFECT, 34) a area qnd tá desativada e quanto tá ativada vc edita no script. e aqui você muda o storage que vai salvar se ela tá ativada ou desativada e tb que item será usado como munição: local config = { storageativ = 76650, smallstoneid = 1294 } Feito isso vá em actions.xml e adicione essa linha: <action itemid="8927" script="new2.lua"/> NOTE que o ID tem que ser o mesmo do weapons.xml para que funcione da maneira correta. Agora crie um arquivo chamado new2.lua em actions\scripts e adicione isso daqui dentro dele: function onUse(cid, item, frompos, item2, topos) local config = { storageativ = 76650, -- storage que será utilizado ammo = 1294 --- id do item que será a munição. } if getPlayerStorageValue(cid, config.storageativ) > 0 then setPlayerStorageValue(cid, config.storageativ, 0) doPlayerSendTextMessage(cid, 19, "You desactivated your weapon, you're no longer attacking in area!") elseif getPlayerStorageValue(cid, config.storageativ) <= 0 then setPlayerStorageValue(cid, config.storageativ, 1) doPlayerSendTextMessage(cid, 19, "You activated your weapon, now you'll attack in area as long as you have ammunition!") end return true end Nesse exemplo que eu coloquei vc ativa a club de id 8927 e ela vai ativar um ataque em área soltando o efeito 34 mas gastando 1 small stone a cada hit.
  6. eu acho que a lógica tá meio errada porque você tinha que chamar as tables assim : voc[getPlayerVocation(cid)].vocnova na table voc na table de número igual à vocação do player pegando o item vocnova... isso retornaria oque vc quer.
  7. @Eduardo, no caso seria assim: você usa um item (como se fosse uma alavanca que ficará dentro da cidade dos dobradores de fogo), daí você vira um dobrador de fogo e começa a hitar mais forte com o elemento fogo. É isso que ele quer mas acho q só dá pra inserir + dano em elementos utilizando itens.
  8. adorei a idéia mas acho que o único jeito seria dando equipamentos com percentFire :/ pra fazer assim do jeito que vc quer eu já não saberia mas espero que alguém aqui saiba e compartilhe!
  9. xWhiteWolf postou uma resposta no tópico em Suporte Tibia OTServer
    if(not param or param < 0 or param > 78)
  10. não faz sentido isso, dp é PZ e isso ia permitir que os players roubassem uns aos outros
  11. esses for não tão criando nenhum loop desnecessário não? vc chegou a testar? acho que o bug ainda continua
  12. pelo que eu to vendo seu script tem um bug: se dois players usarem a spell o player 2 será teleportado pra posição 1. Confere isso pra mim e me diz se eu to errado. OBS: seu script ficou muito melhor doque o meu mas tem esse bugzinho aí (acredito eu)
  13. 1) itemport.lua: local config = { storage = 49607, tempo = 10, itemid = 6217 } local positions = {} function onCastSpell(cid, var) if getPlayerStorageValue(cid, config.storage) <= 0 then table.insert(positions, getThingPos(cid)) doPlayerSetStorageValue(cid, config.storage, #positions) doCreateItem(config.itemid, getThingPos(cid)) doSendMagicEffect(getThingPos(cid), 3) addEvent(function() if isCreature(cid) then doPlayerSendTextMessage(cid, 22, "Your item has expired.") doPlayerSetStorageValue(cid, config.storage, 0) table.remove(positions, getPlayerStorageValue(cid, config.storage)) end end, 1000*config.tempo) elseif getPlayerStorageValue (cid, config.storage) > 0 then doTeleportThing(cid, positions[getPlayerStorageValue(cid, config.storage)]) doSendMagicEffect(getThingPos(cid), 10) end return true end 2) playerport.lua local config = { storage = 49608, tempo = 10 } function onCastSpell(cid, var) if isPlayer(getCreatureTarget(cid)) then local name = getCreatureName(getCreatureTarget(cid)) if getPlayerStorageValue(cid, config.storage) <= 0 then doPlayerSetStorageValue(cid, config.storage, 1) doSendMagicEffect(getThingPos(cid), 65) doSendMagicEffect(getThingPos(getCreatureByName(name)), 65) addEvent(function() if isCreature(cid) then doPlayerSetStorageValue(cid, config.storage, 0) doTeleportThing(cid, getThingPos(getCreatureByName(name))) end end, 1000*config.tempo) elseif getPlayerStorageValue (cid, config.storage) > 0 then doSendMagicEffect(getThingPos(cid), 2) doPlayerSendCancel(cid, "You've already set your target.") end else doPlayerSendCancel (cid, "You can only use this spell on players.") end return true end e no spells.xml: <instant name="TK SUPORT" words="itemport" lvl="50" mana="100" prem="1" exhaustion="1000" needlearn="0" event="script" value="especiais/itemport.lua"> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="8"/> </instant> <instant name="TK SUPORT" words="playerport" lvl="50" mana="100" prem="1" range="7" needtarget="1" blockwalls="1" exhaustion="1000" needlearn="0" event="script" value="especiais/playerport.lua"> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="8"/> </instant> agora vá em creaturescripts\scripts\login.lua e adicione essas linhas antes do ultimo return true if getPlayerStorageValue(cid, 49607) == -1 then setPlayerStorageValue(cid, 49607, 0) end if getPlayerStorageValue(cid, 49608) ~= 0 then setPlayerStorageValue(cid, 49608, 0) end
  14. nao faz sentido o player mirar no lugar que quer ir porque a função onUse não é ativada a distância, logo o player teria que ir do lado do item para se teleportar (e nós dois sabemos que não é isso que vc quer) Fiz uma spell aqui que vc fala uma palavra e ela adiciona um item no chão, ao ser falada dnv vc se teleporta pra onde o item está: crie um arquivo em spells\scripts\especiais\itemport.lua local config = { storage = 49607, --- storage que será salvo o tempo e o lugar na table que a posição do player pertence tempo = 10, --- tempo que o player poderá utilizar aquele item para se teleportar (após esse tempo será necessário colocar outro item) itemid = 6217 --- id do item que será criado } local positions = {} function onCastSpell(cid, var) if getPlayerStorageValue(cid, config.storage) <= 0 then table.insert(positions, getThingPos(cid)) doPlayerSetStorageValue(cid, config.storage, #positions) doCreateItem(config.itemid, getThingPos(cid)) doSendMagicEffect(getThingPos(cid), 3) addEvent(function() if isCreature(cid) then doPlayerSetStorageValue(cid, config.storage, 0) table.remove(positions, getPlayerStorageValue(cid, config.storage)) end end, 1000*config.tempo) elseif getPlayerStorageValue (cid, config.storage) > 0 then doTeleportThing(cid, positions[getPlayerStorageValue(cid, config.storage)]) doSendMagicEffect(getThingPos(cid), 10) end return true end e em spells.xml é só adicionar uma linha qualquer (como essa por exemplo:) <instant name="TESTE TK" words="itemport" lvl="50" mana="100" prem="1" exhaustion="1000" needlearn="0" event="script" value="especiais/itemport.lua"> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="8"/> </instant>
  15. creaturescripts.xml <!-- CRITICAL SYSTEM --> <event type="statschange" name="critical" event="script" value="critical.lua"/> creaturescripts\scripts\login.lua --- CRITICAL SYSTEM ---- registerCreatureEvent(cid, "critical") if getPlayerStorageValue(cid, 48903) == -1 then setPlayerStorageValue(cid, 48903, 0) end creaturescripts\scripts\critical.lua: -----[[Critical System by Night Wolf]] local lvlcrit = 48903 local multiplier = 1.5 function onStatsChange(cid, attacker, type, combat, value) if (type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS) and isPlayer(attacker) and isCreature(cid) then if (getPlayerStorageValue(attacker, lvlcrit)*3) >= math.random (0,1000) then value = math.ceil(value*(multiplier)) doTargetCombatHealth(attacker, cid, combat, -value, -value, 255) doSendAnimatedText(getCreaturePos(attacker), "CRITICAL!!", 144) return false end end return true end actions.xml: <action itemid="1294" script="criticalrock.lua"/> obs: muda o ID da pedra que vc for usar... aqui eu usei a small stone pra teste e em actions\scripts\criticalrock.lua: --- CRITICAL System by Night Wolf local config = { effectonuse = 14, -- efeito que sai levelscrit = 100, --- leveis que terão storagecrit = 48903 -- storage que será verificado } function onUse(cid, item, frompos, item2, topos) if getPlayerStorageValue(cid, config.storagecrit) < config.levelscrit then doRemoveItem(item.uid, 1) doSendMagicEffect(topos,config.effectonuse) doPlayerSendTextMessage(cid,22,"You've Leveled your Critical Skill to ["..(getPlayerStorageValue(cid, config.storagecrit)+1).."/100].") setPlayerStorageValue(cid, config.storagecrit, getPlayerStorageValue(cid, config.storagecrit)+1) elseif getPlayerStorageValue(cid, config.storagecrit) >= config.levelscrit then doPlayerSendTextMessage(cid,22,"You've already reached the MAX level of Critical Skill.\nCongratulations!!!!") return 0 end return 1 end OBS: Só funciona em ataques de players em players. Se vc ficar atacando monstro pra testar não vai dar certo (isso é porque o creaturescript só tá registrado no login.lua então o cid tem que necessariamente ser um player)
  16. vai na lib/constant e deve ter umas tables lá tipo assim: doors = {[1209] = 1211, [1210] = 1211, [1212] = 1214, [1213] = 1214, [1219] = 1220, [1221] = 1222, [1231] = 1233, [1232] = 1233, [1234] = 1236, [1235] = 1236, [1237] = 1238, [1239] = 1240, [1249] = 1251, [1250] = 1251, [1252] = 1254, [1253] = 1254, [1539] = 1540, [1541] = 1542, [3535] = 3537, [3536] = 3537, [3538] = 3539, [3544] = 3546, [3545] = 3546, [3547] = 3548, [4913] = 4915, [4914] = 4915, [4916] = 4918, [4917] = 4918, [5082] = 5083, [5084] = 5085, [5098] = 5100, [5099] = 5100, [5101] = 5102, [5107] = 5109, [5108] = 5109, [5110] = 5111, [5116] = 5118, [5117] = 5118, [5119] = 5120, [5125] = 5127, [5126] = 5127, [5128] = 5129, [5134] = 5136, [5135] = 5136, [5137] = 5139, [5138] = 5139, [5140] = 5142, [5141] = 5142, [5143] = 5145, [5144] = 5145, [5278] = 5280, [5279] = 5280, [5281] = 5283, [5282] = 5283, [5284] = 5285, [5286] = 5287, [5515] = 5516, [5517] = 5518, [5732] = 5734, [5733] = 5734, [5735] = 5737, [5736] = 5737, [6192] = 6194, [6193] = 6194, [6195] = 6197, [6196] = 6197, [6198] = 6199, [6200] = 6201, [6249] = 6251, [6250] = 6251, [6252] = 6254, [6253] = 6254, [6255] = 6256, [6257] = 6258, [6795] = 6796, [6797] = 6798, [6799] = 6800, [6801] = 6802, [6891] = 6893, [6892] = 6893, [6894] = 6895, [6900] = 6902, [6901] = 6902, [6903] = 6904, [7033] = 7035, [7034] = 7035, [7036] = 7037, [7042] = 7044, [7043] = 7044, [7045] = 7046, [7054] = 7055, [7056] = 7057, [8541] = 8543, [8542] = 8543, [8544] = 8546, [8545] = 8546, [8547] = 8548, [8549] = 8550, [9165] = 9167, [9166] = 9167, [9168] = 9170, [9169] = 9170, [9171] = 9172, [9173] = 9174, [9267] = 9269, [9268] = 9269, [9270] = 9272, [9271] = 9272, [9273] = 9274, [9275] = 9276, [10276] = 10277, [10274] = 10275, [10268] = 10270, [10269] = 10270, [10271] = 10273, [10272] = 10273, [10471] = 10472, [10480] = 10481, [10477] = 10479, [10478] = 10479, [10468] = 10470, [10469] = 10470} closingDoors = {1224, 1226, 1228, 1230, 1242, 1244, 1246, 1248, 1256, 1258, 1260, 1262, 3541, 3543, 3550, 3552, 5104, 5106, 5113, 5115, 5122, 5124, 5131, 5133, 5289, 5291, 5293, 5295, 6203, 6205, 6207, 6209, 6260, 6262, 6264, 6266, 6897, 6899, 6906, 6908, 7039, 7041, 7048, 7050, 8552, 8554, 8556, 8558, 9176, 9178, 9180, 9182, 9278, 9280, 9282, 9284, 10279, 10281, 10283, 10285, 10474, 10476, 10483, 10485} verticalOpenDoors = {1211, 1220, 1224, 1228, 1233, 1238, 1242, 1246, 1251, 1256, 1260, 1540, 3546, 3548, 3550, 3552, 4915, 5083, 5109, 5111, 5113, 5115, 5127, 5129, 5131, 5133, 5142, 5145, 5283, 5285, 5289, 5293, 5516, 5737, 5749, 6194, 6199, 6203, 6207, 6251, 6256, 6260, 6264, 6798, 6802, 6902, 6904, 6906, 6908, 7044, 7046, 7048, 7050, 7055, 8543, 8548, 8552, 8556, 9167, 9172, 9269, 9274, 9278, 9282, 10270, 10275, 10279, 10283, 10479, 10481, 10483, 10485} horizontalOpenDoors = {1214, 1222, 1226, 1230, 1236, 1240, 1244, 1248, 1254, 1258, 1262, 1542, 3537, 3539, 3541, 3543, 4918, 5085, 5100, 5102, 5104, 5106, 5118, 5120, 5122, 5124, 5136, 5139, 5280, 5287, 5291, 5295, 5518, 5734, 5746, 6197, 6201, 6205, 6209, 6254, 6258, 6262, 6266, 6796, 6800, 6893, 6895, 6897, 6899, 7035, 7037, 7039, 7041, 7057, 8546, 8550, 8554, 8558, 9170, 9174, 9272, 9276, 9280, 9284, 10273, 10277, 10281, 10285, 10470, 10472, 10474, 10476} specialDoors = {1223, 1225, 1241, 1243, 1255, 1257, 3542, 3551, 5105, 5114, 5123, 5132, 5288, 5290, 5745, 5748, 6202, 6204, 6259, 6261, 6898, 6907, 7040, 7049, 8551, 8553, 9175, 9177, 9277, 9279, 10278, 10280, 10475, 10484} posta o seu e me fala que doors que tão dando erro, são todas ou só algumas especiais?
  17. vc ta chamando um item da table que ainda não existe. local verifica1 = getPlayerItemCount(cid, voc.item) a table tá ali embaixo \/ então é como se não existisse ainda. Deixa assim: --Made by llucas75-- local voc = { [1] = {vocatual = 1, vocnova = 5, preco = 2, item = 2160, nome = "0 k"}, [2] = {vocatual = 2, vocnova = 6, preco = 2, item = 2160, nome = "0 k"}, [3] = {vocatual = 3, vocnova = 7, preco = 2, item = 2160, nome = "0 k"}, [4] = {vocatual = 4, vocnova = 8, preco = 2, item = 2160, nome = "0 k"} } function onSay(cid, words, param, channel) local verifica = getPlayerVocation(cid) local verifica1 = getPlayerItemCount(cid, voc.item) local posplayer = getCreaturePosition(cid) local nome = getPlayerVocationName(cid) if verifica == voc.vocatual then if verifica1 >= voc.preco then doPlayerSetVocation(cid, verifica + 4) doPlayerSendTextMessage(cid,22, "Voce foi promovido para " ..voc.vocnova.. " .") doSendMagicEffect(posplayer, 13) doPlayerRemoveItem(cid, voc.item, voc.preco) else doPlayerSendTextMessage(cid,22, "Voce nao tem " ..voc.preco.. " " ..nome.. " para ser promovido para" ..voc.vocnova.. " .") return true end else doPlayerSendTextMessage(cid,22, "Voce ja possui todas as promotions.") return true end end
  18. funções que pegam algo do player não podem ficar fora do callback! local verifica = getPlayerVocation(cid) local verifica1 = getPlayerItemCount(cid, voc.item) local posplayer = getCreaturePosition(cid) local nome = getPlayerVocationName(cid) isso daqui tá sendo executado quando liga o server mas o cid é nulo já que tá sendo executado ao abrir o server.
  19. q estranho, não era pra dar problema nenhum.. mesmo criando pelo god kkk
  20. vc tá usando uma arma no caso, certo? me passa como vc adicionou a linha do movements.xml que acho q é nela que tá o problema edit: o problema do god crashar tb tem a ver com o tipo de slot que vc colocou em movements.. (se for arma e vc colocou slot = "hands" costuma dar merda)
  21. nao vejo diferença desse pro dodge.. a unica coisa q muda é que o value em vez de ser multiplicado por 0,5 vai ser multiplicado por 2. E vc vai trocar cid por attacker :/ sejam mais criativos e ousados, tem tanta coisa melhor pra pedir...
  22. ja sei como resolver seu problema! local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, -1) setConditionParam(condition, CONDITION_PARAM_STAT_MAXHEALTH, 50) function onEquip(cid, item, slot) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Now that you're using this item you'll receive a special bonus...") doAddCondition(cid, condition) doSendMagicEffect(getCreaturePos(cid), 10) return true end function onDeEquip(cid, item, slot) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You're no longer receiving the special bonus..") doRemoveCondition(cid, CONDITION_ATTRIBUTES) return true end só criar uma condition que adicione pontos de vida.. nesse caso aí vai adicionar 50 pontos de vida.. o -1 no tempo é pra garantir que esse buff seja eterno. Daí ao remover o item do slot ele vai remover a condition. Obs: isso é um movements
  23. vai retornar o array de todos os possíveis drops do monstro e não oque ele dropou qnd foi morto. Oque dá pra fazer é a função onKill adicionar o item direto no player setItemName(doPlayerAddItem(cid, itemid, count/subtype), "Nome novo.") /\ nesse caso eu estou mudando o nome . Pra adicionar descrição é só fazer do mesmo jeito: doSetItemSpecialDescription(doPlayerAddItem(cid, itemid, count/subtype), "descrição nova")
  24. acredito q isso seja configuração padrão das sources, não sei como te ajudar :/ esse script eu fiz pensando em servidores com uma exp em torno de 10 a 200x

Informação Importante

Confirmação de Termo