Jump to content

Search the Community

Showing results for tags 'mod'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • xTibia - Notícias e Suporte
    • Regras
    • Noticias
    • Soluções
    • Projetos Patrocinados
    • Tutoriais para Iniciantes
    • Imprensa
  • OTServ
    • Notícias e Debates
    • OTServlist
    • Downloads
    • Recursos
    • Suporte
    • Pedidos
    • Show-Off
    • Tutoriais
  • OFF-Topic
    • Barzinho do Éks
    • Design
    • Informática

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Sou

  1. Instalação Primeiramente abra a pasta de seu ot, e procure pelo arquivo config.lua e procure por essas 2 linhas : experienceStages = false rateExperience = 50 se o experienceStages tiver ativado mude para false, pois o Stages é configurado no próprio script, e é muito importante o rateExperience tiver como 0, exemplo: experienceStages = false rateExperience = 0 agora entre na pasta creaturescripts/scripts e crie um arquivo lua, chamado exphit.lua e cole o seguinte código: para versões mais antigas como 8.54, 8.6 use : para versões mais novas como 9.8 : na mesma pasta procure pelo arquivo login.lua, e em cima de return true, adc a seguinte linha: registerCreatureEvent(cid, "ExpHit") volte na pasta anterior creaturescripts, e procure pelo arquivo creaturescritps.xml e cole as 2 tags: <event type="statschange" name="ExpGain" event="script" value="exphit.lua"/> <event type="combat" name="ExpHit" event="script" value="exphit.lua"/> para configurar a exp, que era configurada no config.lua está no começo do arquivo exphit.lua , e as configurações da party tbem, dos anéis, e até pode ser usado stages agora, segue abaixo o exemplo: -- CONFIGURAÇÕES DE EXPERIENCIA -- useStages = false -- Usar sistema de Stages , true/false premiumMultipliqueExp = 2 -- Players Premiums terão exp multiplicada, caso não querer deixe 1. rateExp = 50 -- Exp caso não for usar stages. local stages = { -- ["DELEVEL-ATELEVEL"] = EXP, (OBS: NUNCA REPETIR O MSM NUMERO, SEMPRE COLOCAR UM A MAIS.) ["1-50"] = 50, ["51-100"] = 45, ["101-150"] = 40, ["151-200"] = 35, ["201-250"] = 30, ["251-300"] = 25, ["351-400"] = 20, } ultimateExp = 15 -- exp que vai usar caso o level do player não tiver mais na tabela . -- CONFIGURAÇÕES DA PARTY partyPorcent = 40 -- Quantos Porcento da exp vai para os membros da party levelBlockParty = 1000 -- Diferença Maxima de Level permitida para membro da party ganhar exp. expShareRadiusX = 30 -- Distancia maxima permitida no eixo X para membro da party ganhar exp. expShareRadiusY = 30 -- Distancia maxima permitida no eixo Y para membro da party ganhar exp. expShareRadiusZ = 1 -- Distancia maxima permitida no eixo Z para membro da party ganhar exp. -- CONFIGURAÇÕES DE RINGS -- local rings = { -- [ID DO ANEL] = EXP MULTIPLICADA POR X EXP. [3048] = 2, [3049] = 4, [3050] = 6, } -- FIM DAS CONFIGURAÇÕES ---- Log V2.0 : Log V3.0 ( 03/02/2013 ) : Log V4.0 ( 12/11/2013 ) :
  2. '~" MOD Comprar Item Por Alavanca "~' ​Como funciona? ​Não está muito dificil de entender, simplesmente é compra itens (no caso runas) por alavanca com um mod: Script: ​Na pasta principal do seu ot, entre na pasta MODS, e dentro crie um arquivo chamado Itemslever.xml ​ Explicação: ​[5556] = {item = 2273, count = 1, charges = 2, cost = 50, backpack = false, backpackID = 0, backpackCount = 0, cap = true}, _________________________________ |» Unique que se vai por na alavanca | |» ID do item que será comprado | |» Quantia que vai vim a cada puxada |___________________________________________ |» Cargas, quantas cargas vão vir (caso seja runa), se não for runa coloca 'charges = 1' | |» Preço que o player vai pagar _________________________________________________| |» Não precisa mecher _______| |___________________|
  3. Está dando esse erro em um MOD que possuo, alguém sabe como solucionar esse problema? <?xml version="1.0" encoding="UTF-8"?> <mod name="Vipsystem" version="1.0" author="Aco" contact="http://otland.net/members/acordion" enabled="yes"> <!--- Information Vip Item = 10503 set action id 11223 to the tile you want to be vip tile set action id 2112 to the door you want to be vip door MYSQL TABLE ........................................................ ALTER TABLE `accounts` ADD `vipdays` int(11) NOT NULL DEFAULT 0; ........................................................ --> <config name="VipFuctions"><![CDATA[ --- Vip functions by Kekox function getPlayerVipDays(cid) local Info = db.getResult("SELECT `vipdays` FROM `accounts` WHERE `id` = " .. getPlayerAccountId(cid) .. " LIMIT 1") if Info:getID() ~= LUA_ERROR then local days= Info:getDataInt("vipdays") Info:free() return days end return LUA_ERROR end function doAddVipDays(cid, days) db.executeQuery("UPDATE `accounts` SET `vipdays` = `vipdays` + " .. days .. " WHERE `id` = " .. getPlayerAccountId(cid) .. ";") end function doRemoveVipDays(cid, days) db.executeQuery("UPDATE `accounts` SET `vipdays` = `vipdays` - " .. days .. " WHERE `id` = " .. getPlayerAccountId(cid) .. ";") end ]]></config> <globalevent name="VipDaysRemover" time="00:01" event="script"><![CDATA[ --- Script by Kekox. function onTime() db.executeQuery("UPDATE accounts SET vipdays = vipdays - 1 WHERE vipdays > 0;") return true end ]]></globalevent> <globalevent name="vipEffect" interval="2" event="script"><![CDATA[ domodlib('VipFuctions') --- Script By Kekox. function onThink(interval, lastExecution) for _, name in ipairs(getOnlinePlayers()) do local cid = getPlayerByName(name) if getPlayerVipDays(cid) >= 1 then doSendMagicEffect(getPlayerPosition(cid), 27) doSendAnimatedText(getPlayerPosition(cid), "VIP!", TEXTCOLOR_RED) end end return true end]]></globalevent> <event type="login" name="Vip" event="script"><![CDATA[ --- Script by Kekox. function onLogin(cid) registerCreatureEvent(cid, "VipCheck") return true end]]></event> <event type="login" name="VipCheck" event="script"><![CDATA[ domodlib('VipFuctions') --- Script by Kekox. function onLogin(cid) if getPlayerVipDays(cid) >= 1 then doPlayerSendTextMessage(cid, 19, "You have ".. getPlayerVipDays(cid) .." vip days left.") end return true end ]]></event> <movevent type="StepIn" actionid="11223" event="script"><![CDATA[ domodlib('VipFuctions') --- Script by Kekox. function onStepIn(cid, item, position, fromPosition) if getPlayerVipDays(cid) == 0 then doTeleportThing(cid, fromPosition, FALSE) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only VIP Account can go there.") end return true end ]]></movevent> <action actionid="13500" event="script"><![CDATA[ domodlib('VipFuctions') --- Script by Kekox. function onUse(cid, item, frompos, item2, topos) if getPlayerVipDays(cid) >= 1 then pos = getPlayerPosition(cid) if pos.x == topos.x then if pos.y < topos.y then pos.y = topos.y + 1 else pos.y = topos.y - 1 end elseif pos.y == topos.y then if pos.x < topos.x then pos.x = topos.x + 1 else pos.x = topos.x - 1 end else doPlayerSendTextMessage(cid,22,"Stand in front of the door.") return true end doTeleportThing(cid,pos) doSendMagicEffect(topos,12) else doPlayerSendTextMessage(cid,22,'Only VIP Account can go there.') end return true end ]]></action> <action itemid="11111" event="script"><![CDATA[ domodlib('VipFuctions') --- Script by Kekox. function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerVipDays(cid) > 365 then doPlayerSendCancel(cid, "You can only have 1 year of vip account or less.") else doAddVipDays(cid, 30) doCreatureSay(cid, "Vip", TALKTYPE_ORANGE_1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "We have added 30 vip days to your account.") doRemoveItem(item.uid) end return true end ]]></action> </mod>
  4. Créditos: luanluciano93 HEAL - Se o life dele chega a 50k, ele solta um aviso, e depois de 5 segundos heala 300k. Crie um arquivo em creaturescripts/scripts/ com o nome heal_gaz.lua e coloque esse código: -- <event type="healthchange" name="HealGaz" script="heal_gaz.lua"/> local config = { life_ative = 50000, life_add = 300000, seconds_ative = 5, gStorage = 90702, } local function Uheal(cid) local gaz = Monster(cid) gaz:addHealth(config.life_add) gaz:say("Gaz'haragoth HEALS himself!", TALKTYPE_MONSTER_SAY) gaz:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) Game.setStorageValue(config.gStorage, 0) end function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin) if attacker then if creature:getHealth() < config.life_ative and Game.getStorageValue(config.gStorage) < 1 then creature:say("Gaz'haragoth beginns to draw on the nightmares to HEAL himself!", TALKTYPE_MONSTER_SAY) addEvent(Uheal, 1000 * config.seconds_ative, creature.uid) Game.setStorageValue(config.gStorage, 1) end end return primaryDamage, primaryType, secondaryDamage, secondaryType end A tag que deve add ao creaturescript.xml esta como comentário no script, é só adicionar. Depois para funcionar no Gaz, vá até o xml dele em monster e coloque em seu código: <script> <event name="HealGaz" /> </script> TELEPORT - Quem passa em cima do corpo dos summons do boss é teleportado para perto dele. Crie um arquivo em movements/scripts/ com o nome tp_gaz.lua e coloque esse código: -- <movevent event="StepIn" itemid="22455" script="teleport_gaz.lua"/> function onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() if player == nil then return false end local monster = Creature("Gaz'Haragoth") if monster then player:teleportTo(monster:getPosition()) else player:teleportTo(fromPosition) end return true end A tag que deve add ao movements.xml esta como comentário no script, é só adicionar.
  5. Abra a pasta Mods do seu servidor e crie um arquivo chamados : Zombie.xml TFS 0.4 TFS 0.3.6 o monstro você instala em data/monsters zombie event.xml tag no monsters.xml <monster name="Zombie Event" file="zombie event.xml"/> Configurando: Sistema zombie_config = { storages = {172100, 172101}, -- não edite players = {min = 2, max = 30}, -- número minimo e máximo para jogadores no evento rewards = {items ={{2160,10},{2494,1}}, trophy = 5805}, -- premiações do jogador timeToStartEvent = 30, -- segundos para começar o evento após dar start CheckTime = 5, -- tempo que o TP fica aberto para os jogadores adrentarem o evento teleport = {{x=145, y=50, z=7}, {x=176 , y=54, z=5}}, -- posiçãodo tp onde aparece, posição para onde o jogador vai ao entrar no tp arena = {{x=173,y=52,z=5},{x=179,y=56,z=6}}, -- posição começo e final da area do evento monster_name = "Zombie Event", -- nome do monstro que será sumonado timeBetweenSpawns = 20, -- a cada quantos segundos é dado o respaw time do zombie no evento min_Level = 20 -- level minimo para participar do evento } Dia e Horário zombie_days = { ["Monday"] = {"13:00","18:00","20:00","22:00"}, ["Tuesday"] = {"13:00","18:00","20:00","22:00"}, ["Wednesday"] = {"13:00","18:00","20:00","22:00"}, ["Thursday"] = {"13:00","18:00","20:00","22:00"}, ["Friday"] = {"13:00","18:00","20:00","22:00"}, ["Saturday"] = {"13:00","18:00","20:00","22:00"}, ["Sunday"] = {"13:00","18:00","20:00","22:00"} } Créditos: Vodkart;
  6. Créditos: EddyHavoc e Slawkens. Objetivo Esse script mostra quem deu look em você. Ao player dar look em você, aparecerá uma mensagem avisando. Tutorial Acesse a pasta MODS e crie um arquivo chamado lookingatyou.xml, coloque isso dentro do arquivo: <?xml version="1.0" encoding="UTF-8"?> <mod name="peeper" version="1.0" author="" contact="" enabled="yes"> <config name="peeper-config"><![CDATA[ -- anonymously or display peeper name? anonymous = "no" -- ignore players with access (will not show message when they look on someone) hiddenAccess = 3 -- message color (type) messageType = MESSAGE_STATUS_DEFAULT ]]></config> <event type="look" name="peeper-event" event="script"><![CDATA[ domodlib('peeper-config') local config = { anonymous = getBooleanFromString(anonymous), hiddenAccess = hiddenAccess, messageType = messageType } function onLook(cid, thing, position, lookDistance) if(isPlayer(thing.uid) and getPlayerAccess(cid) < config.hiddenAccess) then doPlayerSendTextMessage(thing.uid, config.messageType, (config.anonymous and "Someone" or getPlayerName(cid)) .. " is looking at you.") end return true end ]]></event> <event type="login" name="peeper-login" event="buffer"><![CDATA[ registerCreatureEvent(cid, "peeper-event") _result = true ]]></event> </mod>
  7. A pedido do vinnevinne, fiz esse mod, daí achei bem legal e resolvi postar fora do tópico Peça Aqui o Seu Sistema/Evento. Informações O jogador irá puxar uma alavanca, caso não tenha usado em um certo tempo (configurável) e não haja ninguém já dentro da arena, ele será teleportado e a arena irá iniciar em 10 segundos A arena deve ser quadrada de 10 x 10 a 12 x 12 para garantir que ocorra como planejado! Na arena, a primeira wave de monstros (configurável) será invocada após os 10 segundos. Quando o jogador matar o último monstro, ele receberá uma mensagem que a próxima wave começará em 5 segundos Caso ele chegue na última wave, ao matar o último monstro ele será teletransportado de volta ao seu templo, com uma medalha personalizada e seus prêmios (configuráveis) Caso ele morra em alguma wave, ele será teleportado para o templo, não morrerá e poderá ganhar prêmios configuráveis Todas as waves são configuráveis (prêmios, quantos e quais monstros) O máximo de monstros por wave é 55, mas não recomendo deixar acima de 30 Testado em 8.6 Código Arquivo Ultimate Survival.xml na pasta mods Screenshots Configuração Primeiramente, crie uma arena quadrada 12 x 12 no seu mapa. Evite muitas construções como pilares ou estruturas que impeçam o respawn Em seguida, pegue a posição do CANTO SUPERIOR ESQUERDO dessa arena e coloque as coordenadas aqui: posi = {x=x, y=y, z=z} Pegue a posição do CANTO INFERIOR DIREITO dessa arena e coloque as coordenadas aqui: posf = {x=x, y=y, z=z} Configurando as waves: waves = { [1] = {monsters = {'dragon', 'dragon lord'}, count = 30, reward = {exp = 0, item = 2148, amount = 1, money = 100}}, Você deve inserir os nomes dos monstros que serão invocados entre aspas (aleatoriamente), quantos serão invocados (count) e as recompensas que o jogador irá ganhar se morrer nessa wave (deixe tudo como false se não quiser que ele ganhe recompensas ao morrer nessa wave) A posição de entrada do jogador na arena deverá ser editada aqui: posc = {x=109, y=215, z=7} exhaust é o tempo que ele deverá esperar para entrar novamente na arena final_reward são as recompensas que ele ganhará ao terminar a arena Finalmente, a alavanca no mapa deverá ter action id 4599
  8. Tenho um scripting (mais precisamente um mod) de elo que recebe de acordo com seu frag. Queria saber se uma alma bondosa poderia me ajudar a adicionar bônus de acordo com o titulo que a pessoa tem. Exemplo: Titulo Calamidade +5 de ML Titulo Lord Demônio +10 de ML e etc Segue o mod:
  9. WakiV Otclient Updater O que faz? Esse auto-updater, conta com as funções de: Checar se existe novos updates na inicialização do 'OTC', baixa os updates em diretórios especificados pelo administrador, baixa e extrai arquivos '.ZIP', reinicia o' OTC' apos terminar o download do patch, múltiplos patchs. Instalação: 1 - Crie no diretório raiz de seu site um arquivo '.txt' chamado de 'Update.txt', preencha o arquivo como o arquivo a seguir: http://pastebin.com/cdwnD6qg Obs: nesse pastebin já tem as instruções de como adicionar novos updates. 2 - Baixe o 'Updater Patcher.rar' extraia na pasta raiz do seu otclient. 3 - Depois de ter baixado o 'Updater Mod.rar', extraia e coloque a pasta do mod na pasta 'mods' do seu otclient configure o caminho para o executavel do 'updater patcher' no arquivo .lua. 4 - Agora você precisa ir na pasta raiz do seu 'otclient 'e configurar o arquivo 'Config.ini' com os seguites dados: [Geral] WebSite=http://dragonhertsserver.pusku.com/ - o seu website vai aqui é o site onde fica o 'update.txt' Client=otclient - nome do executavel do seu otclient SiteFile=Update.txt - o nome do arquivo que fica no site marcando os updates 5 - Depois de tudo configurado é só abrir o 'otclient' normalmente que o 'patcher' vai executar junto. use sempre link de download direto para adicionar um novo update. Download: Updater Mod: http://www.mediafire...Updater Mod.rar Updater Patcher: http://www.mediafire...ate patcher.rar Vídeo que mostra como o mod funciona: Imagem: Obs: Se você tem um servidor é quer usar o updater, crie um instalador definindo já o diretório do seu client para o player não precisar configurar o arquivos '.lua' Obs²: Em arquivos compactados use sempre a extenção '.ZIP' Obs³: É preciso o NET framework para rodar. Créditos: vyctor17
  10. autotarget.xml: [LUA]<?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Auto Target System" version="1.0" author="xOtservx" enabled="yes"> <event type="login" name="AutoTargetLogin" event="script"><![CDATA[ function onLogin(cid) return registerCreatureEvent(cid, "AutoTarget") end]]></event> <event type="think" name="AutoTarget" event="script"><![CDATA[ function onThink(cid, interval) if getPlayerStorageValue(cid, 25471) ~= "on" then return true end if getCreatureTarget(cid) then return true end local monsterScreen = {} for x = -7, 7 do for y = -5, 5 do creature = getTopCreature({x = getThingPos(cid).x + x, y = getThingPos(cid).y + y, z = getThingPos(cid).z}).uid if isMonster(creature) then table.insert(monsterScreen, creature) end end end if #monsterScreen == 0 then return true end monsterTarget = #monsterScreen[1] if #monsterTarget > 1 then local type = type(getPlayerStorageValue(cid, 25472)) ~= "string" and "distancia" or getPlayerStorageValue(cid, 25471) for i = 1, #monsterScreen do if type == "distancia" then if getDistanceBetween(getThingPos(monsterScreen[i]), getThingPos(cid)) < getDistanceBetween(getThingPos(monsterTarget), getThingPos(cid)) then monsterTarget = monsterScreen[i] end elseif type == "forte" then if getCreatureMaxHealth(monsterScreen[i]) > getCreatureMaxHealth(monsterTarget) then monsterTarget = monsterScreen[i] end end end end doMonsterSetTarget(cid, monsterTarget) return true end]]></event> <talkaction words="!autotarget;/autotarget" event="buffer"><![CDATA[ function onSay(cid, words, param) if param == "on" then setPlayerStorageValue(cid, 25471, "on") return doPlayerSendTextMessage(cid, 27, "Você ligou o sistema de auto target, configure ele para !autotarget distancia ou !autotarget forte .") elseif param == "off" then setPlayerStorageValue(cid, 25471, "off") return doPlayerSendTextMessage(cid, "27, Você desligou o sistema de auto target.") elseif param == "distancia" or param "forte" then if getPlayerStorageValue(cid, 25471) ~= "on" then return doPlayerSendTextMessage(cid, "27, Você precisa estar com o sistema de auto target ligado (!autotarget on)") end setPlayerStorageValue(cid, 25472, param) return doPlayerSendTextMessage(cid, "27, Você trocou o modo do auto target para " .. param .. ".") end end]]></talkaction> </mod>[/LUA] coloque o xml na pasta mods do ot. comandos:
  11. #Descrição: O evento ocorre com a separação automática de 2 times (Azul x Vermelho), onde um disputa com o outro a sala de prêmios. Para ter acesso à sala, um dos times deve derrotar os 3 geradores presentes antes do outro. #O que possui? - Totalmente automatizado (Script: Abertura, Entrega do premio, Designação dos vencedores e Encerramento) - Página explicativa (PHP: Os players entenderão como funciona o evento) - Talkactions ADM (Script: Comandos que podem ser usados para abrir o castle manualmente) - Tutorial (Arquivo: Explicando passo a passo a instalação) - Arena com 2 salas e waiting room (Mapa) - Entre outras coisas… *OBS: Este evento só funciona em TFS 0.4. DOWNLOAD: CLICK AQUI SCAN: CLICK AQUI Créditos: ChaitoSoft Jhon Thiagobji
  12. Credits: MatheusMkalo & Vodkart versão testada: 8.54, 8.6 e 9.1 Não funciona em OT pokemon Auto Loot.xml <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Loot System" version="1.0" author="Vodkart And Mkalo" contact="none.com" enabled="yes"> <config name="Loot_func"><![CDATA[ info = { OnlyPremium = true, AutomaticDeposit = true, BlockMonsters = {}, BlockItemsList = {2123,2515} } function setPlayerStorageTable(cid, storage, tab) local tabstr = "&" for i,x in pairs(tab) do tabstr = tabstr .. i .. "," .. x .. ";" end setPlayerStorageValue(cid, storage, tabstr:sub(1, #tabstr-1)) end function getPlayerStorageTable(cid, storage) local tabstr = getPlayerStorageValue(cid, storage) local tab = {} if type(tabstr) ~= "string" then return {} end if tabstr:sub(1,1) ~= "&" then return {} end local tabstr = tabstr:sub(2, #tabstr) local a = string.explode(tabstr, ";") for i,x in pairs(a) do local b = string.explode(x, ",") tab[tonumber(b[1]) or b[1]] = tonumber(b[2]) or b[2] end return tab end function isInTable(cid, item) for _,i in pairs(getPlayerStorageTable(cid, 27000))do if tonumber(i) == tonumber(item) then return true end end return false end function addItemTable(cid, item) local x = {} for i = 1,#getPlayerStorageTable(cid, 27000) do table.insert(x,getPlayerStorageTable(cid, 27000)[i]) end if x ~= 0 then table.insert(x,tonumber(item)) setPlayerStorageTable(cid, 27000, x) else setPlayerStorageTable(cid, 27000, {item}) end end function removeItemTable(cid, item) local x = {} for i = 1,#getPlayerStorageTable(cid, 27000) do table.insert(x,getPlayerStorageTable(cid, 27000)[i]) end for i,v in ipairs(x) do if tonumber(v) == tonumber(item) then table.remove(x,i) end end return setPlayerStorageTable(cid, 27000, x) end function ShowItemsTabble(cid) local str,n = "-- My Loot List --\n\n",0 for i = 1,#getPlayerStorageTable(cid, 27000) do n = n + 1 str = str..""..n.." - "..getItemNameById(getPlayerStorageTable(cid, 27000)[i]).."\n" end return doShowTextDialog(cid, 2529, str) end function getContainerItems(containeruid) local items = {} local containers = {} if type(getContainerSize(containeruid)) ~= "number" then return false end for slot = 0, getContainerSize(containeruid)-1 do local item = getContainerItem(containeruid, slot) if item.itemid == 0 then break end if isContainer(item.uid) then table.insert(containers, item.uid) end table.insert(items, item) end if #containers > 0 then for i,x in ipairs(getContainerItems(containers[1])) do table.insert(items, x) end table.remove(containers, 1) end return items end function getItemsInContainerById(container, itemid) -- Function By Kydrai local items = {} if isContainer(container) and getContainerSize(container) > 0 then for slot=0, (getContainerSize(container)-1) do local item = getContainerItem(container, slot) if isContainer(item.uid) then local itemsbag = getItemsInContainerById(item.uid, itemid) for i=0, #itemsbag do table.insert(items, itemsbag[i]) end else if itemid == item.itemid then table.insert(items, item.uid) end end end end return items end function doPlayerAddItemStacking(cid, itemid, quant) -- by mkalo local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid) local piles = 0 if #item > 0 then for i,x in pairs(item) do if getThing(x).type < 100 then local it = getThing(x) doTransformItem(it.uid, itemid, it.type+quant) if it.type+quant > 100 then doPlayerAddItem(cid, itemid, it.type+quant-100) end else piles = piles+1 end end else return doPlayerAddItem(cid, itemid, quant) end if piles == #item then doPlayerAddItem(cid, itemid, quant) end end function AutomaticDeposit(cid,item,n) local deposit = item == tonumber(2160) and (n*10000) or tonumber(item) == 2152 and (n*100) or (n*1) return doPlayerDepositMoney(cid, deposit) end function corpseRetireItems(cid, pos) local check = false for i = 0, 255 do pos.stackpos = i tile = getTileThingByPos(pos) if tile.uid > 0 and isCorpse(tile.uid) then check = true break end end if check == true then local items = getContainerItems(tile.uid) for i,x in pairs(items) do if isInArray(getPlayerStorageTable(cid, 27000), tonumber(x.itemid)) then if isItemStackable(x.itemid) then doPlayerAddItemStacking(cid, x.itemid, x.type) if info.AutomaticDeposit == true and isInArray({"2148","2152","2160"},tonumber(x.itemid)) then AutomaticDeposit(cid,x.itemid,x.type) end else doPlayerAddItem(cid, x.itemid) end doRemoveItem(x.uid) end end end end ]]></config> <event type="login" name="LootLogin" event="script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid, "MonsterAttack") return true end]]></event> <event type="death" name="LootEventDeath" event="script"><![CDATA[ domodlib('Loot_func') function onDeath(cid, corpse, deathList) local killer,pos = deathList[1],getCreaturePosition(cid) addEvent(corpseRetireItems,1,killer,pos) return true end]]></event> <event type="combat" name="MonsterAttack" event="script"><![CDATA[ domodlib('Loot_func') if isPlayer(cid) and isMonster(target) and not isInArray(info.BlockMonsters,string.lower(getCreatureName(target))) then registerCreatureEvent(target, "LootEventDeath") end return true]]></event> <talkaction words="!autoloot;/autoloot" event="buffer"><![CDATA[ domodlib('Loot_func') local t = string.explode(string.lower(param), ",") if info.OnlyPremium == true and not isPremium(cid) then doPlayerSendCancel(cid, "you must be a premium account.") return true elseif not t[1] then ShowItemsTabble(cid) return true elseif tonumber(t[1]) or tonumber(t[2]) then doPlayerSendCancel(cid, "enter!autoloot add,name or !autoloot remove,name") return true elseif isInArray({"add","remove"}, tostring(t[1])) then local func,check = tostring(t[1]) == "add" and addItemTable or removeItemTable, tostring(t[1]) == "add" and true or false local item = getItemIdByName(tostring(t[2]), false) if not item then doPlayerSendCancel(cid, "This item does not exist.") return true elseif check == true and isInArray(info.BlockItemsList, item) then doPlayerSendCancel(cid, "You can not add this item in the list!") return true elseif isInTable(cid, item) == check then doPlayerSendCancel(cid, "This Item "..(check == true and "already" or "is not").." in your list.") return true end func(cid, item) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,check == true and "you added the item "..t[2].." in the list" or "you removed the item "..t[2].." from the list") return true end return true]]></talkaction> </mod> Commads: Configurações: OBS: caso no seu servidor precise relogar para atualizar a loot list adicione: func(cid, item) -- dps desta linha doPlayerSave(cid) -- essa função Atenção: Esse tópico foi autorizado pelo Vodkart, cuja eu tenho total direitos de coloca-lo aqui.
  13. O que é o módulo loot_stats? Este módulo é criado para apresentar itens descartados / monstro morto: contar, acaso, etc. Além disso, o módulo pode mostrar o próprio saque descartado em uma forma gráfica. Todas as operações estão no lado do cliente, então eles precisam de arquivos adicionais (veja Como adicionar?), Eles verificam as notificações de pilhagem e as salvam. Como adicionar? Adicione a pasta [loot_stats] à pasta "mods" ou "modules" (pasta "mods" recomendada) na sua pasta principal do OTClient. Para a pasta items_versions, adicione a pasta com o nome da versão (8.60 -> 860). Dentro da pasta criada, adicione os arquivos items.otb * e items.xml *. * Estes arquivos você pode encontrar em editores de mapas / servidores etc. Como parece Características Informações sobre monstros mortos. Saqueie de todos os monstros. Saqueie de um tipo de monstro. Informações de saque gráfico no canto superior esquerdo. limitações Módulo precisa trabalhar notificações de pilhagem. Este módulo funciona apenas com notificações de saque "clássicas". Você precisa ter items.otb e items.xml para trabalhar neste módulo. Problemas com o carregamento mais longo do OTClient. Download Loot_stats Bugs / Problemas enviados para o projeto no github. Feauters / Ideias etc. adicione aqui.Este módulo funciona apenas com notificações de pilhagem "clássicas" (como rl tibia)! Você precisa adicionar arquivos items.otb e items.xml! Creditos MagicWal ( Criador do Mod ) Walox ( Tradução )
  14. Explicação: Vocês sabem que os comandos que o GOD usa ficam salvos em um arquivo.txt certo? Esse sistema é parecido, só que quando o jogador for trocar items pelo trade vão ficar salvo os IDS dos items que foram trocados e os nomes dos players. 1° Versão é feita pelo Banco de dados: 2° Versão é salvo em um arquivo.txt em data/logs
  15. Ta ai mais um evento que é vendido pela ChaitoSoft! #Descrição do evento: Neste evento 2 times (Azul e Vermelho) vão batalhar para conseguir a "quantidade" de frags para ganhar o evento, totalmente configuravel #O que possui? - Abertura automática ou via comando. - Quantidade minima de players para o evento (configuravel) - Level minimo para entrar no evento (configuravel) - Quantidade de frags que terão que conquistar para ganhar (configuravel) - Separação automática dos times (configuravel) - Mapa incluso - Tutorial explicativo - Premio o time vencedor do evento (configuravel) - Entre outras coisas…. *OBS: Este evento só funciona em TFS 0.4. Instalação: Em Data/Mods/Crie um arquivo XML,e coloque isso dentro: Download do mapa: http://www.2shared.com/file/WvySTo3Q/Map.html Scan do mapa: https://www.virustotal.com/pt/file/580413c7a4294400f55e6311d048cdcdf3e192ef20b6862a30bb56a4f4bc0c8d/analysis/1349135527/ Créditos: ChaitoSoft por fazer o evento.
  16. Fala pessoal, então, todos sabem que essa quest é bem complicada de ser configurada e na maioria das vezes ocorre erros, pois bem, hoje eu vim aqui trazer para vocês um script angito da Arena de Svargrond em MOD, criado por um membro da otland chamado TomCrusher e modificado por Matheus. É um script de fácil configuração e sem erros nenhum, confira! Vá até a pasta mods e crie um arquivo chamado arena.xml com isso dentro: Pronto, apenas configure o RewardsRoom e o KickPosition, o resto é só adicionar os ActionsIDS no mapa editor caso não tenha. Se você possuir outro sistema de arena em seu OTServ, remova todos os arquivos desse sistema. Agora vamos configurar o NPC, vá até a pasta data/npc e crie um arquivo chamado Halvar.xml com isso: <?xml version="1.0" encoding="UTF-8"?> <npc name="Halvar" script="data/npc/scripts/arena.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="143" head="3" body="77" legs="78" feet="39" addons="1"/> </npc> Agora vá até data/npc/scripts e crie um arquivo chamado arena.lua com isso dentro: domodlib('arenaFunctions') local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local focus = 0 local talk_start = 0 local TS = 0 function onCreatureDisappear(cid, pos) if focus == cid then selfSay('Good bye then.') focus = 0 talk_start = 0 end end local function BYE() focus = 0 talk_start = 0 TS = 0 end function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end function onCreatureSay(cid, type, msg) msg = string.lower(msg) if (msgcontains(msg, 'hi') and (focus == 0)) then selfSay('Hello ' .. getCreatureName(cid) .. ', do you want to make arena?') focus = cid talk_start = os.clock() TS = 1 elseif msgcontains(msg, 'hi') and (focus ~= cid) then selfSay('Im Bussy') elseif TS == 1 and msgcontains(msg, 'yes') or msgcontains(msg, 'fight') or msgcontains(msg, 'arena') then if getPlayerStorageValue(cid, myArenaLevel) < 3 then local enterArena = myArenaLevelIs(cid) if getPlayerLevel(cid) >= enterArena.RLV then if getPlayerMoney(cid) >= enterArena.RC then setPlayerStorageValue(cid, talkNPC, 1) doPlayerRemoveMoney(cid, enterArena.RC) selfSay("Now you can go to test... ".. enterArena.LN .."!") BYE() else selfSay("You don\'t have "..enterArena.RC.." gp! Come back when you will be ready!") BYE() end else selfSay("You don\'t have "..enterArena.RLV.." level! Come back when you will be ready!") BYE() end else selfSay(Cancel[6]) BYE() end elseif TS == 1 and msgcontains(msg, 'no') then selfSay("Bye!") BYE() elseif msgcontains(msg, 'bye') then selfSay("Bye!") BYE() end return true end function onThink() doNpcSetCreatureFocus(focus) if (os.clock() - talk_start) > 10 then if focus > 0 then selfSay('Good bye then.') end focus = 0 end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Prontinho, sistema completamente configurado! Espero que façam bom proveito, esse é um ótimo script. Créditos: - TomCrusher (criação do sistema) - Matheus(arrumei os erros e modifiquei algumas coisas)
  17. Nome: Evento for fun Infos: quem é atingido pelo fogo morre, o último a sobreviver ganha. O evento é automático, mas também possui um comando para dar inicio ao evento, só usar /firestart minutos exemplo: /firestart 1 Fire_Storm_Event.xml <?xml version="1.0" encoding="ISO-8859-1"?><mod name="Fire Storm Event" version="8.6" author="Vodkart" contact="" enabled="yes"><config name="fire_config"><![CDATA[Fire = { storages = {172354, 172355}, -- storage Count players = {min = 2, max = 50}, -- min, max players no evento minLevel = 20, -- level minimo para entrar no event rewards = {{2160,10},{2494,1}}, -- premios que vai receber timeToStartEvent = 30, -- segundos para começar o evento CheckTime = 5, -- time to check event teleport = {{x=158, y=53, z=7}, {x=189 , y=58, z=7}}, -- posição do teleport, posição para onde o jogador vai arena = {{x=186,y=54,z=7},{x=193,y=60,z=7}} -- posição começo e final da area}Fire_Days = { ["Monday"] = {"13:00","18:00","20:00","22:00"}, ["Tuesday"] = {"13:00","18:00","20:00","22:00"}, ["Wednesday"] = {"13:00","18:00","20:00","22:00"}, ["Thursday"] = {"13:00","18:00","20:00","22:00"}, ["Friday"] = {"13:00","18:00","20:00","22:00"}, ["Saturday"] = {"13:00","18:00","20:00","22:00"}, ["Sunday"] = {"13:00","18:00","20:00","22:00"}}function removeFireTp() local t = getTileItemById(Fire.teleport[1], 1387).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(Fire.teleport[1], CONST_ME_POFF)endfunction ZerarStorFire() setGlobalStorageValue(Fire.storages[1], 0) setGlobalStorageValue(Fire.storages[2], 0)endfunction getPlayersInFireEvent() local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), Fire.arena[1], Fire.arena[2]) then t[#t+1] = pid end end return tendfunction getFireRewards(cid, items) local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID for _, i_i in ipairs(items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(backpack, item, amount) else for i = 1, amount do doAddContainerItem(backpack, item, 1) end end endendfunction doFireInArea(n) if #getPlayersInFireEvent() > 1 then for i = 1, n do local pos = {x=math.random(Fire.arena[1].x, Fire.arena[2].x), y=math.random(Fire.arena[1].y,Fire.arena[2].y), z=Fire.arena[1].z} local m = getTopCreature(pos).uid doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA) if m ~= 0 and isPlayer(m) then doSendMagicEffect(getCreaturePosition(m), CONST_ME_FIREAREA) doCreatureSay(m, "Ooh Burn Burn", TALKTYPE_ORANGE_1) local corpse = doCreateItem(3058, 1, getPlayerPosition(m)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(m) .. ". He was killed by Fire Field.") doSendMagicEffect(getPlayerPosition(m), CONST_ME_POFF) doTeleportThing(m, getTownTemplePosition(getPlayerTown(m))) doPlayerSendTextMessage(m, MESSAGE_EVENT_ADVANCE, "[Fire Storm Event] You died burned out.") end end local x = 2700-(200*n) addEvent(doFireInArea, x <= 0 and 500 or x, n+1) elseif #getPlayersInFireEvent() == 1 then local cid = getPlayersInFireEvent()[1] doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) getFireRewards(cid, Fire.rewards) doBroadcastMessage("Fire Storm Event have finished. The winner is ".. getCreatureName(cid).. ". Congratulations.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() else doBroadcastMessage("No one Won the Fire Storm Event.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() endendfunction CheckFireEvent(delay) if getGlobalStorageValue(Fire.storages[1]) ~= (Fire.players.max+1) then if delay > 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.max then doBroadcastMessage("[Fire Stortm Event] Starting in " .. delay .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.min then for _, cid in pairs(getPlayersInFireEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end removeFireTp() doBroadcastMessage("The Fire Storm event could not start because of to few players participating.\n At least " .. Fire.players.min .. " players is needed!", MESSAGE_STATUS_WARNING) ZerarStorFire() elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) >= Fire.players.min then removeFireTp() doBroadcastMessage("Good Lucky! The event will start on "..Fire.timeToStartEvent.." seconds. get ready!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end addEvent(CheckFireEvent, 60000, delay-1) endend]]></config><globalevent name="Storm_Fire_Start" interval="60" event="script"><![CDATA[domodlib('fire_config')function onThink(interval, lastExecution) if Fire_Days[os.date("%A")] then local hrs = tostring(os.date("%X")):sub(1, 5) if isInArray(Fire_Days[os.date("%A")], hrs) and getGlobalStorageValue(Fire.storages[2]) <= 0 then local tp = doCreateItem(1387, 1, Fire.teleport[1]) doItemSetAttribute(tp, "aid", 45111) CheckFireEvent(Fire.CheckTime) setGlobalStorageValue(Fire.storages[1], 0) end end return trueend]]></globalevent><event type="login" name="Storm_Fire_Login" event="script"><![CDATA[domodlib('fire_config')function onLogin(cid) registerCreatureEvent(cid, "FireStormBatle") if isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return trueend]]></event><event type="combat" name="FireStormBatle" event="script"><![CDATA[domodlib('fire_config')if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doPlayerSendCancel(cid, "You may not attack this player.") return falseendreturn true]]></event><movevent type="StepIn" actionid ="45111" event="script"><![CDATA[domodlib('fire_config')function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, Fire.teleport[2]) end if getPlayerLevel(cid) < Fire.minLevel then doTeleportThing(cid, fromPosition, true) doPlayerSendCancel(cid, "You need to be at least level " .. Fire.minLevel .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end if getGlobalStorageValue(Fire.storages[1]) <= Fire.players.max then doTeleportThing(cid, Fire.teleport[2]) setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) doBroadcastMessage(getPlayerName(cid) .. " entered the fire stortm event! Currently " .. getGlobalStorageValue(Fire.storages[1]) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) if getGlobalStorageValue(Fire.storages[1]) == Fire.players.max then setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) removeFireTp() doBroadcastMessage("The event will start on "..Fire.timeToStartEvent.." seconds. get ready!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end end return trueend]]></movevent><talkaction words="/firestart;!firestart" access="5" event="buffer"><![CDATA[domodlib('fire_config')if getGlobalStorageValue(Fire.storages[2]) > 0 then doPlayerSendCancel(cid, "The event is already starting.") return trueelseif not param or not tonumber(param) then doPlayerSendCancel(cid, "Use only numbers.") return true endlocal param = tonumber(param) <= 0 and 1 or tonumber(param)local tp = doCreateItem(1387, 1, Fire.teleport[1])doItemSetAttribute(tp, "aid", 45111)CheckFireEvent(tonumber(param))setGlobalStorageValue(Fire.storages[1], 0)setGlobalStorageValue(Fire.storages[2], 1)]]></talkaction><globalevent name="FireDebug-Start" type="start" event="buffer"><![CDATA[domodlib('fire_config')ZerarStorFire()return true]]></globalevent></mod> Baixa esse arquivo e adicione no seu servidor no respectivo lugar.! fire lua.rar fire lua.rar
  18. Olá galera do Xtibia, venho hoje trazer um sistema muito útil como pode ver no Título ele remove casa dos players que não logam mais. Explicação: Sabe aqueles players filho da mãe que compram as melhores casas e não logam mais no servidor e enche a porra da casa de item pros novos players não comprar? Pois é esse sistema dara um jeito nesses safados! xD Este script é apenas um arquivo que você colocará em sua pasta mods e ele executará toda vez que o servidor for reiniciado/ligado, 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. Bom chega de explicação e 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 codigo: <?xml version="1.0" encoding="UTF-8"?><mod name="Cleanhouses" version="1.04" author="Yan Liima-Night" contact="xtibia.com" enabled="yes"> <description> v.1.04 - Adicionado 'onlyNonPremium' configurável. Versão sem erros por favor caso não é avançado na área não modifique nada. Criado e modificado por Yan Liima Nick: [ADM] Night Este mod irá limpar casas de jogadores inativos e mover os seus itens para o depósito.explicação das configurações: days - Se o jogador não tiver logado para este número de dias de sua casa será liberado. log - true/false, é para habilitar o registro de quais casas foram limpas. file - caminho para o arquivo de log, onde os logs serão armazenados. Ignorado se 'log' definido como falso onlyNonPremium - se definido como 'true', o script irá limpar apenas as casas dos jogadores que não lougou X dias. Outras indicações: NÃO remova doSaveServer() no final, caso contrário, se o servidor parar de funciona antes que o servidor salve você vai se arrepender =) </description> <globalevent name="cleanhouses" type="start" event="buffer"><![CDATA[ local config = { days = 60, 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 = 60 * É o número em DIAS que o player terá que ficar sem logar para perder a casa. Aconselho a não mexer, caso queira modificar algo aconselho ser avançado na área para não causar error no sistema. Este sistema funciona em qualquer TFS. Créditos Yan Liima Bom eu tinha publicado um post igual esse faz anos so que não lembro minha conta, e pegaro meu post postaro em outro fórum que não merece ser citado com outros créditos estou apenas avisando. Te ajudei?? REP + e ficamos quites... Atenciosamente, Yan Liima Abraços!
  19. Greetings, hello people, my first post help wanted, that if there was a chance you edit for example, a Military Rank but instead of frags is level, someone pass me the mod Military Rank but level, explained to me: for example; [8] Private [8] << instead of frags it level Thank you for your attention and thrives help.
  20. Micello

    Sistema de patente

    lá galera o/ sou noob nesses negócios, mais aprendo mt bem tbm... ou quase bom... como podem ver estou desenvolvendo um ot de SAO (sword art online) e queria fazer um sistema de patente... o inventario como podem ver eu ja fiz. Ja o resto é tudo photoshop a barra de life, e o resto... mais queria saber se tem como fazer, e se tem como posso fazer? é tipo um sistema de patente, aonde em certo level o player ganharar ou por (level ou por quest, ou por evento) uma 'insignia' que dependendo pode dar, mais life, força, defesa, ganhar mais dinheiro, doublexp... podendo escolher até 3. level 5 ele usa 1 level 15 ele usa 2 level 40 ele usa os 3 desde já obrigaduuu! s2
  21. Eae Galera Tudo na Paz?[+] Hoje Vou Postar um Script de Catch Por Skill Configurado No "Sword Fighting" do Seu Old Client Intao vamos La:-Resumo: Quanto Maior o Skill "Catching" Maior a chance de Captura do Pokemon![+] OBS: Eu nao Vou Postar o Script Completo Pois de Cada (PDA) ou (PDA - COM PokeLevel) é Diferente um do Outro, Eu So vou Ensinar a Voces a como Adicionar o Sistema em Seus Servidores![+] Servidor Testado:- Pokemon Dash Advanced [+] Primeiro Vai em Data/Lib/catchsystem.lua e Procure por essa Funçao: function doCapturePokemon(cid, poke, ballid, status, typeee) [+] Na Parte aonde manda a MSG de que Voce "capturou um Pokemon" e "Capturou um Pokemon e Foi para o CP" add Isso Abaixo dessas Msg: doPlayerAddSkillTry(cid,2,10) - Resumo: doPlayerAddSkillTry(cid,2,10) --- Quando Capturar um Pokemon vai Ganhar 10% de Skill "2".- Obs: No meu Client o Skill Catching Esta no Skill "Sword Fighting" [+] Bom Logo Apos Voce vai em data/actions/catch.lua e no Começo do Script add isso: local skill20 = 10 -- Mude aqui a chance de capiturar local skill30 = 15 -- Mude aqui a chance de capiturar local skill40 = 20 -- Mude aqui a chance de capiturar local skill50 = 25 -- Mude aqui a chance de capiturar local skill60 = 30-- Mude aqui a chance de capiturar local skill70 = 35 -- Mude aqui a chance de capiturar local skill80 = 40-- Mude aqui a chance de capiturar local skill90 = 45-- Mude aqui a chance de capiturar local skill100 = 50-- Mude aqui a chance de capiturar local skill150 = 75 -- Mude aqui a chance de capiturar [+] Agora Procure essa Funçao: local catchinfo = {} local catchinfo = {} if getPlayerSkillLevel(cid, 2) <= 20 then ---- Skill Cathing 0 a 25 catchinfo.rate = ballcatch[item.itemid].cr + skill20 doPlayerSendTextMessage(cid, 19, "Catch Rate: [ballName: "..ballcatch[item.itemid].typeee.."] [ballRate: "..ballcatch[item.itemid].cr.."x + BonusRate: "..skill20.."x]") else if getPlayerSkillLevel(cid, 2) >= 30 then ---- Skill Cathing 0 a 25 catchinfo.rate = ballcatch[item.itemid].cr + skill30 doPlayerSendTextMessage(cid, 19, "Catch Rate: [ballName: "..ballcatch[item.itemid].typeee.."] [ballRate: "..ballcatch[item.itemid].cr.."x + BonusRate: "..skill30.."x]") else if getPlayerSkillLevel(cid, 2) >= 40 then ---- Skill Cathing 0 a 25 catchinfo.rate = ballcatch[item.itemid].cr + skill40 doPlayerSendTextMessage(cid, 19, "Catch Rate: [ballName: "..ballcatch[item.itemid].typeee.."] [ballRate: "..ballcatch[item.itemid].cr.."x + BonusRate: "..skill40.."x]") else if getPlayerSkillLevel(cid, 2) >= 50 then ---- Skill Cathing 0 a 25 catchinfo.rate = ballcatch[item.itemid].cr + skill50 doPlayerSendTextMessage(cid, 19, "Catch Rate: [ballName: "..ballcatch[item.itemid].typeee.."] [ballRate: "..ballcatch[item.itemid].cr.."x + BonusRate:"..skill50.."x]") else if getPlayerSkillLevel(cid, 2) >= 60 then ---- Skill Cathing 0 a 25 catchinfo.rate = ballcatch[item.itemid].cr + skill60 doPlayerSendTextMessage(cid, 19, "Catch Rate: [ballName: "..ballcatch[item.itemid].typeee.."] [ballRate: "..ballcatch[item.itemid].cr.."x + BonusRate:"..skill60.."x]") else if getPlayerSkillLevel(cid, 2) >= 70 then ---- Skill Cathing 0 a 25 catchinfo.rate = ballcatch[item.itemid].cr + skill70 doPlayerSendTextMessage(cid, 19, "Catch Rate: [ballName: "..ballcatch[item.itemid].typeee.."] [ballRate: "..ballcatch[item.itemid].cr.."x + BonusRate:"..skill70.."x]") else if getPlayerSkillLevel(cid, 2) >= 80 then ---- Skill Cathing 0 a 25 catchinfo.rate = ballcatch[item.itemid].cr + skill80 doPlayerSendTextMessage(cid, 19, "Catch Rate: [ballName: "..ballcatch[item.itemid].typeee.."] [ballRate: "..ballcatch[item.itemid].cr.."x + BonusRate:"..skill80.."x]") else if getPlayerSkillLevel(cid, 2) >= 90 then ---- Skill Cathing 26 a 50 catchinfo.rate = ballcatch[item.itemid].cr + skill90 doPlayerSendTextMessage(cid, 19, "Catch Rate: [ballName: "..ballcatch[item.itemid].typeee.."] [ballRate: "..ballcatch[item.itemid].cr.."x + BonusRate:"..skill90.."x]") else if getPlayerSkillLevel(cid, 2) >= 100 then ---- Skill Cathing 51 a 75 catchinfo.rate = ballcatch[item.itemid].cr + skill100 doPlayerSendTextMessage(cid, 19, "Catch Rate: [ballName: "..ballcatch[item.itemid].typeee.."] [ballRate: "..ballcatch[item.itemid].cr.."x + BonusRate:"..skill100.."x]") else if getPlayerSkillLevel(cid, 2) >= 150 then ---- Skill Cathing 76 a 100...... catchinfo.rate = ballcatch[item.itemid].cr + skill150 doPlayerSendTextMessage(cid, 19, "Catch Rate: [ballName: "..ballcatch[item.itemid].typeee.."] [ballRate: "..ballcatch[item.itemid].cr.."x + BonusRate:"..skill150.."x]") else catchinfo.rate = ballcatch[item.itemid].cr end end end end end end end end end end catchinfo.catch = ballcatch[item.itemid].on catchinfo.fail = ballcatch[item.itemid].off catchinfo.newid = newidd catchinfo.name = doCorrectPokemonName(name) catchinfo.topos = topos catchinfo.chance = x.chance doSendDistanceShoot(getThingPos(cid), topos, ballcatch[item.itemid].send) doRemoveItem(item.uid, 1) local d = getDistanceBetween(getThingPos(cid), topos) addEvent(doSendPokeBall, d * 70 + 100 - (d * 14) , cid, catchinfo, false, false, typeee) addEvent(doSendMagicEffect, (d * 70 + 100 - (d * 14)) - 100, topos, 3) return true end -OBS: O Script é Bem Basico. Dar Para adicionar varios Coisas Como (Ganhar EXP Dependendo do Skill/Almentar Chance de Catch para Premium Account e etc...) [+] OBS: So vai ganhar Skill se Voce Capturar o Pokemon e Recomendo voces Deixar o Catch BAIXO! Por que o Script faz a Soma de Rate um Exemplo:Pokeball Rate: 50Skill Cathing Rate (com 25 de Skill Cathing) : 100Somar: 50+100 = 150 de Rate o Jogador vai ter . [+] Creditos: NextBR "um sitezinho qualquer"
  22. Oooi povo Ékztibiano Eu (novamente) trouxe outro sistema pra vocês. Infelizmente quase ninguém posta conteúdo útil atualmente, então tô tentando erguer essa seção novamente, tanto é que vira e mexe eu posto sistemas aqui, e daqui a uns dias eu vou postar outros que tô fazendo. Bom, comecemos. O que é: Um sistema em que você insere um Cartão de Crédito em um Caixa Eletrônico para executar ações iguais às de um banco de verdade. Script: Configurando: Imagens: Observações: - Para usar o caixa eletrônico, você tem que dar Use With nele com o cartão. Créditos: LuckOake -- Pelo sistema
  23. O mascara

    Ajuda script

    galera alguma alma bondosa pode me ajuda com esse sistema
  24. Bom pessoal enfim eu consegui lançar o script arrumado para TFS 0.3.6 e 0.4 Mais dessa vez eu fiz ele de uma maneira muito mais facil de usar e 100% funcional você apenas vai colocar os arquivos na pasta MODS de sua TFS para que ele funcione ele se instala sozinho em sua Database Vip Sistem TFS 0.3.6.rar Vip Sistem TFS 0.4.rar O script possibilita você ver quantos dias de vip restam nas contas quando elas são atualizadas em tempo real aparece no console a quantidade de dias que restam nas contas vip quando são atualizadas alem de que o player mesmo pode ver quantos dias restante ele tem de vip aparece para o player logo que ele entra em seu character a quantidade de dias vip Bom para saber como usar é simples para adicionar a vip la vai um explo de adicionar 30 dias no player Luke sky walker /addvip Luke sky walker, 30 Esse script tem um sistema para aqueles que usam ROOKGUARD no servidor é facil configurar caso você usar o sistema de rookguard é so você configurar no vip_sys.xml é facil logo abaixo tera uma explicação <config name="Rook_Config"><![CDATA[RookSistem = "yes"RookTempleID = 1MainTempleID = 2]]></config> Aqui o sistema de rook está ativado mais caso você queira desativar!!! você coloca RookSistem = "no" e as configs logo abaixo de RookSistem são apenas os ID dos templo o RookTempleID você coloca o ID do templo de rook e MainTempleID você coloca o ID preferencial de uma cidade de Main O tile que você quiser que so VIP passe coloque a ActionID 7777 Caso você ache bugs postem aqui mais creio que não tenha nenhum bug pois testei tudo. OBS: Ele foi projetado para TFS ORIGINAL caso você esteja usando uma versão ja editada por outras pessoas não garanto o FUNCIONAMENTO Por favor não tirem os creditos deste script! Gostou??? Não esqueça de deixar um comentario e nao esqueça do REP++ Obrigado. Vip Sistem TFS 0.3.6.rar Vip Sistem TFS 0.4.rar
  25. Procurei procurei e procurei e nada encontrei, preciso de um sistema de autoloot pro meu server, até achei vários sistemas diferentes mas por alguma razão nenhum funcionou no ot, a versão é 9.60, alguém consegue implementar um que funcione? ou me recomendar algum sei lá, desde já agradeço. Encontrei esse sistema aqui, que QUASE funcionou mas não deu certo tb, o erro que deu nele é na hora de add o item, simplesmente diz que o item não existe. o link do tópico que quase funcionou é esse se quiserem olhar -> http://www.xtibia.com/forum/topic/234430-sistema-autoloot/
×
×
  • Create New...