Ir para conteúdo
  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo

Fóruns

  • Portal Tibiaking
    • Portal
    • Server Oficial TibiaKing
    • Sobre o Fórum
    • Projetos Open Source
    • Regras
  • OTServer Tibia & Derivados
    • Suporte & Pedidos
    • OTServer Downloads
    • OTServer Scripts
    • Ferramentas OpenTibia
    • Linguagens de Programação
    • Mapas
    • Websites
    • Show Off
    • Gráficos e Design
    • Divulgações
  • Tibia e Bots
    • Tibia
    • Bots & Macro
  • Diversos
    • Playground (Off-topic)

Calendários

  • Calendário Oficial
  • Calendário de OTServs
  • Calendários Diversos

Categorias

  • Oficial TibiaKing
    • Premium Forgottenserver
  • Conteúdo da Comunidade
    • Sprites

Categorias

  • Articles

Blogs

Não há resultados

Product Groups

  • Advertisement

Encontrar resultados em...

Encontrar resultados que contenham...

Data de Criação

  • Início

    FIM

Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Encontrado 37 registros

  1. Automatic Raids.xml <?xml version="1.0" encoding="UTF-8"?> <mod name="Automatic Raids" version="1.0" author="Vodkart And xotservx" contact="tibiaking.com" enabled="yes"> <config name="raids_func"><![CDATA[ days = { ["Monday"] = { ["21:30"] = {nome = "Orshabaal", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}},m = {"5 Fire Devil", "2 Orshabaal"}, Time = 15}, ["21:33"] = {nome = "Dragon", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}},m = {"100 Dragon"}, Time = 20} }, ["Sunday"] = { ["10:08"] = {nome = "Demon", pos = {fromPosition = {x=202, y=11, z=7},toPosition = {x=204, y=12, z=7}}, m = {"1 Demon"}, Time = 15}, ["10:46"] = {nome = "Hydra", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}}, m = {"7 Hydra", "4 Cyclops"}, Time = 20} } } ]]></config> <globalevent name="AutomaticRaids" interval="60" event="script"><![CDATA[ domodlib('raids_func') function onThink(interval, lastExecution) if days[os.date("%A")] then hours = tostring(os.date("%X")):sub(1, 5) tb = days[os.date("%A")][hours] if tb then function removeCreature(tb) for x = ((tb.pos.fromPosition.x)-10), ((tb.pos.toPosition.x)+10) do for y = ((tb.pos.fromPosition.y)-10), ((tb.pos.toPosition.y)+10) do local m = getTopCreature({x=x, y=y, z= tb.pos.fromPosition.z}).uid if m ~= 0 and isMonster(m) then doRemoveCreature(m) end end end end doBroadcastMessage("The invasion of " .. tb.nome .. " started") for _,x in pairs(tb.m) do for s = 1, tonumber(x:match("%d+")) do pos = {x = math.random(tb.pos.fromPosition.x, tb.pos.toPosition.x), y = math.random(tb.pos.fromPosition.y, tb.pos.toPosition.y), z = tb.pos.fromPosition.z} doSummonCreature(x:match("%s(.+)"), pos) end end addEvent(removeCreature, tb.Time*60*1000, tb) end end return true end ]]></globalevent> </mod> Configuração: days = { ["Monday"] = { ["21:30"] = {nome = "Orshabaal", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}},m = {"5 Fire Devil", "2 Orshabaal"}, Time = 1}, ["21:33"] = {nome = "Dragon", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}},m = {"100 Dragon"}, Time = 2} }, ["Tuesday"] = { ["10:44"] = {nome = "Demon", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}}, m = {"5 Demon", "8 Fire Devil"}, Time = 1}, ["10:46"] = {nome = "Hydra", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}}, m = {"7 Hydra", "4 Cyclops"}, Time = 2} } } ["DIA"] = { ["HORA DA INVASÃO"] = {nome = "NOME DA INVASÃO", pos = {começo e final da área}, monster = {"MONSTROS"}, Time = para remover os monstro} } O dia da invasão é colocada entre " " e somente dia em inglês e a primeira letra maiúscula, exemplo: "Saturday" Depois são as hora da invasão, que é colocada entre " " e somente a hora e minuto, segundos não precisa exemplo: "15:00" As Posições estão entre { } adicionando as posições x, y e z, é o começo e final da área exemplo: pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}} fromPosition -- começo da área onde vai acontecer a raid toPosition -- final da área onde vai acontecer a raid Os monters tem um modo especial de configurar, vc coloca entre { }, e cada monstro entre " ", e entre as " " vc adiciona "QUANTIDADE MONSTRO", e para adicionar mais tipos de monstro se separa por virgulas, exemplo: {"40 Water Elemental", "5 Cyclops"} Time é uma função extra, é para caso ninguém participe do evento os monstros não fiquem pelo mapa, e é em minutos, exemplo: Time = 15
  2. Mapa BattleField Feito Por AnneMotta : Mapa Battlefield.rar Scan: https://www.virustot...sis/1346548669/ Imagens do mapa Descrição: - O evento é automático e acontece em determinado dia e hora da semana - Logo após é aberto um teleport então apenar um número limitado de players entra no evento - São formados por dois times, os "Black Assassins" e os "Red Barbarians" - Os times são balanceados automaticamente, quando o último jogador entra, esse teleport é fechado e depois de 5 minutos o evento começa, os 5 minutos são para os players ter tempo de planejar um ataque. - O sistema tem por finalidade matar todos do time inimigo, e os players que sobreviverem recebem um prêmio. Bônus: - Durante o evento é mostrado na tela somente dos jogadores que estão no evento um placar de times. - Até o último player entrar no evento, ficam mandando broadcast dizendo quanto players faltam para dar inicio ao jogo. - Se o evento abrir e não atingir a meta de players colocada, o evento é finalizado e os players voltam para o templo. Lembre-se: - De colocar Pvp Tool na área - De colocar área NoLogout Imagens: Instalação: Data > Lib Data > CreatureScript > Script Data > GlobalEvents > Scripts Data > Movements > Script Configurações do evento
  3. #Introdução Este é um sistema muito simples e básico que eu fiz baseando-me no jogo Mu Online, no qual ao avançar de nível você ganha pontos que podem ser distribuídos para aumentar seus "stats". #Instalação Faça o download do sistema e cole na pasta do seu servidor. @Creaturescripts Depois abra a pasta creaturescripts/scripts que fica dentro da pasta data do seu servidor, abra o arquivo login.lua, com algum editor de texto, e lá no final antes do último return true cole a seguinte linha: registerCreatureEvent(cid, "PointSystem") #Configuração No arquivo PointsSystem.lua da pasta lib L_LvlPoints = { vocPoints = { -- [Skill] = Pontos que ganha, [1] = 3, [2] = 3, [3] = 3, [4] = 5, [5] = 5, [6] = 5, [7] = 5, [8] = 8, }, entre Colchetes fica o id da vocation, e depois do sinal de igualdade a quantidade de pontos que ele ganhará por level que for upado. attributes = { ["vitalidade"] = {np = 2, vl = 5, nm = "Hit Points"}, -- Precisa usar 2 points para adicionar 10 de hp ["energy"] = {np = 4, vl = 2, nm = "Mana Points"}, ["magic"] = {np = 30, vl = 1, nm = "Magic Level"}, ["shielding"] = {np = 40, vl = 1, nm = "Shielding Skill"}, ["sword"] = {np = 20, vl = 1, nm = "Sword Skill"}, ["axe"] = {np = 20, vl = 1, nm = "Axe Skill"}, ["club"] = {np = 20, vl = 1, nm = "Club Skill"}, ["distance"] = {np = 20, vl = 1, nm = "Distance Skill"}, } np - quantidade de pontos para adicionar o stat vl - quanto vai adicioanar pelo np. Exemplo: ["vitalidade"] = {np = 2, vl = 5, nm = "Hit Points"} Com 2 pontos eu compro 5 de HP É isso ai galera, bye bye
  4. Autor : Mock Servidor Testado : TFS 0.3.6 Vamos instalar. Adcione essa tag no actions.xml: <action itemid="8306" event="script" value="upgrade.lua"/> <action itemid="8305" event="script" value="upgrade.lua"/> Bom a segunda é um segundo item que tem 100% a mais de chance de acertou, ou seja esse nunca falha, e o normal com nem uma chance adcional é o itemid 8305. Agora em upgrade.lua coloque isso: Veja ele funcionando: E agora com a possibilidade do slot ssystem conjunto com esse sistema vc pode fazer coisas assim: Código: 12:02 You see a knife +1 [hp.+7%] (Atk:8, Def:6). Creditos Mock ( Por Fazer O Script ) GodMarini ( Por Trazer Ao TK )
  5. #Introdução O Sistema é basicamente isso: Você usa uma pedra de alma em um monstro morto a pouco tempo você aprisiona a alma dele na pedra, e ela pode ser usada para: Trazer o monstro a vida novamente; Encantar armas com a alma dos monstros para que elas dêem ataque extra à sua arma; Usar uma aura que te protege atacando criaturas que te causam perigo! #Instalação Primeiro faça o download do sistema e cole na pasta do seu executável. Pronto, tá instalado. #Configurações #1 Aura System #1.1 Adicionando Nova Soul souls = { ["dark"] = {effects = {distance = 31, eff = 17}, combat = COMBAT_DEATHDAMAGE}, ["flame"] = {effects = {distance = 3, eff = 15}, combat = COMBAT_FIREDAMAGE}, ["frozen"] = {effects = {distance = 36, eff = 43}, combat = COMBAT_ICEDAMAGE}, ["holy"] = {effects = {distance = 37, eff = 39}, combat = COMBAT_HOLYDAMAGE}, ["electric"] = {effects = {distance = 35, eff = 11}, combat = COMBAT_ENERGYDAMAGE}, }, #1.2 Adicionando Nova Aura souls = { L_Soul.auras = { ["dark"] = {stones_n = 7, damage = {25, 250}, interval = 1200, duration = 120, raio = 4, speed = 150}, ["flame"] = {stones_n = 5, damage = {250, 650}, interval = 500, duration = 60, raio = 7, speed = 75}, ["frozen"] = {stones_n = 2, damage = {150, 350}, interval = 750, duration = 60, raio = 2, speed = 150}, ["electric"] = {stones_n = 5, damage = {150, 350}, interval = 750, duration = 60, raio = 2, speed = 150}, ["holy"] = {stones_n = 0, damage = {150, 350}, interval = 750, duration = 60, raio = 7, speed = 150}, } #2 Reborn System #2.1 Adicionando nova criatura ["Necromancer"] = {chance = 50, type = "dark", summ = { hp = {hpb = 50, maxb = 700}, needSoulPoints = 50, needMana = 0, needHealth = 20, minP = 50, }, enchant = {charges = 100, min = 10, max = 60, attack_speed = 250}, }, #3 Enchanting System #3.1 Adicionando novo item para encantar #Vídeo de demonstração do sistema de aura Aos poucos vou adicionando mais informações sobre como se faz para configurar
  6. Bom sem mais nem menos tá ai o Defend The King, Evento Atualmente vendido por empresas de Otserver! Pack Contém: Todos Scripts do Evento + Mapa Download: http://www.mediafire...7p2jkly4hv5y9om Descrição: É um sistema de WAR, onde 2 grupos ( atacantes e defensores ) se confrontam entre si em um castle, com os seguintes objetivos: Atacantes: Matar o The King ( o rei ), que fica dentro do castelo defendidos pelos Defensores Defensores: Defender o The King durante um determinado tempo pré definido. #Extras: - Respawn to back: Se um player morrer no evento, tera de esperar 5segundos * (vezes) o numeros de mortes naquela rodada. - The Gate: um gate é sumonado no mapa para impedir temporariamente a entrada dos atacantes ao castelo. - The King: Summon que pode ser paralizado ou nao, para se esconder dos atacantes. Existe somente um summon durante a rodad .
  7. 1º) Vá a pasta mods do seu servidor 2º)Crie um arquivo chamado rep_system.xml e coloque o seguinte script nele: [SKULL_WHITE] = 30, [SKULL_RED] = 45, [SKULL_BLACK] = 45, [SKULL_NONE] = -30, } aqui voce muda a rep que o player ganha qnd mata outro.. local monsters = { ["behemoth"] = 0, ["hellfire fighter"] = 0, } aqui voce acrescenta os monstros e a rep q eles dao.. (OBS: A quantia de REP em monster eu coloquei 0, mas você pode inserir mais monsters e modificar a quantia de REP!) 2- SQL Agora precisamos criar a tabela REP em sua database! 1º) Abra sua DATABASE no SQLITE. 2º) Vá em TOOLS 3º) Siga em OPEN SQL QUERY EDITOR 4º) Coloque na 1º linha a seguinte query: ALTER TABLE "players" ADD "rep" INT( 11 ) NOT NULL DEFAULT "0"; 5º) Aperte F9. 3- COMANDOS Os comandos do sistema: !hail player -> da +5 de rep ao player !fuck player -> da -5 de rep ao player !set player, x -> Da x quantia de rep ao player !rep -> Verifica a quantia de rep [/code] [u][color=red][size=4]4-Créditos[/size][/color][/u] -CyberMaster por ter feito o Script -Eu (mariatti) por ter trazido ao TK [u][size=4][color=red]AJUDEI??? REP+[/color][/size][/u]
  8. Olá galerinha do TK, hoje venho trazer aqui para vocês o EVENTO Dota COMPLETO. #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 Créditos: ChaitoSoft Jhon Thiagobji
  9. 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 Rush_Event.xml Download do mapa. Scan Mais tarde posto o servidor que é vendido pela ChaitoSoft e quem sabe o cast com as source já para compilar! Te ajudei +REP
  10. Autor: MaXwEllDeN Versão testada: TFS 0.3.6 #Introdução Este é um sistema que quando você usar uma das gemas mágicas, dependendo da cor dela você ganhará um bônus de xp ou double, ou triple ... e um adicional em cada skill, por um tempo determinado em minutos. #Instalação Primeiro faça o download do sistema e cole na sua pasta data. Após ter instalado os arquivos nas suas respectivas pastas adicione as tags: @Actions <action itemid="2156; 2153; 2154; 2155" event="script" value="Gems.lua"/> @Creaturescripts <event type="think" name="EffectCheck" event="script" value="checkGEM.lua"/> <event type="login" name="EffectLogin" event="script" value="checkGEM.lua"/> #Configuração A Configuração do código está todo na lib, toda comentada e é super fácil de modificar: [2156] = { -- Pedra Vermelha skills = { [0] = 1, -- Fist Fighting [1] = 1, -- Club Fighting [2] = 1, -- Sword Fighting [3] = 1, -- Axe Fighting [4] = 1, -- Distance Fighting [5] = 1, -- Shielding [6] = 1, -- Magic Level }, xp = 2, -- Ex, 2 x o Xp do serv time = 1, -- Tempo em minutos que a gem durará color = {180, 181, 186}, -- Lista da cor dos efeitos que aparecerão. }, É isso ai, usem e abusem. Abraço.
  11. Vou ensinar a criar um sistema de treinamento offline igual ao global. Requisitos: Apenas um ot com items.xml e items.otb que possuem as estátuas de treino ^-^ Seguindo. PastaDoOt/data//lib/ crie um arquivo chamado "103-offline-training.lua" Coloque isso dentro: -- config, in percent of normal training with 2 trainers and player vocation mana regeneration [by food] OfflineTraining_rates = { [SKILL_CLUB] = 100, [SKILL_SWORD] = 100, [SKILL_AXE] = 100, [SKILL_DISTANCE] = 100, [SKILL_SHIELD] = 100, [SKILL__MAGLEVEL] = 100 } -- function that you should edit to make it add other skill etc. function OfflineTraining_canStartTraining(cid) -- return bool return getCreatureStorage(cid, 62669) > 0 end function OfflineTraining_onstartTraining(cid) -- maybe someone will need -- to save your time, this: doPlayerPopupFYI(cid, "You started offline training.") -- NOT WORK end function OfflineTraining_onendTraining(cid) doCreatureSetStorage(cid, 62669, 0) end function OfflineTraining_addTrainedSkills(cid, trainTime) -- time in minutes! local timeInSeconds = trainTime * 60 local vocInfo = getVocationInfo(getPlayerVocation(cid)) if(getCreatureStorage(cid, 62669) == SKILL_SWORD) then doPlayerAddSkillTry(cid, SKILL_SWORD, ((timeInSeconds * 1000) / vocInfo["attackSpeed"]) * OfflineTraining_rates[SKILL_SWORD] / 100, true) elseif(getCreatureStorage(cid, 62669) == SKILL_AXE) then doPlayerAddSkillTry(cid, SKILL_AXE, ((timeInSeconds * 1000) / vocInfo["attackSpeed"]) * OfflineTraining_rates[SKILL_AXE] / 100, true) elseif(getCreatureStorage(cid, 62669) == SKILL__MAGLEVEL) then doPlayerAddSpentMana(cid, ((timeInSeconds / vocInfo["manaGainTicks"]) * vocInfo["manaGain"]) * OfflineTraining_rates[SKILL__MAGLEVEL] / 100, true) elseif(getCreatureStorage(cid, 62669) == SKILL_CLUB) then doPlayerAddSkillTry(cid, SKILL_CLUB, ((timeInSeconds * 1000) / vocInfo["attackSpeed"]) * OfflineTraining_rates[SKILL_CLUB] / 100, true) elseif(getCreatureStorage(cid, 62669) == SKILL_DISTANCE) then doPlayerAddSkillTry(cid, SKILL_DISTANCE, ((timeInSeconds * 1000) / vocInfo["attackSpeed"]) * OfflineTraining_rates[SKILL_DISTANCE] / 100, true) end doPlayerAddSkillTry(cid, SKILL_SHIELD, timeInSeconds * OfflineTraining_rates[SKILL_SHIELD] / 100, true) end -- 4 functions to show right values on 'bar' in Tibia 9.6 function OfflineTraining_getTime(cid) return getCreatureStorage(cid, 62666) end function OfflineTraining_setTime(cid, newTime) -- set values only between 0 - 720 [12 hours] doCreatureSetStorage(cid, 62666, math.max(0, math.min(newTime, 720))) -- now code to force server to send 'PlayerStats' (including Offline Time) -- we must change any stat: hp,mana,stamina,cap,soul,exp,level doPlayerAddSoul(cid, 1) doPlayerAddSoul(cid, -1) end function OfflineTraining_addTime(cid, addTime) OfflineTraining_setTime(cid, OfflineTraining_getTime(cid) + addTime) end function OfflineTraining_removeTime(cid, removeTime) OfflineTraining_setTime(cid, OfflineTraining_getTime(cid) - removeTime) end -- functions for library to add skills/mlvl function OfflineTraining_initialize(cid) if(OfflineTraining_getTime(cid) == -1) then OfflineTraining_setTime(cid, 720) OfflineTraining_setLogoutTime(cid) -- block problem with first login 'add time' end end function OfflineTraining_isTraining(cid) return (getCreatureStorage(cid, 62667) > 0) end function OfflineTraining_turnOnTraining(cid) doCreatureSetStorage(cid, 62667, 1) end function OfflineTraining_turnOffTraining(cid) doCreatureSetStorage(cid, 62667, 0) end function OfflineTraining_getOfflineTime(cid) return math.floor((os.time() - getCreatureStorage(cid, 62668)) / 60) end function OfflineTraining_setLogoutTime(cid) return doCreatureSetStorage(cid, 62668, os.time()) end [/code] [color=#000000][b]em Data/actions/actions.xml adicione as seguintes tags[/b][/color] [code] <action itemid="18492" script="offtrain_statue.lua"/> <action itemid="18491" script="offtrain_statue.lua"/> <action itemid="18490" script="offtrain_statue.lua"/> <action itemid="18489" script="offtrain_statue.lua"/> <action itemid="18488" script="offtrain_statue.lua"/> Os números 18488 - 18492 são os id's dos objetos a serem os "Treiners offline" ou seja, se vc trocar por exemplo o 18492 por um outro id tipo "1026" ( id de um muro) todos os muros que possui esse id, ao clicarem nele, o player irá deslogar, então prestem atenção e coloquem um id existente e que nao seja "usável" como exemplo, uma estátua. em data/actions/script crie um arquivo chamado "offtrain_statue.lua" Coloque isso dentro: -- example 'action' when you click on statue: function onUse(cid, item, fromPosition, itemEx, toPosition) if(item.itemid == 18488) then -- sword doCreatureSetStorage(cid, 62669, SKILL_SWORD) elseif(item.itemid == 18489) then -- axe doCreatureSetStorage(cid, 62669, SKILL_AXE) elseif(item.itemid == 18492) then -- mlvl doCreatureSetStorage(cid, 62669, SKILL__MAGLEVEL) elseif(item.itemid == 18490) then -- club doCreatureSetStorage(cid, 62669, SKILL_CLUB) elseif(item.itemid == 18491) then -- distannce doCreatureSetStorage(cid, 62669, SKILL_DISTANCE) end -- we remove player, so it will execute onLogout(cid) function and save time of training start doRemoveCreature(cid) end ../data/creaturescripts/creaturescripts.xml <event type="login" name="offtrain_PlayerLogin" event="script" value="offtrain_login.lua"/> <event type="logout" name="offtrain_PlayerLogout" event="script" value="offtrain_logout.lua"/> ../data/creaturescripts/scripts/offtrain_login.lua -- 0.4 - offline training - login.lua function onLogin(cid) OfflineTraining_initialize(cid) if(OfflineTraining_isTraining(cid)) then OfflineTraining_turnOffTraining(cid) -- we add skill/mlvl, we select lower value: time that player was offline OR offline training time [bar in game - 9.6] OfflineTraining_addTrainedSkills(cid, math.min(OfflineTraining_getTime(cid), OfflineTraining_getOfflineTime(cid))) -- we remove offline training time [bar in game - 9.6], -- if player was offline longer then his 'offline training time' it will add him time [like on RL tibia] -- got '3 hours offline training time', stay logged off for 8 hours, you get skills for 3 hours and on login you got '5 hours offline training time' OfflineTraining_setTime(cid, math.abs(OfflineTraining_getTime(cid) - OfflineTraining_getOfflineTime(cid))) OfflineTraining_onendTraining(cid) else -- offline training time also regenerate when you are offline, but NOT train OfflineTraining_setTime(cid, OfflineTraining_getTime(cid) + OfflineTraining_getOfflineTime(cid)) end return true end -- 0.4 - offline training - logout.lua function onLogout(cid) if(OfflineTraining_canStartTraining(cid)) then OfflineTraining_turnOnTraining(cid) OfflineTraining_onstartTraining(cid) end OfflineTraining_setLogoutTime(cid) return true end ./data/globalevents/globalevents.xml <globalevent name="offtrain_add_minutes" interval="60000" event="script" value="offtrain_addMinutes.lua"/> ../data/globalevents/scripts/offtrain_addMinutes.lua function onThink(interval) -- run it with interval 60 seconds for _, cid in pairs(getPlayersOnline()) do OfflineTraining_addTime(cid, 1) end return true end pronto, seu sistema de treino offline está criado Créditos: Gesior.pl LookMe
  12. Partner System! #Descrição: Sistema totalmente inovador e que possui um incrível ponto positivo que, sem sombra de dúvida, é lembrado pelo player ao escolher um servidor para jogar: a cada novo player convidado por um outro player, cujo número é limitado, este ganhará uma certa quantia de experiência definida pelo dono do servidor a cada monstro que o player convidado matar. Portanto, os players irão convidar o maior número possível de amigos. Quando os players convidados atingirem certo level serão retirados da lista de convidados. #O que possui? -Script feito em Mods apenas um arquivos, super fácil instalação. -Area de configuração, te permite editar todas as variáveis do script.. créditos: Duda Lima ChaitoSoft Te ajudei +REP!
  13. Seu char vai ficar girando e falando "DANCING", deve ser instalado em \mods\. [paste]h8vRCmKr[/paste]
  14. Olá galera do tibiaking , eu estava pensando em um sistema para o meu servidor , ai eu pensei um quest log que já ganha as quests nessárias p fazer no começo , pq no meu server terá uma especie de rookguard. o sistema funciona assim , quando o player cria a conta , ele já começa com umas quests nas quest logs. entao vamos lá Vá até a PastadoOT/Data/XML/Quest.xml . apague tudo e cole esse , e de uma editada como está abaixo <?xml version="1.0" encoding="UTF-8"?> <quests> <quest name="Nome da Quest" startstorageid="Storage da Quest" startstoragevalue="Numero de Início da Quest"> <mission name="Nome da Missão" storageid="Storage da Missão" startvalue="Valor de Início" endvalue="Valor de Finalização"> <missionstate id="1" description="Descrição da Missão."/> </mission> </quests> Em Nome da quest -- Voce edita o nome que irá aparecer na exibiçao do quest log Storage da quest , voce coloca um numero aleatorio com mais de 4 numeros , para voce editar depois Numero de inicio da quest , deixa 1 nome da missao -- voce edita o nome da primeira missao que irá aparecer dentro da quest. storage da missao - voce coloca o mesmo numero do storage da quest valor de inicio , voce poe 1 valor de finalizaçao , voce poe 2 descriçao da missao , é dentro da primeira missao que voce editou , exemplo : é o que o player precisa fazer para ele completar a missao agora vou postar e exemplo de 1 quest log editado <?xml version="1.0" encoding="UTF-8"?> <quests> <quest name="Cura Magica" startstorageid="101010" startstoragevalue="1"> <mission name="Potions" storageid="101010" startvalue="1" endvalue="2"> <missionstate id="1" description="Pegue 100 potions que dropa de rotworm."/> </mission> </quests> Agora , para o player começar com a quest no questlog , vá PastadoOT/Mods/FirstItems.xml antes do ultimo Return True Voce adiciona setPlayerStorageValue(cid,101010,1) o 101010 , voce edita para o valor do storage da quest , que voce editou ! Vou postar um exemplo do meu FirstItems.xml <?xml version="1.0" encoding="UTF-8"?> <mod name="First Items" version="1.0" author="The Forgotten Server" contact="otland.net" enabled="yes"> <config name="firstitems_config"><![CDATA[ config = { storage = 30001, items = {2050, 2382} } ]]></config> <event type="login" name="FirstItems" event="script"><![CDATA[ domodlib('firstitems_config') function onLogin(cid) if(getPlayerStorageValue(cid, config.storage) > 0) then return true end for _, id in ipairs(config.items) do doPlayerAddItem(cid, id, 1) end doPlayerAddItem(cid, 1987, 1) setPlayerStorageValue(cid, config.storage, 1) setPlayerStorageValue(cid,101010,1) return true end ]]></event> </mod> é isso ai galera. qualquer duvida é so pedir ajuda !! nao sou muito bom para organizar tutoriais
  15. Eu tavo navegando de boa na internet, e encontrei esse Sistema muito show (Na minha opnião), então quero compartilhar aqui com vocês OBS: Não sei se tem no TK, se tiver me desculpem. Nome: Advanced Vocation Changer Autor: JoseJunior23 Server: TFS 3.6 Como functiona? É simples, funciona assim: Você é Knight e quer ser Sorcerer, basta você digitar /acv 1 e sua vocação será mudada para sorcerer. OBS: O melhor de tudo é você não irá perder seus SKILLS/ML, pois eles serão guardados, cada vocação fica com seus ml/skills guardados em diferentes storages. enquanto ao HP/MANA será igual ao seu vocations.xml porem fiz a minha maneira, oque quer dizer que você irá ter que configurar essa parte. Comandos /acv 1 = sorcerer /acv 2 = druid /acv 3 = paladin /acv 4 = knight Instalação 1º na pasta server/mods cria um arquivo XML chamado Advanced Change Vocation e coloque isso dentro: <?xml version="1.0" encoding="UTF-8"?> <mod name="ADVANCED CHANGE VOCATION" version="1.0" author="josejunior23" contact="[email protected]" enabled="yes"> <talkaction words="/acv" case-sensitive="yes" event="script" value="ACV.lua"/> <event type="logout" name="acv_logout" event="script" value="ACV_logout.lua"/> <event type="login" name="acv_login" event="script" value="ACV_login.lua"/> <event type="death" name="acv_death" event="script" value="ACV_death.lua"/> </mod> 2º na pasta server/mods/scripts cria um arquivo LUA chamado ACV e coloque isso dentro: -- Advanced Vocation Changer! -- scripted by josejunior23 function onSay(cid, words, param, channel) if(acv_exhaustion.enable == true) and (isExhausted(cid)) then doPlayerSendTextMessage(cid, acv_msg_color, "You can't change your vocation now! You still need to wait: " .. fixTimer(getPlayerStorageValue(cid, acv_exhaustion.storage))) return true end if not (param) or not (isNumber(param)) or (tonumber(param) > 4) or (tonumber(param) < 1) then doPlayerSendTextMessage(cid, acv_msg_color, "You can change your vocation up to 1 till 4 vocations (/acv VOCATIONID)!\n 1 = sorcerer, 2 = druid, 3 = paladin and 4 = knight.") return true end if(tonumber(param) == getVocationCfg(getPlayerVocation(cid))) then doPlayerSendTextMessage(cid, acv_msg_color, "You are already " .. getArticle(getPlayerVocationName(cid)) .. " " .. getPlayerVocationName(cid) .. ".") return true end if(getCreatureCondition(cid, CONDITION_INFIGHT)) then doPlayerSendTextMessage(cid, acv_msg_color, "You may not change your vocation while in battle.") return true end local newvoc = acv_config[tonumber(param)] if(newvoc) then savePlayerVocation(cid) local vocID = getPlayerVocation(cid) local vocStorage = getVocationStorage(vocID) if(acv_fun_cfg.text.doCreatureSay == true) then doCreatureSay(cid, acv_fun_cfg.text.text, acv_fun_cfg.text.talkType) end if(acv_fun_cfg.effect.doSendMagicEffect == true) then doSendMagicEffect(getCreaturePosition(cid), acv_fun_cfg.effect.effect) end if(acv_exhaustion.enable == true) then addExhausted(cid, acv_exhaustion.time) end changePlayerVocation(cid, tonumber(param)) end return true end 3º na pasta server/mods/scripts cria um arquivo LUA chamado acv_login e coloque isso dentro: -- Advanced Vocation Changer! -- scripted by josejunior23 function onLogin(cid) if(getPlayerPromotionLevel(cid) == 1) and (getPlayerVocation(cid) <= 4) then doPlayerSetVocation(cid, getPlayerVocation(cid) + 4) end if(acv_enable_msg_on_login == true) then doPlayerSendTextMessage(cid, acv_msg_color, "Your vocation is: " .. getPlayerVocationName(cid) .. ".") end local events = {"acv_logout", "acv_death"} for i = 1, #events do registerCreatureEvent(cid, events[i]) end return true end 4º na pasta server/mods/scripts cria um arquivo LUA chamado acv_logout e coloque isso dentro: -- Advanced Vocation Changer! -- scripted by josejunior23 function onLogout(cid) savePlayerVocation(cid) return true end 5º na pasta server/mods/scripts cria um arquivo LUA chamado acv_death e coloque isso dentro: -- Advanced Vocation Changer! -- scripted by josejunior23 function onDeath(cid, corpse, deathList) savePlayerVocation(cid) return true end 6º na pasta server/data/lib cria um arquivo LUA chamado ACV_lib e coloque isso dentro: LEMBRE-SE DE CONFIGURAR O CODIGO ESSA PARTE! -- Advanced Vocation Changer! -- scripted by josejunior23 acv_enable_msg_on_login = true; acv_msg_color = MESSAGE_STATUS_CONSOLE_ORANGE; -- message colour send in default channel acv_exhaustion = {enable = true, storage = "acv_exh", time = 5}; -- time in seconds 60 x 60 = 3600 = 1 hour acv_first_storage = "firstvoc"; -- saves players first vocation acv_fun_cfg = { text = {doCreatureSay = true, text = "#CHANGING VOCATION#", talkType = TALKTYPE_ORANGE_1}, effect = {doSendMagicEffect = true, effect = 10} -- effect 10 = teleport } acv_config = { -- make sure none of those storages are already in use! [1] = 73974, -- sorcerer UNIQUE STORAGE!!! [2] = 73983, -- druid UNIQUE STORAGE!!! [3] = 73992, -- paladin UNIQUE STORAGE!!! [4] = 73991 -- knight UNIQUE STORAGE!!! } getFormula = function(cid) -- how to config -> change the numbers below to the same as vocations.xml (gainhp, gainmana) return { health = { -- Sorcerer [1] = 5, -- sorcerer gains X HEALTH each level (gainhp) [5] = 5, -- master sorcerer gains X HEALTH each level (gainhp) -- Druid [2] = 5, -- druid gains X HEALTH each level (gainhp) [6] = 5, -- elder druid gains X HEALTH each level (gainhp) -- Paladin [3] = 10, -- paladin gains X HEALTH each level (gainhp) [7] = 10, -- royal paladin gains X HEALTH each level (gainhp) -- Knight [4] = 22, -- knight gains X HEALTH each level (gainhp) [8] = 22 -- elite knight gains X HEALTH each level (gainhp) }, mana = { -- Sorcerer [1] = 30, -- sorcerer gains X MANA each level (gainmana) [5] = 30, -- master sorcerer gains X MANA each level (gainmana) -- Druid [2] = 30, -- druid gains X MANA each level (gainmana) [6] = 30, -- elder druid gains X MANA each level (gainmana) -- Paladin [3] = 15, -- paladin gains X MANA each level (gainmana) [7] = 15, -- royal paladin gains X MANA each level (gainmana) -- Knight [4] = 5, -- knight gains X MANA each level (gainmana) [8] = 5 -- elite knight gains X MANA each level (gainmana) } } end function fixTimer(v) local seconds, minutes, hours = v - os.time(), 0, 0 while seconds >= 60 do minutes = minutes + 1 seconds = seconds - 60 end while minutes >= 60 do hours = hours + 1 minutes = minutes - 60 end local str1, str2, str3 = hours > 1 and hours .. " hours, " or "" .. "", minutes > 1 and minutes .. " minutes and " or "" .. "", seconds .. " seconds." or "" .. "" return str1 .. str2 .. str3 end function isExhausted(cid) return getPlayerStorageValue(cid, acv_exhaustion.storage) > os.time() and true or false end function addExhausted(cid, time) -- time in seconds return setPlayerStorageValue(cid, acv_exhaustion.storage, os.time() +time) end function setStorageString(cid, storage, string) return setPlayerStorageValue(cid, storage, "S" .. string) end function getStorageString(cid, storage) return string.sub(getPlayerStorageValue(cid, storage), 2) end function getVocationStorage(id) return acv_config[getVocationCfg(id)] end function getPlayerFirstVocation(cid) return getPlayerStorageValue(cid, acv_first_storage) end function getVocationCfg(id) if(id > 4) then id = id - 4 end return id end function savePlayerVocation(cid) local maglevel, fist, club, sword, axe, dist, shield, fish = getPlayerMagLevel(cid), getPlayerSkillLevel(cid, 0), getPlayerSkillLevel(cid, 1), getPlayerSkillLevel(cid, 2), getPlayerSkillLevel(cid, 3), getPlayerSkillLevel(cid, 4), getPlayerSkillLevel(cid, 5), getPlayerSkillLevel(cid, 6) local vocID = getPlayerVocation(cid) local vocStorage = getVocationStorage(vocID) if(getPlayerPromotionLevel(cid) == 1) and (getPlayerVocation(cid) <= 4) then vocID = getPlayerVocation(cid) + 4 doPlayerSetVocation(cid, vocID) end return setStorageString(cid, vocStorage, maglevel .. "-" .. fist .. "-" .. club .. "-" .. sword .. "-" .. axe .. "-" .. dist .. "-" .. shield .. "-" .. fish .. "-" .. vocID) end function setupPlayerVocation(cid, arg) local pid = getPlayerGUID(cid) doRemoveCreature(cid, true) db.executeQuery("UPDATE `players` SET `maglevel` = " .. arg.maglevel .. " WHERE `id` = ".. pid .. ";") db.executeQuery("UPDATE `player_skills` SET `value` = " .. arg.fist .. " WHERE `player_id` = ".. pid .. " and `skillid` = ".. 0 ..";") db.executeQuery("UPDATE `player_skills` SET `value` = " .. arg.club .. " WHERE `player_id` = ".. pid .. " and `skillid` = ".. 1 ..";") db.executeQuery("UPDATE `player_skills` SET `value` = " .. arg.sword .. " WHERE `player_id` = ".. pid .. " and `skillid` = ".. 2 ..";") db.executeQuery("UPDATE `player_skills` SET `value` = " .. arg.axe .. " WHERE `player_id` = ".. pid .. " and `skillid` = ".. 3 ..";") db.executeQuery("UPDATE `player_skills` SET `value` = " .. arg.dist .. " WHERE `player_id` = ".. pid .. " and `skillid` = ".. 4 ..";") db.executeQuery("UPDATE `player_skills` SET `value` = " .. arg.shield .. " WHERE `player_id` = ".. pid .. " and `skillid` = ".. 5 ..";") db.executeQuery("UPDATE `player_skills` SET `value` = " .. arg.fish .. " WHERE `player_id` = ".. pid .. " and `skillid` = ".. 6 ..";") return true end function changePlayerVocation(cid, id) savePlayerVocation(cid) local newVoc = getVocationStorage(id) if(getPlayerStorageValue(cid, newVoc) == -1) or (getPlayerStorageValue(cid, newVoc) == 0) then local level = getPlayerLevel(cid) local vocationsset = { [1] = 1 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 1, -- default Sorcerer [2] = 1 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 2, -- default Druid [3] = 1 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 3, -- default Paladin [4] = 1 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 10 .. "-" .. 4 -- default Knight } setStorageString(cid, newVoc, vocationsset[getVocationCfg(id)]) end if(getPlayerFirstVocation(cid) == -1) or (getPlayerFirstVocation(cid) == 0) then setPlayerStorageValue(cid, acv_first_storage, getPlayerVocationName(cid)) end local get = string.explode(getStorageString(cid, newVoc), "-") local maglevel, fist, club, sword, axe, dist, shield, fish, voc = get[1], get[2], get[3], get[4], get[5], get[6], get[7], get[8], get[9] voc = tonumber(voc) if(getPlayerPromotionLevel(cid) == 1) and (voc <= 4) then voc = voc + 4 end doPlayerSetVocation(cid, voc) setCreatureMaxHealth(cid, getPlayerLevel(cid) * getFormula(cid).health[voc]) doCreatureAddHealth(cid, getPlayerLevel(cid) * getFormula(cid).health[voc]) setCreatureMaxMana(cid, getPlayerLevel(cid) * getFormula(cid).mana[voc]) doCreatureAddMana(cid, getPlayerLevel(cid) * getFormula(cid).mana[voc]) setupPlayerVocation(cid, {maglevel = maglevel, fist = fist, club = club, sword = sword, axe = axe, dist = dist, shield = shield, fish = fish}) return true end É isso galera, como foi dito no início do tópico, não foi eu que criei esse script, tavo pesquisando na net e achei esse script muito legal e vim compartilhar com vocês.
  16. Informações do Script Nome: Sistema de Barco Autor: zathao Testado em: The Forgotten Server Version 0.3.6 / Tibia 8.54 Descrição: Este script foi desenvolvido por mim exclusivamente para esse fórum. Nele o jogador poderá viajar por uma rota pré-definida através de um barco. Video Demonstrativo Códigos e Instalação O sistema irá apenas utilizar apenas 2 Npcs, facilitando ainda mais a instalação. - Crie um arquivo chamado barco.lua em data/npc/scripts e adicione isso no arquivo: - Agora, crie outro arquivo, chamado barco2.lua com o código abaixo e adicione na mesma pasta: Feito isso o próximo passo é criar os npcs. - Crie um arquivo npc1.xml em data/npc e cole isto dentro: - Em seguida crie um arquivo npc2.xml em data/npc e cole isto dentro: Código HTML: Configurações No cabeçalho de cada script do npc, e juntamente a conversa do npc, estão uma sequencia de configurações básicas. - Nome da rota: Esse será o nome que o npc irá reconhecer e apresentar para o jogador como escolha de viagem. - Id's: O barco possui 3 partes. Cada parte tem um id diferente. Quando esta na posição vertical a sequencia é uma, e na horizontal a sequencia é outra. Por padrão, o primeiro npc começa com o barco na sequencia vertical, e o outro na sequencia horizontal ATENÇÃO! - MUITO IMPORTANTE - Posição: Se trata da posição inicial de cada peça do barco. O script irá utilizar elas como referência para as próximas posições, portanto cuidado. Vale lembra que ele considera que o barco irá ter apenas 3 partes, e o player irá ficar na posição do meio, no caso barcoPos[2] . - Padrão: Por padrão, o barco na vertical ira partir para o sul e o barco na horizontal irá partir para leste. Aproveite isso na hora de usar a criatividade no mapa, claro que também é possível fazer alterações, mas o teste do script foi feito usando os próprios padrões. Criando a rota Com tudo configurado, posições iniciais e nomes, você já esta pronto para criar as 2 rotas. Claro que nada impede que seu server tenha muitas rotas, considerando um npc para cada rota é claro. - Esta é a área inicial do NPC1, onde irei começar a fazer a primeira rota. - Selecione a ferramenta “ NO LOGOUT ZONE “ Padrão do seu MAP EDITOR para marcar a rota. Assim você facilita a visualização para colocar os Actions corretamente e tambem evita que alguem tente logar durante a viagem. - Tenha em mente, de que cada NPC apenas uma rota. Marque toda sua rota com a ferramenta “NO LOGOUT”. - O final de sua rota deve possuir um sqm livre para o jogador poder desembarcar corretamente. - Até agora, o barco apenas irá seguir uma unica direção, o sentido inicial da primeira rota (por padrão SUL). Como solução, para não irmos sempre pela mesma direção, iremos colocar sqms especiais, que irão fazer o barco mudar de direção - Para isso, selecione ultimo sqm da direção atual e adicione um action id conforme a tabela abaixo. 7001 = Vira o barco para leste 7002 = Vira o barco para oeste 7003 = Vira o barco para norte 7004 = Vira o barco para sul obs: Só é possível mudar de uma direção vertical para uma horizontal e vice-versa. Ex: Norte/Sul para Leste/Oeste - Na imagem abaixo é possível visualizar uma série de sqm configurados corretamente. - Para finalizar a primeira rota, iremos colocar uma action id especial no ultimo sqm. - De acordo com sua rota, utilize a action mais indicada para seu desembarque conforme a tabela abaixo. Desembarques: 7005 = Desembarca personagem para direita 7006 = Desembarca personagem para esquerda 7007 = Desembarca personagem para cima 7008 = Desembarca personagem para baixo obs: Só é possível desembarcar para um sentido paralelo a sua atual direção. Ex: Norte/Sul para direita/esquerda - Com a primeira rota ja pronta, iremos agora configurar a viagem do segundo NPC! Tenha cuidado para não se confundir com as marcações da “NO LOGOUT ZONE”. Não se preocupe com conflitos entre as rotas, pois as actions ids irão ser diferentes para cada NPC . Abaixo segue as tabelas que configuram a segunda rota. Direções: 7009 = Vira o barco para leste 7010 = Vira o barco para oeste 7011 = Vira o barco para norte 7012 = Vira o barco para sul Desembarques: 7013 = Desembarca personagem para direita 7014 = Desembarca personagem para esquerda 7015 = Desembarca personagem para cima 7016 = Desembarca personagem para baixo - Como ja dito antes, não há problema nenhum entre conflito de rotas, pois elas utilizam actions diferentes. Porém mantive cautela em marcar a rota, para não se confundir, e ter mais clareza na hora da marcação. comente!
  17. é um script que muda de mapa a cada X horas(ou minutos) na pasta mods crie um arquivo.xml e renomeie para ChangeMap.xml <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="ChangeMap" version="2.0" author="Vodkart" contact="none.com" enabled="yes"> <config name="map_func"><![CDATA[ info = { [0] = 1, [1] = 3, [2] = 4 } storage = 789520 ]]></config> <event type="login" name="Check Map" event="script"><![CDATA[ domodlib('map_func') function onLogin(cid) if getGlobalStorageValue(storage) == -1 then setGlobalStorageValue(storage, 0) end doTeleportThing(cid, getTownTemplePosition(info[getGlobalStorageValue(storage)])) return true end ]]></event> <globalevent name="ChangeMap" interval="3600" event="script"><![CDATA[ domodlib('map_func') function onThink(interval, lastExecution) doBroadcastMessage('The map will be changed again in 1 hour.') setGlobalStorageValue(storage, getGlobalStorageValue(storage) < #info and getGlobalStorageValue(storage)+1 or 0) for _, pid in ipairs(getPlayersOnline()) do doPlayerSetTown(pid, info[getGlobalStorageValue(storage)]) doRemoveConditions(pid, true) doCreatureAddHealth(pid, getCreatureMaxHealth(pid)) doCreatureAddMana(pid, getCreatureMaxMana(pid)) doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid))) end return true end]]></globalevent> </mod> Explicação: No info é o id das town para adicionar mais mapas é só colocar uma virgula no último e adicionar o novo town_id [3] = 5, [4] = ?? e o tempo você muda nessa parte interval="3600" no caso está para 1 hora
  18. Olá vão em mods crie um mods e renomeie para Skull System.xml o e adicione isso dentro; <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Skull System" version="1.0" author="Skyforever" contact="tibiaking.com" enabled="yes"> <config name="SkullC_func"><![CDATA[ function setSkullColor(cid) local t = { [{5,10}] = 1, [{11,15}] = 2, [{16,20}] = 3, [{21,25}] = 4, [{26,math.huge}] = 5 } for var, ret in pairs(t) do if getPlayerFrags(cid) >= var[1] and getPlayerFrags(cid) <= var[2] then doCreatureSetSkullType(cid, ret) end end end function getPlayerFrags(cid) local time = os.time() local times = {today = (time - 86400), week = (time - (7 * 86400))} local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(result:getID() ~= -1) then repeat local content = {date = result:getDataInt("date")} if(content.date > times.today) then table.insert(contents.day, content) elseif(content.date > times.week) then table.insert(contents.week, content) else table.insert(contents.month, content) end until not result:next() result:free() end local size = {day = table.maxn(contents.day),week = table.maxn(contents.week),month = table.maxn(contents.month)} return size.day + size.week + size.month end ]]></config> <event type="login" name="SkullLogin" event="script"><![CDATA[ domodlib('SkullC_func') function onLogin(cid) registerCreatureEvent(cid, "ColorKill") setSkullColor(cid) return true end]]></event> <event type="kill" name="ColorKill" event="script"><![CDATA[ domodlib('SkullC_func') function onKill(cid, target) if isPlayer(cid) and isPlayer(target) then doCreatureSetSkullType(target, 0) addEvent(setSkullColor, 1, cid) end return true end]]></event> </mod> primeiro abra o config.lua procurem por vai estar assim deixem assim agora procurem por e deixem assim LEMBRANDO SOMENTE PARA SERVIDORES DE WAR
  19. Esse script se baseia onde é contado os frags do jogador, dando a ele a skull configurada por exemplo. Matou de 1 ~ 10 = White Skull 11 ~ 20 = Yellow Skull etc... Em mods crie Skull System.xml e coloque: Em config.lua troque: Por: Espero ter ajudado bye bye
  20. Bom pessoal, mais um script para vocês. - Qual o motivo desse nome? Não sei, estou meio sem ideias. - Oque tem nesse sistema? Bom, ele da o direito dos players do seu OTServer, serem ladrôes ou policiais, Tambem tem uma cadeia, para aonde os criminosos vão para. - Nossa, para oque ele serve? Para seu servidor ficar com mais diversão, Creio que ele seja meio inutil. Vamos começar. ! Crie um arquivo .lua chamado Policial em \data\actions\scripts function onUse(cid, item, fromPosition, itemEx, toPosition) local config = { minreward = 500, -- Minimo que o policial ira ganhar. maxreward = 2000, -- Maximo que o policial ira ganhar storage = 5569, -- Uma storage qualquer color = math.random(1, 255), prisonPos = {x=1014, y=1034, z=7}, -- Para aonde sera teleportado o ladrão. storagePreso = 5570, -- Uma storage qualquer time = 60, -- Tempo que o ladrão vai ficar preso } local player = getSpectators(getCreaturePosition(cid), 7, 5) local money = math.random(config.minreward, config.maxreward) if player and #player > 0 then for t, pid in pairs(player) do if isPlayer(pid) and pid ~= cid then if getPlayerStorageValue(pid, config.storage) == 1 then setPlayerStorageValue(pid, storagePreso, os.time()+config.time) doTeleportThing(pid, config.prisonPos) doPlayerAddMoney(cid, money) doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "Você acaba de ser preso, por cometer delitos.") doSendAnimatedText(getCreaturePosition(cid), "+"..money.."", config.color) else doPlayerSendCancel(cid, "Esse player nao cometeu delitos.") end end end end return TRUE end Crie um arquivo .lua chamado Ladrao em \data\actions\scripts function onUse(cid, item, itemEx) local config = { minMoneyRemove = 30, -- Minimo que o ladrão ira ganhar maxMoneyRemove = 1400, -- Maximo que o ladrão ira ganhar storage = 5569, -- Uma storage qualquer color = math.random(1, 255), } local player = getSpectators(getCreaturePosition(cid), 7, 5) local money = math.random(config.minMoneyRemove, config.maxMoneyRemove) if player and #player > 0 then for t, pid in pairs(player) do if isPlayer(pid) and pid ~= cid then if doPlayerRemoveMoney(pid, money) then setPlayerStorageValue(cid, config.storage, 1) doPlayerAddMoney(cid, money) doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "Você acaba de ser roubado e perdeu "..money.." gps.") doSendAnimatedText(getCreaturePosition(cid), "+"..money.."", config.color) else doPlayerSendCancel(cid, "O player nao possui "..money.." gps.") end end end end return TRUE end Crie um arquivo .lua chamado Cadeia em \data\actions\scripts function onUse(cid,item) local config = { storagePreso = 5570, -- Uma storage qualquer toPos = {x=1016, y=1022, z=7}, -- Para aonde o player irá quando o tempo acabar } timePreso = getPlayerStorageValue(cid, config.storage) - os.time() if getPlayerStorageValue(cid, config.storagePreso) == -1 then doPlayerSendCancel(cid, "Você nao está preso.") else if timePreso <= 0 then setPlayerStorageValue(cid, config.storagePreso, -1) doTeleportThing(cid, config.toPos) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Espero que você pense bem agora, antes de cometer algum delito") else doPlayerSendCancel(cid, "Você ainda tem que esperar "..timePreso.." segundos, para ser solto.") end return TRUE end end Agora adicione os seguinte codigos em \data\actions\actions.xml <action actionid="1256" event="script" value="Cadeia.lua"/> <action itemid="2556" event="script" value="Policial.lua"/> <action itemid="10153" event="script" value="Ladrao.lua"/> Adicione a ACTION ID na porta da cadeia, Depois edite os nomes dos items. Para editar basta ir em \data\items\items.xml use a imaginação. Até mais.
  21. Sistema de TM faz com que adicione mais um move ao seu pokemon. Olá Pessoal! Eu estava vendo o systema de TM do (PxO) e resolvi juntar os arquivos responsável pelo system para poder melhora-lo, pois até agora só existe um TM para adicionar em pokemons, pois não foi terminado o systema. Então pesso que alguém ajude-nos a terminar isso. Tentei implementar no PDA do slice, mas não consegui porque faltava algum arquivo informações.
  22. Olá, freqüentemente vários donos de servidores tem este problema de cloners em seu server, tanto é com quedas do Servidor, ou outras coisas relacionadas, vou hoje mostrar a vocês um sistema muito interessante que encontrei na web. Comprado no shop só pode ser usado pelo dono assim impedindo que se clone e seja repassado os item para outros players. * Cada item comprado no shop recebe o nome do player na descrição. * Não esqueça de em movements.xml copiar as tags e trocar o "itemid" para funcionar em todos os items que ali você selecionar. •1° Siga a linha de comando : Data>Movements>Scripts. Crie um Arquivo chamado: equipvip.lua Neste mesmo arquivo coloque: Código PHP: -IDDOITEM = Aqui você coloca o id do item vip, caso você queira que somente quem comprou no shop do site, possa usar. •3° Siga a linha de comando: Data/Globalevents/scripts Crie um arquivo chamado : shop.lua No mesmo, insira: Código PHP: Observações: 1° Eu não testei o script, então não sei se funciona. 2° Créditos ao script, do blogdogiroba. Recomendo! Créditos: GodMarini - Tópico Chaitosoft - Criador do Sistema Blogdogiroba - Fornecer o sistema.
  23. DOWNLOAD: http://www.mediafire...vzwgxdaxdiaxrrx Pack Inclue Mapa, Scripts e Pagina PHP
  24. Este sistema é vendido por 10,00 ~ 19,90 por algumas empresas e estou liberando gratuitamente para vocês. Detalhes: Os players conseguirão subir telhados com a ROPE. <iframe width="640" height="360" src="http://www.youtube.com/embed/BUdXGYL9Ad4?feature=player_embedded" frameborder="0" allowfullscreen></iframe> Versão 8.60 Vá em data/actions/scripts/tools/rope.lua e troque tudo que estiver la por isto: Versão 9.60 ~ 9.70 Espero que gostem
  25. Como Funciona: O evento começa e X pessoas entram no portal, então ele fecha determinado período. Items iram aparecer no mapa, o objetivo é quem pegar mais, para ganhar o evento. <?xml version="1.0" encoding="UTF-8"?> <mod name="Catch the item" version="1.00" author="Kimo" contact="otland.net" enabled="yes"> <config name="catchtheitem_config"><![CDATA[ config = { center_pos = {x = 2736, y = 3497, z = 7}, item = 8304, aid = 4003, effect = CONST_ANI_FIRE, teleportPosition = {x = 74, y = 136, z = 9, stackpos = 1}, -- Onde o teleporte vai ser criado teleportToPosition = {x = 78, y = 136, z = 9}, -- Onde o teleporte enviará as pessoas teleportId = 1387, -- Id do teleporte spawnItemTime1 = 1, -- Tempo que o primeiro item vai ser criado spawnItemTime2 = 1, -- Tempo que o primeiro item vai ser criado timeToStartEvent = 1, -- Minutos após o teleporte ser fechado. itemRewards = {{2160,10}, {13305,1}, {13539,1}} } ]]></config> <talkaction words="!catch" event="script"><![CDATA[ function onSay() domodlib('catchtheitem_config') local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition) doItemSetAttribute(tp, "aid", config.teleportActionId) doBroadcastMessage("Catch the item is starting in "..config.timeToStartEvent.." minute!", MESSAGE_EVENT_ADVANCE) addEvent(startEvent, config.timeToStartEvent * 1000 * 10) print(getGlobalStorageValue(3333)) return true end function startEvent() domodlib('catchtheitem_config') local get = getThingfromPos(config.teleportPosition) if get.itemid == config.teleportId then doRemoveItem(get.uid, 1) doBroadcastMessage("Catch the item teleport have been removed and the first items wave will start in " .. config.spawnItemTime1 .. " ", MESSAGE_EVENT_ADVANCE) addEvent(SpawnItem1, config.timeToStartEvent * 1000 * 10) end end function SpawnItem1() domodlib('catchtheitem_config') local field = {} local k = config.center_pos for i = -2, 3 do for j = -2, 4 do table.insert(field, {x=k.x+i, y=k.y+j, z=k.z}) end end for i = 1, 8 do local a = math.random(1, #field) local c = {x=field[a].x, y=field[a].y, z=field[a].z} if getThingFromPos({x=c.x, y=c.y, z=c.z, stackpos=1}).itemid ~= 9767 then local b = doCreateItem(config.item, {x=c.x, y=c.y, z=c.z, stackpos=1}) doItemSetAttribute(b, "aid", config.aid) doItemSetAttribute(c, "moveable", 0) doSendDistanceShoot(config.center_pos, c, config.effect) end end doBroadcastMessage("Items wave 1 has been finished wave 2 in "..config.spawnItemTime2.." minute ", MESSAGE_EVENT_ADVANCE) addEvent(SpawnItem2, config.spawnItemTime2 * 1000 * 10) end function SpawnItem2() domodlib('catchtheitem_config') local field = {} local k = config.center_pos for i = -2, 3 do for j = -1, 2 do table.insert(field, {x=k.x+i, y=k.y+j, z=k.z}) end end for i = 1, 8 do local a = math.random(1, #field) local c = {x=field[a].x, y=field[a].y, z=field[a].z} if getThingFromPos({x=c.x, y=c.y, z=c.z, stackpos=1}).itemid ~= 9767 then local b = doCreateItem(config.item, {x=c.x, y=c.y, z=c.z, stackpos=1}) doItemSetAttribute(b, "aid", config.aid) doSendDistanceShoot(config.center_pos, c, config.effect) end end doBroadcastMessage("Items wave 2 is finished and results in 1 minute", MESSAGE_EVENT_ADVANCE) addEvent(EndEvent, 1 * 1000 * 10) end function EndEvent() domodlib('catchtheitem_config') local function maximum(a) local mi = 1 local m = a[mi] for i,val in ipairs(a) do if val > m then mi = i m = val end end return m end local first = {} local second = 0 local third = 0 local players = getPlayersOnline() local winamount = {} local storage = 7777 --event storage for i, pid in ipairs(players) do if getPlayerStorageValue(pid, storage) >= 0 then table.insert(winamount, getPlayerStorageValue(pid, storage)) end end local winningamount = maximum(winamount) local price = math.random(1, #config.itemRewards) for i, pid in ipairs(players) do if getPlayerStorageValue(pid, storage) == winningamount then table.insert(first, getPlayerName(pid)) end end if #first > 1 then doBroadcastMessage('[Catch the item]\n We have a draw between '..first[1]..' and '..first[2]..'!\nTherefor NO PRICES will be given!') else for i, pid in ipairs(players) do if getPlayerStorageValue(pid, storage) == winningamount then doBroadcastMessage('[Catch the item]\n And the winner is:\n'..first[1]..' with a total score of '..winningamount..'\nYour Price: '..config.itemRewards[price][2]..' x '..getItemNameById(config.itemRewards[price][1])..'\nCongratulations!') doPlayerAddItem(pid, config.itemRewards[price][1], config.itemRewards[price][2]) end end end for i, pid in ipairs(players) do if getPlayerStorageValue(pid, storage) == (winningamount-1) then if second == 0 then doBroadcastMessage('[Catch the item]\n 2nd place is:\n'..getPlayerName(pid)..' with a total score of '..getPlayerStorageValue(pid, storage)..'\nCongratulations!') second = 1 end end end for i, pid in ipairs(players) do if getPlayerStorageValue(pid, storage) == (winningamount-2) then if third == 0 then doBroadcastMessage('[Catch the item]\n 3rd place is:\n'..getPlayerName(pid)..' with a total score of '..getPlayerStorageValue(pid, storage)..'\nCongratulations!') third = 1 end end end addEvent(EndEvent2, 1 * 1000 * 10) end function EndEvent2() setGlobalStorageValue(4444, 0) setGlobalStorageValue(3333, 0) for _, kid in ipairs(getPlayersOnline()) do if(getPlayerStorageValue(kid, 7776) > 0) then doTeleportThing(kid, getTownTemplePosition(getPlayerTown(kid))) setPlayerStorageValue(kid, 7776, 0) setPlayerStorageValue(kid, 7777, 0) end end end ]]></talkaction> <action actionid="4003" event="script"><![CDATA[ function onUse(cid, item, fromPosition, itemEx, toPosition) if item.actionid == 4003 then doRemoveItem(getThingFromPos(fromPosition).uid, 6119) setPlayerStorageValue(cid,7777, getPlayerStorageValue(cid,7777)+1) local score = getPlayerStorageValue(cid, 7777) doCreatureSay(cid, "Point!\nScore ="..getPlayerStorageValue(cid, 7777), 34) return true end end ]]></action> <movevent type="StepIn" actionid="3000" event="script"><![CDATA[ local config = { playerCount = 3333, -- Storage global que contara quantos iram participar maxPlayers = 20 -- Número máximo que pode participar } function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if getGlobalStorageValue(config.playerCount) < config.maxPlayers then setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)+1) if getGlobalStorageValue(config.playerCount) == config.maxPlayers then doBroadcastMessage("Catch the item event is now full [" .. getGlobalStorageValue(config.playerCount) .. " players]! The event will soon start.") else doBroadcastMessage(getPlayerName(cid) .. " entered catch the item event! Currently " .. getGlobalStorageValue(config.playerCount) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) end else doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "The event is full. There is already " .. config.maxPlayers .. " players participating in the event.") return false end print(getGlobalStorageValue(config.playerCount) .. " Players in catch the item event.") return true end ]]></movevent> </mod> Créditos: kimokimo & Skydangerous(Traduzir)

Informação Importante

Confirmação de Termo