Scripts tfs 0.4 (OLD)
Fórum destinado a conteúdos de desenvolvimento envolvendo o Tibia Clássico.
Encontre pelo tipo de código:
Tópicos nesta seção estão sujeitos a análise e aprovação!
Seu tópico de conteúdo será analisado em até 48h por um membro de nossa equipe, fique atento.
Saiba mais:
1445 tópicos neste fórum
-
O jogador puxa a alavanca e tem x% de summonar x monstro (a ideia é do RadBR: http://i.imgur.com/pp1l0Vz.gif). OBS.: Coloque uniqueid 4597 na alavanca. actions.xml TFS 0.4/0.3.6: TFS 1.2/1.1: actions/scripts/maquina.lua TFS 0.4/0.3.6: TFS 1.2/1.1:
-
- 9 respostas
- 1.9k visualizações
- 1 follower
-
-
bom galera esse script tem a função de não deixar player passar em um certo local só membros da staff tem esse acesso, vamos começar. Vai em movements/scripts copia um arquivo lá e renomeia pra piso staff e add. em movements.xml add. 56830 é a action que vai no piso pelo mapa editor. prontinho veja o resultado!
- 6 respostas
- 714 visualizações
- 2 followers
-
O que faz? : Retorna o percentual de um frag (vitórias & derrotas). function getWinningRatio(win, lose) if(type(win) ~= "number" or type(lose) ~= "number") then return nil, error("You need to specify a number value.") end if(win == 0 and lose == 0) then return 0.0 end local ratio = win / (win + lose) * 100 local i = 4 if(math.floor(ratio) < 10) then i = 3 end ratio = tostring(ratio):sub(1, i) return tonumber(ratio) end Como usar? : doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Seu percentual é "..getWinningRatio(230, 78).."%.") Resultado : Seu percentual é 74.6%. Onde 230 pode ser uma stora…
-
- 5 respostas
- 494 visualizações
-
-
Introdução: Aparecer uma mensagem no Broadcast quando player atingisse x level. Créditos: LuckOake Crie um arquivo chamado broadcastlevel.lua em creaturescripts\scripts function isInteger(n) return math.floor(n) == n and true or false end function onAdvance(cid, skill, oldLevel, newLevel) if isInteger(newLevel/100) then broadcastMessage("O jogador "..getCreatureName(cid).." atingiu o level "..newLevel..".") end return true end login.lua (antes do último return true): registerCreatureEvent(cid, "BroadcastLevel") creaturescripts.xml: <event type="advance" name="BroadcastLevel" script="broadcastlevel.lua"/> Abraços!
-
- 2 respostas
- 904 visualizações
-
-
Introdução: Player se auto paraliza, porém, tem sua vida healada a cada x segundos. Créditos: Luck Basta criar um arquivo .lua em \data\spells\scripts com o nome que preferir e acrescentar isso: tempo = 10 -- Tempo de duração da spell em segundos hp = 10 -- Quanto HP vai healar a cada x segundos function heal(cid) if not isCreature(cid) then return true end if getPlayerStorageValue(cid, 13978) == 1 then doCreatureAddHealth(cid, hp) addEvent(heal, 3000, cid) return true end return true end function onCastSpell(cid, var) setPlayerStorageValue(cid, 13978, 1) doPlayerSetNoMove(cid, true) heal(cid) addEvent(setPlayerStorageValue, tempo*1000, cid, 13978, -1) addEvent(d…
-
Introdução: O player já começa no servidor com outfit determinado. Vá em \data\creaturescripts\scripts e crie um arquivo outfitfixo.lua, coloque: function onLogin(cid) a = { -- [ID da vocation] = Outfit [1] = 128, [2] = 129, [3] = 130, [4] = 131, } b = a[getPlayerVocation(cid)] doSetCreatureOutfit(cid, {lookType = b}, -1) return true end Em creaturescripts.xml: <event type="login" name="Outfit Fixo" script="outfitfixo.lua"/> Em [x] você deve colocar o ID da votação. Após o = você deve colocar o ID do outfit. Crédito: tev
-
Introdução: O script serve para você mandar broadcast message para determinado player em vez de ser para todo o ot. Vá em \data\talkactions\scripts, crie o arquivo broadcastprivate.lua: function onSay(cid, words, param) t = string.explode(param, ",") if not t[2] then doPlayerSendCancel(cid, "Opa! Comando errado.") elseif not getPlayerByName(t[1]) then doPlayerSendCancel(cid, "Esse player não está online.") end doPlayerSendTextMessage(getPlayerByName(t[1]), MESSAGE_STATUS_WARNING, t[2]) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Mensagem enviada para "..getCreatureName(getPlayerByName(t[1]))..".") return true end Em \data\talkactions, abra talkactio…
-
- 1 resposta
- 544 visualizações
-
-
Introdução: O player usa apenas um comando e vira um membro da staff, seja ele GOD, GM ou Tutor. \data\talkactions <talkaction words="!virargod" script="virargod.lua" /> \data\talkactions\scripts, cria o arquivo virargod.lua function onSay(cid, words) doPlayerSetGroupId(cid, 6) doRemoveCreature(cid) return true end No caso o "6" representa o ID de GOD. Créditos: tev
-
TESTADO EM TFS 0.4 E 0.6, PEÇO PARA QUE TESTEM EM OUTRAS VERSÕES, POR FAVOR. Prévia; Crie um arquivo KillsandDeath.lua function onLook(cid, thing, position, lookDistance) function getDeathsAndKills(cid, type) -- by vodka local query,d = db.getResult("SELECT `player_id` FROM "..(tostring(type) == "kill" and "`player_killers`" or "`player_deaths`").." WHERE `player_id` = "..getPlayerGUID(cid)),0 if (query:getID() ~= -1) then repeat d = d+1 until not query:next() query:free() end return d end if isPlayer(thing.uid) then doPlayerSetSpecialDescription(thing.uid, "\n"..(getPlayerSex(thing.uid) == 0 and "She" or "He").." has Killed: ["..getDeathsAndKills(thing.uid,…
- 8 respostas
- 3k visualizações
- 1 follower
-
Versão: 10.76 TFS: 1.1 Prévia; Em movements.xml, acrescente: <movevent event="StepIn" itemid="8753" script="mwstep.lua"/> Certo, agora crie um arquivo .lua com o nome: mwstep e coloque isso: function onStepIn(creature, item, position, fromPosition) removeMw(creature:getPosition(), 8753, 1027) return true end Agora vá até \data\spells\scripts\support e abra o arquivo magic wall rune.lua Delete tudo que está lá e coloque isso: local id = 8753 local combat = Combat() combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) combat:setParameter(COMBAT_PARAM_CREATEITEM, id) function tile_timer(id, pos, delay, color) if getTileItemB…
-
- 2 respostas
- 1.7k visualizações
-
-
Função que retorna os players que estão numa área específica function getPlayersInArea(fromPos, toPos) -- function by amoeba13 playersInArea = {} for x = fromPos.x, toPos.x do for y = fromPos.y, toPos.y do for z = fromPos.z, toPos.z do totalArea = {x=x, y=y, z=z} playerz = getTopCreature(totalArea) if isPlayer(playerz.uid) then table.insert(playersInArea, playerz.uid) end end end end return playersInArea end Exemplo de uso: function onSay(cid, words, param, channel) local area = getPlayersInArea({x = 1…
- 2 respostas
- 1.6k visualizações
-
Event droploot acontece quando um monstro ou player dropa 1 item. Em creatureevent.cpp procure: bool CreatureEvents::playerLogin(Player* player) { //fire global event if is registered bool result = true; for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it) { if(it->second->getEventType() == CREATURE_EVENT_LOGIN && !it->second->executeLogin(player) && result) result = false; } return result; Adicione abaixo: bool CreatureEvents::dropLoot(Creature* creature, Item* item) { bool result = true; for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it…
-
- 6 respostas
- 1.3k visualizações
- 1 follower
-
-
Bom dia! Há um certo tempo eu tive um servidor de Tibia que possuía um sistema bem interessante de tradevip. Funcionava da seguinte maneira, o player que possuísse premdays(ou VIP) usava o comando !tradevip [DIAS], [Nome do Jogador] e automaticamente gerava uma janela de trade com um item e assim poderiam ser vendidos dias de premium sem o perigo de ninguém ser roubado. Por padrão isso não é possível no Tibia, mas um usuário chamado Oneshot fez modificações nas sources para tornar isso possível. Segue agora as modificações que permitem funcionar esse sistema: Em luascript.h, adicione essa linha, abaixo das linhas parecidas. static int32_t luaDoStartTrade(…
- 8 respostas
- 1.8k visualizações
-
Galera hoje vou lhe mostrar-lhes alguns tutorias para PDA, que eu vi e alguns queriam saber, aqui vai: 1° Como configurar o exp do seu server. 2°como adicionar um novo fly, ride e etc, OBS: nao vou mostrar como adicionar no dat editor, eu irei ensinar como configurar ele no script: vá em data/lib/configuration.lua, e procure essa linha: 3° pokemons e items iniciais (creio que muitos ainda nao sabem como modificar) 4° Como adicionar uma nova ball para o PDA 5° Como aumentar e diminuir o Cauth do pokemon. 6° Golden arena: 7° como aumentar o drop …
- 28 respostas
- 3.7k visualizações
-
E aí galera do TK, Hoje vim trazer um script idiota simples e que é util para os tutores do meu servidor, onde eles utilizam um comando e anuncia a seguinte mensagem: 00:13 O Tutor Keilost está no Help Channel respondendo duvidas. Ele tem uma limitação de 15 minutos para usar novamente, ah e fiz uma funçãozinha que ele identifica qual group é do player, caso um GM queria usar, CM, whatever... Vamos ao código: Em talkactions/talkactions.xml coloque a seguinte tag: <talkaction log="yes" words="/anunciar" access="2" event="script" script="staffbroad.lua"/> Agora em talkactions/scripts crie um arquivo lua chamado staffbroad e coloque o seguinte cont…
- 5 respostas
- 1.1k visualizações
- 1 follower
-
Função que lista as casas vazias no servidor. function getFreeHouses() local towns = getTownList() local houses = {} for i = 1, #towns do local list = getTownHouses(towns[i].id) for j = 1, #list do if list[j] then if getHouseOwner(list[j]) == 0 then table.insert(houses, list[j]) end end end end if(#houses == 0) then return nil end return houses end Créditos: Crypton3
-
- 2 respostas
- 359 visualizações
- 1 follower
-
-
Essa função em C++ retorna os monstros online no servidor. luascript.cpp Procure por int32_t LuaScriptInterface::luaGetPlayersOnline(lua_State* L) { //getPlayersOnline() ScriptEnviroment* env = getEnv(); AutoList<Player>::iterator it = Player::autoList.begin(); lua_newtable(L); for(int32_t i = 1; it != Player::autoList.end(); ++it, ++i) { lua_pushnumber(L, i); lua_pushnumber(L, env->addThing(it->second)); pushTable(L); } return 1; } Adicione abaixo int32_t LuaScriptInterface::luaGetMonstersOnline(lua_State* L) { //getMonstersOnline() ScriptEnviroment* env = getEnv(); AutoList<Monster>::itera…
- 2 respostas
- 520 visualizações
-
Essa função pega o nome do level mais alto do servidor, baseando-se na experiência do player. local function getHighestPlayer() local result = db.getResult("SELECT `name` FROM `players` ORDER BY `level` DESC, `experience` DESC LIMIT 1") return result.getDataString(result, "name") end Exemplo de uso: if getPlayerName(cid) == getHighestPlayer() then Créditos: Kohaeu
- 2 respostas
- 364 visualizações
- 1 follower
-
AMULETO WHOHOOO É um amuleto que, quando está equipado, nega x% do dano provido de monstros. (data/creaturescripts/scripts/amulet.lua) http://pastebin.com/w5wzaXyL(revisão - recomendado) http://pastebin.com/LW3Z34v9 (versão inicial) (data/creaturescripts/scripts/login.lua) Adicione esta linha: registerCreatureEvent(cid, "Amulet") (data/creaturescripts/creaturescripts.xml) Adicione esta linha: <event type="statschange" name="Amulet" event="script" value="amulet.lua"/> E pronto! No script a variável "porcentagem" possui o valor 40 como padrão, que é a porcentagem do dano que será BLOQUEADA. Ou seja, receberá ainda 60% do dano Na vari…
-
- 10 respostas
- 1.2k visualizações
- 1 follower
-
-
Sistema de Aura [V1.0] Opa galera. Hoje eu vim postar para voces, um sistema de Aura. Tipo .. eu não tinha nada pra fazer... e então eu resolvi postar esse conteúdo para contribuir mais com o forum... porque ultimamente, eu não venho postando conteúdos para os usuários , kkkkkk Funcionamento: Bom. Existe um NPC, que vende as auras por 100k cada. Existe 8 tipos de auras diferentes. [ Death, Earth, Posion, Ice, Physical, Energy, Holy, Fire ]. Não existe maximo de aura para cada player, se o player quizer, ele pode comprar as 8. Bom .. Quando o player toma um dano do tipo, da aura que ele tem, ele tem 50% de refletir ou absorver . Exemplo : Eu compro u…
- 10 respostas
- 3.8k visualizações
- 1 follower
-
Vou trazer um script básico para vocês que podem ser usado no seu mapa global, Na parte de criação de umbral. Uso esse script para isso. Testei em tfs: 1.0, 1.1 e funcionou sem erro. function onUse(cid, item, fromPosition, itemEx, toPosition) local config = { pos = {x = 33526, y = 32420, z = 12}, -- posição que o player vai cair } if(itemEx.itemid == 22634) and getPlayerStorageValue(cid, 17201) < 1 then doPlayerSendTextMessage(cid, 19, "You need kill boss for reward items and create you umbral.") -- mensagem doTeleportThing(cid, config.pos) setPlayerStorageValue(cid, 17201, 1) -- storage …
- 4 respostas
- 658 visualizações
- 1 follower
-
Esse sistema faz com que existam monstros que não atacam você, se você não atacar ou usar magias antes. Então vamos ao passo-a-passo. Encontre em luascript.cpp: registerMethod("MonsterType", "isHostile", LuaScriptInterface::luaMonsterTypeIsHostile); Coloque abaixo: registerMethod("MonsterType", "isHostileOnAttack", LuaScriptInterface::luaMonsterTypeIsHostileOnAttack); Encontre em luascript.cpp: int LuaScriptInterface::luaMonsterTypeIsHostile(lua_State* L) { // monsterType:isHostile() MonsterType* monsterType = getUserdata<MonsterType>(L, 1); if (monsterType) { pushBoolean(L, monsterType->isHostile); } else { …
- 4 respostas
- 1.4k visualizações
- 1 follower
-
Bom eu estava passando por um servidor e verifiquei que quase nenhum tem o sistema de descongelar o ursagrodon para tfs 1.0. Agora em (actions/scripts/chyllfroest) crie um .lua chamado ou substitua com o seu nome: Ursagrodon function onUse(cid, item, fromPosition, itemEx, toPosition) if(item.itemid == 22719) then if(itemEx.itemid == 22722) and getPlayerStorageValue(cid, 16410) < 1 then doPlayerSendTextMessage(cid, 19, "You managed to melt about half of the ice blook. Quickly now, it's ice cold here and the ice block could freeze over again.") doTransformItem(getTileItemById(toPosition,22722).uid,22723) setPlayerStorageValue(cid, 16410, 1) elseif …
-
- 1 resposta
- 510 visualizações
- 1 follower
-
-
Frags System Ola pessoal, sei que tem alguns scripts de frags system no forum, mas eu achei eles um pouco confusos então decidi fazer o meu e venho por meio deste disponibiliza-lo para quem quiser usar, entaão vamos la: Testado em TFS-0.4 Passo 1 - Creature Scripts Passo 2 - Banco de dados Passo 3 - Ranks gesior: Passo 4 - Caso queira a talkaction !rank frags Pronto, acabamos de instalar o script no server.
-
- 1 resposta
- 1.2k visualizações
-
-
Eu tinha pedido esse script na area de pedidos mas fui tentando e acabou que conseguir fazer isso.. é simples.. Vá até data\actions\scripts\foods\food.lua apague tudo e coloque isso: local FOODS, MAX_FOOD = { [2328] = {84, "Gulp."}, [2362] = {48, "Yum."}, [2666] = {180, "Munch."}, [2667] = {144, "Munch."}, [2668] = {120, "Mmmm."}, [2669] = {204, "Munch."}, [2670] = {48, "Gulp."}, [2671] = {360, "Chomp."}, [2672] = {720, "Chomp."}, [2673] = {60, "Yum."}, [2674] = {72, "Yum."}, [2675] = {156, "Yum."}, [2676] = {96, "Yum."}, [2677] = {12, "Yum."}, [2678] = {216, "Slurp."}, [2679] = {12, "Yum."}, [2680] = {24, "Yum."}, [2681] = {108, "Yum."}, [2682] = {240, "Yum."…
-
- 1 resposta
- 336 visualizações
-
-
[Criado em TFS 0.4 (tibia 8.6), talvez não funcione em outras versões - não darei suporte] Eaí! Este mod consiste em dizer !aura para ver uma lista de auras compráveis, que, após compradas, podem ser escolhidas por "!aura nomedaaura" para que saia um efeito no jogador a cada 1 segundo. [mods/Aura.xml]: http://pastebin.com/qVayLc3m ss's e como usar: Como adicionar outros efeitos? Na 4ª linha, nesta parte: auras = { ["fogo"] = {36,1500000,11350}, ["gelo"] = {41,1500000,11351}, ["pedras"] = {44,1250000,11352}, ["energia"] = {37,1250000,11353}, ["tornado"] = {42,15000000,11354}, } Continue seguindo o padrão, que é: ["Nome"] = {Efeito, Preço, Storage…
-
- 2 respostas
- 2.1k visualizações
- 1 follower
-
-
Yo! Galera esse é meu primeiro topico referente a algo que eu fiz, é simples e provavelmente ninguem vá usar, mas talvez de alguma ideia pra alguem . Bom o meu sistema faz o seguinte : Caso seu char morra, e não possui nenhum ponto de existência, o char é completamente deletado da conta. Sim, isso é bem tryhard, porem, pretendo fazer algo mais leve para o meu projeto. Agora como instalar. Primeiramente adicione para data/creaturescripts/scripts/pontoexist1.lua Adicione para data/creaturescripts/scripts/deletechar.lua Adicione essas 2 tags em criaturescripts.xml Registre os 2 codigs em creaturescripts/scripts/login.lua (antes …
- 18 respostas
- 1.8k visualizações
- 1 follower
-
O script é simples: você normalmente começa com a wand of vortex nos servidores. Daí, quando pega nível suficiente pra usar a próxima wand (wand of dragonbreath), ganha ela automaticamente. Assim por diante até a wand of voodoo. Funciona em druids tbm. [data/creaturescripts/scripts/evoluirwand.lua] http://pastebin.com/rHBqt3Sd (ou clique em Spoiler para ver o script aqui) [data/creaturescripts/creaturescripts.xml] Adicione a seguinte linha: <event type="advance" name="EvoluirStaff" event="script" value="evoluirwand.lua"/> [data/creaturescripts/scripts/login.lua] Adicione a seguinte linha após onLogin(cid): registerCreatureEvent(cid,…
-
- 1 resposta
- 452 visualizações
- 1 follower
-
-
É semelhante a função que existe em PHP, transforma a primeira letra de cada palavra da string em maiúscula. function ucwords(str) str = str:lower():gsub("(%l)(%w*)", function(x, y) return x:upper() .. y end) return str end Exemplo: print(ucwords("aBCde ABCDE aBBcDDe")) Resultado: Abcde Abcde Abbcdde
-
- 3 respostas
- 534 visualizações
-
-
E aí galera do TK, Estou trazendo mais uma inovação para o Tibia King, é o sistema de anunciar as ultimas 5 newstickers postadas no site! Vamos ao código, em globalevents.xml adicione: <globalevent name="information" interval="1800000" event="script" value="autobroadcast.lua"/> Ele vai anunciar de 30 em 30 minutos as mensagens, lembrando que não anuncia todas de uma vez, ele sorteia uma das 5. Em globalevents/scripts adicione um arquivo lua com o nome de autobroadcast e coloque isso dentro do conteúdo: function onThink(interval, lastExecution) local result = db.getResult("SELECT text FROM `z_news_tickers` ORDER by date DESC LIMIT 0,5") local so…
-
- 3 respostas
- 892 visualizações
- 2 followers
-
-
É um script bem simples, mas talvez ajude alguém. Testei no TFS 1.1! Imagem Script 1. Em creaturescripts/scripts crie um arquivo chamado fly.lua e adicione isso nele: function onModalWindow(player, modalWindowId, buttonId, choiceId) if(modalWindowId ~= 4597 or buttonId == 2) then return false end if(not getTileInfo(player:getPosition()).protection) then player:sendTextMessage(MESSAGE_STATUS_SMALL, "You can only fly in protection zone.") player:getPosition():sendMagicEffect(CONST_ME_POFF) return false end local positions = { [1] = {x = 95, y = 117, z = 7}, -- Trekolt [2] = {x = 159, y…
-
- 11 respostas
- 1.5k visualizações
-
-
Eu desenvolvi ontem um cast system básico. Ele é baseado em todos os casts que você acha por ai, especialmente esse daqui: https://github.com/otland/forgottenserver/pull/994 O que ele tem diferente? Até agora se mostrou estável, não dá debugs nem crasha a distro(o mais importante) e é bem simples. Fiz ele por que os casts disponiveis não foram feitos em sua maioria por programadores, e sim amadores que se propuseram a adaptar a source do Elf(um desenvolvedor antigo do tfs) de 0.3.x para 1.0+. Esses casts tem um codigo bem feio e mal organizado. Eu tentei fazer algo mais bem feito e organizado. Não recomendo a usar em produção(servidor online com players). No …
- 6 respostas
- 1.9k visualizações
-
Bom após 1 semana tentando entrar em contato com o Colors consegui a permissão para trazer o Crafting System 1.x dele para o Tibiaking... Sem mais Demoras vamos lá Imagens do Script Vamos instalar ele então \õ/ Em actions Em CreatureScript Parte Configurave Abra data/global.lua e cole na primeira linha Bom isso é tudo desse sistema grandinho, porem muito utilizável em servidores RPG Creditos: Colors (pelo sistema) Eu (por encher o saco dele para liberar o post no TK) Lembrando que o Autor Pediu para que não fosse publicado em vários tópicos, Autorizando meu poste no TK!! ~~~~~~~~~~~~~~~~~…
-
- 24 respostas
- 11.7k visualizações
- 1 follower
-
-
[Testado em TFS 1.0] -- Caso funcione em outras versões, comente que eu atualizo. Olá galera, estou trazendo a vocês um comando para alterar a storage do player sem precisar acessar a database, facilitando o teste de alguns sistemas. Esse comando já vem na base porém desativado, para ativar siga os passos: Vá em "Data/talkactions" abra o arquivo talkactions.xml e adicione a TAG: <talkaction words="/storage" separator=" " script="setstorage.lua" /> Caso sua base não tenha esse script, você deve colocá-lo em "Data/talkactions/scripts", com o nome setstorage.lua: function onSay(cid, words, param) local player = Player(cid) if not player:getGroup():ge…
-
- 3 respostas
- 551 visualizações
-
-
Galera resolvi fazer uma "mistureba" em alguns scripts aqui do TK e deu noque deu... oque vai acontecer ? Video de como ficou no meu servidor: Video_1429708800.wmv-FAVOR IGNORAR O SOM (PRESTE ATENÇÃO O SOM ESTÁ MUITO ALTO) scan do vídeo: CLIQUE AQUI ------------------------------------------------ Vamos ao script... abra data/spells/scripts e crie um arquivo com o nome reflect.lua e dentro dele coloque: e salve. agora em data/spells abra spells.xml e em baixo do ULTIMO </instant> agora abra data/creaturescripts/scripts crie um arquivo com o nome reflect.lua e dentro coloque: agora ainda em data/creaturescripts/scripts crie…
- 8 respostas
- 622 visualizações
- 1 follower
Quem Está Navegando 0
- Nenhum usuário registrado visualizando esta página.