Ir para conteúdo

XGaduX

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    XGaduX deu reputação a So volto tarde em Piso Vip com erro ao npc/monster passar por cima   
    -- Creditos: Breno Neves (KotZletY) = Criador do Script! function onStepIn(cid, item, position, fromPosition) if (not isPlayer(cid)) then return true end if getPlayerPremiumDays(cid) >= 1 then doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 25, "Seja Bem-vindo ".. getPlayerName(cid) .." !") else doTeleportThing(cid, fromPosition, true) doSendMagicEffect(getThingPos(cid), 2) doPlayerSendTextMessage(cid, 25, "Apenas Players Vip's podem passa.") end return true end  
  2. Curtir
    XGaduX recebeu reputação de Under em [Repositório de Scripts / CodeReview] Vamos Desenvolver Juntos?   
    Boa inciativa! #viva_open_source
  3. Gostei
    XGaduX deu reputação a Under em [Repositório de Scripts / CodeReview] Vamos Desenvolver Juntos?   
    A Organização
    O Projeto

    Olá venho aqui fornecer a todos um repositório que estou começando fazer code views de todos os códigos lua que julgar interessante para um sistema de RPG
    Este é o local onde podem ser vistos os PR e os CodeReviews.
    Fiquem livres para utilizar os códigos da melhor maneira possivel.
    Quer interagir? bom então eu te convido a fazer parte da organização deixando seu nick no github aqui em baixo ou me mandando uma pm! todos serão bem vindos!
    PRS

    Me ajude a desenvolver criando um Issue e fazendo seu pedido, tente preencher todas as lacunas ao fazer o pedido para não gastarmos tempo com issues inúteis
    Usando este repositório podemos desenvolver projetos sólidos e muitos scripts uteis para a comunidade, assim como esses que vocês viram a cima muitos outros serão adicionados para a tfs 1.4, espero todos la no github VLW clan tmj!
    Todo o projeto estára atualizado com a ultima branch da tfs de acordo com o docker.
    Podemos verificar dependências e reportas caso a tfs faça alguma alteração em suas libs poderemos saber neste repositório através do workflow
     


  4. Gostei
    XGaduX deu reputação a Under em Tutorial Iniciantes [Linguagem Lua] Get Functions   
    Iniciantes
    ?Quer ser bom pratique!Quer ser muito bom? pratique muito!, use as areas sem exemplos para treinar e aprenda neste topico a criar funções!
    Como eu sei oque é uma função?
    sempre que você encontrar algo assim "blablabla()" isso é uma função
    assim como "() =>" isso é uma função, assim como "function ()" isso é uma função,
    dentro de uma função podemos passar instruções então abrimos chaves {} aqui no lua é o then.
     
    Beleza agora que você sabe oque é uma função continue!
    Sobre
    Lista com quase todas as funções disponíveis.
    você sera capaz de :
    Ler pequenas instruções para funções. Usar as instruções. Usar um retorno de uma função Introdução a ["get" function]  
    A baixo existe uma lista com a função e a sua explicação.   Essas funções devem sempre retornar a string ou o valor pedido.     getPlayerFood(cid) Essa função vai verificar a quantos segundos o players esta com a propriedade em um food.
    Ajude esse tópico a ficar 100% com um exemplo e treine suas habilidades.
          getCreatureHealth(cid) Essa função vai checkar a quantidade da vida da criatura.
    Ajude esse tópico a ficar 100% com um exemplo e treine suas habilidades.
          getPlayerMaxMana(cid) Essa função vai retornar a quantidade maxima de mana
    Ajude esse tópico a ficar 100% com um exemplo e treine suas habilidades.
        getPlayerLevel(cid) Essa função vai pegar o level atual de jogador
    Ajude esse tópico a ficar 100% com um exemplo e treine suas habilidades.
          getPlayerMagLevel(cid) Essa função vai pegar o magic level atual de um jogador
    Ajude esse tópico a ficar 100% com um exemplo e treine suas habilidades.
        getPlayerName(cid) Essa função pega o nome de um jogador
    Ajude esse tópico a ficar 100% com um exemplo e treine suas habilidades.
          getPlayerAccess(cid) Essa função verifica o acesso de um jogador
    Ajude esse tópico aoficar 100% com um exemplo e treine suas habilidades.
          getPlayerPosition(cid) Essa função verifica a posição de um player
    Ela vai retornar um Array (Se você não sabe oque é um Array use o SLAD Search Like a Dev e abra o google)
    Exemplo de retorno   {x = 127, y = 7, z = 9, stackpos = 1}   {x = 396, y = 582, z = 13, stackpos = 2} quando o player estiver em cima de um item stackpos = 2 Exemplo de uso   local playerPos = getPlayerPosition(cid)--Armazenando a função em uma variavel com a posição do jogador   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your current position is [X: "..playerPos.x.." | Y: "..playerPos.y.." | Z: "..playerPos.z.."].")     getPlayerSkill(cid, skillid) Essa função vai verificar a skill de um jogador Sendo esses os ids das skills que podem ser usados:   0 = Fist Fighting   1 = Club Fighting   2 = Sword Fighting   3 = Axe Fighting   4 = Distance Fighting   5 = Shielding   6 = Fishing Exemplo de uso   if getPlayerSkill(cid, 2) >= 20 then -- Verificando se a skill Sword é maior que 20     doPlayerAddItem(cid, 2376, 1) -- Se sim adicionando uma Sword como recompensa   else --Se não você ainda não tem skill 20     doPlayerSendCancel(cid, "Sorry, your sword skill is not high enough.")   end     getPlayerTown(cid) Essa função vai verificar a cidade atual de um jogador Exemplo de uso local playerPos = getCreaturePosition(cid) -- Ja aprendemos a utilizar se não se lembra para pegarmos a posição do jogador ali em cima   if getPlayerTown(cid) == 1 then -- Verificamos se a cidade atual do jogador é igual a 1 -- Se sim Verificando na posição do jogador uma string , e um numero que representa a textColor ou o seu nome de efeito TEXTCOLOR_GOLD     doSendAnimatedText(playerPos, 'I am leaving in town with id: 1 (Main City)! :)', TEXTCOLOR_GOLD)   elseif getPlayerTown(cid) == 2 then -- Verificando se a cidade atual é igual a 2     doSendAnimatedText(playerPos, 'I am leaving in town with id: 2 (Desert City)! :)', TEXTCOLOR_GOLD)   end getPlayerVocation(cid) Essa função retorna o id da vocação Exemplos de uso local playerVoc = getPlayerVocation(cid) -- colocando a função em uma variavel   if playerVoc == 1 or playerVoc == 5 then --Se a vocação é Sorcerer ou Master Sorcerer then weapon = Wand     weapon == 2190 --Wand of vortex   elseif playerVoc == 2 or playerVoc == 6 then --Se a vocação é == Druid ou Elder Druid then weapon = Rod     weapon == 2182 --Snakebite Rod   elseif playerVoc == 3 or playerVoc == 7 then --Se a vocação é == Paladin ou Royal Paladin then weapon = Spear     weapon == 2389 --Spear   elseif playerVoc == 4 or playerVoc == 8 then --Se a vocação é == Knight ou Elite Knight then weapon = Sword      weapon == 2412 --Katana    end     doPlayerAddItem(cid, weapon, 1) -- usando a storage do weapon para retornar a arma a ser adicionada getPlayerItemCount(cid,itemid) Essa função vai verificar quantos item == itemid o jogador possui no momento
    Exemplos de uso local crystalCoins = getPlayerItemCount(cid, 2160) -- Declarada a variavel crystalCoins que vai verificar se o jogador possui o id 2160 local platinumCoins = getPlayerItemCount(cid, 2152) -- Declarada a variavel pplatinumCoins que vai verificar se o jogador possui o id 2152 local goldCoins = getPlayerItemCount(cid, 2148) -- O mesmo para o gold coin -- agora criamos uma variavel money que é igual rystalCoins * 10000 + platinumCoins * 100 + goldCoins     money = crystalCoins * 10000 + platinumCoins * 100 + goldCoins -- então imprimimos para o jogador usando cid, msg     doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your money: " ..money.. "gp") getPlayerFreeCap(cid) -- Essa função verifica quanto de cap disponivel o jogador ainda tem Exemplo de uso local playerCap = getPlayerFreeCap(cid) -- armazenando a função que verifica o cap na variavel playerCap local item = 2393 --Giant Sword local itemweight = getItemWeight(item, 1) -- nova função usada para pegar o peso do item   if playerCap >= itemweight then -- verificando se o cap é maior que o pseo do item -- caso seja adiciona o item e manda uma mensagem     doPlayerSendTextMessage(cid,22,'You have found a giant sword.')     doPlayerAddItem(cid,item,1) else -- senão não possui cap   doPlayerSendTextMessage(cid, 22, 'You have found a ' .. item .. 'weighing ' ..itemweight.. ' oz it\'s too heavy.')   getPlayerLight(cid) Retorna a luz atual de um jogador Exemplo 215 - Depois de usar a spell "utevo gran lux"     getPlayerSlotItem(cid, slot) Essa função verifica qual item o jogador esta equipado os slots que podem ser verificados são   1 = helmet 2 = necklace slot 3 = backpack, bag 4 = armor 5 = left hand 6 = right hand 7 = legs 8 = boots 9 = ring slot 10 = ammo slot    Essa função tambem retorna uma Array de um slot Por exemplo: {itemid = 2493, uid = 70001, actionid = 0} (demon helmet, slot = 1) Exemplo de uso
    -- Aqui passamos o paremetro do slot e verifica com o itemid que desejar     if getPlayerSlotItem(cid, 2) == 2173 then -- Verificando se tem aol     doPlayerSendTextMessage(cid,22,'Ok, you can go.')   else     doPlayerSendTextMessage(cid,22,'Sorry, you need amulet of loss to go.')     doTeleportThing(cid, fromPosition, TRUE)   end getPlayerDepotItems(cid, depotid) Essa função vai verificar quanto slots e item e a sua quantidade o jogador tem no depot (slots reserved, becouse 10cc = 1 slot) xx player tem no depot exemplo de retorno   7 - quando ojogado - sword - rope - 100 uh - parcel (inside: 10 crystal coins + label) - depot chest (standard, all players have it) Exemplo de uso depotItems = getPlayerDepotItems(cid, 3) -- Verificando o depot na cidade 3   if depotItems < 2 then --quando o depot conter menos que 2 items então     doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Your depot contains 1 item.")   else --se não o deposit contem a quantidade de item retornada     doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Your depot contains " ..depotItems.. " items.") end   getPlayerSex(cid) Essa função retorna o sexo de um jogador  
    Retorno 0 - female 1 - male Exemplo de uso i  f getPlayerSex(cid) == 0 then --female     doSendAnimatedText(playerPos, 'GiRl :*:*', TEXTCOLOR_GOLD)   elseif getPlayerSex(cid) == 1 then --male     doSendAnimatedText(playerPos, 'Wtf? I aM BoY.', TEXTCOLOR_GOLD)   else -- Caso não tenha sexo     doSendAnimatedText(playerPos, 'Wtf? I aM BoY.', TEXTCOLOR_GOLD)  end   getPlayerLookDir(cid) Esta função retorna a direção que o jogador esta olhando  
    Retorno 0 - jogador esta olhando (north) (/\) 1 - jogador esta olhando (east) (>) 2 - jogador esta olhando (south) (\/) 3 - jogador esta olhando (<)   Exemplo de uso local direction = getPlayerLookDir(cid) -- armazenando a direção que o player esta olhando na variavel direction if direction = 0 then --quando for north doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You are looking to north") elseif direction = 1 then --quando for east doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You are looking to east") elseif direction = 2 then --quando for south doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You are looking to south") else --quando for west doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You are looking to west") end   getPlayerGUID(cid) Essa função deve retornar o id de um jogador   Retorno Player.id de uma chamada de retorno then return = -1 Exemplo DE USO - Imprimito o texto no channel default com uma 'string retornando o id do jogador com a função getPlayerGUID()' doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You are player with id: "..getPlayerGUID(cid))   getPlayerFlagValue(cid, flag) Para saber quais flags existem procure src/const.h Essa função retorna o valor de uma flag 1 quando verdadeiro 0 quando false (evento) Exemplo de uso -- Setando a variavel flagValue com a função getPlayerFlagValue(cid, id da flag) flagValue = getPlayerFlagValue(cid, 32) -- flag 32 = "Pode sumonar todos os mosntros" if flagValue = 1 then --se flag = 1 ou seja se pode sumonar. se for igual a 32 doSummonCreature("Demon", fromPosition.x + 1) -- Sumonar demon 32 = true else -- senão ou seja, se flag 32 = false doSummonCreature("Rat", fromPosition.x + 1) -- sumon rat 32 = false end   getPlayerGroupId(cid) Essa função vai checar o group-id do jogador Exemplo de uso local group = getPlayerGroupId(cid) -- armazenando a função que capturar o groupid na variavel group if group == 3 --se for God só Exemplo doPlayerAddItem(cid,2160,100) --usando a função doPlayerAddItem para adicionar 100 crystal coins elseif group == 2 --se For Gamemaster só Exemplo doPlayerAddItem(cid,2160,50) --usando a função doPlayerAddItem para adicionar 50 crystal coins else -- senão chora nb doPlayerSendCancel(cid, "Sorry, cheats doesnt work for you." end   getPlayerGuildId(cid) Essa função vai verificar o id da guild do jogador Exemplo de uso -- Armazenando a função que capturar o id da guild do jogador na varial guildId local guildId = getPlayerGuildId(cid) if guildId == 21 then -- se o jogador possuir 21 então doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Welcome in!") -- 21 = true elseif guildId == 22 then -- se for diferente de 21 então doPlayerSendCancel(cid,"This area is not for your guild") -- 21 != true end   getPlayerGuildName(cid) Essa função vai verificar o nome da guild de um jogador Exemplo de uso -- Armazenando a função que captura o nome da guild do jogador na variavel guildName local guildName = getPlayerGuildName(cid) -- mandando um animação de texto na posição atuao da criatura (cid = creatureID), concatenando com guildName ou seja a função da primeira linha e a cor gold doSendAnimatedText(getCreaturePosition(cid),guildName, TEXTCOLOR_GOLD)   getPlayerGuildRank(cid) Essa função verifica o cargo que o jogador possui na guildName Exemplo de uso -- Armazenando a função que captura o cargo de um jogador da guild que ele possui local rank = getPlayerGuildRank(cid) -- inviando uma text message par ao jogador informando ele o rank na guild usando a concatenação .. variavel .. doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"You're a " .. rank .. " in your guild.")
  5. Gostei
    XGaduX deu reputação a Rogex Joyz em Npc's com quest seguidas   
    O primeiro te da uma storage por X item e o segundo só te responde se você tiver uma storage, então é só mandar bala
  6. Obrigado
    XGaduX deu reputação a Nother em Exhaustion na spell   
    local atk1 = createCombatObject() local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, COLOR_RED) setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) function kiaiho(cid, level, maglevel) local min = -(level * 100.0+ maglevel * 100 +0) local max = -(level * 500.0+ maglevel * 500 +0) return min, max end setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "kiaiho") arr1 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 2, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } local area1 = createCombatArea(arr1) setCombatArea(atk1, area1) function onTargetTile(cid, pos) doCombat(cid,combat1,positionToVariant(pos)) end setCombatCallback(atk1, CALLBACK_PARAM_TARGETTILE, "onTargetTile") local function onCastSpell1(parameters) doCombat(parameters.cid, atk1, parameters.var) end function onCastSpell(cid, var) if exhaustion.check(cid, 100010) == TRUE then -- em 100010 coloca uma storage que não está sendo usada doPlayerSendCancel(cid, "Podera usar novamente dentro de 15 segundos.") doSendMagicEffect(getCreaturePosition(cid), 32) --effect que sai quando ta com exaust. se não quiser nada so colocar um effect vazio. return false end local parameters = { cid = cid, var = var} local pos1 = {x = getPlayerPosition(cid).x + 2, y = getPlayerPosition(cid).y + 2, z = getPlayerPosition(cid).z} local parameters = { cid = cid, var = var, combat1 = combat1} addEvent(onCastSpell1, 250, parameters) doSendMagicEffect(pos1, 979) exhaustion.set(cid, 100010, 15.0) -- storage aqui tem que ser a mesma de cima return true end Cara não sei nada sobre criar spells, mas o seu exaust colocado errado e eu coloquei da forma certa mas não deu, então peguei o exaust da minha spell e adaptei, testa ai
  7. Obrigado
    XGaduX deu reputação a Garoto Prodigio em Evento PVP 1X1   
    Então galera eu tava pensando em um Evento PVP que iria funcionar da seguinte maneira:
    Em X dia ás X Horas, os jogadores podem se inscrever para o Evento PVP Random! 
    Falando com o NPC, Em 5 Minutos irá começar, assim que começar os Jogares que se inscreveram irão ser teleportados pra sala com o seu adversário RANDOM ( Sorteado ) e o perdedor é enviado pro dp, quem Vencer irá  ser teleportado pra outra area onde os outros vencedores são levados quando matam o adversário, terá apenas 1 Vencedor, esse vencedor ganhará X itens configuráveis
     
  8. Obrigado
    XGaduX deu reputação a Garoto Prodigio em [Talkaction] !Missao   
    Olá pessoal, eu estou a procura de uma talkaction, onde funcionará por Storages, por exemplo:
     
    !missao
    Ao usar esse comando, mostrará por exemplo:
    *Você precisa levar 30 pedaços de Carne para o Barqueiro Jhonson.*
     
    Esse Script funcionaria com Storages, por exemplo:
    Storage 666 (Valor positivo ou seja 1)
    Ao jogador completar a Missão desse Barqueiro, esse valor 666, é Setado pra 0, fazendo com que não apareça a mesma mensagem de missão, e sim a proxíma.
    Exemplo:
    Levei duas moedas pro açogueiro, após finalizar a missão, eu ganhei a Storage 666, valor 1 (positivo), então quando eu usar !missao, aparecerá uma nova mensagem de missão ao usar o Comando.
    Seria algo como:
    Local storages={
    666,1, - Mensagem "BLA BLA BLA"
    777,1, - Mensagem "Ui ui ui"
    }
     
    É como uma tabela que puxa a Storage, se for positiva, ou seja 1 o comando envia a Mensagem, eu mesmo colocaria nos NPCS/SCRIPTS pra setar a storage pra 0 no caso, pra que a mensagem se modifique conforme ele termina as missões.
     
    Não sei se é muito complicado de fazer, mas eu tentei e só tive fracasso, já até apaguei o script, por isso vim aqui pedir a ajuda do pessoal do TK, acredito que vocês possam me ajudar.
    Quanto ao estilo da mensagem, pode ser PopupFy mesmo.
    Espero que ajudem  
     
    DISTRO: OTX 8.60 Adaptada com TFS. 
     
     
     
     
  9. Obrigado
    XGaduX deu reputação a Garoto Prodigio em [Tabela] Mensagem ao Matar Monstros   
    Olá pessoal do TK, estive pensando em um Script que funcionaria da Seguinte Forma:
     
    Ao matar x Monstro, você recebe uma Storage, um Certo item e aparece uma mensagem, esse Script seria uma tabela, por exemplo:
     
    local monstros = {
    [MOB1] = MSG = STORAGE = ITEM
    [MOB2] = MSG = STORAGE = ITEM
    [MOB3] = = MSG = STORAGE = ITEM
    }
     
    Bom, é basicamente isso, não sei se é complicado de Fazer, mas caso esteja pode ser um script pra um mob só que eu adapto, espero que alguém me ajude
     
    TFS 8.60
     
     
     
     
     
  10. Gostei
    XGaduX recebeu reputação de Garoto Prodigio em Como colocar cooldown nessa spell?   
    Grato!.
  11. Gostei
    XGaduX deu reputação a Garoto Prodigio em Como colocar cooldown nessa spell?   
    Tente desta forma
    local scom1 = createCombatObject() local scom2 = createCombatObject() local scom3 = createCombatObject() local scom4 = createCombatObject() local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, COLOR_LIGHTGREEN) setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 850) function kiaiho(cid, level, maglevel) local min = -(level * 1.0 + maglevel * 1 + 0) local max = -(level * 1.0 + maglevel * 1 + 0) return min, max end setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "kiaiho") local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_HITCOLOR, COLOR_LIGHTGREEN) setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 850) function kiaiho(cid, level, maglevel) local min = -(level * 1.0 + maglevel * 1 + 0) local max = -(level * 1.0 + maglevel * 1 + 0) return min, max end setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "kiaiho") local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_HITCOLOR, COLOR_LIGHTGREEN) setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, 850) function kiaiho(cid, level, maglevel) local min = -(level * 1.0 + maglevel * 1 + 0) local max = -(level * 1.0 + maglevel * 1 + 0) return min, max end setCombatCallback(combat3, CALLBACK_PARAM_LEVELMAGICVALUE, "kiaiho") local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_HITCOLOR, COLOR_LIGHTGREEN) setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat4, COMBAT_PARAM_EFFECT, 850) function kiaiho(cid, level, maglevel) local min = -(level * 1.0 + maglevel * 1 + 0) local max = -(level * 1.0 + maglevel * 1 + 0) return min, max end setCombatCallback(combat4, CALLBACK_PARAM_LEVELMAGICVALUE, "kiaiho") arr1 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 2, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } arr2 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } arr3 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } arr4 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) local area3 = createCombatArea(arr2) local area4 = createCombatArea(arr2) setCombatArea(scom1, area1) setCombatArea(scom2, area2) setCombatArea(scom3, area3) setCombatArea(scom4, area4) function onTargetTile(cid, pos) local p = getThingPos(cid) local basep = {x = p.x + 5, y = p.y - 5, z = p.z} doSendDistanceShoot(basep, pos, 55) doCombat(cid,combat1,positionToVariant(pos)) end function onTargetTile2(cid, pos) local p1 = getThingPos(cid) local basep1 = {x = p1.x - 5, y = p1.y + 5, z = p1.z} doSendDistanceShoot(basep1, pos, 55) doCombat(cid,combat2,positionToVariant(pos)) end function onTargetTile3(cid, pos) local p2 = getThingPos(cid) local basep2 = {x = p2.x - 5, y = p2.y + 5, z = p2.z} local baseep2 = {x = p2.x + 5, y = p2.y - 5, z = p2.z} doSendDistanceShoot(basep2, pos, 112) doSendDistanceShoot(baseep2, pos, 112) doCombat(cid,combat3,positionToVariant(pos)) end function onTargetTile4(cid, pos) local p3 = getThingPos(cid) local basep3 = {x = p3.x - 5, y = p3.y - 5, z = p3.z} local baseep3 = {x = p3.x + 5, y = p3.y + 5, z = p3.z} doSendDistanceShoot(basep3, pos, 112) doSendDistanceShoot(baseep3, pos, 112) doCombat(cid,combat4,positionToVariant(pos)) end setCombatCallback(scom1, CALLBACK_PARAM_TARGETTILE, "onTargetTile") setCombatCallback(scom2, CALLBACK_PARAM_TARGETTILE, "onTargetTile2") setCombatCallback(scom3, CALLBACK_PARAM_TARGETTILE, "onTargetTile3") setCombatCallback(scom4, CALLBACK_PARAM_TARGETTILE, "onTargetTile4") local function onCastSpell1(parameters) doCombat(parameters.cid, scom1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, scom2, parameters.var) end local function onCastSpell3(parameters) doCombat(parameters.cid, scom3, parameters.var) end local function onCastSpell4(parameters) doCombat(parameters.cid, scom4, parameters.var) end function onCastSpell(cid, var) local waittime = 1,0 -- Tempo de exhaustion em segundos local storage = 26002 if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "Aguarde" .. exhaustion.get(cid, storage) .. " Segundos Para Usar Novamente.") return false end local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 100, parameters) addEvent(onCastSpell3, 1200, parameters) addEvent(onCastSpell4, 1200, parameters) exhaustion.set(cid, storage, waittime) return TRUE end  
  12. Gostei
    XGaduX recebeu reputação de Garoto Prodigio em Como colocar cooldown nessa spell?   
    local scom1 = createCombatObject() local scom2 = createCombatObject() local scom3 = createCombatObject() local scom4 = createCombatObject() local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, COLOR_LIGHTGREEN) setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 850) function kiaiho(cid, level, maglevel) local min = -(level * 1.0 + maglevel * 1 + 0) local max = -(level * 1.0 + maglevel * 1 + 0) return min, max end setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "kiaiho") local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_HITCOLOR, COLOR_LIGHTGREEN) setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 850) function kiaiho(cid, level, maglevel) local min = -(level * 1.0 + maglevel * 1 + 0) local max = -(level * 1.0 + maglevel * 1 + 0) return min, max end setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "kiaiho") local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_HITCOLOR, COLOR_LIGHTGREEN) setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, 850) function kiaiho(cid, level, maglevel) local min = -(level * 1.0 + maglevel * 1 + 0) local max = -(level * 1.0 + maglevel * 1 + 0) return min, max end setCombatCallback(combat3, CALLBACK_PARAM_LEVELMAGICVALUE, "kiaiho") local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_HITCOLOR, COLOR_LIGHTGREEN) setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat4, COMBAT_PARAM_EFFECT, 850) function kiaiho(cid, level, maglevel) local min = -(level * 1.0 + maglevel * 1 + 0) local max = -(level * 1.0 + maglevel * 1 + 0) return min, max end setCombatCallback(combat4, CALLBACK_PARAM_LEVELMAGICVALUE, "kiaiho") arr1 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 2, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } arr2 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } arr3 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } arr4 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) local area3 = createCombatArea(arr2) local area4 = createCombatArea(arr2) setCombatArea(scom1, area1) setCombatArea(scom2, area2) setCombatArea(scom3, area3) setCombatArea(scom4, area4) function onTargetTile(cid, pos) local p = getThingPos(cid) local basep = {x = p.x + 5, y = p.y - 5, z = p.z} doSendDistanceShoot(basep, pos, 55) doCombat(cid,combat1,positionToVariant(pos)) end function onTargetTile2(cid, pos) local p1 = getThingPos(cid) local basep1 = {x = p1.x - 5, y = p1.y + 5, z = p1.z} doSendDistanceShoot(basep1, pos, 55) doCombat(cid,combat2,positionToVariant(pos)) end function onTargetTile3(cid, pos) local p2 = getThingPos(cid) local basep2 = {x = p2.x - 5, y = p2.y + 5, z = p2.z} local baseep2 = {x = p2.x + 5, y = p2.y - 5, z = p2.z} doSendDistanceShoot(basep2, pos, 112) doSendDistanceShoot(baseep2, pos, 112) doCombat(cid,combat3,positionToVariant(pos)) end function onTargetTile4(cid, pos) local p3 = getThingPos(cid) local basep3 = {x = p3.x - 5, y = p3.y - 5, z = p3.z} local baseep3 = {x = p3.x + 5, y = p3.y + 5, z = p3.z} doSendDistanceShoot(basep3, pos, 112) doSendDistanceShoot(baseep3, pos, 112) doCombat(cid,combat4,positionToVariant(pos)) end setCombatCallback(scom1, CALLBACK_PARAM_TARGETTILE, "onTargetTile") setCombatCallback(scom2, CALLBACK_PARAM_TARGETTILE, "onTargetTile2") setCombatCallback(scom3, CALLBACK_PARAM_TARGETTILE, "onTargetTile3") setCombatCallback(scom4, CALLBACK_PARAM_TARGETTILE, "onTargetTile4") local function onCastSpell1(parameters) doCombat(parameters.cid, scom1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, scom2, parameters.var) end local function onCastSpell3(parameters) doCombat(parameters.cid, scom3, parameters.var) end local function onCastSpell4(parameters) doCombat(parameters.cid, scom4, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 100, parameters) addEvent(onCastSpell3, 1200, parameters) addEvent(onCastSpell4, 1200, parameters) return TRUE end Como insiro essa função na spell?  \/

     
    function onCastSpell(cid, var) local parameters = { cid = cid, var = var} if exhaustion.get(cid, 5) then doPlayerSendCancel(cid, "Wait "..exhaustion.get(cid, 5).." seconds.") return false end  
  13. Gostei
    XGaduX recebeu reputação de Breniinx em (Resolvido)System transform por tempo   
    sistema como wander of shinobi! eu preciso uns script da transform!! 
    eu quero um sistema de transform temporal (exemplo ir até um nova vocation por X tempo, depois ela volta a forma base dessa vocation) 
     

  14. Gostei
    XGaduX deu reputação a Yamili em (Resolvido)Skill Rate/Velocidade para upar skill   
    Qual servidor ou website você utiliza como base?
    TFS 0.4 8.60

    Olá a todos, eu gostaria de deixar bem (bastante) difícil para os jogadores uparem as skills (Do fist ao shield) nos valores mais baixos (Do 0 ao 25), o que ocorre é que não consigo deixar mais difícil de upar do que alguns segundos (Uns 2% da barrinha de skill a cada hit) para upar 1 skill level (Nos valores mais baixos, como upar do skill level 1 para o 2).

    Tem alguma forma de dificultar (mais ainda) a velocidade de up da skill nos valores mais baixos?
     
    Informações extras:
    Eu testei de várias formas e percebi que o mínimo de rate skill que dá pra colocar é 1x (Seja no config.lua ou em script de skills por stages).
    No vocations.xml do meu servidor a linha:
    <skill fist="1.5" club="1.5" sword="1.5" axe="1.5" distance="1.5" shielding="1.5" fishing="1.5" experience="2.0"/> Que serve para definir a velocidade com que a skill vai upar tem o valor minimo de "1.0", abaixo disso não upa (No meu servidor quanto menor o número, menor a velocidade que vai upar a skill).
    Tendo isso em mente eu testei com rate skill 1x no config e com skill fist="1.0" na tag das vocations (Que foi o mais lento que consegui colocar para upar nos níveis mais baixos das skills) mas ainda assim não é lento o suficiente para mim.
    O script de stages que eu estava usando para alguns testes era o:
    Eu reparei que esse script pega o valor do skill rate definido no config.lua e multiplica pelo valor definido no script, e como no magic level dá pra colocar valores como 0.3x (deixando assim extremamente difícil de upar) eu tentei fazer o mesmo com as skills e não tive sucesso.
    Nesse script dá para colocar um limite de skill level (Que vai setar a rate skill para 0x) e reparei que quanto mais perto de chegar no limite, mais difícil de upar fica (Do modo que eu quero para os valores baixos).

    Minhas dúvidas: 
    É possível ajustar esse script para fazer a velocidade do up ser sempre igual a velocidade de quando está chegando no limite de skill? (Se é que esta diminuição está sendo aplicada por este script)
    Qual a função que faz essa velocidade diminuir perto do limite de skill? (O que está fazendo ela diminuir?)
    É possível de alguma forma abaixar o rate de skills para 0.X?
    É possível dificultar, extremamente, para upar as skills nos valores mais baixos? (Seja por script ou pela source)

    Ps: 
    Sou bem leigo se tratando de scripts e tals, então me desculpem se não consegui me expressar bem.
    Perdão se eu não estiver na área correta, não estou acostumado com fóruns ainda.

    Obrigado a todos que tentarem me ajudar, peço perdão pelo texto enorme ? é justamente para evitar algumas dúvidas sobre o que eu estou tentando fazer.
    Caso ainda tenham dúvidas sobre algo que eu disse, me perguntem.
    E caso exista algum tópico sobre algo relacionado ao que eu quero, por favor, me mostrem. Não achei nada parecido sobre isso ?

    ! :EDIT: ! - :!Duvida solucionada!:
    Como o @Naze me guiou ao caminho de onde fica a formula na source, eu resolvi fazer alguns testes para entender melhor como funcionava.
    A formula é: 
    (skillBase[skill] * std::pow(skillMultipliers[skill], (level - 11))); E entendi que é baseskill × multiplier do vocations ^(level da skill - 11), com os valores do meus servidor ficariam:
    50 x 1.0 ^ (level - 11) (Onde com rate skill 1x cada hit upava cerca de 2% da barra de skill, o que me levou a crer que eram os hits necessário para upar)
    Então eu resolvi testar essa baseskill e aumentei para 100, o que resultou em 1% da barra por hit. (Que no caso a cada +50 de skill base = [ -0,5% para upar a skill ao dar um hit])

    E seguindo isso consigo ajustar certinho a dificuldade que quero para upar skill.
    Se essa alteração na baseskill pode acarretar em algum problema me avisem, por favor (Pois não entendo muito de programação).
    Mas caso não acarrete em nenhum problema, funcionou perfeitamente para o que eu queria então.
    Para quem quer fazer o mesmo (Dificultar para upar a skill nos níveis mais baixos [como do skill level 0 ao 1]) está ai.
    Duvida encerrada! Rep++ @Naze Por me ajudar ^-^ ajudou muito mesmo, de coração, agradeço.  
     
  15. Obrigado
    XGaduX deu reputação a Vodkart em Compactar script!   
    acho que é igual kkk nem vi
  16. Gostei
    XGaduX deu reputação a Rusherzin em Compactar script!   
    Na verdade o teu script original pega uma posição randômica entre as 3 da lista, por isso perguntei. Mas tu pode fazer assim:
     
    local positions = { [999] = { {x = 1000, y = 1000, z = 7} }, [1000] = { {x = 1000, y = 999, z = 7} }, [1001] = { {x = 1001, y = 1001, z = 7} } } function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) local pos = positions[item.actionid] if not pos then return true end doTeleportThing(cid, pos[math.random(1, #pos)]) return true end  
  17. Gostei
    XGaduX deu reputação a 139 em (erro/bug) como consertar esse bug/visual da magia em target?   
    local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, 205) setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 1) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -99.0, 0, -190.5, 0) function onTargetCreature(cid, target) local position = {x=getThingPosition(target).x+1, y=getThingPosition(target).y+1, z=getThingPosition(target).z} doSendMagicEffect(position, 329) end setCombatCallback(combat1, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature") function onCastSpell(cid, var) local waittime = 9 local storage = 99 if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "You are exhausted.") doSendMagicEffect(getCreaturePosition(cid), 2) return false end for i = 1, 10 do addEvent(function() if isCreature(cid) and isCreature(variantToNumber(var)) then doCombat(cid, combat1, var) end end, ((i-1) * 300)) end exhaustion.set(cid, storage, waittime) return true end  
  18. Gostei
    XGaduX recebeu reputação de Cat em coom consertar esse "bug" o efeito não acompanha o player   
    Esse não é o problema. Segue os vídeos q vc entenderá. 
    2021-02-16_00-09-27.mp4
  19. Gostei
    XGaduX recebeu reputação de Vodkart em (Resolvido)System transform por tempo   
    Olá! Chama discord que te passo Gadu#4649 lembre-se total créditos a @Vodkart
  20. Gostei
    XGaduX deu reputação a Vodkart em (Resolvido)System transform por tempo   
    @XGaduX valeu man!
  21. Gostei
    XGaduX recebeu reputação de Vodkart em (Resolvido)System transform por tempo   
    Problema resolvido por @Vodkart muito atencioso e resolver qualquer problema  
     


  22. Gostei
    XGaduX deu reputação a Vodkart em (Resolvido)System transform por tempo   
    Certo, preciso de algumas informações...
     
    1 - Quando morrer, volta para a voc antiga?
     
    2 - Pode voltar a voc antiga a qualquer hora?
     
    3 - Quando eu estiver transformado por exemplo em sasuke (voc por tempo) e quiser me transformar em naruto, sem ser a voc antiga mas sim uma nova, eu posso?
     
    4 - Vale a pena fazer por DB para pegar a voc e transmitir pelo site?
    -----------------------------------
     
    OBS: quanto mais informação melhor... não vou fazer por agora pq estou terminando mais alguns sistemas, mas posso olhar quando tiver tempo.
  23. Gostei
    XGaduX deu reputação a Vodkart em [TFS] New Auto Loot Unlimited Edition 2.0   
    [ + ] Descrição: Autoloot refeito para VERSÃO TFS e adicionado algumas outras funções que estarei explicando ao decorrer do tópico.
     
    [ + ] Se você quer o Autoloot para VERSÃO OTX clica neste Link: AUTOLOOT OTX
     
     

     
     
    [ + ] Imagem do comando:
     

     
    [ + ] Features:
     
    [ - ] Você pode ativar ou desativar o autoloot a hora que achar necessário.
    [ - ] Também existe um comando para ativar ou desativar mensagens do loot que o autoloot coleta!
    [ - ] Você pode escolher a cor do texto em que irá aparecer a coleta do loot!
    [ - ] O autoloot informará para você se estiver com pouco slots na sua backpack, e o jogador poderá escolher se quer habilitar ou não está função no autoloot.
    [ - ] Versão ilimitada de itens(não ficam armazenadas em storages).
    [ - ] O jogador poderá optar por depositar direto no banco os golds que forem dropados.
     
    [ + ] Instalação:
     
    Primeiramente CRIE uma PASTA VAZIA chamanda "autoloot" em DATA/LOGS, ficando assim:
     

     
     
    Depois instale o MODS normalmente na pasta MODS do seu servidor.
     

     
     
    new_perfect_autoloot_tfs.xml
     
    Link: https://pastebin.com/raw/0xJR4nwr
     
     
     [ + ] Configuração:
     
    Dentro do mods tem essa tabela
    info = { distro = 1, -- 1 = TFS // 2 = talk modificada directory = "data/logs/autoloot", -- não mexer Warn_Bp_Slots = 5, -- quando tiver 5 ou menos slots na BP vai avisar o jogador Talkaction_delay = 5, -- em segundos // delay para remover e adicionar item BlockMonsters = {}, -- Lista de monstros que o autoloot nao vai funcionar BlockItemsList = {2123,2515}, -- Lista de itens que o autoloot nao coleta Money_ids = {2148, 2152, 2160}, -- id das moedas do ot Max_Slots = {free = 3, premium = 5}, -- quantidade de itens que podem ser adicionados no autoloot por free e premium Storages = {988801, 988802, 988803, 988804, 988805, 988806, 988807} -- não mexer }  
    Sobre o distro = 1
     
    Isso significa que ele usa versão padrão (1), pois existem 2 versões, caso aconteça esse error no seu console ao usar a talkaction do autoloot:
     
    [8/10/2020 19:19:58] [Error - TalkAction Interface]
    [8/10/2020 19:19:58] local words = "!autoloot"
    (...)
    [8/10/2020 19:19:59] return true
    [8/10/2020 19:19:59] Description: 
    [8/10/2020 19:19:59] (LuaInterface::luaGetItemIdByName) Item not found
     
    Você deverá colocar:
     
    distro = 2
     
    Pq? acontece que em alguns servidores não reconhecem o parâmetro "false" da função "getItemIdByName"
     
    OBS: Estarei anexando o autoloot já atualizado na versão 2.0 para quem tiver preguiça de copiar e colar!!
     
     
     
    new_perfect_autoloot_tfs.xml
  24. Gostei
    XGaduX deu reputação a yoroshigod em (Resolvido)AJUDEM Anti Paralyze   
    Coloquei pré-configurado para usar no slot do helmet:
     
    movements/scripts:
    function onEquip(cid, item, slot) doRemoveCondition(cid, CONDITION_PARALYZE) addEvent(Paralizy, 1*100, cid) return true end function Paralizy(cid) local HelmetID = 3971 --- ID DO ITEM if getPlayerSlotItem(cid, CONST_SLOT_HEAD).itemid == HelmetID then doRemoveCondition(cid, CONDITION_PARALYZE) addEvent(Paralizy, 1*100, cid) end return true end   movements.xml:
     <movevent type="Equip" itemid="3971" slot="head" event="script" value="helmetparalise.lua"/> Bem auto-explicativo. Qualquer mudança que fizer o script, também deve alterar no XML.
  25. Gostei
    XGaduX deu reputação a ViitinG em [Pedido] Item que aumenta Exp   
    1º Passo :
    Abra o arquivo "Items.xml" (pasta Data / Items)
    Com o editor de sua preferência, use o comando de busca (geralmente "Ctrl + F") e digite a ID "7697".
    Vai achar o item "signet ring" que estará assim: (na maioria dos OTServ's)
    <item id="7697" article="a" name="signet ring"> <attribute key="weight" value="80" /> <attribute key="slotType" value="ring" /> </item> Substitua isso por :
    <item id="7697" article="a" name="experience ring"> <attribute key="weight" value="500" /> <attribute key="description" value="Este anel lhe da 2x mais experiencia (ativo)." /> <attribute key="slotType" value="ring" /> <attribute key="duration" value="4320" /> <attribute key="decayTo" value="0" /> <attribute key="showduration" value="1" /> <attribute key="transformDeEquipTo" value="7708" /> </item> Logo em seguida, procure pela ID "7708".
    Encontrará o item "ring" que estará assim: (na maioria dos OTServ's)
    <item id="7708" article="a" name="ring"> <attribute key="weight" value="40" /> <attribute key="slotType" value="ring" /> </item> Substitua isso por :
    <item id="7708" article="a" name="ring experience"> <attribute key="weight" value="500" /> <attribute key="slotType" value="ring" /> <attribute key="stopduration" value="1" /> <attribute key="showduration" value="1" /> <attribute key="transformEquipTo" value="7697" /> </item> Pronto, em Items.xml não mexeremos mais.
     
    2º Passo :
    Abra o arquivo "Movements.xml" (pasta Data / Movements)
    Adicione as tags abaixo:
    <movevent type="Equip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/> <movevent type="DeEquip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/> <movevent type="Equip" itemid="7708" slot="ring" event="script" value="exp_ring.lua"/> <movevent type="DeEquip" itemid="7708" slot="ring" event="script" value="exp_ring.lua"/> Pronto, em "movements.xml" é só.
     
    3º Passo :
    Aqui, temos duas opções...
    O Exp Ring Tradicional é para server com Experiência fixa, ou seja, a EXP é sempre a mesma..
    Já o Exp Ring por Stages é para server que a Experiência varia de acordo com o level do player.
     
    EXP RING Tradicional:
    Abra a pasta (Data / Movements / Scripts) e crie um arquivo com o nome "exp_ring.lua" (pode copiar um arquivo existente e renomeá-lo).
    Após fazer isto, abra este arquivo (exp_ring.lua) e cole o código abaixo dentro.
    Obs: se tiver algo escrito do arquivo, apague-o e deixe somente o código abaixo.
    function onEquip(cid, item, slot) doTransformItem(item.uid, 7697, 1) doPlayerSendTextMessage(cid, 22, 'Agora ganha 2x mais experiencia!') doPlayerSetExperienceRate(cid, getConfigValue("rateExperience")*0.2) return TRUE end function onDeEquip(cid, item, slot) doTransformItem(item.uid, 7708, 1) doPlayerSendTextMessage(cid, 22, 'Experiencia extra cancelada.') doPlayerSetExperienceRate(cid, 1) return TRUE end EXP RING por Stages:
    Abra a pasta (Data / Movements / Scripts) e crie um arquivo com o nome "exp_ring.lua" (pode copiar um arquivo existente e renomeá-lo).
    Após fazer isto, abra este arquivo (exp_ring.lua) e cole o código abaixo dentro.
    Obs: se tiver algo escrito do arquivo, apague-o e deixe somente o código abaixo.
    function onEquip(cid, item, slot) local rate = {} if getPlayerLevel(cid) <= 200 then rate = 1.3 elseif getPlayerLevel(cid) > 200 and getPlayerLevel(cid) <= 280 then rate = 1.15 elseif getPlayerLevel(cid) > 280 then rate = 1.05 end doTransformItem(item.uid, 7697, 1) doPlayerSendTextMessage(cid, 22, "Sua experiencia foi aumentada em "..((rate - 1)*100).." %.") doPlayerSetExperienceRate(cid, rate) return TRUE end function onDeEquip(cid, item, slot) doTransformItem(item.uid, 7708, 1) doPlayerSendTextMessage(cid, 22, "Sua experiencia esta de volta ao normal.") doPlayerSetExperienceRate(cid, 1.0) return TRUE end Creditos : 100% Adriano Swatt.
     
    Ajudei = REP +

Informação Importante

Confirmação de Termo