Ir para conteúdo

shadowfall

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    shadowfall recebeu reputação de tiroleivi em Almentar o Heal do FOOD   
    Boa noite, cara coloca assim
     
    vai em data/action/scripts ou data/action/scripts/other (não sei em qual pasta está seu food.lua), (em dúvida procurar no action.xml)
    cola esse script la:



     
    Depois você vai em data/XML/vocations.xml
    configurar em

    gainhpamount="10" -- tanto de health para heal
    gainmanaamount="10" -- tanto de mana para heal

     
  2. Gostei
    shadowfall recebeu reputação de Sayadjin em Almentar o Heal do FOOD   
    Boa noite, cara coloca assim
     
    vai em data/action/scripts ou data/action/scripts/other (não sei em qual pasta está seu food.lua), (em dúvida procurar no action.xml)
    cola esse script la:



     
    Depois você vai em data/XML/vocations.xml
    configurar em

    gainhpamount="10" -- tanto de health para heal
    gainmanaamount="10" -- tanto de mana para heal

     
  3. Gostei
    shadowfall deu reputação a xWhiteWolf em (Resolvido)COMBAT_PARAM_CREATEITEM sem adicionar pz locked   
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) setCombatParam(combat, COMBAT_PARAM_EFFECT, 43) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 28) local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, 2000) setConditionFormula(condition, -0.5, 0, -0.5, 0) setCombatCondition(combat, condition) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) function onCastSpell(cid, var) doCreateItem(2120, 1, getThingPos(variantToNumber(var))) doCombat(cid, combat, var) return true end
  4. Gostei
    shadowfall deu reputação a abugaduniga em Item que da HP máximo bonus   
    E ae pessoal!
     
    vi em otro tópico essa duvida, porém o carinha resolveu sozinho e nao quis compartilhar o script!
    Então fuçei um poco e descobri como colocar isso aew!
     
     
    Item HP By Abugaduniga
    Testado em otserv 8.6 TFS 0.36
     
    1º Passo
     
    Coloque a seguinte linha no arquivo Items.xml no item que voce deseja que tenha este bonus:
    <attribute key="maxhealthpoints" value="100"/> Onde Value é a quantidade de HP que voce quer que o item dê de bonus
     
     
    EXEMPLO:
     
    Peguei o item coat(2651) e modifiquei ele para dar um bonus de 50 HP maximo
    Lembre-se do tipo de slot do item! isto é muito importante!
        <item id="2651" article="a" name="coat">         <attribute key="weight" value="2700" />         <attribute key="armor" value="1" />         <attribute key="slotType" value="body" />,         <attribute key="maxhealthpoints" value="50"/>     </item> 2º Passo
     
    Isto deve ser colocado em movements.xml
    <movevent type="Equip" itemid="2651" slot="body" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="2651" slot="body" event="function" value="onDeEquipItem"/> onde itemid="2651", Substituir 2651 pelo id do item que você modificou no 1º passo.
    onde slot="body" , Substituir pelo tipo de slot do item que você modificou no 1º passo.
     
     
    isso aew galera, se foi útil rep+
    se nao foi util, rep+ pq deu trabalho!
     
     
    Qualquer dúvida ou bug, tamo ai pra isso! posta no tópico!
  5. Gostei
    Por nada!
    Disponha!

  6. Gostei
    shadowfall recebeu reputação de miromaximus em Bau-Quest   
    Tenta assim já que você não que criar script de quest.
     
    coloca assim no RME

     
    coloca o item dentro do bau, ai coloca o

    action ID = 2000
    unique ID= 20001

     
    Se for criar outra quest coloca o mesmo action, e coloca outro unique

    action ID = 2000
    unique ID = 20002

     
    obs: não testei, mas já fiz desse modo a muito tempo quando não sabia criar quests no script
     
  7. Gostei
    Boa noite! Eu fiquei curioso com esse pedido, não sou scripting, sou só um OT-Admin, mas consigo desenrola umas coisas E testei uns scripts aqui, editando...e editando... e consegui funfa esse script no meu serve, to passando para você.   PS: Editei algumas coisas do script que você postou, porque não tava funfando.   e arthurabreu, esse função não funfa de jeito nenhum  doPlayerAddSkillTry(cid,skillid,n)   e Rudkiller, testei esse seu script aqui e deu o seguinte erro   [10/01/2015 18:34:38] [Error - Action Interface]  [10/01/2015 18:34:38] data/actions/scripts/evento/magic.lua [10/01/2015 18:34:38] Description:  [10/01/2015 18:34:38] (luaSetConditionParam) Condition not found   Vamos la ao script que eu editei e funfo pelo menos aqui no meu serve:
      Tirei até uns print para demostrar.
      Bom, é isso intão, espero que tenha gostado, avisa se de algum erro no distro ou bug
  8. Gostei
    Hm, curioso. Tenta esse:
    ps: se não se importa, eu coloquei pra mostrar os segundos também (acho mais legal e.e). caso você não goste, só avisar que eu retiro.
    function convertTime(time)     local minutes = math.floor(time/60)     local seconds = time - (minutes * 60)            return {minutes, seconds} end function onUse(cid, item, frompos, item2, topos)     local msg = "[Castle of Titans] Você deve aguardar %d minuto%s e %d segundo%s para usar a alavanca."     local gates = {         {x = 470, y = 243, z = 7},     --Posições dos portões.         {x = 471, y = 243, z = 7},     }     local id = 9485    --ID do portão.     if getGlobalStorageValue(91801) > os.time() then         local t = convertTime(getGlobalStorageValue(91801) - os.time())         return doPlayerSendCancel(cid, msg:format(t[1], t[1] > 1 and "s" or "", t[2], t[2] > 1 and "s" or ""))     elseif getPlayerGuildId(cid) < 1 then         return doPlayerSendCancel(cid, "You aren't member of any guild.")     end     for _, b in pairs(gates) do         local gate = getTileItemById(b, id).uid         if gate > 0 then             doRemoveItem(gate, 1)             doSendMagicEffect(b, 2)             addEvent(function()                 doCreateItem(id, 1, b)             end, 5 * 60 * 1000)         else             return doPlayerSendCancel(cid, "Someone already opened the gates.")         end     end     broadcastMessage('Os Portões da ponte the Castle of Titans foram abertos, e se fecharão em 5 minutos', MESSAGE_EVENT_ADVANCE)     addEvent(function()         setGlobalStorageValue(91801, os.time() + 3600)     end, 5 * 60 * 1000)     return true end
  9. Gostei
    Fiz uma função pra retornar o tempo do modo como você quer, porém não testei.

    Códigos do membro zipter98:
    function getGlobalExhaust(key)     local t = getGlobalStorageValue(key)     exhaust = math.floor((t - os.time()) / 60) > 0 and math.floor((t - os.time()) / 60) or 0     return exhaust end local gates = {     {x = 470, y = 243, z = 7},     --Posições dos portões.     {x = 471, y = 243, z = 7} } local etime = {5, 60} -- {tempo para fechar, tempo para usar} ~ em minutos local id = 9485 -- ID do portão. local gstor = 91801 -- global storage function onUse(cid, item, frompos, item2, topos)     if getGlobalStorageValue(gstor) > os.time() then         return doPlayerSendCancel(cid, "[Castle of Titans] Você deve aguardar "..getGlobalExhaust(gstor).." minuto(s) para usar a alavanca.")     elseif getPlayerGuildId(cid) < 1 then         return doPlayerSendCancel(cid, "You aren't member of any guild.")     end          for _, b in pairs(gates) do         local gate = getTileItemById(b, id).uid         if gate > 0 then             doRemoveItem(gate, 1)             doSendMagicEffect(b, 2)             addEvent(function()                 doCreateItem(id, 1, b)             end, 5 * 60 * 1000)         else             return doPlayerSendCancel(cid, "Someone already opened the gates.")         end     end          broadcastMessage('Os Portões da ponte the Castle of Titans foram abertos, e se fecharão em 5 minutos', MESSAGE_EVENT_ADVANCE)     addEvent(setGlobalStorageValue, etime[1] * 60000, gstor, os.time() + etime[2] * 60)     return true end
  10. Gostei
    shadowfall deu reputação a xWhiteWolf em (Resolvido)Atributos diferentes nos items   
    /\ esse não é o jeito de se fazer isso.

    Seguinte, se vc quiser adicionar esses atributos numa tag do items.xml vc precisará fazer alterações na source, todas elas são conditions que vc vai ter que adicionar ao equipar um item.

    Como vc pode ver nesse tópico, nenhum desses atributos existe realmente no tibia http://www.tibiaking.com/forum/topic/31450-pedido-editar-items/

     
    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) doAddCondition(cid, condition) doSendMagicEffect(getCreaturePos(cid), 10) return true end function onDeEquip(cid, item, slot) doRemoveCondition(cid, CONDITION_ATTRIBUTES) return true end <movevent type="Equip" itemid="11234" slot="feet" event="script" value="set.lua"/> <movevent type="DeEquip" itemid="11234" slot="feet" event="script" value="set.lua"/> Dessa maneira vc pode editar os atributos que serão adicionados com todas as conditions existentes no seu servidor:




    Agora sobre a espada que tira dano em % é só vc editar ela pelo items.xml igual a fire sword por exemplo, se ela tiver 80 de ataque físico e 20 de ataque de fire/ice serão 20% certinho. Qualquer outro valor vc faz regra de 3 e chega.. o outro modo de fazer isso é por 2 combats num script de weapons mas não é tão eficaz como a maneira citada acima.
  11. Gostei
    Opa, nesse exato momento estou almoçando. Estava pensando neste código, e então lembrei que não tinha feito nenhuma proteção contra esse bug. Editei meu comentário anterior com a correção. 
    Sobre seu outro pedido, vou só terminar de comer e faço.
    EDIT: Pronto, aqui:
    function onUse(cid, item, frompos, item2, topos)     local gates = {         {x = 470, y = 243, z = 7},     --Posições dos portões.         {x = 471, y = 243, z = 7},     }     local id = 9485    --ID do portão.     if getGlobalStorageValue(91801) > os.time() then         return doPlayerSendCancel(cid, "Espere 1h para usar a alavanca novamente.")     elseif getPlayerGuildId(cid) < 1 then         return doPlayerSendCancel(cid, "You aren't member of any guild.")     end     for _, b in pairs(gates) do         local gate = getTileItemById(b, id).uid         if gate > 0 then             doRemoveItem(gate, 1)             doSendMagicEffect(b, 2)             addEvent(function()                 doCreateItem(id, 1, b)             end, 5 * 60 * 1000)         else             return doPlayerSendCancel(cid, "Someone already opened the gates.")         end     end     broadcastMessage('Os Portões da ponte the Castle of Titans foram abertos, e se fecharão em 5 minutos', MESSAGE_EVENT_ADVANCE)     addEvent(function()         setGlobalStorageValue(91801, os.time() + 3600)     end, 5 * 60 * 1000)     return true end
  12. Gostei
    Se você colocar o uniqueid na tag desta action, não vai ser necessário checá-lo no código.
    Se não se importa, removi esta linha, que, ao meu ver, era inútil:
    doTransformItem(item.uid, item.itemid) Do jeito que fiz, na minha opinião, a configuração é mais fácil (se quiser adicionar um novo portão, basta colocar a posição na tabela gates).
    Enfim, aqui o código:
    ps: o tempo começa a ser contado depois de 5 minutos, no momento em que os portões são criados.
    function onUse(cid, item, frompos, item2, topos)     local gates = {         {x = 470, y = 243, z = 7},     --Posições dos portões.         {x = 471, y = 243, z = 7},     }     local id = 9485    --ID do portão.     if getGlobalStorageValue(91801) > os.time() then         return doPlayerSendCancel(cid, "Espere 1h para usar a alavanca novamente.")     end     for _, b in pairs(gates) do         local gate = getTileItemById(b, id).uid         if gate > 0 then             doRemoveItem(gate, 1)             doSendMagicEffect(b, 2)             addEvent(function()                 doCreateItem(id, 1, b)             end, 5 * 60 * 1000) else return doPlayerSendCancel(cid, "Someone already opened the gates.")         end     end     broadcastMessage('Os Portões da ponte the Castle of Titans foram abertos, e se fecharão em 5 minutos', MESSAGE_EVENT_ADVANCE)     addEvent(function()         setGlobalStorageValue(91801, os.time() + 3600)     end, 5 * 60 * 1000)     return true end
  13. Gostei
    shadowfall deu reputação a DoidoPox em (facil) alavanca remove item and stone   
    nao cara a espada e a pedra tem que sair no mesmo momento pq a espada e um item ai da pra pega fraga ai a alavanca fica criando espada

     
    function onUse(cid, item, frompos, item2, topos) item1pos = {x=1010, y=724, z=8, stackpos=2}
    rock1pos = {x=1010, y=725, z=8, stackpos=1} -- Posição da Pedra
    getrock1 = getThingfromPos(rock1pos)
    getitem1 = getThingfromPos(item1pos)
    UniID = 4563 -- UniqueID que vai ser adicionado na alavanca
    rockID = 1353
    itemID = 7959

    if item.uid == UniID and item.itemid == 1945 and getrock1.itemid == rockID then
    doRemoveItem(getrock1.uid, 1)
    doTransformItem(item.uid, item.itemid+1)
    doSendMagicEffect(rock1pos, 2)
    elseif item.uid == UniID and item.itemid == 1946 then
    doCreateItem(rockID, 1, rock1pos)
    doTransformItem(item.uid,item.itemid-1)
    doSendMagicEffect(rock1pos, 13)
    end

    if item.uid == UniID and item.itemid == 1945 and getitem1.itemid == itemID then
    doRemoveItem(getitem1.uid, 1)
    doTransformItem(item.uid, item.itemid+1)
    doSendMagicEffect(item1pos, 2)
    elseif item.uid == UniID and item.itemid == 1946 then
    doCreateItem(itemID, 1, item1pos)
    doTransformItem(item.uid,item.itemid-1)
    doSendMagicEffect(item1pos, 13)        
    end
    return TRUE
    end
    misturei tudo mais ta funfanfo ta ai pra quem quiser bye xD vlw pela ajuda
  14. Gostei
    shadowfall deu reputação a krellgaming em [ACT/MOV] KeyDoor with Storage   
    Já vi alguns tutoriais, alguns scripts sobre doors e key doors e sinceramente quase nenhum me agradou, nem atendeu a alguns requisitos que eu queria.
    Entao vi um topico aqui no Suporte e resolvi fazer o script pro cara que tava pedindo e tambem vou usar no meu server.
    Funciona assim: Voce pega uma key especifica, e clica numa porta especifica, entao a key some e voce pode passar pela porta pra sempre.
    E so quem tiver a key e usar ela na porta, vai poder passar.
     
    PS: coloque uma porta normal, não locked.
     
    faça um arquivo chamado doorkeystorage.lua e coloque em actions/scripts
    function onUse(cid, item, frompos, item2, topos) local storage = 304392 -- coloque o storage aqui local porta = 7049 -- id da porta local uniqueidporta = 12000 if item2.uid == uniqueidporta and item2.itemid == porta then setPlayerStorageValue(cid, storage, 1) doRemoveItem(cid, item.uid, 1) else doPlayerSendTextMessage(cid, 22, "Porta errada!") end return TRUE end Em actions.xml:
    <action itemid="ID DA CHAVE" script="doorkeystorage.lua"/>
    <action uniqueid="12000" script="doorkeystorage.lua"/>
     
    Aí você põe na porta no map, o uniqueid 12000
    e a chave tal, quando usada na porta, dá o storage pro jogador.
     
    em movements/scripts crie um arquivo com o nome doorkeystorage.lua
    function onStepIn(cid, item, position, fromPosition, toPosition) local storage = getPlayerStorageValue(cid, 304392) if storage == 1 then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Siga em frente.") else doTeleportThing(cid, fromPosition) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Somente players que liberaram esta passagem, podem passar.") end return true end Em movements.xml adicione:
    <movevent type="StepIn" actionid="ACTION QUE VC VAI POR NO PISO EM BAIXO DA PORTA" event="script" value="doorkeystorage.lua"/>
  15. Gostei
    shadowfall deu reputação a lucasalsre em Mover todos para uma posição (bom para eventos)   
    Olá pessoal, antes de seguirem com o script, leiam isso por favor. Eu estou escrevendo de um tablet, por isso, fica difícil organizar o post, então quando eu entrar no PC eu arrumo, agora vocês podem ver o script .

    O que o script faz:
    ​Ao dizer /alltemple todas as pessoas que estiverem online no game vão para uma certa posição no jogo que você escolheu no script (eu sempre faço irem para o templo), e isso é muito bom em eventos!
    
    Os passos que você tem que seguir:
    ​1° passo: vá na pasta do seu ot/data/talkactions/scripts e adicione um arquivo chamado todosparaotemplo.lua, coloque isso dentro dele:

    function onSay(cid, words, param)
    local players = getPlayersOnline()
    local pos = {x=1051, y=1051, z=6} -- posição do templo
    for i=1, #players do
    doTeleportThing(players, pos)
    end
    db.executeQuery("UPDATE `players` SET `posx` = '"..pos.x.."', `posy` = '"..pos.y.."', `posz` = '"..pos.z.."';")
    return true
    end

    E salve.​
    
    2° passo: volte uma pasta (vá na pasa do seu ot/data/talkactions) e abra o talkactions.xml como bloco de notas, coloque isso nele:
    <talkaction words="/alltemple" access="5" event="script" value="todosparaotemplo.lua"/>

    Feche e salve.
    
    Como editar o local em que todos vão:
    Dentro do arquivo todosparaotemplo.lua, vai ter uma linha assim:
    local pos = {x=1051, y=1051, z=6} -- posição do templo
     ​É só você editar a posição x, y e z.
  16. Gostei
    shadowfall deu reputação a luanluciano93 em Mover todos para uma posição (bom para eventos)   
    Legal o script, obrigado por comaprtilhar ... 

Informação Importante

Confirmação de Termo