Histórico de Curtidas
-
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
-
XGaduX recebeu reputação de Under em [Repositório de Scripts / CodeReview] Vamos Desenvolver Juntos?Boa inciativa! #viva_open_source
-
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
-
XGaduX deu reputação a Under em Tutorial Iniciantes [Linguagem Lua] Get FunctionsIniciantes
?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.") -
XGaduX deu reputação a Rogex Joyz em Npc's com quest seguidasO primeiro te da uma storage por X item e o segundo só te responde se você tiver uma storage, então é só mandar bala
-
XGaduX deu reputação a Nother em Exhaustion na spelllocal 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
-
XGaduX deu reputação a Garoto Prodigio em Evento PVP 1X1Entã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
-
XGaduX deu reputação a Garoto Prodigio em [Talkaction] !MissaoOlá 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.
-
XGaduX deu reputação a Garoto Prodigio em [Tabela] Mensagem ao Matar MonstrosOlá 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
-
XGaduX recebeu reputação de Garoto Prodigio em Como colocar cooldown nessa spell?Grato!.
-
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
-
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
-
XGaduX recebeu reputação de Breniinx em (Resolvido)System transform por temposistema 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)
-
XGaduX deu reputação a Yamili em (Resolvido)Skill Rate/Velocidade para upar skillQual 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.
-
XGaduX deu reputação a Vodkart em Compactar script!acho que é igual kkk nem vi
-
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
-
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
-
XGaduX recebeu reputação de Cat em coom consertar esse "bug" o efeito não acompanha o playerEsse não é o problema. Segue os vídeos q vc entenderá.
2021-02-16_00-09-27.mp4 -
XGaduX recebeu reputação de Vodkart em (Resolvido)System transform por tempoOlá! Chama discord que te passo Gadu#4649 lembre-se total créditos a @Vodkart
-
XGaduX deu reputação a Vodkart em (Resolvido)System transform por tempo@XGaduX valeu man!
-
XGaduX recebeu reputação de Vodkart em (Resolvido)System transform por tempoProblema resolvido por @Vodkart muito atencioso e resolver qualquer problema
-
XGaduX deu reputação a Vodkart em (Resolvido)System transform por tempoCerto, 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.
-
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
-
XGaduX deu reputação a yoroshigod em (Resolvido)AJUDEM Anti ParalyzeColoquei 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.
-
XGaduX deu reputação a ViitinG em [Pedido] Item que aumenta Exp1º 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 +