Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 07/20/10 em todas áreas
-
Alissow OTs 4.11! Esta versão 4.11 foi meio apressada, só adicionamos as features novas do 8.6. Aproveitem. Créditos: Alissow Comedinha Luis Nirk TFS Team Viniply Xedegux Sobre o OT/Mapa: Principais quests: -Annihilator -Inquisition Quest -Pits of inferno -Demon Oak -Solar axe quest -HOTA -MPA quest -The Challenger Monstros: -Total monstros: 10292 -Total spawn: 5587+ Cidades: -12 Cidades -200 Houses+- Raids/Invasões: -Rat -Orshabaal -Ghazbaran -Giant spider/The old window -Ferumbras -Morgaroth Spells: -Magias editadas para balanceamento das vocações Changelog Atualização [3.4 BETA]: - Removido áreas não usadas no mapa, diminuindo o tamanho em MBs - Adicionado Anti Magebomb System - Corrigido bugs no npc addon - Adicionado sistema onde os npcs falam sozinhos (Igual como foi adicionado no global). First ;] - Adicionado Elf village em Venonh ( bem parecida com a do global ;]) - Potions desaparecem quando usadas - Corrigido sistema de Up - Corrigido sistema de Monster Counter - Nova dragon lair em Mirand Theraan (Subsolo) - Adicionado porta de level, que protege leveis baixos acessarem os demons da cidade de Flam - Ampliado deserto da cidade de Mirand Theraan - Adicionado Ilha de Goroma - Adicionado Forbidden islands - Ampliado floresta da cidade de alfon e colocado área de macacos parecida com Banuta. - Ligação de alfon com Mirand Theraan - Corrigido bugs reportados nas portas das casas - Corrigido posição dos buracos e escadas - Adicionado beds em todas as casas - Corrigido bugs em casas de yalahar - Adicionado Blue legs quest ( Koshei The Deathless global) - Corrigidas quase todas as areas de Yalahar - Teleports em Yalahar substituidos por NPCs de teleport do global - Corrigido pequenos erros no npc Capitao Coruja, e adicionado viagem à goroma - diminuido ataque do Eye of the seven - Ice rapier agora quebra - Corrigido npc Banker - Adicionado quase todos os items 8.5 - Adicionado medusa - Adicionado Todos os outfits novos - Corrigido NPC Banker (que dava dinheiro) Script By Ta4e - Corrigido Annihilator Quest - Adicionado Notice System - Adicionado novo distro, compilado por Comedinha Atualização nº 2 [3.4]: Otserv atualizado... Corrigido debugs frequentes Corrigido debugs na magia exevo pan Corrigido bugs nos npcs Roy e Firewalker Adicionados mais novos items 8.5, agora temos 90% dos items novos... Atualização 3.5 [06/08/2009]: - Cidade principal (dorion) totalmente reformada - corrigido blue legs quest - Corrigido alavancas de compra de potions - Adicionado alavancas de compra de runas - Corrigido npc Bank - Adicionado NPC King Arthas, que vende promotion - Adicionado npc Rashid, que vende items. - Arrumado Wild Growth rune - Arrumado Utani Hur - Magias reajustadas - Novo estilo de server save - Ilha de mystic reformulada (by Nirk) - Adicionado nova magia para knights "Exkordium". - Adicionado nova magia para mages (promoted) "Exura Seil". - Adicionado nova magia para mages (promoted) "Exevo Gran Frigo". (arrumar -> sem exhausted nem gasta mana) - Adicionados novos monstros. - Adicionado quest challenge (lvl 250) - Corrigido bug do Dead Cyclops - Bug aol Arrumado - Poi Modificada - Corrigido teleports ghouls yalahar - Modificada demon helmet quest, assim como o premio da quest - Corrigido nome do Hallowed axe - Corrigido bug das houses - Corrigido bug dos items andaveis Atualização Patch 3.5.1 [07/08/2009]: - Corrigido erro na inicialização do Ot - Bug das potions corrigido - Bug do aol corrigido (pelomenos pra mim) - Bug dos outfits corrigido - Corrigido erros nas escadas na ilha PvP - O monstro The Fastest Turtle agora não morre, se tornando um monstro apenas para atrapalhar - Retirada suposta quest dos 3 hellhounds e 1 minishabaal - Adicionado teleport de retorno na Ferumbras Tower - Corrigido posições da raid de The old widow - Corrigido bug das escadas nas minas de demons - Corrigido alguns bugs vistos no mapa Atualização 3.6 [10/08/2009]: - Arrumado bugs criticos - Arrumado comando !promote/!demote - Atualizado Items.xml - Bug das Beds arrumado - Modificações na cidade, como, nature e caves - Nova sala de treino - Adicionado comando !highscores Atualização 3.7! Beta [18/12/2009]: - Guildhall support (Elf) - Nova deathlist(Elf, OpenTibia SVN) - Frags funcionando (Elf) - Atualizado monstros e items (slawkens, KaczooH, Elf) - Novas talkactions: /commands, /wp, /storage, /config, /promote & /demote. (slawkens) - Novas funções lua - Novos creatureevents (slawkens, Elf) - Novos configuráveis (Elf, slawkens) - Modificado ataque de monstros existentes (especialmente outfits e velocidade) (Elf) - Monstros reorganizados & atualizados (Nem todos) (slawkens) - Melhorado sistema de banimentos (Elf) - Reescrita janela de Rule Violation (Elf) - Arrumado Stamina (Elf, OpenTibia SVN) - Casas agora são salvas nas modificações do dono (Elf) - Escadas de yalahar funcionando perfeitamente (Elf, Talaturen) - Sistema de nado & waterball completo (slawkens) - Monstros invisiveis não são mais mandandos ao client (anti bot) (OpenTibia SVN) - Anti-dash (OpenTibia SVN) - Sistema de leilão de casas, possibilidade de usar site para vender casas (house_actions table) (OpenTibia SVN, Elf) - Salvando bot actions para /logs/bots por cada player. Por exemplo, bot pode enviar mensagem com mais de 255 caracteres (slawkens) - Novos raid events- item spawning & disappearing and more (Elf) - Modificações no NPC system (Elf) - NPCs OutfitModule (Elf) - Completo 8.53 support, com wars (Elf) - Completo 8.54 support (Elf) - Arrumado NPC voices (Elf) - Players serão informados quando o Gamemaster logar ou ficar invisivel (slawkens) - Arrumado Player Deaths (Elf, slawkens) - Arrumado Abuso de PZ (slawkens) - Portas agora não ajudam players a entrar em PZ (slawkens) - Magic level formula (OpenTibia SVN, KaczooH) - Memory leaks (Elf) - Queries optimization (Talaturen) - Janelas podem ser abertas do lado de fora da casa- agora apenas GMs podem fazer isso (slawkens) - arrumado Efeitos para o Ghost (GM)- configuravel (slawkens) - Corrigido >> Ghost debugging players (OpenTibia SVN, Elf) - Corrigido erro na promotion (Elf) - Corrigido vários erros no console. (slawkens) - Corrigido Spam de magias (Elf) - Corrigido stamina premium (Elf) - Corrigido Clean (Elf) - Corrigido vários outfits (Elf) - Corrigido Ghost (Elf) - Todas as correções no OpenTibia SVN (Open Tibia SVN, Elf) - Corrigido Todos os crashes possiveis (Elf) - Npcs Corrigidos (Comedinha) - Distro Reformulado (comedinha) - Bugs de reports arrumados (Comedinha) - Novos outfits (Alissow) - Actions Arrumadas (Comedinha) - Libs trocadas (Comedinha) - Talkactions bugadas arrumadas (Comedinha) - Reforma na área Sul da cidade Dorion (Alissow) - Adicionado monstros 8.54 (Alissow) - Corrigido bug das potions infinitas (Alissow) Atualização 3.7 Patch 1 [27/12/2009]: - Rampa na frente da loja de foods retirada (Alissow) - Arrumado bugs de mapa em anknor (Alissow) - Bug na Lib dos npcs corrigido (Alissow) - Bug do acc manager arrumado! (Alissow) - Magias "Exkordium" e "Ice Storm" arrumadas (Alissow) - Monstros 8.54 funcionando (Alissow) - 2º Addon Yalaharian arrumado (Alissow) - Addons Warmaster adicionados no NPC Addoner (Alissow) - Pequenas modificações na cidade principal, Dorion, para melhora da jogabilidade (Alissow) - Comando /Deathlist retirado (Alissow) - Magic Wall Rune arrumada (Alissow) - Quest Annihilator arrumada (Alissow) - "Your depot contain x items" Arrumado (Alissow) - Addons reorganizados, mais facil aggora (Alissow) - Tempo de Red skull e Black skull reduzidos para 24 e 42 horas (Alissow) - Reduzida porcentagem de morte (Alissow) - Acrescentado chance de critical hits (Alissow) - ShowHealingDamage Adicionado (Alissow) - Várias partes do mapa remapeadas (Alissow) - NPCs para recarga de Soft boots & Firewalker boots arrumados [Não testado] (Alissow) - Comando !frags arrumado! (Alissow) - Agora é possivel fazer addons sem precisar do comando !buypremium (Alissow) Atualização 3.8 [17/01/2010]: - Arrumado bug nas escadas do Dlair (Alissow) - Todos os bugs nos NPCs arrumados (Comedinha) - Novas talkactions [a pedidos] (Comedinha) - Deathlist arrumada (Comedinha) - Novo Distro (Comedinha) - MySQL Atualizada (Comedinha) - Firewarker boots não é mais gasta quando não está usando (Comedinha) - Problemas com items no Rashid arrumados (Alissow, Comedinha, Comunidade) - O NPC Banker foi corrigido, mas achei mais seguro retira-lo, visto que ninguem usava e poderia causar outro tipo de bug - Ilha (Sim aqui é uma ilha) de Zao adicionada (Alissow, Barker) - Monstros 8.54 aperfeiçoados (Alissow, Markithu, Zkum) - Reduzido danos da magia Exkordium (Alissow) - Os npcs Dark Rodo e Rachel vendem Blank Runes (Alissow) - Magias que não hitavam anteriormente foram arrumadas (Alissow) - Comando !buypremium arrumado (Alissow) - Arena PVM - Mais conhecida como Arena Svargrond - FUNCIONANDO!!! (Alissow) - Magia LightChain Retirada (Alissow) - Adicionado um sisteminha legal no templo (Alissow) - NPC Rashid retirado (Alissow) Atualização 3.8 Minor Patch 1 [17/01/2010]: - Comando Deathlist retirado novamente, fizemos testes equivocados. Se você é uma das 16 pessoas que baixou a versão anterior (3.8) não precisa baixar esta, basta retirar o comando !deathlist e /deathlist do seu Talkactions.xml, Os comandos causam quedas no servidor. Atualização 3.9 [15/02/2010]: - Cidade principal (Dorion) reformada, novo templo, novo depot, novo porto, novos npcs :] (Alissow) - Adicionado Reputation System (Comedinha, Cybermaster) - Adicionado !bless system (Comedinha) - /info melhorado (Comedinha) - Jail System (Comedinha) - Bug chatinho nos tiles pretos arrumado. - Magic Wall Funcionando! (Alissow) - Agora você pode fazer bolos e pães :] (Comedinha, Jean, Ojani) - Adicionado sistema de casamento (Comedinha, ScorpiOOn93, Alissow) - Loot The Fastest Turtle diminuido (Alissow) - Loot e experiencia do Feromous mais baixo (Alissow) - Sistema de parceis para Dorion funcionando (Alissow) - Guildwar System (Comedinha) - Anti MageBomb System (Comedinha, Huggen) - Adicionado Anti Nuker - Esse funciona! (Comedinha) - Adicionado Map Marks, para os players novos (Alissow, Comedinha) Atualização 4.0 [15/02/2010]: - Cidade Mountain totalmente reformada (Alissow) - Montanha de Goblins de Dorion reformada (Alissow) - Demonic Castle de Dorion reformado (Alissow) - Cidade de Venonh modificada (Luis) - Distro atualizado, funcionando nos clients 8.54, 8.55, 8.56 e 8.57 (Comedinha) - Comando !bless retirado (Alissow) - O NPC Ermes não vende mais items de decoração (Alissow) - Arrumado bugs na Ferumbras Tower (Alissow) - O comando !AFK on agora mantem o player parado (Comedinha) - Arrumado bugs nas escadas da área de DeathFans (Alissow) - Comando !Deathlist funcionando! (Alissow, Doidinmapper, GT Thionix) - Sistema de REP atualizado (Comedinha) - Sistema de Polls (Comedinha) - Banco por comandos (Comedinha) - Novos comandos de addon e accounts (Comedinha) - Sistema de futebol completo! (Comedinha) - Sistema Antibot (Comedinha) - Magia Spared Hur modificada (Alissow, Orzeleagle) - Adicionado sistema de montaria (Alissow, unknown666) - Adicionado Canivetes (Alissow, Siramix) - Nova hunt Subaquatica (Luis) Atualização 4.11! [11/07/2010]: - Versão 8.6, todos os items, outfits e monstros novos (Comedinhasss, Fireelement) - Adicionados os novos monstros 8.6 (Alissow) - Bug das potions arrumado (Comedinha, Matheusmkalo, Gabriel linhares, Fireelement) - Erros das runas arrumado (Comedinha, Gabriel linhares, Matheusmkalo, fireelement) Download Servidor: 4shared Tamanho: 17,416 KB Download: http://www.4shared.com/file/ez8XKrju/860_Alissow_Ots_411.html Link protegido: http://lix.in/-8d4bc0 Scan VirusTotal: http://www.virustotal.com/pt/analisis/983abb574dbb957a75aa1fd29eb804065f775e6a0c43216aa277686d32bce22a-1263702373 Atenção - Acc do God: god/god - LEIA o tópico antes de postar qualquer coisa ou duvida - Reportem se houver algum bug - A database fica na pasta schemas+Database - Proibido o uso do nosso distro sem o nosso consenso, obrigado. Andei percebendo que há muitos mapas feitos por mim em outros servidores postados aqui no xtibia, eu não sei se vocês sabem, mas isso é PLÁGIO. Eu não sou uma pessoa egoista, tudo que eu posto aqui no XTibia é para ser compartilhado, mas desde que mantenham os devidos créditos. Será denunciado qualquer tipo de "roubo" sem minha autorização para beneficio próprio. Eu sei que vocês não se importam muito com isso, eu também não deveria me importar, mas é o tempo e a dedicação de outra pessoa que vocês estão roubando, então peço gentilmente aos que tem conhecimento desses mapas, que me apontem. Não tem graça trabalhar horas e horas e ser roubado em dois minutos.3 pontos
-
Warsystem
NinjaPower e 2 outros reagiu a HeartBreak por um tópico no fórum
WarSystem para TFS 0.3.5 ou TFS 0.3.6. Precisa de Gesior. Para quem usa TFS 0.4 , veja o tópico :Warsystem Para TFS 0.4 [apenas o arquivo MOD] Bom , chega de enrolar , vamos começar o "tutorial": *Nota : é extremamente recomendavel que você limpe a tabela 'deaths_in_wars' antes de usar o sistema. 1) Adicione o arquivo a seguir , a pasta mods (OTServer/data/mod) basta criar um arquivo XML ou copiar algum outro e apagar tudo que tiver dentro , coloque o nome do arquivo de: guildWarSystem.xml: <?xml version="1.0" encoding="UTF-8"?> <mod name="Guild War System" version="0.3.5+" author="Xampy and Nahruto" contact="otland.net" enabled="yes"> <config name="function_config"><![CDATA[ DelayToCancel = 24 -- HOURS <-> [max: 47 -- min: 24] --> default: 24 hours [1 day] Maps = { ["map1"] = { Guild1Pos = {x=238, y=442, z=12}, Guild2Pos = {x=244, y=442, z=12} }, ["map2"] = { Guild1Pos = {x=994, y=1004, z=6}, Guild2Pos = {x=1000, y=1003, z=6} } } TimeToTeleport = 1 --minutes, when start a challenge StopBattle = TRUE --Stop battle after X time ? TRUE / FALSE TimeToStop = 60 --Minutes Time to Stop if StopBattle = TRUE. --Cancel messages~ CancelMessagesWar = { --Message when player try accept/reject/cancel a war but there is no a invitation. [1] = "Not pending invitations.", --Message when the player is not the guild leader. [2] = "Only Guild Leader can execute this command.", --Message when try Cancel the invitation but the war is already accepted. [3] = "The war is already accepted.", --MEssage when the invited guild name is not correct or does not exist. [4] = "Not correct guild name.", --Message when try invite any guild to a war but his guild already have a war or a pending invitation. [5] = "Your guild is already in war or have a pending invitation.", --Same of the cancel message 5 but the the enemy guild. [6] = "This guild is already in war or have a pending invitation.", --Message when use invite command but not write guild name. [7] = "Command needs param.", --Message when try invite his guild. [8] = "You can\'t invite you guild.", --Message when the map name is not correct. [9] = "Please write a correct name.", --Message when try go to any map but the guild is have no received/sent any war invitation [10] = "Your guild is not in any war.", --When try to cancel a war before the delay [11] = "You should wait ".. DelayToCancel .." hours to cancel the war" } --Broadcast messages when invite/accept/reject/cancel ~ Remember the Spaces. BroadCast_Type = MESSAGE_EVENT_ADVANCE BroadCast = { --Message when inviting [1] = { "Guild ", --Here will be the guild name " have invited guild ", --Here will be the invited guild name " to have a war." }, --Message when accept. [2] = { "Guild ", --Here will be the guild name " have accepted the invitation of the guild " , --Here will be the name of the guild who have invited em. " to have a war." }, --Message when reject. [3] = { "Guild ", --Here will be the guild name " have rejected the invitation of the guild " , --Here will be the name of the guild who have invited em. " to have a war." }, --Message when cancel. [4] = { "Guild ", --Here will be the guild name " have canceled the invitation to the guild " , --Here will be the name of the guild who have invited em. " to have a war." }, --Message whenstar a battle.. [5] = { "Guild ", --Here will be the guild name " and guild " , --Here will be the name of the guild who have invited em. " will have a battle in the map :" }, --message when a battle ends. [6] = { "The battle betwen guild ", --Here will be the guild name " and guild " , --Here will be the name of the guild who have invited em. " its over." }, } --Functions ~. function getShowInfo(id) local Info = db.getResult("SELECT `show` FROM `guilds` WHERE `id` = " .. id .. "") if Info:getID() ~= -1 then local showy = Info:getDataInt("show") Info:free() return showy end return -1 end function getKills(name) local Info = db.getResult("SELECT `kills` FROM `guilds` WHERE `name` = '"..name.."'") if Info:getID() ~= -1 then local killy = Info:getDataInt("kills") Info:free() return killy end return -1 end function getGuildWarInfo(id) local Info = db.getResult("SELECT `invited_to`, `invited_by`, `in_war_with`,`war_time` FROM `guilds` WHERE `id` = " .. id .. "") if Info:getID() ~= -1 then local invTo, invBy, warWith, Time = Info:getDataInt("invited_to"), Info:getDataInt("invited_by"), Info:getDataInt("in_war_with"), Info:getDataInt("war_time") Info:free() return {To = invTo, By = invBy, With = warWith, T = Time} end return -1 end function getGuildNameById(id) local Info = db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. id .. "") if Info:getID() ~= -1 then local Name = Info:getDataString("name") Info:free() return Name end return -1 end function GuildIsInPEace(id) local Info = getGuildWarInfo(id) return (Info.To == 0 and Info.By == 0 and Info.With == 0) end function doInviteToWar(myGuild, enemyGuild) local StartTime = os.time() db.executeQuery("UPDATE `guilds` SET `invited_to` = ".. enemyGuild ..", `war_time` = ".. StartTime .." WHERE `id` = ".. myGuild .."") db.executeQuery("UPDATE `guilds` SET `invited_by` = ".. myGuild .." WHERE `id` = ".. enemyGuild .."") end function WarAccept(myGuild, enemyGuild) local StartTime = os.time() db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `in_war_with` = ".. myGuild ..", `kills` = 0, `show` = 1 WHERE `id` = ".. enemyGuild .."") db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `war_time` = ".. StartTime ..", `in_war_with` = ".. enemyGuild ..", `kills` = 0, `show` = 0 WHERE `id` = ".. myGuild .."") end function cleanInfo(myGuild) db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `war_time` = 0, `in_war_with` = 0, `kills` = 0, `show` = 0 WHERE `id` = ".. myGuild .."") end function registerDeathOne(myGuild, enemyGuild, cid, target) db.executeQuery("INSERT INTO `deaths_in_wars` (`guild_id`, `player_id`, `killer_guild`, `killer`, `date`, `result1`, `result2`) VALUES ("..enemyGuild..", "..getPlayerGUID(target)..", "..myGuild..", "..getPlayerGUID(cid)..", " .. os.time() ..", 1, 0);") db.executeQuery("UPDATE `guilds` SET `kills` = `kills` + 1 WHERE `id` = ".. myGuild .."") end function registerDeathTwo(myGuild, enemyGuild, cid, target) db.executeQuery("INSERT INTO `deaths_in_wars` (`guild_id`, `player_id`, `killer_guild`, `killer`, `date`, `result1`, `result2`) VALUES ("..enemyGuild..", "..getPlayerGUID(target)..", "..myGuild..", "..getPlayerGUID(cid)..", " .. os.time() ..", 0, 1);") db.executeQuery("UPDATE `guilds` SET `kills` = `kills` + 1 WHERE `id` = ".. myGuild .."") end function removeDeaths(id) db.executeQuery("DELETE FROM `deaths_in_wars` WHERE `guild_id` = " ..id .. ";") end function StopWar(myGuild, enemyGuild) cleanInfo(myGuild) cleanInfo(enemyGuild) removeDeaths(myGuild) removeDeaths(enemyGuild) end function WeAreInWar(myGuild, enemyGuild) local myGuildInfo = getGuildWarInfo(myGuild) local enemyGuildInfo = getGuildWarInfo(enemyGuild) if myGuild == enemyGuildInfo.With and enemyGuild == myGuildInfo.With then if enemyGuildInfo.ON == 1 and myGuildInfo.ON == 1 then return TRUE end end return FALSE end function getOnlineMembers(id) local PlayersOnline = getPlayersOnline() local MembersOnline = {} for i, pid in ipairs(PlayersOnline) do if id == getPlayerGuildId(PlayersOnline[i]) then table.insert(MembersOnline, PlayersOnline[i]) end end return MembersOnline end function teleportGuild(id, pos) local Members = getOnlineMembers(id) if #Members > 0 then for i = 1, #Members do if #Members > 1 then if getTilePzInfo(getCreaturePosition(Members[i])) == TRUE then doTeleportThing(Members[i], pos, FALSE) doSendMagicEffect(pos, CONST_ME_TELEPORT) doSendMagicEffect(getCreaturePosition(Members[i]), CONST_ME_POFF) doPlayerSendTextMessage(Members[i], 22, 'Prepare to fight!') else doPlayerPopupFYI(Members[i], 'GuildWar challenge error:\n\nBoth guild members must stay in Protection Zone.') end else doPlayerPopupFYI(Members[i], 'GuildWar challenge error:\n\nBoth guilds must have more than one player online (leader & any member, at least).') end end end end function getGuildsWithWar() local res = db.getResult("SELECT `id` FROM `guilds` WHERE `in_war_with` > 0") local GuildW = {} if res:getID() ~= -1 then while true do table.insert(GuildW, res:getDataInt "id") if not res:next() then break end end res:free() end return GuildW end function guildExist(nom) local Get = db.getResult("SELECT `id` FROM `guilds` WHERE `name` = " .. db.escapeString(nom) .. ";") if Get:getID() ~= -1 then local ret = Get:getDataInt("id") Get:free() return ret end return -1 end function StartWar(x) teleportGuild(x.myGuild, Maps[x.map].Guild1Pos) teleportGuild(x.enemyGuild, Maps[x.map].Guild2Pos) if StopBattle == TRUE then addEvent(StopWarNow, 60 * 1000, {myGuild = x.myGuild, enemyGuild = x.enemyGuild}) end end function StopWarNow(c) StopWar(c.myGuild, c.enemyGuild) doBroadcastMessage(BroadCast[6][1] ..getGuildNameById(c.myGuild).. BroadCast[6][2] ..getGuildNameById(c.enemyGuild).. BroadCast[6][3], BroadCast_Type) end function putWarOn(myGuild, enemyGuild) db.executeQuery("UPDATE `guilds` SET `war_time` = 1 WHERE `id` = ".. myGuild .."") db.executeQuery("UPDATE `guilds` SET `war_time` = 1 WHERE `id` = ".. enemyGuild .."") end]]></config> <talkaction words="!disband; /war-invite; /war-accept; /war-reject; /war-cancel-invite; /war-cancel" event="script"><![CDATA[ domodlib('function_config') function onSay(cid, words, param, channel) if getPlayerGuildLevel(cid) == GUILDLEVEL_LEADER then local myGuild = getPlayerGuildId(cid) if words == "/war-invite" then if GuildIsInPEace(myGuild) == true then if param ~= "" then if guildExist(param) ~= -1 then local invitedGuild = getGuildId(param) if invitedGuild ~= -1 then if invitedGuild ~= myGuild then if GuildIsInPEace(invitedGuild) == true then if getPlayerStorageValue(cid, 65570) <= os.time() then doInviteToWar(myGuild, invitedGuild) doBroadcastMessage(BroadCast[1][1] ..getPlayerGuildName(cid).. BroadCast[1][2] ..getGuildNameById(invitedGuild).. BroadCast[1][3], BroadCast_Type) setPlayerStorageValue(cid, 65570, os.time()+(20*60)) else local waitTime = (getPlayerStorageValue(cid, 65570) - os.time()) doPlayerSendCancel(cid, "You must wait " .. os.date("%M", waitTime) .. " minutes and " .. os.date("%S", waitTime) .. " seconds until declare another war.") end else doPlayerSendCancel(cid, CancelMessagesWar[6]) end else doPlayerSendCancel(cid, CancelMessagesWar[8]) end else doPlayerSendCancel(cid, CancelMessagesWar[4]) end else doPlayerSendCancel(cid, CancelMessagesWar[4]) end else doPlayerSendCancel(cid, CancelMessagesWar[7]) end else doPlayerSendCancel(cid, CancelMessagesWar[5]) end elseif words == "/war-accept" then if getGuildWarInfo(myGuild).By ~= 0 then local enemyGuild = getGuildWarInfo(myGuild).By doBroadcastMessage(BroadCast[2][1] ..getPlayerGuildName(cid).. BroadCast[2][2] ..getGuildNameById(enemyGuild).. BroadCast[2][3], BroadCast_Type) WarAccept(myGuild, enemyGuild) else doPlayerSendCancel(cid, CancelMessagesWar[1]) end elseif words == "/war-reject" then if getGuildWarInfo(myGuild).By ~= 0 then doBroadcastMessage(BroadCast[3][1] ..getPlayerGuildName(cid).. BroadCast[3][2] ..getGuildNameById(getGuildWarInfo(myGuild).By).. BroadCast[3][3], BroadCast_Type) cleanInfo(getGuildWarInfo(myGuild).By) cleanInfo(myGuild) else doPlayerSendCancel(cid, CancelMessagesWar[1]) end elseif words == "/war-cancel-invite" then if getGuildWarInfo(myGuild).To ~= 0 then if getGuildWarInfo(myGuild).With == 0 then doBroadcastMessage(BroadCast[4][1] ..getPlayerGuildName(cid).. BroadCast[4][2] ..getGuildNameById(getGuildWarInfo(myGuild).To).. BroadCast[4][3], BroadCast_Type) cleanInfo(getGuildWarInfo(myGuild).To) cleanInfo(myGuild) else doPlayerSendCancel(cid, CancelMessagesWar[3]) end else doPlayerSendCancel(cid, CancelMessagesWar[1]) end elseif words == "/war-challenge" then local map = Maps[param] if map then if enemy ~= 0 then local enemyGuild = getGuildWarInfo(myGuild).With addEvent(StartWar, 15000, {myGuild = myGuild, enemyGuild = enemyGuild, map = param}) doBroadcastMessage(BroadCast[5][1] ..getPlayerGuildName(cid).. BroadCast[5][2] ..getGuildNameById(enemyGuild).. BroadCast[5][3] .. param ..".", BroadCast_Type) else doPlayerSendCancel(cid, CancelMessagesWar[10]) end else doPlayerSendCancel(cid, CancelMessagesWar[9]) end elseif words == "/war-cancel" then local enemy = getGuildWarInfo(myGuild).With if enemy ~= 0 then if (os.time() - getGuildWarInfo(myGuild).T) >= (60 * 60 * DelayToCancel) then StopWar(myGuild, enemy) doBroadcastMessage(BroadCast[6][1] ..getGuildNameById(myGuild).. BroadCast[6][2] ..getGuildNameById(enemy).. BroadCast[6][3], BroadCast_Type) else local timeEnd = getGuildWarInfo(myGuild).T + (60 * 60 * DelayToCancel) local timeLeft = timeEnd - os.time() local hours = (os.date("%H", timeLeft) + 23) doPlayerSendCancel(cid, "Time remaining: "..hours.." hours, " .. os.date("%M", timeLeft) .. " minutes and " .. os.date("%S", timeLeft) .. " seconds.") end else doPlayerSendCancel(cid, CancelMessagesWar[10]) end elseif words == "!disband" then local enemy = getGuildWarInfo(myGuild).With if enemy > 0 then if channel == CHANNEL_GUILD then if (os.time() - getGuildWarInfo(myGuild).T) >= (60 * 60 * DelayToCancel) then StopWar(myGuild, enemy) doBroadcastMessage(BroadCast[6][1] ..getGuildNameById(myGuild).. BroadCast[6][2] ..getGuildNameById(enemy).. BroadCast[6][3], BroadCast_Type) else local timeEnd = getGuildWarInfo(myGuild).T + (60 * 60 * DelayToCancel) local timeLeft = timeEnd - os.time() local hours = (os.date("%H", timeLeft) + 23) doPlayerSendCancel(cid, "Time remaining: "..hours.." hours, " .. os.date("%M", timeLeft) .. " minutes and " .. os.date("%S", timeLeft) .. " seconds.") end else doPlayerSendCancel(cid, "You have to say this command in your guild channel.") end else return FALSE end return FALSE end else doPlayerSendCancel(cid, CancelMessagesWar[2]) end local file = io.open("data/logs/Wars.txt", "a") file:write("".. os.date("%d %B %Y %X ", os.time()) .." --> "..getCreatureName(cid)..": "..words.." "..param.."\n") file:close() return TRUE end]]></talkaction> <event type="login" name="WarLogin" event="script"><![CDATA[ domodlib('function_config') function onLogin(cid) registerCreatureEvent(cid, "WarKill") return true end]]></event> <event type="kill" name="WarKill" event="script"><![CDATA[ domodlib('function_config') local PZ = createConditionObject(CONDITION_INFIGHT) setConditionParam(PZ, CONDITION_PARAM_TICKS, getConfigInfo('whiteSkullTime')) function onKill(cid, target, lastHit) if isPlayer(cid) == TRUE and isPlayer(target) == TRUE then local config = { removeFrags = true -- If 'true' player won't gain frags from a player that is versus him; else, player will gain frags as normal. } local GUID = getPlayerGUID(cid) local namec = getPlayerName(cid) local namet = getPlayerName(target) local skull = getCreatureSkullType(cid) local skullend = getPlayerSkullEnd(cid) local playerPos = getPlayerPosition(cid) local targetPos = getPlayerPosition(target) local cidd = cid local timeA = os.time() local timesA = {today = (timeA - 86400), week = (timeA - (7 * 86400))} local contentsA, resultA = {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` >= " .. (timeA - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(resultA:getID() ~= -1) then repeat local contentA = { name = resultA:getDataString("name"), level = resultA:getDataInt("level"), date = resultA:getDataInt("date") } if(contentA.date > timesA.today) then table.insert(contentsA.day, contentA) elseif(contentA.date > timesA.week) then table.insert(contentsA.week, contentA) else table.insert(contentsA.month, contentA) end until not resultA:next() resultA:free() end local sizeA = { day = table.maxn(contentsA.day), week = table.maxn(contentsA.week), month = table.maxn(contentsA.month) } local function removeFrag(cid) local timeB = os.time() local timesB = {today = (timeB - 86400), week = (timeB - (7 * 86400))} local contentsB, resultB = {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` = " .. GUID .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (timeB - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(resultB:getID() ~= -1) then repeat local contentB = { name = resultB:getDataString("name"), level = resultB:getDataInt("level"), date = resultB:getDataInt("date") } if(contentB.date > timesB.today) then table.insert(contentsB.day, contentB) elseif(contentB.date > timesB.week) then table.insert(contentsB.week, contentB) else table.insert(contentsB.month, contentB) end until not resultB:next() resultB:free() end local sizeB = { day = table.maxn(contentsB.day), week = table.maxn(contentsB.week), month = table.maxn(contentsB.month) } if sizeB.day > sizeA.day or sizeB.week > sizeA.week or sizeB.month > sizeA.month then db.executeQuery("UPDATE `killers` SET `unjustified` = 0 WHERE `id` IN (SELECT `kill_id` FROM `player_killers` WHERE `player_id` = "..GUID..") ORDER BY `death_id` DESC LIMIT 1;") doPlayerSendTextMessage(cidd, 21, "Frag from "..namet.." wasn't counted.") end if skull == SKULL_RED then if getCreatureSkullType(cidd) == SKULL_BLACK then doPlayerSetSkullEnd(cidd, skullend, SKULL_RED) doCreatureSetSkullType(cidd, SKULL_RED) end elseif skull == SKULL_WHITE then if getCreatureSkullType(cidd) == SKULL_RED then doPlayerSetSkullEnd(cidd, timeB, SKULL_RED) doCreatureSetSkullType(cidd, SKULL_WHITE) end end end local myGuild = getPlayerGuildId(cid) local enemyGuild = getPlayerGuildId(target) if myGuild ~= 0 and enemyGuild ~= 0 then if enemyGuild == getGuildWarInfo(myGuild).With then local guildc = getPlayerGuildName(cid) local guildt = getPlayerGuildName(target) doAddCondition(cid, PZ) if lastHit == TRUE then if getTileZoneInfo(playerPos) == 0 and getTileZoneInfo(targetPos) == 0 then if getShowInfo(myGuild) == 1 then registerDeathOne(myGuild, enemyGuild, cid, target) else registerDeathTwo(myGuild, enemyGuild, cid, target) end else doPlayerSendTextMessage(cid, 19, "Remember: in PvP zone the system doesn't register the frag.") end end if config.removeFrags == true then addEvent(removeFrag, 150) end local gsim = getShowInfo(myGuild) local gsie = getShowInfo(enemyGuild) if gsim > gsie then resulta = getKills(guildc) resultb = getKills(guildt) else resulta = getKills(guildt) resultb = getKills(guildc) end local players = getOnlinePlayers() for i,playerName in ipairs(players) do local player = getPlayerByName(playerName); if getPlayerGuildId(player) == myGuild then if getTileZoneInfo(playerPos) == 0 and getTileZoneInfo(targetPos) == 0 then doPlayerSendChannelMessage(player, "", "Opponent "..namet.." of the "..guildt.." was killed by "..namec..". The new score is "..resulta..":"..resultb.." frags.", TALKTYPE_CHANNEL_W, CHANNEL_GUILD) end end end end end end return TRUE end]]></event> </mod> 2) Adicione isso a database (no phpMyAdmin): ALTER TABLE `guilds` ADD `invited_to` INT( 11 ) NOT NULL , ADD `invited_by` INT( 11 ) NOT NULL , ADD `in_war_with` INT( 11 ) NOT NULL , ADD `kills` INT( 11 ) NOT NULL , ADD `show` SMALLINT( 1 ) NOT NULL , ADD `war_time` INT( 11 ) NOT NULL ; e isso: CREATE TABLE `deaths_in_wars` ( `guild_id` INT( 11 ) NOT NULL , `player_id` INT( 11 ) NOT NULL , `killer_guild` INT( 11 ) NOT NULL , `killer` INT( 11 ) NOT NULL , `date` INT( 11 ) NOT NULL , `result1` INT( 11 ) NOT NULL , `result2` INT( 11 ) NOT NULL ) ENGINE = MYISAM ; e finalmente isso: UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `in_war_with` = 0, `kills` = 0, `show` = 0, `war_time` = 0 WHERE `id` > 0; não sabe como adicionar ? basta abrir o bloco de notas , copiar o conteudo acima e colar e salvar como "nome.sql" apos isso va a http://localhost/phpmyadmin , loga-se escolha a database clique em importar e selecione o arquivo que você salvou. 3) Va até xampp/htdocs. Crie um arquivo chamado wars.php: [copie um arquivo php e apague tudo que tiver dentro ou abra o bloco de notas coloque o conteudo e salve como "wars.php"] <?PHP //Litle Config $MaxShow = 100; //END if($action == '') { $main_content .= ' <P ALIGN=CENTER> <br> <FONT SIZE=4 COLOR=#8A0808> How to use... </FONT> <br> <br> <FONT SIZE=2 COLOR=#DF0101> * <b>/war-invite</b> : <FONT SIZE=1 COLOR=green> Send an invitation to start a war.<br> <u>Example</u>: /war-invite Death Hard </FONT><br> * <b>/war-accept</b> : <FONT SIZE=1 COLOR=green> Accept the invitation to start a war. </FONT><br> * <b>/war-reject</b> : <FONT SIZE=1 COLOR=green> Reject the invitation to start a war. </FONT><br> * <b>/war-cancel-invite</b> : <FONT SIZE=1 COLOR=green> Cancel the invitation already sent to start a war. </FONT><br> * <b>/war-cancel</b> : <FONT SIZE=1 COLOR=green> Finish the current war: it can only be used after 1 day of war. </FONT><br> </FONT> <br> <FONT SIZE=2 COLOR=#8A0808> Those commands can only be executed by guild leaders.<br><br> <table border="1"><tr border="1"><td border="1"><h3>Remember:</h3> <ul> <li>You won\'t get any frag if you kill someone that is VERSUS you.</li> <li>If you kill someone that is in your guild, you will get a frag.</li> </ul></td></tr></table> </FONT> </P> '; $wars = $SQL->query(" SELECT g.name AS gname, wg.name AS wgname, g.war_time AS gtime, wg.war_time AS wgtime, g.kills AS kills, wg.kills AS ekills, g.show AS s, g.id AS gid, wg.id AS wgid, g.logo_gfx_name AS glogo, wg.logo_gfx_name AS wglogo FROM guilds AS g INNER JOIN guilds AS wg ON wg.id = g.in_war_with ORDER BY s DESC LIMIT 50; "); foreach ($wars as $k=>$v) { if ($v[s] == 1) { $glogo = "default_logo.gif"; $wglogo = "default_logo.gif"; if(!empty($v[glogo])) $glogo = $v[glogo]; if(!empty($v[wglogo])) $wglogo = $v[wglogo]; if(is_int($number_of_rows / 2)) { $bgcolor = '#D4C0A1'; } else { $bgcolor = '#D5E1A2'; } $number_of_rows++; $stats .=" <TR BGCOLOR=".$bgcolor."> <TD WIDTH=30%><center><a href='index.php?subtopic=guilds&action=show&guild=" . $v[gname] . "'><font color='#5A2800'>$v[gname]</font></a></center></TD> <TD WIDTH=40%><center><a href='index.php?subtopic=wars&action=show&war=" . $v[gid] . "'><font color='#5A2800'>{$v[kills]} - {$v[ekills]}</font></a></center></TD> <TD WIDTH=30%><center><a href='index.php?subtopic=guilds&action=show&guild=" . $v[wgname] . "'><font color='#5A2800'>$v[wgname]</font></a></center></TD> </TR> <TR BGCOLOR=".$bgcolor."> <TD><center><img border=1 src='guilds/".$glogo."' width='64px' height='64px'/></center></TD> <TD><center><b>Declared at:</b><br />" . date("d/m/y H:i:s", $v[gtime]) . "<p><b>Started at:</b><br />" . date("d/m/y H:i:s", $v[wgtime]) . "</center></TD> <TD><center><img border=1 src='guilds/".$wglogo."' width='64px' height='64px'/></center></TD> </TR> "; } } $main_content .= ' <table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b><blink>Active Wars</blink></b></font></td></tr></tbody></table> '; if(!$stats) { $main_content .= ' <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR='.$config['site']['darkborder'].'> <TD> No active wars in '.$config['server']['serverName'].' yet. </TD> </TR> </TABLE> '; } else { $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> $stats </TABLE> "; } ?> <?PHP $invitations = $SQL->query(" SELECT ig.name AS igname, i.name AS iname, i.id AS iid, ig.id AS igid, i.war_time AS itime, i.logo_gfx_name AS ilogo, ig.logo_gfx_name AS iglogo FROM guilds AS i INNER JOIN guilds AS ig ON ig.id = i.invited_to ORDER BY itime ASC LIMIT 50; "); foreach ($invitations as $k=>$v) { $ilogo = "default_logo.gif"; $iglogo = "default_logo.gif"; if(!empty($v[ilogo])) $ilogo = $v[ilogo]; if(!empty($v[iglogo])) $iglogo = $v[iglogo]; if(is_int($number_of_rows / 2)) { $bgcolor = '#D4C0A1'; } else { $bgcolor = '#D5E1A2'; } $number_of_rows++; $invi .=" <TR BGCOLOR=".$bgcolor."> <TD width=30%> <center> <b> <a href='index.php?subtopic=guilds&action=show&guild=" . $v[iname] . "'><font color='#5A2800'>$v[iname]</font></a> </b> </center> </TD> <TD width=40%><center>0-0</center></TD> <TD width=30%> <center> <b> <a href='index.php?subtopic=guilds&action=show&guild=" . $v[igname] . "'><font color='#5A2800'>$v[igname]</font></a> </b> </center> </TD> </TR> <TR BGCOLOR=".$bgcolor."> <TD> <center> <img border=1 src='guilds/".$ilogo."' width='64px' height='64px'/> </center> </TD> <TD><center><b>Declared on:</b><br />" . date("d/m/y H:i:s", $v[itime]) . "</center></TD> <TD> <center> <img border=1 src='guilds/".$iglogo."' width='64px' height='64px'/> </center> </TD> </TR> "; } $main_content .= '<br><br><br> <table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b><blink>Declared Wars</blink></b></font></td></tr></tbody></table>'; if(!$invi) { $main_content .= ' <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR='.$config['site']['darkborder'].'> <TD> No declared wars in '.$config['server']['serverName'].' yet. </TD> </TR> </TABLE> <br> '; } else { $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> $invi </TABLE> "; } } //SHOW FRAGS ~~ if($action == 'show') { $guild = $ots->createObject('Guild'); $guild->load($_REQUEST['war']); $ranks = $SQL->query(" SELECT * FROM guild_ranks WHERE guild_id = ". $guild->getId() ." ORDER BY level DESC; "); foreach ($ranks as $y) { $Players = $SQL->query(" SELECT * FROM players WHERE rank_id = ". $y[id] ." ORDER BY name ASC;"); foreach ($Players as $v) { $totDeaths = 0; $deaths = $SQL->query(" SELECT COUNT(player_id) AS n FROM deaths_in_wars WHERE player_id = ". $v[id] ." GROUP BY player_id DESC LIMIT 1;"); foreach ($deaths as $q) { $totDeaths = $q[n]; } if($totDeaths > 1 || $totDeaths == 0){ $deathL = "deaths"; } else{ $deathL = "death"; } $membersDeaths1 .="<tr bgcolor=#D4C0A1> <td width=70%><a href=index.php?subtopic=characters&name=" . $v[name] . "><u>$v[name]</u></a></td> <td width=30%>$totDeaths $deathL</td> </tr> "; $totFrags = 0; $frags = $SQL->query(" SELECT COUNT(killer) AS m FROM deaths_in_wars WHERE killer = ". $v[id] ." GROUP BY killer DESC LIMIT 1;"); foreach ($frags as $p) { $totFrags = $p[m]; } if($totFrags > 1 || $totFrags == 0){ $fragL = "frags"; } else{ $fragL = "frag"; } $membersFrags1 .= "<tr bgcolor=#D4C0A1> <td width=70%><a href=index.php?subtopic=characters&name=" . $v[name] . "><u>$v[name]</u></a></td> <td width=30%>$totFrags $fragL</td> </tr> "; } } $guild2 = $ots->createObject('Guild'); $guild2->load($guild->getCustomField(in_war_with)); $ranks2 = $SQL->query(" SELECT * FROM guild_ranks WHERE guild_id = ". $guild2->getId() ." ORDER BY level DESC; "); foreach ($ranks2 as $y) { $Players = $SQL->query(" SELECT * FROM players WHERE rank_id = ". $y[id] ." ORDER BY name ASC;"); foreach ($Players as $v) { $totDeaths2 = 0; $deaths = $SQL->query(" SELECT COUNT(player_id) AS n FROM deaths_in_wars WHERE player_id = ". $v[id] ." GROUP BY player_id DESC LIMIT 1;"); foreach ($deaths as $q) { $totDeaths2 = $q[n]; } if($totDeaths2 > 1 || $totDeaths2 == 0){ $deathL = "deaths"; } else{ $deathL = "death"; } $membersDeaths2 .= "<tr bgcolor=#D4C0A1> <td width=70%><a href=index.php?subtopic=characters&name=" . $v[name] . "><u>$v[name]</u></a></td> <td width=30%>$totDeaths2 $deathL</td> </tr> "; $totFrags2 = 0; $frags = $SQL->query(" SELECT COUNT(killer) AS m FROM deaths_in_wars WHERE killer = ". $v[id] ." GROUP BY killer DESC LIMIT 1;"); foreach ($frags as $p) { $totFrags2 = $p[m]; } if($totFrags2 > 1 || $totFrags2 == 0){ $fragL = "frags"; } else{ $fragL = "frag"; } $membersFrags2 .= "<tr bgcolor=#D4C0A1> <td width=70%><a href=index.php?subtopic=characters&name=" . $v[name] . "><u>$v[name]</u></a></td> <td width=30%>$totFrags2 $fragL</td> </tr> "; } } $deaths3 = $SQL->query(" SELECT * FROM deaths_in_wars WHERE (killer_guild = ". $guild->getId() ." OR killer_guild = ". $guild2->getId() .") ORDER BY date DESC LIMIT ". $MaxShow .";"); $deathsG1 = $SQL->query(" SELECT * FROM deaths_in_wars WHERE killer_guild = ". $guild->getId() ." ORDER BY date DESC LIMIT ". $MaxShow .";"); $deathsG2 = $SQL->query(" SELECT * FROM deaths_in_wars WHERE killer_guild = ". $guild2->getId() ." ORDER BY date DESC LIMIT ". $MaxShow .";"); $Topfragger1 = $SQL->query(" SELECT killer, COUNT(killer) maximo FROM deaths_in_wars WHERE killer_guild = ". $guild->getId() ." GROUP BY killer ORDER BY maximo DESC LIMIT 1;"); foreach ($Topfragger1 as $y) { $name = $ots->createObject('Player'); $name->load($y[killer]); $TopFraggerName = $name->getName(); $numTop1 = $y[maximo]; } $Topfragger2 = $SQL->query(" SELECT killer, COUNT(killer) maximo FROM deaths_in_wars WHERE killer_guild = ". $guild2->getId() ." GROUP BY killer ORDER BY maximo DESC LIMIT 1;"); foreach ($Topfragger2 as $y) { $name = $ots->createObject('Player'); $name->load($y[killer]); $TopFraggerName2 = $name->getName(); $numTop2 = $y[maximo]; } $mostDead = $SQL->query(" SELECT player_id, COUNT(player_id) maximo FROM deaths_in_wars WHERE killer_guild = ". $guild->getId() ." GROUP BY player_id ORDER BY maximo DESC LIMIT 1;"); foreach ($mostDead as $y) { $name = $ots->createObject('Player'); $name->load($y[player_id]); $mostDeadName = $name->getName(); $mostDeadNum = $y[maximo]; } $mostDead2= $SQL->query(" SELECT player_id, COUNT(player_id) maximo FROM deaths_in_wars WHERE killer_guild = ". $guild2->getId() ." GROUP BY player_id ORDER BY maximo DESC LIMIT 1;"); foreach ($mostDead2 as $y) { $name = $ots->createObject('Player'); $name->load($y[player_id]); $mostDeadName2 = $name->getName(); $mostDeadNum2= $y[maximo]; } foreach ($deaths3 as $a=>$b) { $killed3 = $ots->createObject('Player'); $killed3->load($b[player_id]); $killedName3 = $killed3->getName(); $killer3 = $ots->createObject('Player'); $killer3->load($b[killer]); $killerName3 = $killer3->getName(); $guild3 = $ots->createObject('Guild'); $guild3->load($b[killer_guild]); $guildName3 = $guild3->getName(); $totKills1 = 0; $killss1 = $SQL->query(" SELECT COUNT(result1) AS m FROM deaths_in_wars WHERE (killer_guild = ". $guild->getId() ." AND date <= ". $b[date] .") GROUP BY result1 DESC LIMIT 1;"); foreach ($killss1 as $p) { $totKills1 = $p[m]; } $totKills2 = 0; $killss2 = $SQL->query(" SELECT COUNT(result2) AS n FROM deaths_in_wars WHERE (killer_guild = ". $guild2->getId() ." AND date <= ". $b[date] .") GROUP BY result2 DESC LIMIT 1;"); foreach ($killss2 as $q) { $totKills2 = $q[n]; } $kills3 .=" <TR BGCOLOR=#D4C0A1> <TD> <a href='index.php?subtopic=characters&name=" . $killerName3 . "'><u>$killerName3</u></a> </TD> <TD> <a href='index.php?subtopic=characters&name=" . $killedName3 . "'><u>$killedName3</u></a> </TD> <TD> $guildName3 </TD> <TD> $totKills1:$totKills2 </TD> <TD> " . date("d/m/y H:i:s", $b[date]) . " </TD> </TR> "; } if(!empty($mostDeadNum)){$mostDeadNum = $mostDeadNum;}else{$mostDeadNum = 0 + $mostDeadNum;} if(!empty($mostDeadNum2)){$mostDeadNum2 = $mostDeadNum2;}else{$mostDeadNum2 = 0 + $mostDeadNum2;} if(!empty($numTop1)){$numTop1 = $numTop1;}else{$numTop1 = 0 + $numTop1;} if(!empty($numTop2)){$numTop2 = $numTop2;}else{$numTop2 = 0 + $numTop2;} foreach ($deathsG1 as $k=>$v) { $killed = $ots->createObject('Player'); $killed->load($v[player_id]); $killedName = $killed->getName(); $killer = $ots->createObject('Player'); $killer->load($v[killer]); $killerName = $killer->getName(); $kills .=" <TR BGCOLOR=\"".$config['site'][($k % 2 == 1 ? 'light' : 'dark').'border']."\"> <TD> <center> <b> <a href='index.php?subtopic=characters&name=" . $killedName . "'>$killedName</a> </b> </center> </TD> <TD> <center> <b> <a href='index.php?subtopic=characters&name=" . $killerName . "'>$killerName</a> </b> </center> </TD> <TD> <center> " . date("d/m/y H:i:s", $v[date]) . " </center> </TD> </TR> "; } foreach ($deathsG2 as $k=>$v) { $killed = $ots->createObject('Player'); $killed->load($v[player_id]); $killedName = $killed->getName(); $killer = $ots->createObject('Player'); $killer->load($v[killer]); $killerName = $killer->getName(); $kills2 .=" <TR BGCOLOR=\"".$config['site'][($k % 2 == 1 ? 'light' : 'dark').'border']."\"> <TD> <center> <b> <a href='index.php?subtopic=characters&name=" . $killedName . "'>$killedName</a> </b> </center> </TD> <TD> <center> <b> <a href='index.php?subtopic=characters&name=" . $killerName . "'>$killerName</a> </b> </center> </TD> <TD> <center> " . date("d/m/y H:i:s", $v[date]) . " </center> </TD> </TR> "; } if($numTop1 > 1 || $numTop1 == 0){$fragl1 = "frags";}else{$fragl1 = "frag";} if($numTop2 > 1 || $numTop2 == 0){$fragl2 = "frags";}else{$fragl2= "frag";} if($mostDeadNum > 1 || $mostDeadNum == 0){$deathl1 = "deaths";}else{$deathl1 = "death";} if($mostDeadNum2 > 1 || $mostDeadNum2 == 0){$deathl2 = "deaths";}else{$deathl2 = "death";} $main_content .= ' <table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b>War Information</b></font></td></tr></tbody></table> '; $logo = "default_logo.gif"; $logo2 = "default_logo.gif"; $a = $guild->getCustomField(logo_gfx_name); $b = $guild2->getCustomField(logo_gfx_name); if(!empty($a)) $logo = $a; if(!empty($b)) $logo2 = $b; $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR='#D4C0A1'> <TD WIDTH='35%'><center><a href='index.php?subtopic=guilds&action=show&guild=".$guild->getName()."'><font color='#5A2800'>".$guild->getName()."</font></a></center></TD> <TD WIDTH='30%'><center><font color='#5A2800'><b>".$guild->getCustomField(kills)." - ".$guild2->getCustomField(kills)."</b></font></center></TD> <TD WIDTH='35%'><center><a href='index.php?subtopic=guilds&action=show&guild=".$guild2->getName()."'><font color='#5A2800'>".$guild2->getName()."</font></a></center></TD> </TR> <TR BGCOLOR='#D4C0A1'> <TD><center><img border=1 src='guilds/".$logo."' width='64px' height='64px'/><p><b><u>Top fragger:</b></u><br /><a href='index.php?subtopic=characters&name=".$TopFraggerName."'>".$TopFraggerName."</a> (".$numTop1." ".$fragl1.")<p><b><u>Most dead:</b></u><br /><a href='index.php?subtopic=characters&name=".$mostDeadName2."'>".$mostDeadName2."</a> (".$mostDeadNum2." ".$deathl2.")</center></TD> <TD><center><b>Declared at:</b><br />" . date("d/m/y H:i:s", $guild->getCustomField(war_time)) . "<p><b>Started at:</b><br />" . date("d/m/y H:i:s", $guild2->getCustomField(war_time)) . "</center></TD> <TD><center><img border=1 src='guilds/".$logo2."' width='64px' height='64px'/><p><b><u>Top fragger:</u></b><br /><a href='index.php?subtopic=characters&name=".$TopFraggerName2."'>".$TopFraggerName2."</a> (".$numTop2." ".$fragl2.")<p><b><u>Most dead:</u></b><br /><a href='index.php?subtopic=characters&name=".$mostDeadName."'>".$mostDeadName."</a> (".$mostDeadNum." ".$deathl1.")</center></TD> </TR> </TABLE> "; $main_content .= ' <br><br><table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b>Kills - '.$guild->getName().' vs '.$guild2->getName().'</b></font></td></tr></tbody></table> '; $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR=#D4C0A1> <TD><b>Killer</b></TD> <TD><b>Victim</b></TD> <TD><b>Fragging Guild</b></TD> <TD><b>Result</b></TD> <TD><b>Date</b></TD> </TR> $kills3 </TABLE>"; $main_content .= ' <br><br><table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b>Most Frags</b></font></td></tr></tbody></table>'; $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR=#D4C0A1> <TD width=50%> <div align='right'> <B> ". $guild->getName() ." </B> </div> </TD> <TD width=50%> <div align='left'> <B> ". $guild2->getName() ." </B> </div> </TD> </TR> <TR BGCOLOR=#D4C0A1> <TD> <div align='right'> <img src=guilds/".$logo." width='64px' height='64px' border=1/> </div> </TD> <TD> <div align='left'> <img src=guilds/".$logo2." width='64px' height='64px'border=1/> </div> </TD> </TR> </TABLE> <TABLE ALIGN=LEFT BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=50%> $membersFrags1 </TABLE> <TABLE ALIGN=RIGHT BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=50%> $membersFrags2 </TABLE> "; $main_content .= ' <table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR><td><font color="white" size=1>.</font></td></tr></tbody></table>'; $main_content .= ' <table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b>Most Deaths</b></font></td></tr></tbody></table>'; $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR=#D4C0A1> <TD width=50%> <div align='right'> <B> ". $guild->getName() ." </B> </div> </TD> <TD width=50%> <div align='left'> <B> ". $guild2->getName() ." </B> </div> </TD> </TR> <TR BGCOLOR=#D4C0A1> <TD> <div align='right'> <img src=guilds/".$logo." width='64px' height='64px' border=1 /> </div> </TD> <TD> <div align='left'> <img src=guilds/".$logo2." width='64px' height='64px'border=1 /> </div> </TD> </TR> </TABLE> <TABLE ALIGN=LEFT BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=50%> $membersDeaths1 </TABLE> <TABLE ALIGN=RIGHT BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=50%> $membersDeaths2 </TABLE> "; } $main_content .= " <table border='0' CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR><td><div style='text-align: right; margin: 20px auto; font-size: 10px;'> Created by <a target='blank' href='http://otland.net/members/xampy/'>Xampy</a></div></td></tr></tbody></table>"; ?> 4) Abra o arquivo guilds.php [da pasta htdocs] e DEPOIS de (linha 1740~): if($guild_leader) { if($_POST['todo'] == 'save') { delete_guild($guild->getId()); $saved = TRUE; } adicione isso: $war = $guild->getCustomField("in_war_with"); if($war == 0) { e depois de : else { $guild_errors[] = 'You are not a leader of guild!'; } } adicione: else { $guild_errors[] = 'You are in war with with some other guild!'; } } 5) Abra o arquivo index.php [na pasta htdocs] e depois ou antes de:(não faz diferença): case "buypoints"; $subtopic = "buypoints"; $topic = "Buy Points"; include("buypoints.php"); break; coloque: case "wars"; $subtopic = "wars"; $topic = "Wars"; include("wars.php"); break; 6) Abra xampp/htdocs/layouts/tibiacom/ e depois layout.php. Depois de: <a href='?subtopic=guilds'> <div id='submenu_guilds' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_guilds' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Guilds</div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> </a> coloque isso: <a href='index.php?subtopic=wars'> <div id='submenu_wars' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_wars' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'><font color="red">Wars</font></div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> </a> 7) Agora entre na seção Wars do seu Site -> Localhost - Wars Por favor , rep + Creditos: Recuso Imitações , Proibido Copia [Peço a um moderador que arrume o Topico se possivel]3 pontos -
Fala Éks Tibianos... Hoje vim trazer para voces um tutorial de como criar botões no Photoshop. Criando Botões 1- Crie um novo documento no tamanho 200 px X 200 px. 2- Pegue a ferramenta Rounded Retangle Tool (U). 3- No radius coloque 10 px. 4- Agora desenhe o quadrado na área de trabalho. 5- Feito isso, crie uma nova layer: (Ctrl+Shift+N) ou clique no botão (create new layer) na janela dos layers. 6- Criada a nova layer, faça uma seleção do quadrado segurando o Ctrl e clicando em cima da layer do quadrado. 7- Feita a seleção, vá em Select->Modify->Contract. Na caixa que abrirá digite 5 para o valor. Ficará assim: 8- Agora pegue a ferramenta Gradient Tool: 9- Configure o gradiente assim: Na primeira caixa coloque 40% de opacidade, e na caixa abaixo escolha a cor branca. Na seguna caixa coloque 0% de opacidade, e na caixa abaixo escolha a cor branca. 10- Feito isso, aplique o gradiente na seleção do quadrado. Com a ferramenta gradient tool, clique e segure na parte superior do quadrado e arraste até a parte de baixo. Você deverá fazer tudo isso em cima da seleção e na nova layer. Ficará assim: 11- Com a ferramenta Eliptical Marquee Tool faça uma seleçao mais ou menos assim: 12- Feita a seleção inverta ela, Ctrl+Shift+I. E aperte o Delete. Ficará assim: 13- Agora é só colocar um texto, e está pronto o seu ícone. Você pode dar mais alguns efeitos para incrementar. Créditos luisfe23 Colírio Photoshop Gostou? REP+++ Abraços...3 pontos
-
[8.60] Big List De Otserver
CenoraoO e um outro reagiu a Toridox4ever por um tópico no fórum
Big List Ot Serv V8.60 Estarei Colocando Somente os Server mais Populares... (Oficial) Real Server 3.0 [8.60] Autor:Doidin Download:Aqui Scan:Não Tem :button_ok: Real Global Map 8.60 Autor:Doohrush Download:Aqui Scan:Arquivo Muito Grande Para Fazer Scan :button_ok: [Original Mix Yourots 0.0.4 8.60 Autor:RenanSdc Download:Aqui Scan:Aqui Subwat® 8.60 (V10) Oficial Autor:Subwat Download:Aqui Scan:Aqui [8.60] Alissow Ots 4.11 8.6 Completo Autor:Alissow Download:Aqui Scan:Aqui [♥Original♥] Baiak Yurots V1.1.5 8.60 Autor:Rookwar Download:Aqui Scan:Aqui Sleeper Map 0.51 [8.60] Autor:The Sleeper Download:Aqui Scan:Aqui [8.54 a 8.60] Kreuus Otserv V10 Sem Debugs Autor:Kreuus Download:Aqui Scan:Aqui [Oficial] Snowz Thyranic 3.0 [8.60] Autor:Doidin Download:Aqui Scan:Aqui [8.60] The Forgotten Server (Crying Damson) Autor:Fireelement Download Server:Aqui Download Dll:Aqui Scan Server:Aqui Scan Dll:Aqui Esqueci Algum ? -- Postem -- Esse Poste te Ajudo ? + Rep2 pontos -
Passando Um Otserv Para 8.60
lucastiond reagiu a comedinhasss por um tópico no fórum
Fala ae galerinha do xtibia... Bom vejo que muitos programadores ainda estão em dúvida para passar o seu ot para 8.6 ... Bom então estou fazendo um tutorial... Testado em tfs 0.3.6pl1 Sources: Em House.cpp: Procure: std::string metachars = ".[{}()\\+|^{:content:}quot;; Substitua por: std::string metachars = ".[{}()\\+|^$*?"; Procure: if(metachars.find(*it) != std::string::npos) outExp += "\\"; Subistitua por: if(metachars.find(*it) != std::string::npos) outExp += ""; Procure: replaceString(outExp, "*", ".*"); replaceString(outExp, "?", ".?"); Subistitua por: replaceString(outExp, "*", ""); replaceString(outExp, "?", ""); Em resources.h: Procure: #define CLIENT_VERSION_MIN 854 #define CLIENT_VERSION_MAX 854 #define CLIENT_VERSION_STRING "Only clients with protocol 8.54 are allowed!" #define STATUS_SERVER_NAME "TheForgottenServer" #define STATUS_SERVER_VERSION "0.3.6" #define STATUS_SERVER_CODENAME "Crying Damson" #define STATUS_SERVER_PROTOCOL "8.54" Substitua por: #define CLIENT_VERSION_MIN 860 #define CLIENT_VERSION_MAX 860 #define CLIENT_VERSION_STRING "Only clients with protocol 8.60 are allowed!" #define STATUS_SERVER_NAME "TheForgottenServer" #define STATUS_SERVER_VERSION "0.3.6" #define STATUS_SERVER_CODENAME "Crying Damson" #define STATUS_SERVER_PROTOCOL "8.60" Em itemloader.h: Procure: CLIENT_VERSION_854 = 16 Substitua e adicione por: CLIENT_VERSION_854 = 16, CLIENT_VERSION_855 = 17, CLIENT_VERSION_856 = 18, CLIENT_VERSION_857 = 19, CLIENT_VERSION_860 = 20 Em items.cpp: Procure: else if(Items::dwMinorVersion != CLIENT_VERSION_854) Substitua e adicione por: else if(Items::dwMinorVersion != 19) Em protocolgame.cpp: Procure: void ProtocolGame::parseAttack(NetworkMessage& msg) { uint32_t creatureId = msg.GetU32(); addGameTask(&Game::playerSetAttackedCreature, player->getID(), creatureId); } Substitua por: void ProtocolGame::parseAttack(NetworkMessage& msg) { uint32_t creatureId = msg.GetU32(); msg.GetU32(); msg.GetU32(); addGameTask(&Game::playerSetAttackedCreature, player->getID(), creatureId); } Também procure: void ProtocolGame::sendCancelTarget() { NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); msg->AddByte(0xA3); } } Substitua por: void ProtocolGame::sendCancelTarget() { NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); msg->AddByte(0xA3); msg->AddU32(0); } } Em spells.cpp (somente em spells.cpp) Procure: g_game.transformItem(item, item->getID(), std::max((int32_t)0, ((int32_t)item->getCharges()) - 1)); Substitua por: g_game.transformItem(item, item->getID(), std::max((int32_t)0, ((int32_t)item->getItemCount()) - 1)); Em tools.cpp: Procure: {"insects", MAGIC_EFFECT_INSECTS} Substitua por: {"insects", MAGIC_EFFECT_INSECTS}, {"dragonhead", MAGIC_EFFECT_DRAGONHEAD} Em const.h: Procure: MAGIC_EFFECT_INSECTS = 0x44, //68 MAGIC_EFFECT_LAST = MAGIC_EFFECT_INSECTS, Substitua por: MAGIC_EFFECT_INSECTS = 0x44, //68, MAGIC_EFFECT_DRAGONHEAD = 0x45, //69 MAGIC_EFFECT_LAST = MAGIC_EFFECT_DRAGONHEAD, Em game.cpp: Procure: void Game::showHotkeyUseMessage(Player* player, Item* item) { int32_t subType = -1; if(item->hasSubType() && !item->hasCharges()) subType = item->getSubType(); const ItemType& it = Item::items[item->getID()]; uint32_t count = player->__getItemTypeCount(item->getID(), subType, false); char buffer[40 + it.name.size()]; if(count == 1) sprintf(buffer, "Using the last %s...", it.name.c_str()); else sprintf(buffer, "Using one of %d %s...", count, it.pluralName.c_str()); player->sendTextMessage(MSG_INFO_DESCR, buffer); } Substitua por: void Game::showHotkeyUseMessage(Player* player, Item* item) { const ItemType& it = Item::items[item->getID()]; uint32_t count = player->__getItemTypeCount(item->getID(), -1); char buffer[40 + it.name.size()]; if(count == 1) sprintf(buffer, "Using the last %s...", it.name.c_str()); else sprintf(buffer, "Using one of %d %s...", count, it.pluralName.c_str()); player->sendTextMessage(MSG_INFO_DESCR, buffer); } Em npc.cpp: Procure: li.itemId = intValue; Embaixo adicione: const ItemType& it = Item::items[li.itemId]; Também procure: if(readXMLInteger(tmpNode, "subtype", intValue)) li.subType = intValue; Embaixo adicione: else { if(it.stackable) li.subType = 1; else if(it.isFluidContainer() || it.isSplash()) li.subType = 0; } Em item.cpp: Procure: s << "("; if(!it.runeSpellName.empty()) s << "\"" << it.runeSpellName << "\", "; s << "Charges:" << subType <<")"; Embaixo adicione: if(!it.runeSpellName.empty()) s << "(\"" << it.runeSpellName << "\")"; Em luascript.cpp: Procure por: //getCreatureHealth(cid) lua_register(m_luaState, "getCreatureHealth", LuaScriptInterface::luaGetCreatureHealth); Embaixo adicione: //getItemParent(uid) lua_register(m_luaState, "getItemParent", LuaScriptInterface::luaGetItemParent); Também procure por: int32_t LuaScriptInterface::luaGetCreatureHealth(lua_State* L) { //getCreatureHealth(cid) ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) lua_pushnumber(L, creature->getHealth()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Substitua por: int32_t LuaScriptInterface::luaGetItemParent(lua_State* L) { //getItemParent(uid) ScriptEnviroment* env = getEnv(); Item* item = env->getItemByUID(popNumber(L)); if(!item) { errorEx(getError(LUA_ERROR_ITEM_NOT_FOUND)); lua_pushnil(L); return 1; } Item* container = item->getParent()->getItem(); pushThing(L, container, env->addThing(container)); return 1; } Em luascript.h: Procure por: static int32_t luaDoRemoveItem(lua_State* L); Embaixo adicione: static int32_t luaGetItemParent(lua_State* L); Pasta Data: Na pasta data\actions\scripts\liquids\potions.lua: Delete tudo e adicione: local config = { removeOnUse = "no", usableOnTarget = "yes", -- can be used on target? (fe. healing friend) splashable = "no", realAnimation = "no", -- make text effect visible only for players in range 1x1 healthMultiplier = 1.0, manaMultiplier = 1.0 } config.removeOnUse = getBooleanFromString(config.removeOnUse) config.usableOnTarget = getBooleanFromString(config.usableOnTarget) config.splashable = getBooleanFromString(config.splashable) config.realAnimation = getBooleanFromString(config.realAnimation) local POTIONS = { [8704] = {empty = 7636, splash = 2, health = {50, 100}}, -- small health potion [7618] = {empty = 7636, splash = 2, health = {100, 200}}, -- health potion [7588] = {empty = 7634, splash = 2, health = {200, 400}, level = 50, vocations = {3, 4, 7, 8}, vocStr = "knights and paladins"}, -- strong health potion [7591] = {empty = 7635, splash = 2, health = {500, 700}, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion [8473] = {empty = 7635, splash = 2, health = {800, 1000}, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion [7620] = {empty = 7636, splash = 7, mana = {70, 130}}, -- mana potion [7589] = {empty = 7634, splash = 7, mana = {110, 190}, level = 50, vocations = {1, 2, 3, 5, 6, 7}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion [7590] = {empty = 7635, splash = 7, mana = {200, 300}, level = 80, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- great mana potion [8472] = {empty = 7635, splash = 3, health = {200, 400}, mana = {110, 190}, level = 80, vocations = {3, 7}, vocStr = "paladins"} -- great spirit potion } local exhaust = createConditionObject(CONDITION_EXHAUST) setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100)) function onUse(cid, item, fromPosition, itemEx, toPosition) local potion = POTIONS[item.itemid] if(not potion) then return false end if(not isPlayer(itemEx.uid) or (not config.usableOnTarget and cid ~= itemEx.uid)) then if(not config.splashable) then return false end if(toPosition.x == CONTAINER_POSITION) then toPosition = getThingPos(item.uid) end doDecayItem(doCreateItem(2016, potion.splash, toPosition)) doTransformItem(item.uid, potion.empty) return true end if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED) return true end if(((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid)))) and not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) then doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_ORANGE_1) return true end local health = potion.health if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.healthMultiplier))) then return false end local mana = potion.mana if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.manaMultiplier))) then return false end doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE) if(not realAnimation) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1) else for i, tid in ipairs(getSpectators(getCreaturePosition(cid), 1, 1)) do if(isPlayer(tid)) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid) end end end doAddCondition(cid, exhaust) local v = getItemParent(item.uid) if(not potion.empty or config.removeOnUse) then return true end if fromPosition.x == CONTAINER_POSITION then for _, slot in ipairs({CONST_SLOT_LEFT, CONST_SLOT_RIGHT, CONST_SLOT_AMMO}) do local tmp = getPlayerSlotItem(cid, slot) if tmp.itemid == potion.empty and tmp.type < 100 then doChangeTypeItem(item.uid, item.type - 1) return getPlayerFreeCap(cid) >= getItemInfo(potion.empty).weight and doChangeTypeItem(tmp.uid, tmp.type + 1) or doPlayerAddItem(cid, potion.empty, 1) end end else doChangeTypeItem(item.uid, item.type - 1) doCreateItem(potion.empty, 1, fromPosition) return true end if v.uid == 0 then if item.type == 1 and isInArray({CONST_SLOT_LEFT, CONST_SLOT_RIGHT, CONST_SLOT_AMMO}, fromPosition.y) then doTransformItem(item.uid, potion.empty) else -- serversided autostack should take care of this doPlayerAddItem(cid, potion.empty, 1) doChangeTypeItem(item.uid, item.type - 1) end return true else doChangeTypeItem(item.uid, item.type - 1) local size = getContainerSize(v.uid) for i = 0, size-1 do local tmp = getContainerItem(v.uid, i) if tmp.itemid == potion.empty and tmp.type < 100 then return getPlayerFreeCap(cid) >= getItemInfo(potion.empty).weight and doChangeTypeItem(tmp.uid, tmp.type + 1) or doPlayerAddItem(cid, potion.empty, 1) end end if getContainerSize(v.uid) < getContainerCap(v.uid) then doAddContainerItem(v.uid, potion.empty) else doPlayerAddItem(cid, potion.empty, 1) end end return true end Na pasta data\lib\000-constant.lua: Procure maleOutfits = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325, 328, 335} femaleOutfits = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324, 329, 336} Subistitua por: maleOutfits = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325, 328, 335, 367} femaleOutfits = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324, 329, 336, 366} Em Data\xml\outfit.xml: Delete tudo e Adicione <?xml version="1.0"?> <outfits> <outfit id="1"> <list gender="0" lookType="136" name="Citizen"/> <list gender="1" lookType="128" name="Citizen"/> </outfit> <outfit id="2"> <list gender="0" lookType="137" name="Hunter"/> <list gender="1" lookType="129" name="Hunter"/> </outfit> <outfit id="3"> <list gender="0" lookType="138" name="Mage"/> <list gender="1" lookType="130" name="Mage"/> </outfit> <outfit id="4"> <list gender="0" lookType="139" name="Knight"/> <list gender="1" lookType="131" name="Knight"/> </outfit> <outfit id="5" premium="yes"> <list gender="0" lookType="140" name="Noblewoman"/> <list gender="1" lookType="132" name="Nobleman"/> </outfit> <outfit id="6" premium="yes"> <list gender="0" lookType="141" name="Summoner"/> <list gender="1" lookType="133" name="Summoner"/> </outfit> <outfit id="7" premium="yes"> <list gender="0" lookType="142" name="Warrior"/> <list gender="1" lookType="134" name="Warrior"/> </outfit> <outfit id="8" premium="yes"> <list gender="0" lookType="147" name="Barbarian"/> <list gender="1" lookType="143" name="Barbarian"/> </outfit> <outfit id="9" premium="yes"> <list gender="0" lookType="148" name="Druid"/> <list gender="1" lookType="144" name="Druid"/> </outfit> <outfit id="10" premium="yes"> <list gender="0" lookType="149" name="Wizard"/> <list gender="1" lookType="145" name="Wizard"/> </outfit> <outfit id="11" premium="yes"> <list gender="0" lookType="150" name="Oriental"/> <list gender="1" lookType="146" name="Oriental"/> </outfit> <outfit id="12" premium="yes"> <list gender="0" lookType="155" name="Pirate"/> <list gender="1" lookType="151" name="Pirate"/> </outfit> <outfit id="13" premium="yes"> <list gender="0" lookType="156" name="Assassin"/> <list gender="1" lookType="152" name="Assassin"/> </outfit> <outfit id="14" premium="yes"> <list gender="0" lookType="157" name="Beggar"/> <list gender="1" lookType="153" name="Beggar"/> </outfit> <outfit id="15" premium="yes"> <list gender="0" lookType="158" name="Shaman"/> <list gender="1" lookType="154" name="Shaman"/> </outfit> <outfit id="16" premium="yes"> <list gender="0" lookType="252" name="Norsewoman"/> <list gender="1" lookType="251" name="Norseman"/> </outfit> <outfit id="17" premium="yes"> <list gender="0" lookType="269" name="Nightmare"/> <list gender="1" lookType="268" name="Nightmare"/> </outfit> <outfit id="18" premium="yes"> <list gender="0" lookType="270" name="Jester"/> <list gender="1" lookType="273" name="Jester"/> </outfit> <outfit id="19" premium="yes"> <list gender="0" lookType="279" name="Brotherhood"/> <list gender="1" lookType="278" name="Brotherhood"/> </outfit> <outfit id="20" premium="yes"> <list gender="0" lookType="288" name="Demonhunter"/> <list gender="1" lookType="289" name="Demonhunter"/> </outfit> <outfit id="21" premium="yes"> <list gender="0" lookType="324" name="Yalaharian"/> <list gender="1" lookType="325" name="Yalaharian"/> </outfit> <outfit id="22" premium="yes"> <list gender="0" lookType="336" name="Warmaster"/> <list gender="1" lookType="335" name="Warmaster"/> </outfit> <outfit id="23" default="0"> <list gender="0" lookType="329" name="Wife"/> <list gender="1" lookType="328" name="Husband"/> </outfit> <outfit id="24" premium="yes"> <list gender="0" lookType="366" name="Wayfarer"/> <list gender="1" lookType="367" name="Wayfarer"/> </outfit> </outfits> Em data\items\items.xml: Delete onde estão configurada as runas a seguinte linha (Em Todas) <attribute key="charges" value="x" /> X: Qualquer numero Arquivos para procurar e repassar: Bom gente eu não gravei como era o antigo desse então procure uma frase e repasse Em container.cpp: Procure e repasse: Cylinder* Container::__queryDestination(int32_t& index, const Thing* thing, Item** destItem, uint32_t&) { if(index == 254 /*move up*/) { index = INDEX_WHEREEVER; *destItem = NULL; Container* parentContainer = dynamic_cast<Container*>(getParent()); if(parentContainer) return parentContainer; return this; } else if(index == 255 /*add wherever*/){ index = INDEX_WHEREEVER; *destItem = NULL; } else if(index >= (int32_t)capacity()){ /* if you have a container, maximize it to show all 20 slots then you open a bag that is inside the container you will have a bag with 8 slots and a "grey" area where the other 12 slots where from the container if you drop the item on that grey area the client calculates the slot position as if the bag has 20 slots */ index = INDEX_WHEREEVER; *destItem = NULL; } const Item* item = thing->getItem(); if(item == NULL){ return this; } if(item->isStackable()){ if(item->getParent() != this){ //try find a suitable item to stack with uint32_t n = 0; for(ItemList::iterator cit = itemlist.begin(); cit != itemlist.end(); ++cit){ if((*cit) != item && (*cit)->getID() == item->getID() && (*cit)->getItemCount() < 100){ *destItem = (*cit); index = n; return this; } ++n; } } } if(index != INDEX_WHEREEVER){ Thing* destThing = __getThing(index); if(destThing) *destItem = destThing->getItem(); Cylinder* subCylinder = dynamic_cast<Cylinder*>(*destItem); if(subCylinder){ index = INDEX_WHEREEVER; *destItem = NULL; return subCylinder; } } return this; } Em item.cpp: Procure e repasse: void Item::setDefaultSubtype() { setItemCount(1); const ItemType& it = items[id]; if(it.charges) setCharges(it.charges); } Em player.cpp: Procure e repasse: Cylinder* Player::__queryDestination(int32_t& index, const Thing* thing, Item** destItem, uint32_t& flags) { if(index == 0 /*drop to capacity window*/ || index == INDEX_WHEREEVER){ *destItem = NULL; const Item* item = thing->getItem(); if(item == NULL){ return this; } //find an appropiate slot std::list<Container*> containerList; for(int i = SLOT_FIRST; i < SLOT_LAST; ++i){ Item* inventoryItem = inventory[i]; if(inventoryItem == tradeItem){ continue; } if(inventoryItem == tradeItem){ continue; } if(inventoryItem){ //try find an already existing item to stack with if(inventoryItem != item && item->isStackable() && inventoryItem->getID() == item->getID() && inventoryItem->getItemCount() < 100){ *destItem = inventoryItem; index = i; return this; } //check sub-containers else if(Container* subContainer = inventoryItem->getContainer()){ Cylinder* tmpCylinder = NULL; int32_t tmpIndex = INDEX_WHEREEVER; Item* tmpDestItem = NULL; tmpCylinder = subContainer->__queryDestination(tmpIndex, item, &tmpDestItem, flags); if(tmpCylinder && tmpCylinder->__queryAdd(tmpIndex, item, item->getItemCount(), flags) == RET_NOERROR){ index = tmpIndex; *destItem = tmpDestItem; return tmpCylinder; } containerList.push_back(subContainer); } } //empty slot else if(__queryAdd(i, item, item->getItemCount(), flags) == RET_NOERROR){ index = i; *destItem = NULL; return this; } } //check deeper in the containers for(std::list<Container*>::iterator it = containerList.begin(); it != containerList.end(); ++it){ for(ContainerIterator iit = (*it)->begin(); iit != (*it)->end(); ++iit){ if(Container* subContainer = (*iit)->getContainer()){ if(subContainer == tradeItem){ continue; } Cylinder* tmpCylinder = NULL; int32_t tmpIndex = INDEX_WHEREEVER; Item* tmpDestItem = NULL; tmpCylinder = subContainer->__queryDestination(tmpIndex, item, &tmpDestItem, flags); if(tmpCylinder && tmpCylinder->__queryAdd(tmpIndex, item, item->getItemCount(), flags) == RET_NOERROR){ index = tmpIndex; *destItem = tmpDestItem; return tmpCylinder; } } } } return this; } Thing* destThing = __getThing(index); if(destThing) *destItem = destThing->getItem(); Cylinder* subCylinder = dynamic_cast<Cylinder*>(destThing); if(subCylinder){ index = INDEX_WHEREEVER; *destItem = NULL; return subCylinder; } else return this; } Downloads: Items.otb (8.6): Clique Aqui Items.xml (8.6): Clique aqui Creditos á: darkhaos - Sources Tauku - Sources BlueSilver - Sources Doidin - Data Cykotitan (O do xtibia) - Sources/Data Eu - Data/Sources Outros - Data/Sources Tutorial atualizado: 24/09/2010 Agora Funciona 99,9% perfeito (deve estar faltando um detalhe ou outro) Recomendo fazer tudo o que está mandando para não ocorrer erros1 ponto -
Mensagens Automáticas! Fala galerinha XTibiana, Bom agora são exatamente 03:30 da manha e eu estou sem po** nenhuma pra fazer.. =) Então resolvi fazer um sisteminha de mensagens automaticas para por no seu servidor, ele é bem simples porem bastante usado! :forward: O sistema funciona assim, você poem 5 frases e elas serão mostradas uma por uma aleatoriamente no seu servidor... Vamos aos scripts: Vá até a pasta "globalevents" entre na pasta "scripts" e faça um script chamado "mensagem.lua" e coloque este código dentro: -- [( Script created by Doidin for XTibia.com )] -- function onThink(interval, lastExecution) MENSAGEM = { "FRASE 1", "FRASE 2", "FRASE 3", "FRASE 4", "FRASE 5", } doBroadcastMessage(MENSAGEM[math.random(1,#MENSAGEM)],22) return TRUE end FRASE = Substitua pela frase que você quiser... Agora volte a pasta "globalevents" e abra o arquivo "globalevents.xml" e adicione esta tag: <globalevent name="mensagem" interval="500" script="mensagem.lua"/> Pronto agora você tem mensagens automáticas no seu servidor! =) Abraços...1 ponto
-
Quick-List Oque é uma quick-list ? R- é uma lista com os melhores tópicos da area em um só. Download OTServers 8.62 The Crystal Server V0.2.0 Sleeper Map 0.6 Download OTServers 8.61 We Do Server 0.1.2 Download OTServers 8.6 Mix Yourots 1.0.0 Alissow Ots 4.11 [11/07/2010] 8.6 Completo! Snowz Thyrania 3.1 The Forgotten Server (Crying Damson) Real Server 3.2 The Subwat® Riot Server Baiak Yurots Download Utilitários 8.6 até 8.62 Tibia Client 8.6 Comedinha IPChanger Tirus Ip-Changer Asprate's Multi Ip Changer atenção: apenas tópicos e ots confiantes estarei postando, NENHUM servidor que eu postar aqui na lista, tera virus, portanto, não adianta vir falando: tem virus em tal ot, porque eu passo scan em todos e revejo. ao longo do tempo. iremos adicionando mais downloads...até!1 ponto
-
Entendendo scripts da Pasta Data Nessa Serie de Tutoriais vou explicar e faze-los entender a base dos scripts em lua e xml. Desde você que não sabe nada de scripts e você que está num estagio médio A idéia aqui é você aprender e saber o que e não pode fazer, já que a criatividade é sua parte Esses tutoriais serão divididos em 14 partes, começando a explicar o if, else até os esquemas mais avançados. A vantagem daqui é que você poderá testar seus scripts no otserver e sabendo o que deve fazer fica mais fácil do que fazer coisas a esmo... Lembrando que você não ficará expert em LUA e sim em scripts de Otserver. Links em negrito já estão prontos ! A divisão é : Tutoriais Parte I – Básico do básico de Lua Parte II – Funções Lua Parte III - Monstros Parte IV - Raids Parte V - Intermediario de Lua Parte VI - Spells e suas grandes funções Parte VII – Actions Parte VIII – Movements Parte IX – A magia dos NPCS Parte X – Mega Quests Parte XI – Itens e grandes idéias Parte XII – Vocations e outfits Parte XIII –Sqlite no Forgotten Server Provas : Prova I - Script em Actions Tutoriais baseados no The Forgotten Server 0.3.0 Alpha 4 +. Use essa que por enquanto é a melhor distro disponivel Um pouco sabe os tutoriais não feitos: Talk Actions : Será um grande tutorial ensinando como utilizar a maravilha das talk actions. Mega Quests: Ensinará a fazer quests que incluem actions, movements,npcs, talk actions e algumas ideias e possibilidades. Darei como exemplo a segunda maior quest do meu ot caseiro. E ainda um tutorial completo de como usar o Quest Log. items e Grandes ideias: Ensinará como criar novas armas, itens para quest, tudo isso simples e facil, o que fará de seu ot muito especial. Poderá e haverá mais coisas que na hora lembrarei. Isso é só um aperitivo1 ponto
-
Ponte Do Univer
darkmu reagiu a SkyDangerous por um tópico no fórum
Ponte do Univer Observação: HAIL ~~ , Bom essa ponte que eu fiz peguei pequenas ideias de um mapa , ficou totalmente diferente , mais os créditos não são 100% a mim , e sim 10% dono que eu vi o mapa. Mais acho que ta valendo , pois o meu ta muito diferente do dele . Espero que gostei Screen Shoots: Observão que não existe nemhum pilar em baixo da ponte .. é que eu adicionei dps Download: Download Via Speedyshare Gostou??? GIVE REP + NÃO ESQUEÇAM DE COMENTAR SCAN:1 ponto -
Casar No Tibia Um casal pode se casar se ambos forem ao NPC Lynda() em Thais. O casal precisará de 2 Wedding Outfit Box( ) e 2 Wedding Ring(). Ambos tem que ter em suas backpacks um Wedding Outfit Box e um Wedding Ring. Não há requerimento de level e nem premium account para se casar. Depois de casados, ambos irão receber seu Engraved Wedding Ring() e o Wedding Outfits( ). Também poderão viajar para Meluna para curtir a lua-de-mel. Falas Player 1: Hello Lynda(): Welcome in the name of the gods, pilgrim [Nome do noivo(a)]! Player 1: Marriage Lynda(): You want me to initiate a marriage ceremony? Player 1: Yes Lynda(): In the Name of the Gods of good, I ask thee, if both of you are prepared and ready! Player 1: Yes Lynda(): Silence please! I hereby invoke the attention of the eternal powers looking over our souls and lives. May the gods bless us! Player 1: May the gods bless us Lynda(): I ask thee, [Nome do noivo(a)], will you honor your groom and stay at his side even in the darkest hours life could bring upon you? Player 1: Yes Lynda(): So by the powers of the gods your soul is now bound to your groom. Groom, step forward and tell me to whom your heart belongs! Player 2: My heart belongs to <nome da noivo(a)> Lynda(): I ask thee, <nome do noivo(a)>, will you honor your bride and stay at her side even in the darkest hours life could bring upon you? Player 2: Yes Lynda(): So by the powers of the gods your souls are now bound together for eternity. May the gods watch with grace over your further life as a married couple. Go now and celebrate your marriage! Pedindo o divórcio Caso você tenha problemas com seu parceiro(a), você pode pedir o divórcio, pagando por uma quantia. Existem duas opções de NPCs que fazem o divórcio: Lugri em Thais (10k) ou Brewster em Port Hope (5k). Créditos luisfe23 TibiaWiki Gostou? REP+++ Abraços e até o próximo tutorial...1 ponto
-
Qui boom. É tenso isso de ripping, cada um tem um ponto de vista, mas sei la, se não ripparem agora riparão mais tarde, é a vida ;x E hoje em dia a maioria das pessoas nem querem mais saber se é ripping ou não, podemos citar como exemplo o server Pokemon online da svke team e o Kingdom Age. Mas realmente, estranho você querer vender o monstro deste geito, está praticamente só no outline Oo' mas sei la, acho que não vai desvalorizar tanto assim o projeto... hoje em dia é dificil encontrar servers com sprites editados que não tenham ao menos uns 4~5 rippados. Porém isto não deicha de ser feio. Mas ninguem (que for jogar) vai ligar G_G' tenso. Cya! @edit COMO DISSE, SE ACHA QUE VAI USAR MINHA SPRITE, USE PARA ENFIAR NA BUNDA, APROVEITA QUE É 128X128, DO JEITO QUE VOCÊ GOSTA. AUAHUAHUAHAUHAUHAUAUAHUAHAHAUAH'1 ponto
-
Você cometeu um erro na primeira magia, Você não precisa usar a função onTargetTile e as variáveis acombat (1, 2 e etc...), pois pelo que percebi você está usando um efeito normal e não um efeito de animação. Então o script ficaria assim: local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -4.0, -57, -1.0, -160) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -6.0, -57, -1.0, -100) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -6.0, -57, -1.0, -100) local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat4, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -6.0, -57, -1.0, -100) local combat5 = createCombatObject() setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat5, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -6.0, -57, -1.0, -100) local combat6 = createCombatObject() setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat6, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -6.0, -57, -1.0, -100) arr1 = { {1, 0, 0}, {0, 2, 0}, {0, 0, 0}, } arr2 = { {0, 1, 0}, {0, 2, 0}, {0, 0, 0}, } arr3 = { {0, 0, 1}, {0, 2, 0}, {0, 0, 0}, } arr4 = { {0, 0, 1}, {0, 2, 0}, {0, 0, 0}, } arr5 = { {0, 1, 0}, {0, 2, 0}, {0, 0, 0}, } arr6 = { {1, 0, 0}, {0, 2, 0}, {0, 0, 0}, } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) local area3 = createCombatArea(arr3) local area4 = createCombatArea(arr4) local area5 = createCombatArea(arr5) local area6 = createCombatArea(arr6) setCombatArea(combat1, area1) setCombatArea(combat2, area2) setCombatArea(combat3, area3) setCombatArea(combat4, area4) setCombatArea(combat5, area5) setCombatArea(combat6, area6) local function onCastSpell1(parameters) doCombat(parameters.cid, combat1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, combat2, parameters.var) end local function onCastSpell3(parameters) doCombat(parameters.cid, combat3, parameters.var) end local function onCastSpell4(parameters) doCombat(parameters.cid, combat4, parameters.var) end local function onCastSpell5(parameters) doCombat(parameters.cid, combat5, parameters.var) end local function onCastSpell6(parameters) doCombat(parameters.cid, combat6, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 250, parameters) addEvent(onCastSpell3, 400, parameters) addEvent(onCastSpell4, 550, parameters) addEvent(onCastSpell5, 700, parameters) addEvent(onCastSpell6, 850, parameters) return TRUE end Verei como fazer os dois próximos scripts, se encontrar uma maneira, te contactarei.1 ponto
-
O RedSkull é porque eu estou sendo perseguido... Mais no caso, o brasileiro (no tibia) é ele, ou seja, brasileiro já tem má fama, ainda com esse simbolo de "assassino". Ai ele está perseguindo e não sendo perseguido. Melhore no portugues, é SENDO e não CENDO / PERSEGUIDO e não PERCEGUIDO / brasileiro não é raça, e sim nacionalidade / Aumentar e não Almentar. Para De Escrever Assim. Monstro muito simples, REPROVADO (O TOPICO E O MONSTRO)1 ponto
-
Pode haver alguma alteração irregular na spells.xml Como não dá para saber o erro, sem saber o que tem no seu spells.xml, vou colocar um pronto, basta ctrl+c & ctrl+v <?xml version="1.0" encoding="UTF-8"?> <spells> <!-- Attack Runes --> <rune name="Poison Field" id="2285" allowfaruse="1" charges="3" lvl="14" maglv="0" exhaustion="1000" blocktype="solid" script="attack/poison field.lua"/> <rune name="Poison Bomb" id="2286" allowfaruse="1" charges="2" lvl="25" maglv="4" exhaustion="1000" blocktype="solid" script="attack/poison bomb.lua"/> <rune name="Poison Wall" id="2289" allowfaruse="1" charges="4" lvl="29" maglv="5" exhaustion="1000" blocktype="solid" script="attack/poison wall.lua"/> <rune name="Fire Field" id="2301" allowfaruse="1" charges="3" lvl="15" maglv="1" exhaustion="1000" blocktype="solid" script="attack/fire field.lua"/> <rune name="Firebomb" id="2305" allowfaruse="1" charges="2" lvl="27" maglv="5" exhaustion="1000" blocktype="solid" script="attack/fire bomb.lua"/> <rune name="Fire Wall" id="2303" allowfaruse="1" charges="4" lvl="33" maglv="6" exhaustion="1000" blocktype="solid" script="attack/fire wall.lua"/> <rune name="Soulfire" id="2308" allowfaruse="1" charges="3" lvl="27" maglv="7" exhaustion="1000" needtarget="1" blocktype="solid" script="attack/soul fire.lua"/> <rune name="Fireball" id="2302" allowfaruse="1" charges="5" lvl="27" maglv="4" exhaustion="1000" needtarget="1" blocktype="solid" script="attack/fireball.lua"/> <rune name="Great Fireball" id="2304" allowfaruse="1" charges="4" lvl="30" maglv="4" exhaustion="1000" blocktype="solid" script="attack/great fireball.lua"/> <rune name="Energy Field" id="2277" allowfaruse="1" charges="3" lvl="18" maglv="3" exhaustion="1000" blocktype="solid" script="attack/energy field.lua"/> <rune name="Energybomb" id="2262" allowfaruse="1" charges="2" lvl="37" maglv="10" exhaustion="1000" blocktype="solid" script="attack/energy bomb.lua"/> <rune name="Energy Wall" id="2279" allowfaruse="1" charges="4" lvl="41" maglv="9" exhaustion="1000" blocktype="solid" script="attack/energy wall.lua"/> <rune name="Light Magic Missile" id="2287" allowfaruse="1" charges="10" lvl="15" exhaustion="1000" maglv="0" needtarget="1" blocktype="solid" script="attack/light magic missile.lua"/> <rune name="Heavy Magic Missile" id="2311" allowfaruse="1" charges="10" lvl="25" exhaustion="1000" maglv="3" needtarget="1" blocktype="solid" script="attack/heavy magic missile.lua"/> <rune name="Explosion" id="2313" allowfaruse="1" charges="6" lvl="31" maglv="6" exhaustion="1000" blocktype="solid" script="attack/explosion.lua"/> <rune name="Sudden Death" id="2268" allowfaruse="1" charges="3" lvl="45" maglv="15" exhaustion="800" needtarget="1" blocktype="solid" script="attack/sudden death.lua"/> <rune name="Icicle" id="2271" allowfaruse="1" charges="5" lvl="28" maglv="4" exhaustion="1000" needtarget="1" script="attack/icicle.lua"/> <rune name="Avalanche" id="2274" allowfaruse="1" charges="4" lvl="30" maglv="4" exhaustion="1000" script="attack/avalanche.lua"/> <rune name="Stone Shower" id="2288" allowfaruse="1" charges="4" lvl="28" maglv="4" exhaustion="1000" script="attack/stone shower.lua"/> <rune name="Thunderstorm" id="2315" allowfaruse="1" charges="4" lvl="28" maglv="4" exhaustion="1000" script="attack/thunderstorm.lua"/> <rune name="Stalagmite" id="2292" allowfaruse="1" charges="10" lvl="24" maglv="3" exhaustion="2000" needtarget="1" script="attack/stalagmite.lua"/> <rune name="Holy Missile" id="2295" allowfaruse="1" charges="5" lvl="27" maglv="4" exhaustion="1000" needtarget="1" blocktype="solid" script="attack/holy missile.lua"> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </rune> <!-- Healing Runes --> <rune name="Antidote Rune" id="2266" allowfaruse="1" charges="1" lvl="15" maglv="0" exhaustion="1000" aggressive="0" needtarget="1" blocktype="solid" script="healing/antidote rune.lua"/> <rune name="Intense Healing Rune" id="2265" allowfaruse="1" charges="1" lvl="15" maglv="1" exhaustion="1000" aggressive="0" needtarget="1" blocktype="solid" script="healing/intense healing rune.lua"/> <rune name="Ultimate Healing Rune" id="2273" allowfaruse="1" charges="1" lvl="24" maglv="4" exhaustion="1200" aggressive="0" needtarget="1" blocktype="solid" script="healing/ultimate healing rune.lua"/> <!-- Summon Runes --> <rune name="Convince Creature" id="2290" allowfaruse="1" charges="1" lvl="16" maglv="5" exhaustion="2000" needtarget="1" blocktype="solid" function="convince"/> <rune name="Animate Dead" id="2316" allowfaruse="1" charges="1" lvl="27" maglv="4" exhaustion="2000" blocktype="solid" script="summon/animate dead rune.lua"/> <!-- Support Runes --> <rune name="Desintegrate" id="2310" allowfaruse="0" charges="3" lvl="21" maglv="4" exhaustion="2000" range="5" script="support/desintegrate rune.lua"/> <rune name="Destroy Field" id="2261" allowfaruse="1" charges="3" lvl="17" maglv="3" exhaustion="1000" aggressive="0" range="5" script="support/destroy field rune.lua"/> <rune name="Chameleon" id="2291" allowfaruse="1" charges="1" lvl="27" maglv="4" exhaustion="1000" aggressive="0" selftarget="1" blocktype="solid" function="chameleon"/> <rune name="Magic Wall" id="2293" allowfaruse="1" charges="3" lvl="32" maglv="9" exhaustion="1500" blocktype="all" script="support/magic wall rune.lua"/> <rune name="Wild Growth" id="2269" allowfaruse="1" charges="2" lvl="27" maglv="8" exhaustion="1500" blocktype="all" script="support/wild growth rune.lua"> <vocation name="Druid" showInDescription="0"/> <vocation name="Elder Druid" showInDescription="0"/> </rune> <rune name="Paralyze" id="2278" allowfaruse="1" charges="1" lvl="54" maglv="18" exhaustion="1000" needtarget="1" blocktype="solid" script="support/paralyze rune.lua"> <vocation name="Druid" showInDescription="0"/> <vocation name="Elder Druid" showInDescription="0"/> <vocation name="Sorcerer"/> showInDescription="0"/> <vocation name="Master Sorcerer"/> showInDescription="0"/> </rune> <!-- Attack Spells --> <instant name="Death Strike" words="exori mort" lvl="16" mana="20" prem="0" range="5" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" script="attack/death strike.lua"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> <vocation name="Druid"/> <vocation name="Elder Druid"/> </instant> <instant name="Flame Strike" words="exori flam" lvl="12" mana="20" prem="0" range="5" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" script="attack/flame strike.lua"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </instant> <instant name="Energy Strike" words="exori vis" lvl="12" mana="20" prem="0" range="5" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" script="attack/energy strike.lua"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </instant> <instant name="Whirlwind Throw" words="exori hur" lvl="15" mana="40" prem="0" range="5" needtarget="1" blockwalls="1" needweapon="1" exhaustion="2000" needlearn="0" script="attack/whirlwind throw.lua"> <vocation name="Knight"/> <vocation name="Elite Knight"/> </instant> <instant name="Fire Wave" words="exevo flam hur" lvl="18" mana="25" direction="0" exhaustion="2000" needlearn="0" script="attack/fire wave.lua"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> </instant> <instant name="Ethereal Spear" words="exori con" lvl="23" mana="35" prem="0" range="5" needtarget="1" exhaustion="2000" blockwalls="1" needlearn="0" script="attack/ethereal spear.lua"> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </instant> <instant name="Energy Beam" words="exevo vis lux" lvl="23" mana="40" direction="1" exhaustion="2000" needlearn="0" script="attack/energy beam.lua"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> </instant> <instant name="Great Energy Beam" words="exevo gran vis lux" lvl="29" mana="110" direction="1" exhaustion="2000" needlearn="0" script="attack/great energy beam.lua"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> </instant> <instant name="Groundshaker" words="exori mas" lvl="33" mana="160" prem="0" needweapon="1" exhaustion="2000" needlearn="0" script="attack/groundshaker.lua"> <vocation name="Knight"/> <vocation name="Elite Knight"/> </instant> <instant name="Berserk" words="exori" lvl="35" mana="115" prem="0" needweapon="1" exhaustion="2000" needlearn="0" script="attack/berserk.lua"> <vocation name="Knight"/> <vocation name="Elite Knight"/> </instant> <instant name="Energy Wave" words="exevo vis hur" lvl="38" mana="170" direction="1" exhaustion="2000" needlearn="0" script="attack/energy wave.lua"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> </instant> <instant name="Rage of the Skies" words="exevo gran mas vis" lvl="55" mana="650" selftarget="1" prem="0" exhaustion="2000" needlearn="0" script="attack/rage of the skies.lua"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> </instant> <instant name="Fierce Berserk" words="exori gran" lvl="70" mana="340" prem="0" needweapon="1" exhaustion="2000" needlearn="0" script="attack/fierce berserk.lua"> <vocation name="Knight"/> <vocation name="Elite Knight"/> </instant> <instant name="Hells Core" words="exevo gran mas flam" lvl="60" mana="1200" prem="0" exhaustion="2000" selftarget="1" needlearn="0" script="attack/hells core.lua"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> </instant> <instant name="Divine Missile" words="exori san" lvl="40" mana="20" prem="0" range="4" casterTargetOrDirection="1" needlearn="0" blockwalls="1" exhaustion="2000" script="attack/divine missile.lua"> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </instant> <instant name="Divine Caldera" words="exevo mas san" lvl="50" mana="160" prem="0" selftarget="1" exhaustion="2000" needlearn="0" script="attack/divine caldera.lua"> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </instant> <instant name="Eternal Winter" words="exevo gran mas frigo" lvl="60" mana="1200" prem="0" selftarget="1" exhaustion="2000" needlearn="0" script="attack/eternal winter.lua"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </instant> <instant name="Ice Strike" words="exori frigo" lvl="15" mana="20" prem="0" range="5" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" script="attack/ice strike.lua"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> <vocation name="Druid"/> <vocation name="Elder Druid"/> </instant> <instant name="Ice Wave" words="exevo frigo hur" lvl="18" mana="25" direction="1" exhaustion="2000" needlearn="0" script="attack/ice wave.lua"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </instant> <instant name="Terra Strike" words="exori tera" lvl="13" mana="20" prem="0" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" script="attack/terra strike.lua"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> <vocation name="Druid"/> <vocation name="Elder Druid"/> </instant> <instant name="Terra Wave" words="exevo tera hur" lvl="38" mana="210" direction="1" exhaustion="2000" needlearn="0" script="attack/terra wave.lua"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </instant> <instant name="Wrath of Nature" words="exevo gran mas tera" lvl="55" mana="770" prem="0" selftarget="1" exhaustion="2000" needlearn="0" script="attack/wrath of nature.lua"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </instant> <!-- Healing Spells --> <instant name="Light Healing" words="exura" lvl="9" mana="20" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="healing/light healing.lua"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Knight"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> <vocation name="Elite Knight"/> </instant> <instant name="Antidote" words="exana pox" lvl="10" mana="30" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="healing/antidote.lua"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Knight"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> <vocation name="Elite Knight"/> </instant> <instant name="Antifire" words="exana flam" lvl="10" mana="30" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="healing/antifire.lua"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Knight"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> <vocation name="Elite Knight"/> </instant> <instant name="Antienergy" words="exana vis" lvl="10" mana="30" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="healing/antienergy.lua"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Knight"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> <vocation name="Elite Knight"/> </instant> <instant name="Intense Healing" words="exura gran" lvl="11" mana="70" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="healing/intense healing.lua"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> </instant> <instant name="Heal Friend" words="exura sio" lvl="18" mana="140" prem="0" aggressive="0" needtarget="1" params="1" exhaustion="2000" needlearn="0" script="healing/heal friend.lua"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </instant> <instant name="Ultimate Healing" words="exura vita" lvl="20" mana="160" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="healing/ultimate healing.lua"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> </instant> <instant name="Mass Healing" words="exura gran mas res" lvl="36" mana="150" prem="0" aggressive="0" exhaustion="1000" needlearn="0" script="healing/mass healing.lua"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </instant> <instant name="Divine Healing" words="exura san" lvl="35" mana="210" prem="0" selftarget="1" aggressive="0" exhaustion="1000" needlearn="0" script="healing/divine healing.lua"> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </instant> <instant name="Wound Cleansing" words="exana mort" lvl="30" mana="65" prem="0" selftarget="1" aggressive="0" exhaustion="1000" needlearn="0" script="healing/wound cleasing.lua"> <vocation name="Knight"/> <vocation name="Elite Knight"/> </instant> <!-- Support Spells --> <instant name="Light" words="utevo lux" lvl="8" mana="20" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="support/light.lua"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Knight"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> <vocation name="Elite Knight"/> </instant> <instant name="Find Person" words="exiva" lvl="8" mana="20" aggressive="0" params="1" exhaustion="1000" needlearn="0" function="searchPlayer"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Knight"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> <vocation name="Elite Knight"/> </instant> <instant name="Magic Rope" words="exani tera" lvl="9" mana="20" prem="0" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="support/magic rope.lua"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Knight"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> <vocation name="Elite Knight"/> </instant> <instant name="Levitate" words="exani hur" lvl="12" mana="50" prem="0" aggressive="0" exhaustion="1000" params="1" needlearn="0" function="Levitate"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Knight"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> <vocation name="Elite Knight"/> </instant> <instant name="Great Light" words="utevo gran lux" lvl="13" mana="60" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="support/great light.lua"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Knight"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> <vocation name="Elite Knight"/> </instant> <instant name="Magic Shield" words="utamo vita" lvl="14" mana="50" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="support/magic shield.lua"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> </instant> <instant name="Haste" words="utani hur" lvl="14" mana="60" prem="0" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="support/haste.lua"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Knight"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> <vocation name="Elite Knight"/> </instant> <instant name="Charge" words="utani tempo hur" lvl="25" mana="100" prem="0" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="support/charge.lua"> <vocation name="Knight"/> <vocation name="Elite Knight"/> </instant> <instant name="Swift Foot" words="utamo tempo san" lvl="55" mana="400" prem="0" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="support/swift foot.lua"> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </instant> <instant name="Challenge" words="exeta res" lvl="20" mana="30" prem="0" aggressive="0" exhaustion="1000" needlearn="0" script="support/challenge.lua"> <vocation name="Elite Knight"/> </instant> <instant name="Strong Haste" words="utani gran hur" lvl="20" mana="100" prem="0" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="support/strong haste.lua"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </instant> <instant name="Creature Illusion" words="utevo res ina" lvl="23" mana="100" aggressive="0" params="1" exhaustion="1000" needlearn="0" function="Illusion"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </instant> <instant name="Ultimate Light" words="utevo vis lux" lvl="26" mana="140" prem="0" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="support/ultimate light.lua"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </instant> <instant name="Cancel Invisibility" words="exana ina" lvl="26" mana="200" prem="0" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="support/cancel invisibility.lua"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> </instant> <instant name="Invisibility" words="utana vid" lvl="35" mana="440" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="support/invisible.lua"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> </instant> <instant name="Sharpshooter" words="utito tempo san" lvl="60" mana="450" prem="0" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="support/sharpshooter.lua"> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </instant> <instant name="Protector" words="utamo tempo" lvl="55" mana="200" prem="0" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="support/protector.lua"> <vocation name="Knight"/> <vocation name="Elite Knight"/> </instant> <instant name="Blood Rage" words="utito tempo" lvl="60" mana="290" prem="0" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="support/blood rage.lua"> <vocation name="Knight"/> <vocation name="Elite Knight"/> </instant> <!-- Party Spells --> <instant name="Train Party" words="utito mas sio" lvl="32" mana="0" prem="0" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="party/train.lua"> <vocation name="Elite Knight"/> </instant> <instant name="Protect Party" words="utamo mas sio" lvl="32" mana="0" prem="0" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="party/protect.lua"> <vocation name="Royal Paladin"/> </instant> <instant name="Heal Party" words="utura mas sio" lvl="32" mana="0" prem="0" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="party/heal.lua"> <vocation name="Elder Druid"/> </instant> <instant name="Enchant Party" words="utori mas sio" lvl="32" mana="0" prem="0" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="party/enchant.lua"> <vocation name="Master Sorcerer"/> </instant> <!-- Summon Spells --> <instant name="Summon Creature" words="utevo res" lvl="25" params="1" exhaustion="2000" needlearn="0" function="summonMonster"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </instant> <instant name="Undead Legion" words="exana mas mort" lvl="30" mana="500" prem="0" exhaustion="2000" needlearn="0" script="summon/undead legion.lua"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </instant> <!-- Conjure Spells --> <conjure name="Conjure Arrow" words="exevo con" lvl="13" mana="100" soul="1" conjureId="2544" conjureCount="10" exhaustion="1000" needlearn="0" function="conjureItem"> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </conjure> <conjure name="Conjure Assassin" words="exevo con san" lvl="80" mana="500" soul="0" conjureId="7368" conjureCount="15" exhaustion="1000" needlearn="0" function="conjureItem"> <vocation name="Royal Paladin"/> </conjure> <conjure name="Food" words="exevo pan" lvl="14" mana="120" soul="1" exhaustion="1000" needlearn="0" function="conjureFood"> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> </conjure> <conjure name="Poisoned Arrow" words="exevo con pox" lvl="16" mana="130" soul="2" conjureId="2545" conjureCount="7" exhaustion="1000" needlearn="0" function="conjureItem"> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </conjure> <conjure name="Conjure Bolt" words="exevo con mort" lvl="17" mana="140" soul="2" prem="0" conjureId="2543" conjureCount="5" exhaustion="1000" needlearn="0" function="conjureItem"> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </conjure> <conjure name="Conjure Sniper Arrow" words="exevo con hur" lvl="24" mana="160" soul="3" prem="0" conjureId="7364" conjureCount="5" exhaustion="1000" needlearn="0" function="conjureItem"> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </conjure> <conjure name="Explosive Arrow" words="exevo con flam" lvl="25" mana="290" soul="3" conjureId="2546" conjureCount="8" exhaustion="1000" needlearn="0" function="conjureItem"> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </conjure> <conjure name="Conjure Piercing Bolt" words="exevo con grav" lvl="33" mana="180" soul="3" prem="0" conjureId="7363" conjureCount="5" exhaustion="1000" needlearn="0" function="conjureItem"> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </conjure> <conjure name="Enchant Staff" words="exeta vis" lvl="41" mana="80" prem="0" conjureId="2433" reagentId="2401" exhaustion="1000" needlearn="0" function="conjureItem"> <vocation name="Master Sorcerer"/> </conjure> <conjure name="Enchant Spear" words="exeta con" lvl="45" mana="350" soul="3" prem="0" conjureId="7367" reagentId="2389" exhaustion="1000" needlearn="0" function="conjureItem"> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </conjure> <conjure name="Power Bolt" words="exevo con vis" lvl="59" mana="800" soul="4" prem="0" conjureId="2547" conjureCount="10" exhaustion="1000" needlearn="0" function="conjureItem"> <vocation name="Royal Paladin"/> </conjure> <conjure name="Poison Field" words="adevo grav pox" lvl="14" mana="200" soul="1" reagentId="2260" conjureId="2285" conjureCount="3" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Light Magic Missile" words="adori min vis" lvl="15" mana="120" soul="1" reagentId="2260" conjureId="2287" conjureCount="10" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Fire Field" words="adevo grav flam" lvl="15" mana="240" soul="1" reagentId="2260" conjureId="2301" conjureCount="3" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Fireball" words="adori flam" lvl="27" mana="460" soul="3" prem="0" reagentId="2260" conjureId="2302" conjureCount="5" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> </conjure> <conjure name="Energy Field" words="adevo grav vis" lvl="18" mana="320" soul="2" reagentId="2260" conjureId="2277" conjureCount="3" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Stalagmite" words="adori tera" lvl="24" mana="400" soul="2" prem="0" reagentId="2260" conjureId="2292" conjureCount="10" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> <vocation name="Druid"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Great Fireball" words="adori mas flam" lvl="30" mana="530" soul="3" reagentId="2260" conjureId="2304" conjureCount="4" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> </conjure> <conjure name="Heavy Magic Missile" words="adori vis" lvl="25" mana="350" soul="2" reagentId="2260" conjureId="2311" conjureCount="10" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> <vocation name="Druid"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Poison Bomb" words="adevo mas pox" lvl="25" mana="520" soul="2" prem="0" reagentId="2260" conjureId="2286" conjureCount="2" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Firebomb" words="adevo mas flam" lvl="27" mana="600" soul="4" reagentId="2260" conjureId="2305" conjureCount="2" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Soulfire" words="adevo res flam" lvl="27" mana="600" soul="3" prem="0" reagentId="2260" conjureId="2308" conjureCount="3" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Blank Rune" words="adori blank" lvl="30" mana="200" soul="0" prem="0" conjureId="2260" conjureCount="1" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </conjure> <conjure name="Poison Wall" words="adevo mas grav pox" lvl="29" mana="640" soul="3" reagentId="2260" conjureId="2289" conjureCount="4" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Explosion" words="adevo mas hur" lvl="31" mana="570" soul="4" reagentId="2260" conjureId="2313" conjureCount="6" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Fire Wall" words="adevo mas grav flam" lvl="33" mana="780" soul="4" reagentId="2260" conjureId="2303" conjureCount="4" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Energybomb" words="adevo mas vis" lvl="37" mana="880" soul="5" prem="0" reagentId="2260" conjureId="2262" conjureCount="2" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> </conjure> <conjure name="Energy Wall" words="adevo mas grav vis" lvl="41" mana="1000" soul="5" reagentId="2260" conjureId="2279" conjureCount="4" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Sudden Death" words="adori gran mort" lvl="45" mana="985" soul="5" reagentId="2260" conjureId="2268" conjureCount="3" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> </conjure> <conjure name="Antidote Rune" words="adana pox" lvl="15" mana="200" soul="1" reagentId="2260" conjureId="2266" conjureCount="1" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Intense Healing Rune" words="adura gran" lvl="15" mana="240" soul="2" reagentId="2260" conjureId="2265" conjureCount="1" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Ultimate Healing Rune" words="adura vita" lvl="24" mana="400" soul="3" reagentId="2260" conjureId="2273" conjureCount="1" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Convince Creature" words="adeta sio" lvl="16" mana="200" soul="3" reagentId="2260" conjureId="2290" conjureCount="1" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Animate Dead" words="adana mort" lvl="27" mana="600" soul="5" prem="0" reagentId="2260" conjureId="2316" conjureCount="1" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Chameleon" words="adevo ina" lvl="27" mana="600" soul="2" reagentId="2260" conjureId="2291" conjureCount="1" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Destroy Field" words="adito grav" lvl="17" mana="120" soul="2" reagentId="2260" conjureId="2261" conjureCount="3" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> </conjure> <conjure name="Desintegrate" words="adito tera" lvl="21" mana="200" soul="3" prem="0" reagentId="2260" conjureId="2310" conjureCount="3" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> </conjure> <conjure name="Magic Wall" words="adevo grav tera" lvl="32" mana="750" soul="5" prem="0" reagentId="2260" conjureId="2293" conjureCount="3" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> </conjure> <conjure name="Wild Growth" words="adevo grav vita" lvl="27" mana="600" soul="5" prem="0" reagentId="2260" conjureId="2269" conjureCount="2" needlearn="0" function="conjureRune"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Paralyze" words="adana ani" lvl="54" mana="1400" soul="3" prem="0" reagentId="2260" conjureId="2278" conjureCount="1" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Icicle" words="adori frigo" lvl="28" mana="460" soul="3" prem="0" reagentId="2260" conjureId="2271" conjureCount="5" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Avalanche" words="adori mas frigo" lvl="30" mana="530" soul="3" reagentId="2260" conjureId="2274" conjureCount="4" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Stone Shower" words="adori mas tera" lvl="28" mana="430" soul="3" prem="0" reagentId="2260" conjureId="2288" conjureCount="4" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Druid"/> <vocation name="Elder Druid"/> </conjure> <conjure name="Thunderstorm" words="adori mas vis" lvl="28" mana="430" soul="3" prem="0" reagentId="2260" conjureId="2315" conjureCount="4" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> </conjure> <conjure name="Holy Missile" words="adori san" lvl="27" mana="350" soul="3" prem="0" reagentId="2260" conjureId="2295" conjureCount="5" exhaustion="1000" needlearn="0" function="conjureRune"> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </conjure> </spells> Abraços1 ponto
-
[Sql] Remote-Control V8.60 (8.5X - 8.60)
Raaaiskaloka reagiu a comedinhasss por um tópico no fórum
Muito Bom!!! Uso, Aprovo e Recomendo Rep ++1 ponto -
[ Scripting Geral ] Chat Vip
glugluguga reagiu a Vodkart por uma questão
broadvip.lua vermelho: Numero da sua Storage talkactions.xml1 ponto -
[Resolvido]Pedido Action Que Ao Usar Presente Se Transforma Em Item
kalanguitooo reagiu a Kydrai por um tópico no fórum
Acho que isso deve da: actions/actions.xml <action itemid="IDDOPRESENTE" event="script" value="present.lua"/> actions/scripts/present.lua function onUse(cid, item, fromPosition, itemEx, toPosition) local items = {2000, 2565, 2156, 1654} -- items que serão sorteados doTransformItem(item.uid, items[math.random(#items)]) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_FIREWORK_RED) -- efeito no player return TRUE end1 ponto