Ir para conteúdo

Xiolones

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Xiolones deu reputação a KotZletY em NPC Vocation   
    Este tópico foi movido para a área correta. Esta é uma mensagem automática!
    Pedimos que leia as regras do fórum!
     
    @Xiolones
     
  2. Gostei
    Xiolones recebeu reputação de Cat em Fishing Monsters   
    Posta o problema ai amigão, fica mais fácil de quem for ajudar entender do que se trata ?
    E fala qual TFS tu usa
  3. Curtir
    Xiolones deu reputação a Cat em [TFS 1.3] Otg Server Global - 12.85 (Updates Diarios)   
    no rme, vá no menu edit > find on map > find everything

  4. Gostei
    Xiolones recebeu reputação de Cat em [TFS 1.3] Otg Server Global - 12.85 (Updates Diarios)   
    Troque o Oracle pelo outro NPC que faz a mesma função... é npc do mesmo jeito
  5. Curtir
    Xiolones deu reputação a Cat em 12.51 (OTG Nulled) Mapa OTSERVBR - Correções de bugs e locais novos   
    Nova atualização no mapa (disponibilizarei hoje a noite)
     
    (d271220)
    - King Zelus Room
    - Water Elemental Cave Port Hope 32679 32963 7
    - Forgotten Temple (Ankrahmun) 33315 32674 7
    - Hyeana Lair's (Darashia) 33212 32358 8
    - Zarganash (boss rooms e taint central teleport) 33770-31505-13, 33714-31505-14, 33710-31635-14, 33621-31431-10
    - Netherworld and mini bosses room 33614 31414 8
    - Last Boss King Zelos room (Grave Danger) 33490 31547 13
    - Entrance to Isle of the Kings Position 32172 31918 8
    - Stone portals of Netherworld (Banuta) 32883 32518 7
    - Bounac 32409, 32484, 7
    - Added Mirrored Nightmare map (incompleto) 33937 31217 11
    - Dream Scar and Last Boss Room (5 Bosses Room faltando) 32208 32034 13
    - Brain Grounds (Entrance north of the Jakundaf Desert in Venore) 31914 32355 8
     
    (d271220)
    - Issavi revisada
    - Krailos Revisada
    - Tps e alavancas da grave_danger quest corrigidos
    - Bugs corrigidos: 18
     
    Bugs totais corrigidos (erros de mapa): 171
     
    Créditos pelas áreas novas adicionadas: Gabriel Wendel, Nolis, Dudantas, LIKEAHYENA, Thevonlossehelin
  6. Curtir
    Xiolones recebeu reputação de Cat em 12.51 (OTG Nulled) Mapa OTSERVBR - Correções de bugs e locais novos   
    Parabéns pelo trabalho @Nolis ?
  7. Obrigado
    Xiolones deu reputação a Cat em 12.51 (OTG Nulled) Mapa OTSERVBR - Correções de bugs e locais novos   
    O objetivo desta publicação é registrar e informar as atualizações no mapa oficial OTSERVBR (VERSÃO NULLED).
    Ajude reportando bugs de mapa neste tópico, agradecemos!
     
     
    Peso do mapa do projeto no Github (versão antiga) - 158.962
    Peso do Mapa com as atualizações novas do post abaixo: - 154.357
     
     
    Mapas Novos adicionados! 
    (d.241220)
    - Zarganash 33623 31399 10
    - Zarganash: Bosses room 33621 31433 10 
    - Taberna do Thaian 33232 31700 7
    - Barren Drift 33877 31886 8
    - Barren rift: Sala do boss 33877 31886 8
     
    (d.271220)
    - King Zelus Room
    - Water Elemental Cave Port Hope 32679 32963 7
    - Forgotten Temple (Ankrahmun) 33315 32674 7
    - Hyeana Lair's (Darashia) 33212 32358 8
    - Zarganash (boss rooms e taint central teleport) 33770-31505-13, 33714-31505-14, 33710-31635-14, 33621-31431-10
    - Netherworld and mini bosses room 33614 31414 8
    - Last Boss King Zelos room (Grave Danger) 33490 31547 13
    - Entrance to Isle of the Kings Position 32172 31918 8
    - Stone portals of Netherworld (Banuta) 32883 32518 7
    - Bounac 32409, 32484, 7
    - Added Mirrored Nightmare map (incompleto) 33937 31217 11
    - Dream Scar and Last Boss Room (5 Bosses Room faltando) 32208 32034 13
    - Brain Grounds (Entrance north of the Jakundaf Desert in Venore) 31914 32355 8
     
     
    Modificações
    (d.241220)
    - Library Mapa Revisado 
    - Falcon Bastion Edron/Zão Revisados
    - Lion Sanctun Revisado
    - 897.347 Pisos isolados removidos. 
    - Bugs corrigidos: 63 
     
    (d.271220)
    - Issavi revisada
    - Krailos Revisada
    - Tps e alavancas da grave_danger quest corrigidos
    - Bugs corrigidos: 18
     
    Bugs totais corrigidos (erros de mapa): 171

    Templo-geral - 32209 32293 6
     
    O arquivo está nomeado OTG pois inicialmente as alterações acima foram feitas para o projeto OTG King, porém cancelamos a parceria com este projeto devido a problemas com venda de conteúdos Open Source.
     
     
     
     
     
    otg.otbm otg-house.xml otg-spawn.xml
  8. Curtir
    Xiolones recebeu reputação de Vodkart em (Resolvido)Sistema de Pesca quase pronto ajuda   
    @Thenebrozo Sei que o seu problema já foi resolvido, mas o vídeo que você postou é do meu server que nunca abri kk O script que eu usava está postado logo abaixo :
     

    PS : Desculpe reviver o tópico, só quero colaborar também! XD
  9. Gostei
    Xiolones recebeu reputação de xWhiteWolf em (Resolvido)Sistema de Pesca quase pronto ajuda   
    @Thenebrozo Sei que o seu problema já foi resolvido, mas o vídeo que você postou é do meu server que nunca abri kk O script que eu usava está postado logo abaixo :
     

    PS : Desculpe reviver o tópico, só quero colaborar também! XD
  10. Gostei
    Xiolones deu reputação a Fir3element em (Resolvido)Distro fechando [error desconhecido]   
    faz tempo q n abro um ot, mas acho q 50mb de map pra 2gb de ram no tfs 0.4 n dá certo não
    só pra ligar o ot ja deve ir embora 1-1.5gb ram, ai esse pouco q sobra fica pro sistema, mysql, etc
  11. Gostei
    Xiolones recebeu reputação de mormaiot em (Resolvido)SPELL COM 2 EFEITOS E DANOS DIFERENTES [HELP-ME]   
    Seria melhor se você especificasse a spell .. dano em área ? dano em target?
     
    Mas por via das dúvidas, vou te mandar uma com dano em área !
     
    1° Passo:
    Pegue um arquivo.lua e cole isto dentro e renomeie ..
     



     
    2° passo, adicione ela a sua spells.xml
        <instant name="Ultimate Power Bomb" words="exevo power" lvl="100" mana="532" prem="1" selftarget="1" exhaustion="2000" maglv="50" needlearn="0" script="renomeie.lua">         <vocation id="5"/>         <vocation id="6"/>     </instant> Pronto, está ai sua spell ..qualquer erro só me falar aqui que eu dou suporte!
    GOSTOU ? AJUDEI ? REP+  (se te ajudou, marque como MELHOR RESPOSTA )
  12. Gostei
    Xiolones deu reputação a xWhiteWolf em New Library v. 1.2   
    Fala galera, hoje vim trazer pra vocês uma nova biblioteca de funções que eu venho desenvolvendo, pretendo ir atualizando esse tópico constantemente sempre adicionando funções novas e explicando a utilização delas. Algumas funções que eu coloquei aqui estão presentes na OTAL também, porém algumas eu fiz pequenas correções de forma que essa lib poderia facilmente substituir a OTAL sem grandes problemas (pelo menos se você utilizava apenas as funções básicas da otal)
    Todas as funções que não tem -- nome do autor do lado dela foram feitas por mim, xWhiteWolf ou Night Wolf (NW). O restante delas são créditos dos devidos autores, apenas coloquei pois considero funções vitais no server de cada um. Crie um arquivo em data/lib chamado 075 - White Wolf Functions.lua e coloque o seguinte código dentro:



     
    Agora eu vou explicar oque cada função faz porque de nada adianta lançar uma lib e não explicar oque ela faz não é mesmo? hahaha
    Obs inicial: quando uma função tiver em seus parametros um [] significa que oque está dentro do colchetes não é um parâmetro obrigatório.



    Como usar: doShowTimeByPos(cid, getCreaturePosition(cid), 20, 20)
    Irá fazer uma contagem regressiva na posição que o player se encontra começando de 20 e mandando a mensagem na mesma cor da fala dos monstros.
    Essa função é bem útil em actions/spells para fazer contagem de tempo em runas como a magic wall e ver quanto tempo falta pra magic wall sumir)

     
    Obs: Espero que ajude bastante pessoas a entender sobre funções, eu utilizei cid como o principal uid das funções nos exemplos mas você pode muito bem utilizar outros uids, fica a critério seu.

    Qualquer dúvida comentem abaixo que eu vou tentar ajudar da melhor maneira.
    Ahhh, isso daí foi testado em 8.54 mas deve funcionar em quase todas as versões que tenham as funções básicas do TFS. 

    EDIT: Pessoal, agora é sério, essa lib tem fácil umas 600 linhas, das quais umas 500 eu devo ter codado sozinho (na mão, linha por linha). Eu tive todo o trabalho de testar cada uma delas e oque eu peço é o mínimo de gratidão e respeito. Se eu te ajudei clique em Gostei, se você tiver alguma dúvida eu to me colocando a disposição de responder qualquer coisa relacionada ao tópico, mesmo que você não saiba nem oque é uma lib apenas venha aqui e escreva sua dúvida.

    EDIT 2: Duas novas funções adicionas, espero que gostem!

    EDIT 3: Três novas funções adicionadas juntamente com suas respectivas explicações.
  13. Gostei
    Xiolones deu reputação a MaXwEllDeN em (Resolvido)Ajuda [Script] dinheiro por item   
    local config = { promotion = 2, -- promotion level, default = 1 . Ignore if you don't have new vocations. minLevel = 250, -- Level needed to buy promotion cost = 1000000, -- Promotion cost in gp premium = "yes", -- is premium needed to buy promotion? gold_id = 7633, -- Id do dinheiro } local disabledVocations = {0} config.premium = getBooleanFromString(config.premium) function onSay(cid, words, param) if isInArray(disabledVocations, getPlayerVocation(cid)) then doPlayerSendCancel(cid, "Your vocation cannot buy promotion.") return false end if config.premium and not isPremium(cid) then doPlayerSendCancel(cid, "You need a premium account.") return false end if getPlayerPromotionLevel(cid) >= config.promotion then doPlayerSendCancel(cid, "You are already promoted.") return false end if getPlayerLevel(cid) < config.minLevel then doPlayerSendTextMessage(cid, 21, "You need " .. config.minLevel .. " to get promotion.") return false end if not doPlayerRemoveItem(cid, config.gold_id, config.cost) then doPlayerSendTextMessage(cid, 21, "You do not have enought money! (Promotion cost " .. config.cost .. " gp.)") return false end setPlayerPromotionLevel(cid, config.promotion) doPlayerSendTextMessage(cid, 25, "You have been succesful promoted to " .. getVocationInfo(getPlayerVocation(cid)).name .. ".") return true end
  14. Gostei
    Xiolones deu reputação a Smart Maxx em (Resolvido)Ajuda [Script] dinheiro por item   
    local config = {     promotion = 2, -- promotion level, default = 1 . Ignore if you don't have new vocations.     minLevel = 250, -- Level needed to buy promotion     count = 5, -- Quantidade     premium = "yes", -- is premium needed to buy promotion?     gold_id = 7633, -- Id do dinheiro }   local disabledVocations = {0}   config.premium = getBooleanFromString(config.premium)   function onSay(cid, words, param)     if isInArray(disabledVocations, getPlayerVocation(cid)) then         doPlayerSendCancel(cid, "Your vocation cannot buy promotion.")         return false     end       if config.premium and not isPremium(cid) then         doPlayerSendCancel(cid, "You need a premium account.")         return false     end       if getPlayerPromotionLevel(cid) >= config.promotion then         doPlayerSendCancel(cid, "You are already promoted.")         return false     end       if getPlayerLevel(cid) < config.minLevel then         doPlayerSendTextMessage(cid, 21, "You need " .. config.minLevel .. " to get promotion.")         return false     end       if not doPlayerRemoveItem(cid, config.gold_id, config.count) then         doPlayerSendTextMessage(cid, 21, "You do not have enough item! (Promotion count " .. config.count .. " .)")         return false     end       setPlayerPromotionLevel(cid, config.promotion)     doPlayerSendTextMessage(cid, 25, "You have been succesful promoted to " .. getVocationInfo(getPlayerVocation(cid)).name .. ".")     return true   end  
  15. Gostei
    Xiolones recebeu reputação de walace1122 em (Resolvido)SPELL COM 2 EFEITOS E DANOS DIFERENTES [HELP-ME]   
    @walace1122 ele dava os 2 danos, porém ao mesmo tempo, então só mostrava um, muito bom que tenha conseguido resolver, pra quem não sabe como muda, era só mudar o tempo aqui .. Valeu pelo REP+
    Precisando de alguma coisa, só mandar ai no fórum que estamos ai pra ajudar!
    addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 100, parameters)
  16. Gostei
    Xiolones deu reputação a Stigal em Como conectar em um VPS Windows?!   
    1. Conexão de Área de Trabalho Remota
    Se você contratou um servidor de vps com sistema operacional "Windows", para conectar você poderá utilizar uma ferramenta fornecida pelo mesmo chamado "Microsoft Remote Desktop" que possibilita você a se conectar ao seu servidor. Para utilizar o aplicativo de conexão ao servidor, basta acionar as teclas "Windows" e "R" ao mesmo tempo e, quando aparecer a janela "Executar", digine "mstsc.exe" e basta pressionar o botão "ok", conforme a imagem abaixo: 
     
     
     2. Aguarde até o aplicativo carregar e certifique-se de que a seguinte janela apareça na tela:
    Agora digite o endereço do seu servidor (fornecido anteriormente) e clique em "Conectar". Nota: O endereço do servidor é formado pela designação do serviço, seguido da identificação da instancia do servidor e o domínio da empresa que você contratou.
    (Exemplo: vps-01.serversoft.com.br).
     
     
    3. Após “Conectar”, aguarde até que o seu servidor solicite as credenciais de acesso, que você também recebeu anteriormente.
    Para um primeiro acesso coloque o usuario .\administrator e sua Senha, (.\administrator indica uma nova conexão) Nota: para servidores em plataforma Windows, normalmente o usuário fornecido é o “administrator” e a senha padrão. Importante: por ser uma senha conhecida, recomendo a troca imediata.
     
     
     4. Aguarde até que a conexão seja estabelecida e a área de trabalho remota seja apresentada, conforme a figura a seguir:
    Observe o número no campo superior direito da tela. Essa é a identificação de sua máquina virtual.
     
     
    Espero que tenham entendido e gostado.
    Atenciosamente, Stigal.
  17. Gostei
    Xiolones recebeu reputação de walace1122 em (Resolvido)SPELL COM 2 EFEITOS E DANOS DIFERENTES [HELP-ME]   
    Seria melhor se você especificasse a spell .. dano em área ? dano em target?
     
    Mas por via das dúvidas, vou te mandar uma com dano em área !
     
    1° Passo:
    Pegue um arquivo.lua e cole isto dentro e renomeie ..
     



     
    2° passo, adicione ela a sua spells.xml
        <instant name="Ultimate Power Bomb" words="exevo power" lvl="100" mana="532" prem="1" selftarget="1" exhaustion="2000" maglv="50" needlearn="0" script="renomeie.lua">         <vocation id="5"/>         <vocation id="6"/>     </instant> Pronto, está ai sua spell ..qualquer erro só me falar aqui que eu dou suporte!
    GOSTOU ? AJUDEI ? REP+  (se te ajudou, marque como MELHOR RESPOSTA )
  18. Gostei
    Xiolones deu reputação a buddha em (Resolvido)Spell INOVADORA !   
    Fera, acabei de pensar numa maneira simples de criar sua spell tão esperada de LifeSteal(o real, não esse fajuto... heuhueuhe), se quiseres eu faço pra ti aqui...
     
    Editado
    Vi que a do Orochi Elf é quase um LifeSteal... MAS... Tá aqui:



     
    E tem que ter a tag "casterTargetOrDirection="1"" para funcionar, tire a "selftarget="1"".
  19. Gostei
    Xiolones deu reputação a Orochi Elf em (Resolvido)Spell INOVADORA !   
    Bom.. os códigos ficaram muito ridículos, preciso estudar uma forma mais bonitinha
     
    @OBS: Não testei.
    LifeSteal.lua



     
    Spells.xml
        <instant name="Life Steal" words="life steal" lvl="1" mana="100" prem="0" range="100" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="LifeSteal.lua">         <vocation id="4"/>     </instant>
  20. Gostei
    Xiolones deu reputação a buddha em (Resolvido)Spell INOVADORA !   
    Pois então... É praticamente impossível. O que daria pra fazer é juntar o exura a uma magia de área.
     
    Edit:
    Tipo assim:



  21. Gostei
    Xiolones deu reputação a GiovaniRodrigo em [ACTION] Change Vocação   
    Olá King Tibianos,
     
    A pedido da usuária TathiiCarvalho criei um script que troca de vocação, mas ele apenas não troca de vocação como também adiciona health e mana de acordo com o level e reseta skills.
    Eu já havia feito o script de trocar de vocação, mas quando um Sorcerer ou Druid com ML 80 trocava para vocação Knight ele ficava com ML 80. Imagina um Knight ML 80, não da né.
    Tinha outro problema, um Sorcerer ou Druid Level 150 com HP 895 e MP 4225, ele muda para vocação Knight e fica com o mesmo HP e MP, como seria um Knight Level 150 com HP 895 e MP 4225? Também não da né.
     
    Então modifiquei o script para fixar esses "erros".
     
    Crie um arquivo chamado changevoc.lua na pasta data/actions/scripts e cole isso
    function onUse(cid, item, frompos, item2, topos)           level = getPlayerLevel(cid)-8           pid = getPlayerGUID(cid)             magehealth = level*5 -- Quantidade de vida que o Sorcerer e Druid ganha a cada level(mude apenas os numeros)           magemana = level*30 -- Quantidade de mana que o Sorcerer e Druid ganha a cada level(mude apenas os numeros)             paladinhealth = level*10 -- Quantidade de vida que o Paladin ganha a cada level(mude apenas os numeros)           paladinmana = level*15 -- Quantidade de mana que o Paladin ganha a cada level(mude apenas os numeros)             knighthealth = level*15 -- Quantidade de vida que o Knight ganha a cada level(mude apenas os numeros)           knightmana = level*5 -- Quantidade de mana que o Knight ganha a cada level(mude apenas os numeros)             if item.uid == 30000 then                     doSendMagicEffect(topos, 14)                     doPlayerPopupFYI(cid, 'You changed his vocation to sorcerer.')                     doPlayerSetVocation(cid, 1)                     setCreatureMaxHealth(cid, magehealth)                     setCreatureMaxMana(cid, magemana)                     doRemoveCreature(cid)                     db.executeQuery("UPDATE `player_skills` SET `value` = ".. 10 ..", count = ".. 0 .." WHERE `player_id` = ".. pid ..";")                     db.executeQuery("UPDATE `players` SET `maglevel` = ".. 0 ..", `manaspent` = ".. 0 .." WHERE `id` = ".. pid ..";")           end             if item.uid == 30001 then                     doPlayerSetVocation(cid, 2)                     setCreatureMaxHealth(cid, magehealth)                     setCreatureMaxMana(cid, magemana)                     doSendMagicEffect(topos, 14)                     doPlayerPopupFYI(cid, 'You changed his vocation to druid.')                     doRemoveCreature(cid)                     db.executeQuery("UPDATE `player_skills` SET `value` = ".. 10 ..", count = ".. 0 .." WHERE `player_id` = ".. pid ..";")                     db.executeQuery("UPDATE `players` SET `maglevel` = ".. 0 ..", `manaspent` = ".. 0 .." WHERE `id` = ".. pid ..";")           end             if item.uid == 30002 then                     doPlayerSetVocation(cid, 3)                     setCreatureMaxHealth(cid, paladinhealth)                     setCreatureMaxMana(cid, paladinmana)                     doSendMagicEffect(topos, 14)                     doPlayerPopupFYI(cid, 'You changed his vocation to paladin.')                     doRemoveCreature(cid)                     db.executeQuery("UPDATE `player_skills` SET `value` = ".. 10 ..", count = ".. 0 .." WHERE `player_id` = ".. pid ..";")                     db.executeQuery("UPDATE `players` SET `maglevel` = ".. 0 ..", `manaspent` = ".. 0 .." WHERE `id` = ".. pid ..";")           end             if item.uid == 30003 then                     doPlayerSetVocation(cid, 4)                     setCreatureMaxHealth(cid, knighthealth)                     setCreatureMaxMana(cid, knightmana)                     doSendMagicEffect(topos, 14)                     doPlayerPopupFYI(cid, 'You changed his vocation to knight.')                     doRemoveCreature(cid)                     db.executeQuery("UPDATE `player_skills` SET `value` = ".. 10 ..", count = ".. 0 .." WHERE `player_id` = ".. pid ..";")                     db.executeQuery("UPDATE `players` SET `maglevel` = ".. 0 ..", `manaspent` = ".. 0 .." WHERE `id` = ".. pid ..";")           end end  
    Adicione as seguintes linhas no arquivo actions.xml que se encontra na pasta data/actions
     
    <action uniqueid="30000" event="script" value="changevoc.lua" /> <action uniqueid="30001" event="script" value="changevoc.lua" /> <action uniqueid="30002" event="script" value="changevoc.lua" /> <action uniqueid="30003" event="script" value="changevoc.lua" />  
    Testado e está 100% funcional.
    Dúvidas? Me avise.
     
    Att.
    Giovani Rodrigo
  22. Gostei
    TFS 0.4
     
    English: 
     
    Hello Good evening , I'm trying to edit the system of mock.
    I want only the hp and mp are in %

    I know I only have to remove PERCENT on conditions.
    but my problem is in the name of the item:

    You see a demon armor [mp.+43%] [ml.+3] [dist.+3] (Arm:16).
    It weighs 80.00 oz.

    I modify the action for mp and hp only get the % sign.
    but only receives the attributes with the% sign:

    21:51 You have:
    43% more of mp

    as modified creaturescript? to read all attributes , even without the % sign.
     
    português:
     
    Eu estou tentando este sistema apenas o HP e MP em %
    as skills não  em  % 
    Eu sei que a mudança remove PERCENT em conditions
     
    mas o meu problema é que, se os atributos não carregam asim:
    You see a demon armor [mp.+43%] [ml.+3] [dist.+3] (Arm:16).
    It weighs 80.00 oz.
     
    o creaturescript não carregar os atributos sem o sinal % 
    apenas:
    21:51 You have:
    43% more of mp
     
    creaturescript complete: 
     
    ---Script by mock the bear! local conditionMP,conditionHP,conditionML,conditionCLUB,conditionSHI,conditionDIST,conditionAMP = {},{},{},{},{},{},{} for i=1,100 do ---Carrega as conditions --- HP conditionHP[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionHP[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionHP[i], CONDITION_PARAM_STAT_MAXHEALTHPERCENT, 100+i) setConditionParam(conditionHP[i], CONDITION_PARAM_BUFF, true) setConditionParam(conditionHP[i], CONDITION_PARAM_SUBID, 50) --MANA conditionMP[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionMP[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionMP[i], CONDITION_PARAM_STAT_MAXMANAPERCENT, 100+i) setConditionParam(conditionMP[i], CONDITION_PARAM_BUFF, true) setConditionParam(conditionMP[i], CONDITION_PARAM_SUBID, 51) --Magic level conditionML[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionML[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionML[i], CONDITION_PARAM_STAT_MAGICLEVEL, 100+i) setConditionParam(conditionML[i], CONDITION_PARAM_BUFF, true) setConditionParam(conditionML[i], CONDITION_PARAM_SUBID, 52) --club axe sword conditionCLUB[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionCLUB[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_CLUBPERCENT, 100+i) setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_SWORDPERCENT, 100+i) setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_AXEPERCENT, 100+i) setConditionParam(conditionCLUB[i], CONDITION_PARAM_BUFF, true) setConditionParam(conditionCLUB[i], CONDITION_PARAM_SUBID, 53) --- shield conditionSHI[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionSHI[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionSHI[i], CONDITION_PARAM_SKILL_SHIELDPERCENT, 100+i) setConditionParam(conditionSHI[i], CONDITION_PARAM_BUFF, true) setConditionParam(conditionSHI[i], CONDITION_PARAM_SUBID, 54) --- dist conditionDIST[i] = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(conditionDIST[i], CONDITION_PARAM_TICKS, -1) setConditionParam(conditionDIST[i], CONDITION_PARAM_SKILL_DISTANCEPERCENT, 100+i) setConditionParam(conditionDIST[i], CONDITION_PARAM_BUFF, true) setConditionParam(conditionDIST[i], CONDITION_PARAM_SUBID, 55) end function getSlotType(n) --By mock the bear if not n then return false end if n:match('%[(.+)%]') then n = n:match('%[(.+)%]') if n == '?' then return 0,n else return n:match('(.-)%.([+-])(%d+)%%') end else return false end end local function loadSet(cid) local t = {} for slot=1,9 do t[slot] = '' local s = getPlayerSlotItem(cid,slot).uid if s ~= 0 then t[slot] = getItemName(s) end end return t end function isInArray2(arr,var) -- Because in some servers it return 1 and 0 and others true and false for i,b in pairs(arr) do if var == b then return true end end return false end function check2(cid,i) if i == 5 or i == 6 then if isInArray({'head','necklace','backpack','body','legs','feet','ring'},getItemValue(getPlayerSlotItem(cid,i).itemid,'slotType') or '') then return false end end return true end function chk(cid,f) if not isPlayer(cid) then return end local t = loadSet(cid) for i=1,#f do if f[i] ~= t[i] then equip(cid,nil,slot) break end end addEvent(chk,2000,cid,t) end items = { ---- Only to get attr: slotType because getItemName dont return it -.-' _VERSION='1.0 By mock', XML_DIR='data/items/items.xml', } do local ia = os.clock() io.write('Loading items') local i = io.open(items.XML_DIR,'r') local u = i:read(-1) i:close() local u = u:match('<items>(.+)</items>') for mi,id,mid,name,data,me in u:gmatch('<(%a-)%s*id%s*=%s*"(%d+)"%s*(.-)%s*name%s*=%s*"(.-)"%s*>(.-)</(%a*)>') do if mi == 'item' and me == 'item' then local td = {name=name,id=id,type=1} for key,value in data:gmatch('<attribute key="(.-)" value="(.-)"/>') do td[key] = value end for key,value in mid:gmatch('(.-)="(.-)"') do td[key] = value end items[tonumber(id)] = td items[name] = td end end for mi,id,mid,name,data in u:gmatch('<(%a-)%s*id%s*=%s*"(%d*)"%s*(.-)%s*name%s*=%s*"(%a+)"%s*/>') do if mi == 'item' then local td = {name=name,id=id,type=2} for key,value in mid:gmatch('(.-)="(.-)"') do td[key] = value end items[tonumber(id)] = td items[name] = td end end io.write('[done '..os.clock()-ia..']\n') end function getItemValue(item,value) return items[item] and items[item][value] end function equip(cid,item,slot) --By mock the bear local HP = getCreatureHealth(cid) local MP = getCreatureMana(cid) local t = {} if item then local mm,sinal,qto = getSlotType(getItemName(item.uid)) t[mm] = tonumber(qto) end for i=1,9 do -- Not on slot 10 > arrow if i ~= slot then if getPlayerSlotItem(cid,i).itemid ~= 0 then local aab = getPlayerSlotItem(cid,i).uid if aab and check2(cid,i) then for _ in getItemName(aab):gmatch('(%[.-%])') do local mm,sinal,qto2 = getSlotType(_) if mm then if not t[mm] then t[mm] = 0 end t[mm] = t[mm]+tonumber(qto2) t[mm] = t[mm] > 100 and 100 or t[mm] end end end end end end local fu = 0 local ca = {} local s = '' for sl,n in pairs(t) do fu = fu+1 s = s..''..n..'% more of '..sl..'\n' if sl == 'hp' then doAddCondition(cid,conditionHP[tonumber(n)]) doCreatureAddHealth(cid,HP-getCreatureHealth(cid)) ca[50] = 1 doPlayerSendTutorial(cid,19) elseif sl == 'mp' then doAddCondition(cid,conditionMP[tonumber(n)]) doCreatureAddMana(cid,HP-getCreatureMana(cid)) ca[51] = 1 doPlayerSendTutorial(cid,19) elseif sl == 'ml' then doAddCondition(cid,conditionML[tonumber(n)]) ca[52] = 1 elseif sl == 'cas' then doAddCondition(cid,conditionCLUB[tonumber(n)]) ca[53] = 1 elseif sl == 'shield' then doAddCondition(cid,conditionSHI[tonumber(n)]) ca[54] = 1 elseif sl == 'dist' then doAddCondition(cid,conditionDIST[tonumber(n)]) ca[55] = 1 end end if fu > 0 then addEvent(doPlayerSendTextMessage,100,cid,24,'You have:\n'..s) for i=50,55 do if not ca[i] then doRemoveCondition(cid,CONDITION_ATTRIBUTES,i) end end else for i=50,55 do doRemoveCondition(cid,CONDITION_ATTRIBUTES,i) end end return true end function onLogin(cid) ---Script by mock the bear!         equip(cid,nil,slot)         addEvent(chk,2000,cid,loadSet(cid)) -- Here we check!         return TRUE end action com algumas modificações:
    --[[ Slot system 100% by mock \o ]] ---Config local conf = { maxSlotCount=1, ignoredIds={} } --End function choose(...) --- Function by mock. local arg = {...} return arg[math.random(1,#arg)] end if not getItemAttack then function getItemAttack(uid) return getItemAttribute(uid,'attack') end function getItemDefense(uid) return getItemAttribute(uid,'defense') end end local function isArmor(uid) -- Function by Mock the bear. if (getItemInfo(uid.itemid).armor ~= 0) and (getItemWeaponType(uid.uid) == 0) then return true end return false end local function isWeapon(uid) -- Function by Mock the bear. uid = uid or 0 local f = getItemWeaponType(uid) if f == 1 or f == 2 or f == 3 then return true end return false end local function isShield(uid) -- Function by Mock the bear. uid = uid or 0 if getItemWeaponType(uid) == 4 then return true end return false end local function isBow(uid) -- Function by Mock the bear. uid = uid or 0 if getItemWeaponType(uid) == 5 and not isItemStackable(uid) then return true end return false end function onUse(cid, item, fromPosition, itemEx, toPosition) -- Script by mock the bear (MTB) if item.uid == 0 or item.itemid == 0 then return false end toPosition.stackpos = 255 if item.uid == 0 or item.itemid == 0 then return false end toPosition.stackpos = 255 if isInArray(conf.ignoredIds, itemEx.itemid) or (not getItemWeaponType(itemEx.uid) or getItemWeaponType(itemEx.uid) > 5) or (getItemWeaponType(itemEx.uid) == 0 and not isArmor(itemEx)) or itemEx.itemid == 0 or itemEx.type > 1 or isItemStackable(itemEx.uid) then doPlayerSendTextMessage(cid, 24,"You cant open a slot on this item.") return TRUE end if isCreature(itemEx.uid) then return FALSE end local nam = getItemName(itemEx.uid) function getper() local n = 1 for i=1,10 do n = n+math.random(0,10) if n < 8*i then break end end return n end function getSlotCount(nam) local c = 0 for _ in nam:gmatch('%[(.-)%]') do c = c+1 end return c end if getSlotCount(nam) >= conf.maxSlotCount then doPlayerSendTextMessage(cid, 24,"You cant open a slot on this item.") return true end xl1 = choose('hp','mp','ml','cas','shield','dist') xp1 = getper() if xl1 == "hp" or xl1 == "mp" then xvalor1 = "%" else xvalor1 = "" end doSendMagicEffect(toPosition,30) nam = nam..' [***] ['..xl1..'.+'..xp1..''..xvalor1..']' doSendAnimatedText(toPosition,'RARE',TEXTCOLOR_YELLOW) doItemSetAttribute(itemEx.uid,'name',nam) doRemoveItem(item.uid,1) end return true end se você pode me ajudar a adicionar atributos como "velocidade", "regeneração" "protecfire" etc.

    ajuda
  23. Gostei
    Xiolones deu reputação a D i M i T r E s C u em [Action] Error script addon   
    amigo se você quizer tentar testa esse vê ai:
     
    function onUse(cid, item, frompos, item2, topos) local itens = {2160}     ----dinheiro necessário local itens2 = {2189, 2191, 2187, 2190, 2181, 2188, 8921}        ---- items necessários         if isPlayer(cid) then         if getPlayerItemCount(cid, itens) == 25 then    -- quantidade dinheiro       doPlayerRemoveItem(cid, itens, 25)        end           if getPlayerItemCount(cid, itens2) == 1 then    -- quantidade de cada item       doPlayerRemoveItem(cid, itens2, 1)         queststatus = getPlayerStorageValue(cid, 100003)   --- storage ao ganhar addon         if queststatus == -1 then         doPlayerSendTextMessage(cid,22,"You won a full mage addon!")  -- msg ao ganhar addon                 doSendAnimatedText(getPlayerPosition(cid), "", TEXTCOLOR_ORANGE)                 doPlayerAddOutfit(cid,138,3)                 doPlayerAddOutfit(cid,120,3)         setPlayerStorageValue(cid, 100003, 1)         else         doPlayerSendTextMessage(cid,22,"You own this addon!")   -- não lembro pq coloquei isso         end         else         doPlayerSendTextMessage(cid,22,"I need 1 wand of cosmic energy, 1 wand of draconia, 1 wand of dragonbreath, 1 wanf of inferno, 1 wand of vortex, 1 terra rod, 1 common akilles wand and more 250.000 cash for this addon!") -- msg dos items necessários pro addon         end         else         return false         end         return 1true         end tag:
    <action uniqueid="4112" script="outfits/mage.lua" />
  24. Gostei
    Xiolones deu reputação a BennyDz em [Action] Error script addon   
    local config = { [4001] = { name = "First Citizen Addon", -- name addon_type = 1, -- addon outfit = {136,128}, -- female / male cost = 0, -- cost items = {{5878,100}}, -- items }, [4002] = { name = "Second Citizen Addon", addon_type = 2, outfit = {136,128}, cost = 0, items = {{5890,100},{5902,50},{2480,1}}, }, [4003] = { name = "First Hunter Addon", addon_type = 1, outfit = {137,129}, cost = 0, items = {{5947,1},{5876,100},{5948,100},{5889,1},{5887,1},{5888,1},{5891,5}}, }, [4004] = { name = "Second Hunter Addon", addon_type = 2, outfit = {137,129}, cost = 0, items = {{5875,1}}, }, [4005] = { name = "First Mage Addon", addon_type = 1, outfit = {138,130}, cost = 0, items = {{5958,1}}, }, [4006] = { name = "Second Mage Addon", addon_type = 2, outfit = {138,130}, cost = 0, items = {{5903,1}}, }, [4007] = { name = "First Knight Addon", addon_type = 1, outfit = {139,131}, cost = 0, items = {{5880,100}}, }, [4008] = { name = "Second Knight Addon", addon_type = 2, outfit = {139,131}, cost = 0, items = {{5893,100},{5924,1},{5885,1},{5887,1}}, }, [4009] = { name = "First Nobleman Addon", addon_type = 1, outfit = {140,132}, cost = 150000, items = {}, }, [4010] = { name = "Second Nobleman Addon", addon_type = 2, outfit = {140,132}, cost = 150000, items = {}, }, [4011] = { name = "First Summoner Addon", addon_type = 1, outfit = {141,133}, cost = 0, items = {{5958,1}}, }, [4012] = { name = "Second Summoner Addon", addon_type = 2, outfit = {141,133}, cost = 0, items = {{5894,70},{5911,20},{5883,40},{5905,30},{5904,15},{5882,40},{5881,60},{5886,10},{5922,35}}, }, [4013] = { name = "First Warrior Addon", addon_type = 1, outfit = {142,134}, cost = 0, items = {{5899,100},{5925,100},{5884,1},{5919,1}}, }, [4014] = { name = "Second Warrior Addon", addon_type = 2, outfit = {142,134}, cost = 0, items = {{5887,1},{5880,100}}, }, [4015] = { name = "First Barbarian Addon", addon_type = 1, outfit = {147,143}, cost = 0, items = {{5885,1},{5884,1},{5911,50},{5910,50},{5886,10}}, }, [4016] = { name = "Second Barbarian Addon", addon_type = 2, outfit = {147,143}, cost = 0, items = {{5892,1},{5880,100},{5893,50},{5876,50}}, }, [4017] = { name = "First Druid Addon", addon_type = 1, outfit = {148,144}, cost = 0, items = {{5897,50},{5896,50}}, }, [4018] = { name = "Second Druid Addon", addon_type = 2, outfit = {148,144}, cost = 0, items = {{5940,1},{5938,1},{5937,1},{5942,1},{5906,100}}, }, [4019] = { name = "First Wizard Addon", addon_type = 1, outfit = {149,145}, cost = 0, items = {{2488,1},{2123,1},{2492,1},{2536,1}}, }, [4020] = { name = "Second Wizard Addon", addon_type = 2, outfit = {149,145}, cost = 0, items = {{5922,50},}, }, [4021] = { name = "First Oriental Addon", addon_type = 1, outfit = {150,146}, cost = 0, items = {{5945,1}}, }, [4022] = { name = "Second Oriental Addon", addon_type = 2, outfit = {150,146}, cost = 0, items = {{5883,100},{5895,100},{5891,2},{5912,100}}, }, [4023] = { name = "First Pirate Addon", addon_type = 1, outfit = {155,151}, cost = 0, items = {{6126,100},{6097,100},{6098,100}}, }, [4024] = { name = "Second Pirate Addon", addon_type = 2, outfit = {155,151}, cost = 0, items = {{2385,1},{6098,1},{6095,1},{6096,1}}, }, [4025] = { name = "First Assassin Addon", addon_type = 1, outfit = {156,152}, cost = 0, items = {{5898,30},{5882,10},{5881,30},{5895,20},{5905,20},{5906,10},{5885,1}}, }, [4026] = { name = "Second Assassin Addon", addon_type = 2, outfit = {156,152}, cost = 0, items = {{5909,50},{5910,50},{5911,50},{5912,50},{5913,50},{5914,50},{5886,10}}, }, [4027] = { name = "First Beggar Addon", addon_type = 1, outfit = {157,153}, cost = 20000, items = {{5883,100}}, }, [4028] = { name = "Second Beggar Addon", addon_type = 2, outfit = {157,153}, cost = 0, items = {{6107,1}}, }, [4029] = { name = "First Shaman Addon", addon_type = 1, outfit = {158,154}, cost = 0, items = {{3955,5},{5015,1}}, }, [4030] = { name = "Second Shaman Addon", addon_type = 2, outfit = {158,154}, cost = 0, items = {{3966,5},{3967,5}}, }, [4031] = { name = "First Norseman Addon", addon_type = 1, outfit = {252,251}, cost = 0, items = {{7290,5}}, }, [4032] = { name = "Second Norseman Addon", addon_type = 2, outfit = {252,251}, cost = 0, items = {{7290,10}}, }, [4033] = { name = "First Nightmare Addon", addon_type = 1, outfit = {269,268}, cost = 0, items = {{6500,500}}, }, [4034] = { name = "Second Nightmare Addon", addon_type = 2, outfit = {269,268}, cost = 0, items = {{6500,1500}}, }, [4035] = { name = "First Jester Addon", addon_type = 1, outfit = {270,273}, cost = 0, items = {{5879,1},{5878,4}}, }, [4036] = { name = "Second Jester Addon", addon_type = 2, outfit = {270,273}, cost = 0, items = {{5909,5}}, }, [4037] = { name = "First Brotherhood Addon", addon_type = 1, outfit = {279,278}, cost = 0, items = {{6500,500}}, }, [4038] = { name = "Second Brotherhood Addon", addon_type = 2, outfit = {279,278}, cost = 0, items = {{6500,1500}}, }, [4039] = { name = "First Demonhunter Addon", addon_type = 1, outfit = {288,289}, cost = 150000, items = {}, }, [4040] = { name = "Second Demonhunter Addon", addon_type = 2, outfit = {288,289}, cost = 150000, items = {}, }, [4041] = { name = "First Yalaharian Addon", addon_type = 1, outfit = {324,325}, cost = 150000, items = {}, }, [4042] = { name = "Second Yalaharian Addon", addon_type = 2, outfit = {324,325}, cost = 150000, items = {}, }, } -------- config end ------- local storage = 14000 function onUse(cid, item, fromPosition, itemEx, toPosition) local addon, removeItems, removeMoney = config[item.actionid], 0, 0 if getPlayerStorageValue(cid, storage + item.actionid) ~= 1 then if getPlayerMoney(cid) >= addon.cost then removeMoney = 1 end if #addon.items > 0 then for i = 1, #addon.items do if getPlayerItemCount(cid, addon.items[i][1]) >= addon.items[i][2] then removeItems = removeItems+1 end end end if removeMoney == 1 and removeItems == #addon.items then for i = 1, #addon.items do doPlayerRemoveItem(cid, addon.items[i][1], addon.items[i][2]) end doPlayerRemoveMoney(cid, addon.cost) doPlayerAddOutfit(cid, addon.outfit[1], addon.addon_type) doPlayerAddOutfit(cid, addon.outfit[2], addon.addon_type) setPlayerStorageValue(cid, storage + item.actionid, 1) doPlayerSendTextMessage(cid, 21, "Now you can use the "..addon.name..".") else if addon.cost ~= 0 then msg = "You need "..addon.cost.." gold coins and " else msg = "You need " end if #addon.items > 0 then for i = 1, #addon.items do msg = msg..""..addon.items[i][2].."x "..getItemNameById(addon.items[i][1]).." " end end doPlayerSendTextMessage(cid, 21, msg.."for the "..addon.name..".") end else doPlayerSendTextMessage(cid, 21, "You already have the "..addon.name..".") end return TRUE end <action actionid="4001-4042" event="script" value="addons.lua"/> for yuur all addons. 
  25. Gostei
    Xiolones deu reputação a Ootsutsuki em [Resolvido] 30 Dias de VIP em X Item   
    Pesquisei Muito sobre isso mas não achei nada relacionado só achei á premium points então resolvi trazer isso, Quando você clicar em X item ganha 30 dias de premium account
     

     
    Então vamos la primeiro crie um arquivo chamado ootvipdays em data/actions/scripts e adicione isso dentro:
     

       
    Verde: Mensagem que irá aparecer ao você clicar no item
    Azul Claro: Efeito que irá aparecer ao clicar no item
    Laranja: Dias que você irá ganhar
     
    2° depois vá em data/actions/actions.xml e adicione isso:
     
     
    Verde: ID do item (obs: você pode deixar o mesmo ID eu acho que funciona 
    Vermelho: Nome do arquivo .lua criado
     

     
     
     
     

Informação Importante

Confirmação de Termo