Ir para conteúdo

Reedz

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Reedz deu reputação a xWhiteWolf em (Resolvido)Bônus no Conjunto de itens   
    adorei a ideia mas não sei ao certo como fazer.. vou tentar aqui e te dou um feedback dos meus avanços. Ao que o jeito seria criar uma condition que desse o atributo a mais em questão e fazer um creaturescripts q se tivesse com o set adicionaria a condition.. como se fosse uma magia mesmo
  2. Gostei
    Reedz deu reputação a llucas75 em (Resolvido)Bônus no Conjunto de itens   
    Amigo caso sua dúvida esteja resolvida marque melhor resposta, caso vc não saiba mecher com script e não saiba oque fazer com o script acima... Pede do jeito que vc quer os sets... passe os ids dos conjuntos e os bonus que o pessoal do tk faz pra ti..
  3. Gostei
    Reedz deu reputação a xWhiteWolf em (Resolvido)Bônus no Conjunto de itens   
    segue essa lógica:

    movements\scripts\set.lua:
    -- NW SET SYSTEM local config = { slot1 = 4, slot2 = 8, item1 = 8889, item2 = 11234 } local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, -1) setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, 50) setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, 50) setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, 50) setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, 50) function onEquip(cid, item, slot) if getPlayerSlotItem(cid, config.slot2).itemid == config.item2 and getPlayerSlotItem(cid, config.slot1).itemid == config.item1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Now that you're using the full set you'll receive a special bonus...") doAddCondition(cid, condition) doSendMagicEffect(getCreaturePos(cid), 10) end 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 movements.xml
    <!-- Set Items --> <movevent type="Equip" itemid="11234" slot="feet" event="script" value="set.lua"/> <movevent type="Equip" itemid="8889" slot="armor" event="script" value="set.lua"/> <movevent type="DeEquip" itemid="11234" slot="feet" event="script" value="set.lua"/> <movevent type="DeEquip" itemid="8889" slot="armor" event="script" value="set.lua"/>
  4. Gostei
    Reedz deu reputação a MaXwEllDeN em Headshot - Critical hit   
    Ta dan
  5. Gostei
    Reedz deu reputação a MaXwEllDeN em Headshot - Critical hit   
    Headshot - Critical hit
     
    Quando alguém te ataca, há a chance de ela te bater na cabeça(headshot) e você tomar 250%(configurável) do dano que ela causaria normalmente. Então, vamos lá.
     
    Adicione isso ao seu creaturescripts.xml
    <event type="login" name="HeadshotLogin" event="script" value="headshot.lua"/> <event type="statschange" name="HeadshotCritical" event="script" value="headshot.lua"/> E crie este arquivo: data/creaturescripts/scripts/headshot.lua
    local chance_percent = 50 -- Chance percenting local extra_damage_percent = 250 -- Extra Damage Percent     function onLogin(cid)    registerCreatureEvent(cid, "HeadshotCritical")    return true end   function onStatsChange(cid, attacker, type, combat, value) if type ~= STATSCHANGE_HEALTHLOSS then return true end    if isPlayer(attacker) and getPlayerStorageValue(cid, 71257) < 1 then       if math.random(100) <= chance_percent then          local dmg = value * (extra_damage_percent / 100)          setPlayerStorageValue(cid, 71257, 1)          doTargetCombatHealth(attacker, cid, type, -dmg, -dmg, 255)          setPlayerStorageValue(cid, 71257, -1) doCreatureSay(cid, "CRITICAL", 19)          return false       end    end        return true end
  6. Gostei
    Reedz deu reputação a bielzinhocrazy em Sistema de aprimoramento da movimentação   
    Eu fiz mas nem testei, estou meio sem tempo, porém a lógica está certa, tente então desta forma :
    local exhauststorage = 20209 -- storage para o exhaust local exhaust = 10 -- tempo do exhaust em segundos local quantpos = 30 -- posições x ou y que o personagem irá avançar, por exemplo, aqui irá se mover 30 posições pra direção em que estiver local voc = { --dependendo da vocação, a movimentação será diferente {3,4,7,8,11,12}, -- vocações melee, que no caso são knight e paladin {1,2,5,6,9,10}, -- vocações mágicas, que são sorc e druid } --Função da movimentação para paladin e knight function moveMelee(cid, t) if(isCreature(cid)) then local tmp = getPlayerLookPos(cid) if(not isCreature(getThingFromPos(tmp).uid) and doTileQueryAdd(cid, tmp)~=1 and t>0) then if(getCreatureSkullType(cid) != SKULL_NONE and getTilePzInfo(tmp)==1) then doCreatureSetNoMove(cid, false) return TRUE end doCreatureSetNoMove(cid, true) t = t-1 doSendMagicEffect(getCreaturePos(cid), 15) doMoveCreature(cid, getPlayerLookDir(cid)) return addEvent(moveMelee, 10, cid, t) else doCreatureSetNoMove(cid, false) return TRUE end else return TRUE end end --Função da movimentação para sorcerer e druid function moveMagic(cid) if(isCreature(cid)) then tmp = getCreaturePos(cid) dir = getPlayerLookDir(cid) for i=1, quantpos do if(dir==0) then tmp = {x=tmp.x, y=tmp.y-1, z=tmp.z} elseif(dir==1) then tmp = {x=tmp.x+1, y=tmp.y, z=tmp.z} elseif(dir==2) then tmp = {x=tmp.x, y=tmp.y+1, z=tmp.z} elseif(dir==3) then tmp = {x=tmp.x-1, y=tmp.y, z=tmp.z} end if (doTileQueryAdd(cid, tmp)==1 or (getCreatureSkullType(cid)!=SKULL_NONE and getTilePzInfo(tmp)==1)) then if(dir==0) then tmp = {x=tmp.x, y=tmp.y+1, z=tmp.z} elseif(dir==1) then tmp = {x=tmp.x-1, y=tmp.y, z=tmp.z} elseif(dir==2) then tmp = {x=tmp.x, y=tmp.y-1, z=tmp.z} elseif(dir==3) then tmp = {x=tmp.x+1, y=tmp.y, z=tmp.z} end break end end doTeleportThing(cid, tmp) doSendMagicEffect(getCreaturePos(cid), 49) doCreatureSetNoMove(cid, false) return TRUE else return TRUE end end --Efeitos para a movimentação de sorc e druid function magicEffect(cid, i) if(isCreature(cid)) then local atual = getCreaturePosition(cid) local posefeitos = { {x=(atual.x)-1, y=(atual.y)-1, z=atual.z}, {x=atual.x, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=atual.y, z=atual.z}, {x=(atual.x)+1, y=(atual.y)+1, z=atual.z}, {x=atual.x, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=atual.y, z=atual.z}, } if(i<=8) then doSendMagicEffect({x=posefeitos[i].x, y=posefeitos[i].y, z=posefeitos[i].z}, 39) end if(i>8) then doSendMagicEffect(atual, 49) return moveMagic(cid) end return addEvent(magicEffect, 50, cid, i+1) else return TRUE end end --Função principal function onSay(cid, words, param) if(getPlayerStorageValue(cid, exhauststorage)>os.time()) then doPlayerSendCancel(cid, "Voce deve esperar "..(getPlayerStorageValue(cid, exhauststorage)-os.time()).." segundos para usar a movimentação novamente.") return TRUE else setPlayerStorageValue(cid, exhauststorage, os.time()+exhaust) local v = getPlayerVocation(cid) for i=1, #voc[1] do if(v==voc[1][i]) then return moveMelee(cid, quantpos),doCreatureSay(cid, "Movimentação ultra rápida!", 1) end end return magicEffect(cid, 1),doCreatureSay(cid, "Teleport!", 1),doCreatureSetNoMove(cid, true) end end Bom, se não der, quarta-feira tenho o dia livre e tento rever melhor, tá difícil arranjar um tempinho livre.
  7. Gostei
    Reedz deu reputação a bielzinhocrazy em Sistema de aprimoramento da movimentação   
    Olá pessoal,
    Hoje venho trazer pra vocês um sisteminha que acabei de criar, para auxiliar a movimentação de nossos players, fazendo com que além de spells de velocidade, também tenham um recurso a mais. Funciona da seguinte maneira : para os personagens melee (paladin e knight), há um grande impulso em que eles correm super rápido até o próximo obstáculo (monstros, paredes, etc) ou até a quantidade limite de posições para se avançar do talkaction, soltando efeitos de fogo pelos pés. É possível controlar sua direção de corrida pressionando ctrl+direção. Já os personagens mágicos, druid e sorcerer, canalizarão um poder de luz e após isso, se teleportarão, em linha reta, até o próximo obstáculo, ou até a quantidade de posições limite. Não é possível utilizar continuamente, porque senão seria bastante apelativo, então coloquei uma quantidade de exhaust, no meu caso, 10 segundos, porém você pode modificar no script. Para vocês terem ideia de como funciona, fiz um vídeo (com resolução ruim a propósito, peço perdão), que está logo à seguir :

     
    Bom, cada uma das categorias(melee, magic) tem sua vantagem, e sua desvantagem.
    Melee :
    -Vantagem : é possível controlar as direcionais com ctrl.
    -Desvantagem : pode ser atingido durante a movimentação.
     
    Magic :
    -Vantagem : aparece instantaneamente na posição destino, após a focalização de energia.
    -Desvantagem : não pode desviar de obstáculos.
     
    Para usar, apenas digite !move.
    Agora, vou mostrar-lhes os códigos e como devem ser colocados e configurados.
     
    Em data\talkactions\scripts, crie um novo arquivo chamado move.lua, e cole o seguinte código :
    local exhauststorage = 20209 -- storage para o exhaust local exhaust = 10 -- tempo do exhaust em segundos local quantpos = 30 -- posições x ou y que o personagem irá avançar, por exemplo, aqui irá se mover 30 posições pra direção em que estiver local voc = { --dependendo da vocação, a movimentação será diferente {3,4,7,8,11,12}, -- vocações melee, que no caso são knight e paladin {1,2,5,6,9,10}, -- vocações mágicas, que são sorc e druid } --Função da movimentação para paladin e knight function moveMelee(cid, t) if(isCreature(cid)) then local tmp = getPlayerLookPos(cid) if(not isCreature(getThingFromPos(tmp).uid) and doTileQueryAdd(cid, tmp)==1 and t>0) then doCreatureSetNoMove(cid, 1) t = t-1 doSendMagicEffect(getCreaturePos(cid), 15) doMoveCreature(cid, getPlayerLookDir(cid)) return addEvent(moveMelee, 10, cid, t) else doCreatureSetNoMove(cid, 0) return TRUE end else return TRUE end end --Função da movimentação para sorcerer e druid function moveMagic(cid) if(isCreature(cid)) then local tmp = getCreaturePos(cid) local dir = getPlayerLookDir(cid) for i=1, quantpos do if(dir==0) then tmp = {x=tmp.x, y=tmp.y-1, z=tmp.z} elseif(dir==1) then tmp = {x=tmp.x+1, y=tmp.y, z=tmp.z} elseif(dir==2) then tmp = {x=tmp.x, y=tmp.y+1, z=tmp.z} elseif(dir==3) then tmp = {x=tmp.x-1, y=tmp.y, z=tmp.z} end if(doTileQueryAdd(cid, tmp)~=1) then if(dir==0) then tmp = {x=tmp.x, y=tmp.y+1, z=tmp.z} elseif(dir==1) then tmp = {x=tmp.x-1, y=tmp.y, z=tmp.z} elseif(dir==2) then tmp = {x=tmp.x, y=tmp.y-1, z=tmp.z} elseif(dir==3) then tmp = {x=tmp.x+1, y=tmp.y, z=tmp.z} end break end end doTeleportThing(cid, tmp) doSendMagicEffect(getCreaturePos(cid), 49) doSendAnimatedText(getCreaturePos(cid), "Tchum!", 144) doCreatureSetNoMove(cid, 0) return TRUE else return TRUE end end --Efeitos para a movimentação de sorc e druid function magicEffect(cid, i) if(isCreature(cid)) then local atual = getCreaturePosition(cid) local posefeitos = { {x=(atual.x)-1, y=(atual.y)-1, z=atual.z}, {x=atual.x, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=atual.y, z=atual.z}, {x=(atual.x)+1, y=(atual.y)+1, z=atual.z}, {x=atual.x, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=atual.y, z=atual.z}, } if(i<=8) then doSendMagicEffect({x=posefeitos[i].x, y=posefeitos[i].y, z=posefeitos[i].z}, 39) end if(i>8) then doSendMagicEffect(atual, 49) doSendAnimatedText(atual, "Voosh", 144) return moveMagic(cid) end return addEvent(magicEffect, 50, cid, i+1) else return TRUE end end --Função principal function onSay(cid, words, param) if(getPlayerStorageValue(cid, exhauststorage)>os.time()) then doPlayerSendCancel(cid, "Voce deve esperar "..(getPlayerStorageValue(cid, exhauststorage)-os.time()).." segundos para usar a movimentação novamente.") return TRUE else setPlayerStorageValue(cid, exhauststorage, os.time()+exhaust) local v = getPlayerVocation(cid) for i=1, #voc[1] do if(v==voc[1][i]) then return moveMelee(cid, quantpos),doCreatureSay(cid, "Movimentação ultra rápida!", 1) end end return magicEffect(cid, 1),doCreatureSay(cid, "Teleport!", 1),doCreatureSetNoMove(cid, 1) end end  Agora vá em data\talkactions\talkactions.xml, e adicione uma nova linha com o seguinte conteúdo :
    <talkaction words="!move" event="script" value="move.lua"/> O código está comentado, então agora é só configurar e usar de acordo com as suas preferências!
     
    OBS : Fica a seu critério colocar se apenas vip podem utilizar esse sistema, se será necessário mp, ou soul, ou hp, ou qualquer coisa que precise. Tudo isso pode ser incrementado na função principal (onSay).
    Créditos : eu mesmo (GMLeal/ BielzinhoCrazy/ Fakezim) tanto faz  Bom, é isso aí pessoal, bom proveito, e obrigado!
  8. Gostei
    Reedz deu reputação a bielzinhocrazy em Sistema de aprimoramento da movimentação   
    Pra limitar é só fazer a verificação se está pk e se é pz zone, se for, não teleportar pra dentro da pz, implementei já no script, tente com este código :
    local exhauststorage = 20209 -- storage para o exhaust local exhaust = 10 -- tempo do exhaust em segundos local quantpos = 30 -- posições x ou y que o personagem irá avançar, por exemplo, aqui irá se mover 30 posições pra direção em que estiver local voc = { --dependendo da vocação, a movimentação será diferente {3,4,7,8,11,12}, -- vocações melee, que no caso são knight e paladin {1,2,5,6,9,10}, -- vocações mágicas, que são sorc e druid } --Função da movimentação para paladin e knight function moveMelee(cid, t) if(isCreature(cid)) then local tmp = getPlayerLookPos(cid) if(not isCreature(getThingFromPos(tmp).uid) and doTileQueryAdd(cid, tmp)~=1 and t>0) then if(getCreatureSkullType(cid)>0 and getTilePzInfo(tmp)==1) then doCreatureSetNoMove(cid, false) return TRUE end doCreatureSetNoMove(cid, true) t = t-1 doSendMagicEffect(getCreaturePos(cid), 15) doMoveCreature(cid, getPlayerLookDir(cid)) return addEvent(moveMelee, 10, cid, t) else doCreatureSetNoMove(cid, false) return TRUE end else return TRUE end end --Função da movimentação para sorcerer e druid function moveMagic(cid) if(isCreature(cid)) then tmp = getCreaturePos(cid) dir = getPlayerLookDir(cid) for i=1, quantpos do if(dir==0) then tmp = {x=tmp.x, y=tmp.y-1, z=tmp.z} elseif(dir==1) then tmp = {x=tmp.x+1, y=tmp.y, z=tmp.z} elseif(dir==2) then tmp = {x=tmp.x, y=tmp.y+1, z=tmp.z} elseif(dir==3) then tmp = {x=tmp.x-1, y=tmp.y, z=tmp.z} end if (doTileQueryAdd(cid, tmp)==1 or (getPlayerSkullType(cid)>0 and getTilePzInfo(tmp)==1)) then if(dir==0) then tmp = {x=tmp.x, y=tmp.y+1, z=tmp.z} elseif(dir==1) then tmp = {x=tmp.x-1, y=tmp.y, z=tmp.z} elseif(dir==2) then tmp = {x=tmp.x, y=tmp.y-1, z=tmp.z} elseif(dir==3) then tmp = {x=tmp.x+1, y=tmp.y, z=tmp.z} end break end end doTeleportThing(cid, tmp) doSendMagicEffect(getCreaturePos(cid), 49) doCreatureSetNoMove(cid, false) return TRUE else return TRUE end end --Efeitos para a movimentação de sorc e druid function magicEffect(cid, i) if(isCreature(cid)) then local atual = getCreaturePosition(cid) local posefeitos = { {x=(atual.x)-1, y=(atual.y)-1, z=atual.z}, {x=atual.x, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=atual.y, z=atual.z}, {x=(atual.x)+1, y=(atual.y)+1, z=atual.z}, {x=atual.x, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=atual.y, z=atual.z}, } if(i<=8) then doSendMagicEffect({x=posefeitos[i].x, y=posefeitos[i].y, z=posefeitos[i].z}, 39) end if(i>8) then doSendMagicEffect(atual, 49) return moveMagic(cid) end return addEvent(magicEffect, 50, cid, i+1) else return TRUE end end --Função principal function onSay(cid, words, param) if(getPlayerStorageValue(cid, exhauststorage)>os.time()) then doPlayerSendCancel(cid, "Voce deve esperar "..(getPlayerStorageValue(cid, exhauststorage)-os.time()).." segundos para usar a movimentação novamente.") return TRUE else setPlayerStorageValue(cid, exhauststorage, os.time()+exhaust) local v = getPlayerVocation(cid) for i=1, #voc[1] do if(v==voc[1][i]) then return moveMelee(cid, quantpos),doCreatureSay(cid, "Movimentação ultra rápida!", 1) end end return magicEffect(cid, 1),doCreatureSay(cid, "Teleport!", 1),doCreatureSetNoMove(cid, true) end end
  9. Gostei
    Reedz deu reputação a bielzinhocrazy em Sistema de aprimoramento da movimentação   
    Realmente, baixei um OT da versão 9,83, e não funcionou. Bom, eu não sei as causas porque sempre fiz scripts na versão 8.6, e faz muito, MUUUITO tempo que não faço códigos pra tibia (uns 3 a 4 anos, eu resolvi fazer alguns agora pra passar o tempo). Mas ao que parece, ao meu ver, ele não está reconhecendo as funções 'doTileQueryAdd', nem a 'doSendAnimatedText', sendo que a função 'doTileQueryAdd' é uma função chave pra verificar a posição limite em que o player pode se movimentar. Talvez possua uma sintaxe diferente devido à versão. De qualquer forma, vou tentar achar uma solução no meu tempo livre, e se eu conseguir, eu aviso.
     
    --------------------------------------------------------------EDIT--------------------------------------------------------------
     
    Dei uma olhada melhor aqui, e realmente, com a mudança de versões foi alterado a sintaxe dos códigos 'doTileQueryAdd' e 'doSetNoMove', fiz algumas modificações, para o OT 9.83 está funcionando corretamente agora. Segue o código do novo move.lua:
    local exhauststorage = 20209 -- storage para o exhaust local exhaust = 10 -- tempo do exhaust em segundos local quantpos = 30 -- posições x ou y que o personagem irá avançar, por exemplo, aqui irá se mover 30 posições pra direção em que estiver local voc = { --dependendo da vocação, a movimentação será diferente {3,4,7,8,11,12}, -- vocações melee, que no caso são knight e paladin {1,2,5,6,9,10}, -- vocações mágicas, que são sorc e druid } --Função da movimentação para paladin e knight function moveMelee(cid, t) if(isCreature(cid)) then local tmp = getPlayerLookPos(cid) if(not isCreature(getThingFromPos(tmp).uid) and doTileQueryAdd(cid, tmp)~=1 and t>0) then doCreatureSetNoMove(cid, true) t = t-1 doSendMagicEffect(getCreaturePos(cid), 15) doMoveCreature(cid, getPlayerLookDir(cid)) return addEvent(moveMelee, 10, cid, t) else doCreatureSetNoMove(cid, false) return TRUE end else return TRUE end end --Função da movimentação para sorcerer e druid function moveMagic(cid) if(isCreature(cid)) then tmp = getCreaturePos(cid) dir = getPlayerLookDir(cid) for i=1, quantpos do if(dir==0) then tmp = {x=tmp.x, y=tmp.y-1, z=tmp.z} elseif(dir==1) then tmp = {x=tmp.x+1, y=tmp.y, z=tmp.z} elseif(dir==2) then tmp = {x=tmp.x, y=tmp.y+1, z=tmp.z} elseif(dir==3) then tmp = {x=tmp.x-1, y=tmp.y, z=tmp.z} end if (doTileQueryAdd(cid, tmp)==1) then if(dir==0) then tmp = {x=tmp.x, y=tmp.y+1, z=tmp.z} elseif(dir==1) then tmp = {x=tmp.x-1, y=tmp.y, z=tmp.z} elseif(dir==2) then tmp = {x=tmp.x, y=tmp.y-1, z=tmp.z} elseif(dir==3) then tmp = {x=tmp.x+1, y=tmp.y, z=tmp.z} end break end end doTeleportThing(cid, tmp) doSendMagicEffect(getCreaturePos(cid), 49) doCreatureSetNoMove(cid, false) return TRUE else return TRUE end end --Efeitos para a movimentação de sorc e druid function magicEffect(cid, i) if(isCreature(cid)) then local atual = getCreaturePosition(cid) local posefeitos = { {x=(atual.x)-1, y=(atual.y)-1, z=atual.z}, {x=atual.x, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=atual.y, z=atual.z}, {x=(atual.x)+1, y=(atual.y)+1, z=atual.z}, {x=atual.x, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=atual.y, z=atual.z}, } if(i<=8) then doSendMagicEffect({x=posefeitos[i].x, y=posefeitos[i].y, z=posefeitos[i].z}, 39) end if(i>8) then doSendMagicEffect(atual, 49) return moveMagic(cid) end return addEvent(magicEffect, 50, cid, i+1) else return TRUE end end --Função principal function onSay(cid, words, param) if(getPlayerStorageValue(cid, exhauststorage)>os.time()) then doPlayerSendCancel(cid, "Voce deve esperar "..(getPlayerStorageValue(cid, exhauststorage)-os.time()).." segundos para usar a movimentação novamente.") return TRUE else setPlayerStorageValue(cid, exhauststorage, os.time()+exhaust) local v = getPlayerVocation(cid) for i=1, #voc[1] do if(v==voc[1][i]) then return moveMelee(cid, quantpos),doCreatureSay(cid, "Movimentação ultra rápida!", 1) end end return magicEffect(cid, 1),doCreatureSay(cid, "Teleport!", 1),doCreatureSetNoMove(cid, true) end end
  10. Gostei
    Reedz deu reputação a xWhiteWolf em Dodge System 8.54+   
    no script aí não tem restrição nenhuma, se vc quiser restringir mude aqui na action:
    --- Dodge System by Night Wolf       local config = {    effectonuse = 14, -- efeito que sai    levelsdodge = 100,  --- leveis que terão    storagedodge = 48902 -- storage que será verificado    }     local notallowed = {1,2,5,6} function onUse(cid, item, frompos, item2, topos) if not isInArray(notallowed, getPlayerVocation(cid)) then     if getPlayerStorageValue(cid, config.storagedodge) < config.levelsdodge then    doRemoveItem(item.uid, 1) doSendMagicEffect(topos,config.effectonuse) doPlayerSendTextMessage(cid,22,"You've Leveled your Dodge Skill to ["..(getPlayerStorageValue(cid, config.storagedodge)+1).."/100].") setPlayerStorageValue(cid, config.storagedodge, getPlayerStorageValue(cid, config.storagedodge)+1) elseif getPlayerStorageValue(cid, config.storagedodge) >= config.levelsdodge then doPlayerSendTextMessage(cid,22,"You've already reached the MAX level of Dodge Skill.\nCongratulations!!!!")     return 0     end else doPlayerSendTextMessage(cid,22,"You can't learn this skill because you're "..getPlayerVocationName(cid)..".") return 0 end return 1 end aqui são as classes que não poderão utilizar o skill book (mas ainda assim elas poderão comprar:
    local notallowed = {1,2,5,6} Vocation com os id's 1,2,5,6, lembrando q vc pode alterar a vontade
      e no math.random do creaturescript troque isso
    >= math.random (0,1000) por isso
    >= math.random (1,1000)
  11. Gostei
    Reedz deu reputação a xWhiteWolf em Dodge System 8.54+   
    Ae galera do TK, uns caras ficaram me mandando PM pedindo esse sistema aqui.. aparentemente tem em algum server e eles queriam replicar o sistema no OT deles. Não sei como funciona no outro server mas no script que eu fiz vai funcionar assim:
    Serão 100 livros que você poderá comprar de um npc específico, cada livro te dá 1 ponto a mais na skill Dodge e isso acarreta em 0.3% de chance a mais de desviar de um golpe e tomar só 50% de dano. Infelizmente eu nunca joguei no servidor que foi o pioneiro desse sistema (na vdd eu nem sei qual é) então eu não fiz igual o deles, na realidade o meu só funciona ao perder vida então se o mago usar utamo vita acabou os dodge's dele. Outra coisa importante é que o player tem uma chance rara de dar Dodge no Dodge, ou seja, levando 1/4 do dano. Só vai funcionar para ataques de criaturas, tanto melee quanto spells, ou seja, se o cara passar no fogo não tem chance dele desviar do dano 
    Sem mais delongas, vamos ao script:

    Crie um arquivo chamado dodge.lua na pasta creaturescripts\scripts e coloque isso dentro dele:
     

    agora adicione essa linha no creaturescripts.xml:
    <event type="statschange" name="dodge" event="script" value="dodge.lua"/> em creaturescripts\scripts\login.lua adicione isso antes do ultimo return true:
    registerCreatureEvent(cid, "dodge") if getPlayerStorageValue(cid, 48902) == -1 then         setPlayerStorageValue(cid, 48902, 0)      end agora vá em actions.xml e adicione essa linha aqui:
    <action itemid="1950" script="dodgebook.lua"/> note que vc pode mudar o ID do livro a hora que vc quiser.

    em items.xml, procure o item com o ID que vc irá utilizar e deixe ele assim:
    <item id="1950" article="a" name="Skill Book [DODGE]"> <attribute key="weight" value="1300" /> </item> agora crie um arquivo chamado dodgebook em actions\scripts e coloque isso dentro dele:
  12. Gostei
    Reedz deu reputação a Jamison Collins em Magia que bate pela mana.   
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE) function onGetFormulaValues(cid, level, maglevel) local mana = getCreatureMana(cid) local porcento = 10 min = -((mana/100) * porcento) max = -((mana/100) * porcento) return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) end Eu peguei o Flame Strike (exori flam) e fiz o que você pediu, testa e me fala.
  13. Gostei
    Reedz deu reputação a xWhiteWolf em Script, Monstro morrer, Nascer outros 2   
    É um script bem complicadinho mas é totalmente fazível. O segredo é utilizar uma lever que chece se o player tem 4 storages, se ele não tiver nenhum a alavanca sumona o primeiro monstro e muda um dos storages, daí ela vira outra alavanca de id 1946, após matar o monstro vc ganha um storage novo, e a alavanca só volta pra 1945 se vc tiver esse storage novo (utilize a função onDeath pra colocar storage após matar o monstro). Daí qnd virasse 1945 ela sumonava 2 monstros nas posições locais predefinidas e ia repetindo tudo. No final ela criaria o tp com essa funçãozinha aqui (também checando o storage do player)
    local toPos = {x = 251, y = 37, z = 5} -- posição que leva local Postele = {x = 251, y = 37, z = 5} --posição que nasce o teleporte doCreateTeleport(1387, toPos, PosTele) Eu consigo fazer pra ti mas eu gostaria MUITO que vc tentasse fazer sozinho pra aumentar o número de scripters desse fórum. Me manda PM qualquer dúvida que eu tento te ajudar com oque eu conseguir

Informação Importante

Confirmação de Termo