
jeffersonpetrolina
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
jeffersonpetrolina recebeu reputação de Tace em [PEDIDO] SCRIPT MONSTER/PISOnão entendi exatamente oq quer mas, pelo que entendi quer summonar um monstro para matar quando pisar no chão e fazer um efeito se sim ...
está qui a script
vá em data\movements\scripts Crie um arquivo chamado Piso.lua e adicione isso \/
vá em data\movements e abra movements.xml e adicione essa linha
Bom o resto é com você.
vc vai ter que ir no mapa editor e adicionar esse actionid '5678' no piso que quer.
Espero ter ajudado !!!
-
jeffersonpetrolina deu reputação a xWhiteWolf em (Resolvido)[Ajuda] Talk Transformtenta assim
local from,to = {x=1001, y=705, z=7},{x=1031, y=737, z=7} -- começo e final do mapa local from2,to2 = {x=1011, y=705, z=6},{x=1031, y=738, z=6} -- começo e final do mapa local from3,to3 = {x=1012, y=706, z=5},{x=1032, y=739, z=5} -- começo e final do mapa local from4,to4 = {x=985, y=598, z=7},{x=1044, y=652, z=7} -- começo e final do mapa local from5,to5 = {x=986, y=615, z=6},{x=1039, y=647, z=7} -- começo e final do mapa local from6,to6 = {x=990, y=616, z=5},{x=1040, y=647, z=5} -- começo e final do mapa local config = { --[vocation id] = { level, nova voc, looktype} [1] = { 1, 2, 398, 13, 30}, [2] = { 80, 3, 399, 13, 30} } local tempo = 60 * 1000 local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, tempo) setConditionParam(condition, CONDITION_PARAM_STAT_MAXHEALTHPERCENT, 110) -- 110% da vida setConditionParam(condition, CONDITION_PARAM_BUFF, true) function onSay(cid, words, param, channel) if isInRange(getCreaturePosition(cid), from, to) or isInRange(getCreaturePosition(cid), from2, to2) or isInRange(getCreaturePosition(cid), from3, to3) or isInRange(getCreaturePosition(cid), from4, to4) or isInRange(getCreaturePosition(cid), from5, to5) or isInRange(getCreaturePosition(cid), from6, to6) then doPlayerSendCancel(cid, "Você não pode se Transformar nesta área!") return true end doPlayerSay(cid, "transformar") local voc = config[getPlayerVocation(cid)] if voc then if getPlayerLevel(cid) >= voc[1] then registerCreatureEvent(cid, "stordeath") setPlayerStorageValue(cid, voc_stor, getPlayerVocation(cid)) doPlayerSetVocation(cid, voc[2]) addEvent(doPlayerSetVocation,tempo,cid,getPlayerStorageValue(cid, voc_stor)) addEvent(setPlayerStorageValue,tempo,cid,voc_stor,0) doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você Transformou!") local outfit = {lookType = voc[3]} doSetCreatureOutfit(cid, outfit, tempo) doSendMagicEffect(getCreaturePosition(cid), voc[4]) local efeito = voc[5] local function meffect(cid,t) if isPlayer(cid) and t ~= 0 then doSendMagicEffect(getThingPos(cid), efeito) addEvent(meffect, 1000, cid, (t - 1)) end end meffect(cid,(tempo/1000)) doAddCondition(cid, condition) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você precisa estar no level " .. voc[1] .. " para transformar.") end else doPlayerSendCancel(cid, "Você não pode se Transformar!") end return true end -
jeffersonpetrolina recebeu reputação de bkmadara em Magia Sem Danome mande um script de magia pra mim ver qual o erro, já os efeitos , vc tem que mexer nas sources do seu serv, e siga esse tutorial >>http://www.tibiaking.com/forum/topic/45033-aumentar-effects-z-na-source-ate-256/
-
jeffersonpetrolina recebeu reputação de lango rullez em [PEDIDO] Quest que dê 8000 mil moedas de ouroVá em data\actions\scripts crie um aquivo com o nome saco de dinheiro.lua adicione isso \/
Vá em data\actions abra o aquivo action.xml e adicione isso
Agora só é ir no seu rme e adicionar no rme essa actionid no baú
Ajudei ? REP+
-
jeffersonpetrolina deu reputação a luangop em (Resolvido)[Pedido] Summo regeneration spellTenta ai
-
jeffersonpetrolina deu reputação a MaXwEllDeN em [Aula 9] Tabelas<< Aula 8 - while & repeat
Essa aula foi escrita por um suricato Notorious, todos os créditos pertencem à ele.
Tabelas
Aula 9
#Introdução
Olá, nessa aula vamos conhecer um elemento que facilita muito a vida de programadores, principalmente quando se trata de um código com muitas variáveis e operações, as tabelas!
Imagine uma tabela como se fosse uma estante com várias gavetas, quantas você desejar, dentro de cada gaveta tem um objeto, temos a gaveta um, a gaveta dois, e assim em diante ... podemos guardar objetos dentro de cada gaveta, tirar objetos delas e também saber o que tem dentro de cada uma, nessa analogia uma tabela é basicamente como se fosse essa estante.
Uma tabela é uma variável estruturada que pode conter vários valores dispostos "dentro" de si (vide analogia), seu inicio é indicado por uma abertura de chave, ela pode conter inúmeros valores, de todos os tipos exceto nulo(nil), desde variáveis até strings, e dentro dela esses valores são separados por vírgulas (,), seu fim é indicado por um fechamento de chave.
Essa definição pode ficar meio confusa aqui, mas garanto que ao longo da aula tudo vai se explicar.
Exemplo:
tb = {1, 2, 3, 4, 5} --> inteiros em uma tabela tb = {"hello", "world"} --> strings em uma tabela tb = {a = 2, b = 3} --> variáveis em uma tabela tb = {1, 2, 3, 4, 5} --> inteiros em uma tabela tb = {"hello", "world"} --> strings em uma tabela tb = {a = 2, b = 3} --> variáveis em uma tabela Como você pode perceber nos exemplos acima a declaração (criação) de uma tabela é semelhante a de uma variável comum, mas perceba que a estrutura é diferente, eu abri uma chave `{´ e dentro dessa chave comecei a colocar os valores que eu quero para cada posição na tabela, como se eu estivesse distribuindo-os nas "gavetinhas" 1, 2, etc, separados por vírgulas, é como se cada virgula indicasse que acaba uma gavetinha e começa outra, mas lembre-se só é permitido um valor em cada "gavetinha" e uma gavetinha não pode não ter valor ou ser nula, e no final ocorre um fechamento da chave `}´ que indica o fechamento/final da tabela. Através desses exemplos e definições percebemos uma coisa, uma tabela é uma variável comum, mas é como se pudessemos guardar vários valores dentro de uma variável só, dentro da tabela, ao invés de criarmos duas variáveis, porque não criamos uma tabela contendo os valores dessas duas variáveis.
#Mas e então, qual é a vantagem de se usar tabelas?
Além da organização e estruturação veremos mais pra frente jeitos de se manipular tabelas que farão com que seu código fique muito menor e mais prático com o uso delas, acompanhe ... #Agora vamos pra uma parte um pouco mais chatinha, preste atenção Tabelas contém indexes, o que é um index? Os indexes são chaves "primárias" às quais os valores da tabela são associados, todo valor em uma tabela exceto variáveis tem um index, o index se não definido por você é definido pela posição do valor na tabela, e eles tem a simples função de organização e identificação dos valores na tabela:
tb = {2, 5, 4, 6} Sobre a tabela acima podemos afirmar que o valor 2 tem o index 1, mas porque? Pois como eu já falei o index é definido pela posição do valor na tabela, começando sempre do 1, então ele é o primeiro valor da tabela, tem a posição 1 E assim em diante, o valor 5 tem index 2, o 4 tem index 3, o 6 tem index 6 e sempre em diante ... Há também a opção de definir o index de um valor manualmente ao invés de simplesmente identifica-los pela posição na tabela, o que pode facilitar a associação de valores:
--> [index] = valor tb = {2, 5, [15] = 30} Neste caso foi criada uma tabela, e para um de seus valores foi definido o index 15 manualmente, ou seja, o index do valor 2 é 1, e o do valor 5 é 2 (atribuidos pela posição), já para o valor 30 foi definido o index 15 manualmente, então o index do valor 30 é 15, e não 3 como seria normalmente ... #E como se pega os valores de uma tabela? Há dois meios de se pegar valores de dentro de uma tabela: Através do index do valor ou se a tabela contiver variáveis, através dos nomes das variáveis:
t = {21, 23, 43, 54} t[2] --> esta sintaxe retornará o valor na tabela 't' no index 2, ou seja, 23 t[3] --> 43 t[4] --> 54 e assim por diante ... Para se obter valores de uma tabela através de variáveis inseridas nela é muito mais fácil:
t = {level = 20, nome = "dragon"} t.level --> 20, 't' é a tabela e 'level' o nome da variável inserida nela t.nome --> "dragon" #A biblioteca 'table' Existem muitas funções dentro da biblioteca 'table', que são usadas para manipulação de tabelas, aqui vão elas e suas respectivas utilidades:
table.concat (table [, sep [, i [, j]]]) --> Dada uma tabela onde todos os elementos são strings ou números retorna os elementos de i ou o inicio e j ou o fim concatenados em sequencia intercalados por 'sep', separador table.insert (table, [pos,] value) --> Insere o valor 'value' na 'pos' (index) na tabela 'table' table.remove (table [, pos]) --> Remove o valor associado ao index 'pos' da tabela 'table' table.sort (table [, comp]) --> Ordena os elementos da tabela 'table' em dada ordem, se comp é fornecido então ele deve ser uma função que recebe dois elementos da tabela e retorna true quando o primeiro é menor do que o segundo #E como uma tabela pode ser util no meu script? Pode ser útil na associação de valores, observe este script de troca de sexo, ao invés de dois ifs checando o sexo, como o sexo só pode ser 0 ou 1, você usa uma tabela:
function onUse(cid) local sex = { [0] = 1, [1] = 0, } doPlayerSetSex(cid, sex[getPlayerSex(cid)]) return true end Se o sexo do jogador for 0, atraves do valor no index 0 na tabela, o sexo é trocado para 1, e vice-versa .. Como também pode ser útil para armazenar configurações ou variáveis:
local config = { effect = 1, removeRune = true, combat = 2 } config.effect --> 1 config.removerune --> true config.combat --> 2 #Utilidades
#Curiosidades
Tabelas são o único mecanismo de estruturação de dados em Lua; Tabelas podem ser heterogêneas; isto é, elas podem conter valores de todos os tipos (exceto nil). Existem várias maneiras convenientes de se criar tabelas em Lua Campos de tabela podem conter funções *nil = tipo de valor nulo, vazio
Gostou? Agradeça ...
Exercício Crie uma tabela, contendo 2 valores inteiros, 2 strings e 2 variaveis. Printe os elementos semelhantes da tabela separadamente.
OBS: Os valores podem ser aleatórios
Aula escrita por um suricato Notorious, todos os créditos são dele.
Aula 10 - O comando for >> -
jeffersonpetrolina deu reputação a Ceos em [Pedido] Summons XPBom eu também não achei espero que algueém te ajude.
-
jeffersonpetrolina deu reputação a Bruno Minervino em (Resolvido)[Pedido]Transforma tal intem em outro intemEm data/actions/actions.xml
<action itemid="3965" event="script" value="changekunai.lua"/>Em data/actions/scripts/changekunai.lua
function onUse(cid, item, fromPosition, itemEx, toPosition) if doPlayerRemoveItem(cid, 3965, 100) then doPlayerAddItem(cid, 7838, 20) doSendAnimatedText(fromPosition, "Efeito!!!", TEXTCOLOR_LIGHTBLUE) end return true endEstou sem recursos nenhum aqui, fiz de cabeça por isso ficou bem simples, porém o importante é funcionar -
jeffersonpetrolina recebeu reputação de RenanPhellip em (Resolvido)[Duvida] Minha Spell sai tortaTEsta Ai!! e diz se pegou ou não '-'
local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -90.2, 1, -90.2, 1) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_SLEEP) local condition1 = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition1, CONDITION_PARAM_TICKS, 10000) setConditionParam(condition1, CONDITION_PARAM_SPEED, -350) setConditionFormula(condition1, -0.9, 0, -0.9, 0) setCombatCondition(combat1, condition1) arr1 = { {0, 3, 0} } arr2 = { {0, 3, 0} } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) setCombatArea(combat1, area1) setCombatArea(combat2, area2) local function onCastSpell1(parameters) doCombat(parameters.cid, parameters.combat1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, parameters.combat2, parameters.var) end function onCastSpell(cid, var) local position1 = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y+1, z=getThingPosition(getCreatureTarget(cid)).z} local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2 } addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 200, parameters) doSendMagicEffect(position1, 229) return true end -
jeffersonpetrolina recebeu reputação de ManoTobira em (Resolvido)[Duvida] Minha Spell sai tortaTEsta Ai!! e diz se pegou ou não '-'
local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -90.2, 1, -90.2, 1) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_SLEEP) local condition1 = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition1, CONDITION_PARAM_TICKS, 10000) setConditionParam(condition1, CONDITION_PARAM_SPEED, -350) setConditionFormula(condition1, -0.9, 0, -0.9, 0) setCombatCondition(combat1, condition1) arr1 = { {0, 3, 0} } arr2 = { {0, 3, 0} } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) setCombatArea(combat1, area1) setCombatArea(combat2, area2) local function onCastSpell1(parameters) doCombat(parameters.cid, parameters.combat1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, parameters.combat2, parameters.var) end function onCastSpell(cid, var) local position1 = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y+1, z=getThingPosition(getCreatureTarget(cid)).z} local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2 } addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 200, parameters) doSendMagicEffect(position1, 229) return true end -
jeffersonpetrolina deu reputação a Absolute em [Clean House] Remover casas de quem não logaOlá Galera do TK, venho hoje rapidamente trazer um sistema muito útil e pedido em meu tópico do !eject system: http://www.tibiaking.com/forum/topic/35060-eject-system-expulsar-player-inativo-da-house/
Explicação:
Sabe aqueles players chatos que compram as melhores casas e não logam no servidor e enche a desgrama da casa de item só para os novos players não comprar? Pois é, isto não existirá mais! =D
Este script é apenas um arquivo que você colocará em sua pasta mods e ele executará toda vez que o servidor for reiniciado, ou seja: Quando o servidor ligar ele irá verificar os players que não logam a X dias (configurável) e então expulsa-los da casa movendo seus items para o depot deixando a casa sem dono.
Vamos ao que interessa; Na pasta principal do servidor, onde fica a distro que roda o servidor e tudo mais, entre na pasta MODS e crie um arquivo com o nome de cleanhouses.xml e dentro coloque o seguinte: <?xml version="1.0" encoding="UTF-8"?> <mod name="Cleanhouses" version="1.03" author="nsanee" contact="tibiaking.com" enabled="yes"> <description> v.1.03 - Added 'onlyNonPremium' configurable. Removed modlib, since the script is run once anyway we don't need it loaded at all times. It shouldn't now stop execution when a house is nameless. v.1.02 - now uses only one sql query, removed multiworld configurable since it's not needed anymore v.1.01 - small fixes, optimized query + multiworld support. This mod will clean houses of inactive players and move their items to the depot. config explained: days - If the player hasn't logged in for this number of days his house will be freed. log - true/false, whether to enable logging of which houses have been cleaned. file - path to the log file, where logs will be stored. Ignored if 'log' set to false onlyNonPremium - if set to 'true', the script will clean only the houses of players who don't have any pacc days left. other notes: DO NOT remove doSaveServer() at the end, otherwise if your server happens to crash before the nearest server save you will regret it =) </description> <globalevent name="cleanhouses" type="start" event="buffer"><![CDATA[ local config = { days = 3, log = true, file = getDataDir() .. "/logs/cleanhouses.txt", onlyNonPremium = true } local ns_query =[[ SELECT houses.owner, houses.id as hid, houses.name as house_name ,players.name FROM houses LEFT JOIN players ON players.id=houses.owner LEFT JOIN accounts ON players.account_id=accounts.id WHERE players.lastlogin < (UNIX_TIMESTAMP() - ]] ..config.days.. [[*24*60*60) ]] ..(config.onlyNonPremium and ' AND accounts.premdays=0 ' or '')..[[ AND players.world_id =]] .. getConfigValue("worldId") local house = db.getResult(ns_query) local logs = " :: Houses cleaned:\n\n" if house:getID() ~= -1 then repeat logs = logs .. house:getDataString('house_name') ..", owned by " .. house:getDataString('name') .. "\n" setHouseOwner(house:getDataInt('hid'), 0) until not house:next() house:free() else logs = logs .. "There were no houses to clean." end if config.log then doWriteLogFile(config.file, logs) end addEvent(doSaveServer, 1000) ]]></globalevent> </mod> Pronto, salve e feche.
Toda vez que o servidor iniciar irá expulsar os players que não logam aos dias configuráveis.
Como configurar:
days = 3 * É o número em DIAS que o player terá que ficar sem logar para perder a casa.
Configure apenas isto, o resto aconselho não mexer, caso queira aprimorar o sistema aconselho ser avançado na área para não causar erros no mesmo.
O Mesmo foi testado hoje por mim e está em funcionalidade a todas as versões de TFS.
Créditos:
Absolute
nsanee (otland)
Demais dúvidas deixe-me saber!
Até o próximo
-
jeffersonpetrolina deu reputação a xWhiteWolf em (Resolvido)Spells para remover os summonsgetCreatureSummons(cid) Info This functions checks for creature summons list. Returns false if creature not found, otherwise table with creatures list (NOTE: Can be empty!) Example local summons = getCreatureSummons(cid) if(table.maxn(summons) <= 0) then -- no summons doPlayerSendCancel(cid, "You don't have any summons..") return false end -- remove all summons for _, pid in ipairs(summons) do doRemoveCreature(pid) end
-
jeffersonpetrolina deu reputação a Rezende.16 em (Resolvido)[Erro] Ajudem PFParceiro , se seu servidor tiver o sistema de auto loot tenta desativar ele e vê se o erro persiste ...
-
jeffersonpetrolina deu reputação a xWhiteWolf em (Resolvido)Spell kamuilocal config = { pos = {x=42, y=234, z=7}, -- posição da aegis dimension tempo = 15, -- tempo pra voltar effect1 = 66, -- efeito ao ser teleportado effect2 = 10 -- efeito ao voltar } function onCastSpell(cid, var) if isPlayer(getCreatureTarget(cid)) then target = getCreatureTarget(cid) addEvent(doTeleportThing, 1000*config.tempo, target, getThingPos(target), true) addEvent(doSendMagicEffect, 1000*config.tempo, getThingPos(target), config.effect2) doSendMagicEffect(getThingPos(target), config.effect1) doTeleportThing(target, config.pos) if isCreature(cid) then doPlayerSendTextMessage(target, 27, "You were teleported by ".. getCreatureName(cid) ..".") end if isPlayer(cid) and isCreature(target) then doPlayerSendTextMessage(cid, 27, "You teleported ".. getCreatureName(target) .."!") end for i = 1,config.tempo do addEvent(function() if isCreature(target) then doPlayerSendTextMessage(target,25,"You'll be back in " .. config.tempo -i +1 .. " second(s)") end end, 1000*i) end else doPlayerSendCancel(cid, "You can only use this spell in players") end return true end
-
jeffersonpetrolina deu reputação a Absolute em (Resolvido)[Spell] Heal FriendFiz:
Em data/spells/scripts crie um arquivo com o nome de healaamigo.lua e dentro coloque:
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_PINK) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 10, 10, 16, 22) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Pós isto abra o spells.xml e coloque embaixo de uma spell a seguinte linha:
<instant name="Heal Friend" words="Heal Friend" lvl="50" mana="200" prem="0" aggressive="0" needtarget="1" params="1" exhaustion="800" groups="2,1000" icon="84" needlearn="0" event="script" value="healing/healaamigo.lua"> <vocation id="2"/> <vocation id="6"/> </instant> Esta para Sorceres e druids usarem, caso deseje que outras vocações usem adicione o vocation id dela.