Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 06/11/11 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.2 pontos
-
Sistema De Owner Para Equips.
ChockerrGamer e um outro reagiu a MatheusGlad por um tópico no fórum
Bem o sistema é basicamente isso: Fazer com que so um player possa equipar determinado item. Eu fiquei em duvida se botava ou nao botava para aparecer o nome do owner no item, por isso fiz uma enquete para esse topico, a que vencer eu faço. Youtube: O script esta em mod, voce nao precisa nem mexer no mod. Crie um arquivo.xml na pasta mods do seu ot e nomeie-o de ownersystem (é extremamente importante que o nome seja esse.) e bote esse script: <?xml version="1.0" encoding="UTF-8"?> <mod name="OwnerSystem" enabled="yes" author="MatheusMkalo" credits="Cezar (Patterns)"> <config name="OwnerLib"><![CDATA[ function getSlotIds(tag) local file = "mods/ownersystem.xml" local input = assert(io.open(file)) local content = assert(input:read("*a")) local tag = content:match("(<movevent[^>]*slot=[\"']".. tag .."[\"'][^>]*>)") local itemid = tag:match("itemid=[\"'](.-)[\"']") input:close() return itemid:explode(";") end function writeId(tag, id) local file = "mods/ownersystem.xml" local input = assert(io.open(file)) local content = assert(input:read("*a")) local tag = content:match("(<movevent[^>]*slot=[\"']".. tag .."[\"'][^>]*>)") local itemid = tag:match("itemid=[\"'](.-)[\"']") input:close() if(itemid:match(tostring(id))) then return true end if(itemid == "") then itemid = id else itemid = itemid .. ";" .. id end local ntag = tag:gsub("itemid=[\"'](.-)[\"']", "itemid=\"" .. itemid .. "\"") local content = content:gsub(tag, ntag) local output = assert(io.open(file, "w")) output:write(content) output:close() addEvent(doReloadInfo, 1000, 22) end function getItemType(itemid) local slottypes = {"head", "body", "legs", "feet"} local arq = io.open("data/items/items.xml", "r"):read("*all") local attributes = arq:match('<item id="' .. itemid .. '".+name="' .. getItemNameById(itemid) ..'">(.-)</item>') local slot = "" for i,x in pairs(slottypes) do if attributes:find(x) then slot = x break end end if slot == "body" then slot = "armor" end return slot end function isHandedWeapon(itemuid) local typee = getItemWeaponType(itemuid) or 0 if typee >= 1 and typee <= 6 then return TRUE end end function isPlayerOwnerItem(cid, itemuid) return not getItemAttribute(itemuid, "ownerguid") or getItemAttribute(itemuid, "ownerguid") == getPlayerGUID(cid) end function setItemOwner(itemuid, cid) if isHandedWeapon(itemuid) then local equips = getSlotIds("hand") if not table.find(equips, getItemIdByName(getItemName(itemuid))) then writeId("hand", getItemIdByName(getItemName(itemuid))) end doItemSetAttribute(itemuid, "ownerguid", getPlayerGUID(cid)) elseif getItemType(getItemIdByName(getItemName(itemuid))) then local equips = getSlotIds(getItemType(getItemIdByName(getItemName(itemuid)))) if not table.find(equips, getItemIdByName(getItemName(itemuid))) then writeId(getItemType(getItemIdByName(getItemName(itemuid))), getItemIdByName(getItemName(itemuid))) end doItemSetAttribute(itemuid, "ownerguid", getPlayerGUID(cid)) end end ]]></config> <movevent type="Equip" itemid="" slot="head" event="script"><![CDATA[ domodlib("OwnerLib") if not isPlayerOwnerItem(cid, item.uid) then addEvent(doPlayerSendCancel, 1, cid, "You are not the owner of this item.") else return TRUE end ]]></movevent> <movevent type="Equip" itemid="" slot="hand" event="script"><![CDATA[ domodlib("OwnerLib") if not isPlayerOwnerItem(cid, item.uid) then addEvent(doPlayerSendCancel, 1, cid, "You are not the owner of this item.") else return TRUE end ]]></movevent> <movevent type="Equip" itemid="" slot="legs" event="script"><![CDATA[ domodlib("OwnerLib") if not isPlayerOwnerItem(cid, item.uid) then addEvent(doPlayerSendCancel, 1, cid, "You are not the owner of this item.") else return TRUE end ]]></movevent> <movevent type="Equip" itemid="" slot="armor" event="script"><![CDATA[ domodlib("OwnerLib") if not isPlayerOwnerItem(cid, item.uid) then addEvent(doPlayerSendCancel, 1, cid, "You are not the owner of this item.") else return TRUE end ]]></movevent> <movevent type="Equip" itemid="" slot="feet" event="script"><![CDATA[ domodlib("OwnerLib") if not isPlayerOwnerItem(cid, item.uid) then addEvent(doPlayerSendCancel, 1, cid, "You are not the owner of this item.") else return TRUE end ]]></movevent> </mod> Agora vá na pasta libs e abra o arquivo.lua que tem o nome de functions ou 050-functions (pode variar de ot pra ot) e adicione essa funçao: function setItemOwner(itemuid, cid) domodlib("OwnerLib") return setItemOwner(itemuid, cid) end Agora vá em data/talkactions/scripts e abra o arquivo createitem.lua e mude o script para esse: function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end local t = string.explode(param, ",") local ret = RETURNVALUE_NOERROR local pos = getCreaturePosition(cid) local id = tonumber(t[1]) if(not id) then id = getItemIdByName(t[1], false) if(not id) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item wich such name does not exists.") return true end end local amount = 100 if(t[2]) then amount = t[2] end local item = doCreateItemEx(id, amount) if(t[3] and getBooleanFromString(t[3])) then if(t[4] and getBooleanFromString(t[4])) then pos = getCreatureLookPosition(cid) end ret = doTileAddItemEx(pos, item) else doPlayerAddItem(cid, id, amount) ret = RETURNVALUE_NOERROR end if(ret ~= RETURNVALUE_NOERROR) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Couldn't add item: " .. t[1]) return true end doDecayItem(item) if(not isPlayerGhost(cid)) then doSendMagicEffect(pos, CONST_ME_MAGIC_RED) end return true end É de extrema importancia que voce mude o script do /i, pois o i que vem nos ots contem um bug que arruina com o sistema de owner. Pronto agora você so precisa juntar a minha funçao setItemOwner(itemuid, cid) com qualquer outro script de quest whatever. Lembre-se se voce quizer algum script que use esse meu sistema, peça-o na sessao de pedidos de scripts, não aqui.2 pontos -
[Tutorial] M1 Ao M12
jhonnyyakato e um outro reagiu a GMRaphael por um tópico no fórum
Primeiramente Se Ja Existir Um Tópico De M1 ao M12 Completos e Com Fotos Pode Excluir Este Tópico. Dae Galera do XTibia Estou Aqui Para Encinar a Vocêr Como Adcionar o Sistema Completo de Ataques de Pokemons Para Adcionar Em Seus Serve. As Imagens Estão Dentro dos Spoilers. 1º Passo: Anexem o Arquivo e Extraiam na Sua Area de Trabalho. 2º Passo: Copiem Todos os Arquivos e Salvem Em DATA/TALKACTIONS/SCRIPTS. 3º Passo: Abram o Arquivo Talkactions.XML (XML) E Adcione Esta Tag: <talkaction words="m1" case-sensitive="no" event="script" value="move1.lua"/> <talkaction words="m2" case-sensitive="no" event="script" value="move2.lua"/> <talkaction words="m3" case-sensitive="no" event="script" value="move3.lua"/> <talkaction words="m4" case-sensitive="no" event="script" value="move4.lua"/> <talkaction words="m5" case-sensitive="no" event="script" value="move5.lua"/> <talkaction words="m6" case-sensitive="no" event="script" value="move6.lua"/> <talkaction words="m7" case-sensitive="no" event="script" value="move7.lua"/> <talkaction words="m8" case-sensitive="no" event="script" value="move8.lua"/> <talkaction words="m9" case-sensitive="no" event="script" value="move9.lua"/> <talkaction words="m10" case-sensitive="no" event="script" value="move10.lua"/> <talkaction words="m11" case-sensitive="no" event="script" value="move11.lua"/> <talkaction words="m12" case-sensitive="no" event="script" value="move12.lua"/> Assim: Ta Feito o Script. Agora é Só se Divertir. Bom... Script Simples Até... Mas Que Muita Gente Estava Procurando. Espero Ter Ajudado Todos do XTibia. M1 Até o M12.rar2 pontos -
[Movement] Map Mark
Faeelz e um outro reagiu a SkyDangerous por um tópico no fórum
Script Retirado por SkyDangerous Se quiser o script que faça ou procure em outro forum. Até +2 pontos -
Npc Criando Novos Monstros
LordOfSeian e um outro reagiu a Demonbholder por um tópico no fórum
Faaaala galera! Tudo bom? Desde ontem eu estou tentando fazer npc, foi bem chatinho de corrigir os bugs e etc. Enfim, o importante é que ele está pronto, e pelo que eu testei, não há nenhum bug comprometedor. Como funciona: Como é um npc, eu vou mostrar como pode ser a conversa: Jogador: Info Npc: Eu posso criar seu monstro, apenas diga criar e siga as instruções. Diga reset para recomeçar. Jogador: Criar Npc: Diga o nome do seu monstro. Lembre-se, é melhor ter tantos gps com você. Jogador [Nome do Monstro] Npc: O nome está correto, agora seleciona a raça para o seu monstro. A raça é o que vai definir os ataques e a aparencia do seu monstro, escolha entre: venom, undead, blood e fire. Jogador: [Venom ou Undead ou Blood ou Fire] Npc: A raça do seu monstro foi escolhida como [Raça escolhida], agora escolha a aparencia do seu monstro. Npc: A lista de aparencias é esta: [Lista de aparências para raça escolhida]. Jogador: [Nome do monstro da aparência] Npc: A aparencia do seu monstro foi escolhida, agora diga até 3 voses para seu monstro e para finalizar, diga fim. Jogador: [Voz] Npc: [Nada] Jogador: fim Npc: Parabéns! Seu monstro foi criado. Em breve ele poderá ser usado. Jogador: reset Npc: O sistema foi resetado para você. Feito, entenderam? Vamos ao npc... NPC local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local info = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local race = { ['venom'] = {['attacks'] = {1, 2}, ['looktype'] = {['slime'] = '<look type="19" head="20" body="30" legs="40" feet="50" corpse="1496"/>'}}, ['undead'] = {['attacks'] = {3, 4}, ['looktype'] = {['undead dragon'] = '<look type="231" corpse="6306"/>'}}, ['fire'] = {['attacks'] = {5, 6}, ['looktype'] = {['demon'] = '<look type="35" corpse="5995"/>'}}, ['blood'] = {['attacks'] = {7, 8}, ['looktype'] = {['vampire'] = '<look type="68" head="20" body="30" legs="40" feet="50" corpse="6006"/>'}} } local cost = 1000 -- custo para criar o monstro local one = FALSE -- um monstro por jogador? TRUE para sim e FALSE para não if talkState[talkUser] == nil and msg == "info" then selfSay("Eu posso criar seu monstro, apenas diga criar e siga as instruções. Diga reset para recomeçar.", cid) elseif talkState[talkUser] == nil and msg == "criar" then if getPlayerStorageValue(cid, 40000) == 1 and one == TRUE then selfSay("Você já criou seu monstro, não pode criar outro.", cid) else selfSay("Diga o nome do seu monstro. Lembre-se, é melhor ter " .. cost .. " gps com você.", cid) talkState[talkUser] = 0 return TRUE end elseif msg == "reset" then table.remove(info, table.find(info, cid)) selfSay("O sistema foi resetado para você.", cid) talkState[talkUser] = nil return TRUE end if talkState[talkUser] == 0 then if isValid(msg) then if monsterExist(msg) == FALSE then info["'" .. cid .. "'"] = {} table.insert(info["'" .. cid .. "'"], msg) talkState[talkUser] = 1 selfSay("O nome está correto, agora seleciona a raça para o seu monstro. A raça é o que vai definir os ataques e a aparencia do seu monstro, escolha entre: venom, undead, blood e fire.", cid) else selfSay("Desculpe, este monstro já existe.", cid) end else selfSay("Nome invalido.", cid) end elseif talkState[talkUser] == 1 then if race[msg] then table.insert(info["'" .. cid .. "'"], msg) talkState[talkUser] = 2 selfSay("A raça do seu monstro foi escolhida como " .. msg .. ", agora escolha a aparencia do seu monstro.", cid) selfSay("A lista de aparencias é esta: " .. getoutfit(race[info["'" .. cid .. "'"][2]]['looktype']) .. ".", cid) else selfSay("Esta raça não pode ser escolhida.", cid) end elseif talkState[talkUser] == 2 then if race[info["'" .. cid .. "'"][2]]['looktype'][msg] then talkState[talkUser] = 3 table.insert(info["'" .. cid .. "'"], race[info["'" .. cid .. "'"][2]]['looktype'][msg]) selfSay("A aparencia do seu monstro foi escolhida, agora diga até 3 voses para seu monstro e para finalizar, diga fim.", cid) else selfSay("Este outfit não pode ser escolhido.") end elseif talkState[talkUser] == 3 and msg ~= "fim" then if #info["'" .. cid .. "'"] == 3 or #info["'" .. cid .. "'"][4] < 3 then if #info["'" .. cid .. "'"] == 3 then info["'" .. cid .. "'"][4] = {} end table.insert(info["'" .. cid .. "'"][4], msg) else selfSay("Você já alcançou o máximo de voses.", cid) end elseif talkState[talkUser] == 3 and msg == "fim" then if doPlayerRemoveMoney(cid, cost) then table.insert(info["'" .. cid .. "'"], race[info["'" .. cid .. "'"][2]]['attacks']) doCreateMonsterIn(info["'" .. cid .. "'"]) talkState[talkUser] = nil setPlayerStorageValue(cid, 40000, 1) selfSay("Parabéns! Seu monstro foi criado. Em breve ele poderá ser usado.", cid) table.remove(info, table.find(info, cid)) else selfSay("Desculpe, você não tem dinheiro.", cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) function monsterExist(s) local info = io.open("data/monster/monsters.xml", "r") local re = info:read("*all") if string.find(string.lower(re), "'" .. string.lower(s) .. "'") or string.find(string.lower(re), '"' .. string.lower(s) .. '"') then return TRUE end return FALSE end function doCreateMonsterIn(tab) local attacks = { [1] = '<attack name="melee" interval="2000" skill="30" attack="35"/>', [2] = '<attack name="earth" interval="1000" chance="14" range="4" target="1" min="-100" max="-200"> <attribute key="areaEffect" value="plantattack"/> </attack>', [3] = '<attack name="melee" interval="2000" min="-0" max="-185"/>', [4] = '<attack name="lifedrain" interval="1000" chance="14" radius="4" target="0" min="-50" max="-225"> <attribute key="areaEffect" value="smallclouds"/> </attack>', [5] = '<attack name="melee" interval="2000" skill="30" attack="35"/>', [6] = '<attack name="fire" interval="1000" chance="11" range="7" radius="4" target="1" min="-150" max="-175"> <attribute key="shootEffect" value="fire"/> <attribute key="areaEffect" value="firearea"/> </attack>', [7] = '<attack name="melee" interval="2000" min="-50" max="-150"/>', [8] = '<attack name="energy" interval="1000" chance="14" range="7" min="-65" max="-175"> <attribute key="shootEffect" value="energy"/> </attack>' } local info = io.open("data/lib/model.txt", "r") local re = info:read("*all") local arquive = io.open("data/monster/" .. tab[1] .. ".xml", "w+") arquive:write(re) arquive:close() local arq = io.open("data/monster/" .. tab[1] .. ".xml", "r") local ri = arq:read("*all") local sub = string.gsub(ri, "-- NAME", tab[1]) local sub2 = string.gsub(sub, "-- RACE", tab[2]) local sub3 = string.gsub(sub2, "-- LOOK", tab[3]) local sub4, sub5 = nil, nil if #tab == 5 then for n, voice in pairs(tab[4]) do sub4 = sub4 and string.gsub(sub4, "-- VOICE" .. n, '<voice sentence="' .. voice .. '"/>') or string.gsub(sub3, "-- VOICE1", '<voice sentence="' .. voice .. '"/>') end end local fo = #tab == 5 and tab[5] or tab[4] sub4 = sub4 or sub3 for n, atid in pairs(fo) do sub5 = sub5 and string.gsub(sub5, "-- ATTACK" .. n, attacks[atid]) or string.gsub(sub4, "-- ATTACK1", attacks[atid]) end sub5 = sub5 or sub4 local file = io.open("data/monster/monsters.xml", "r") local re = file:read("*all") local new = io.open("data/monster/monsters.xml", "w+") local su, sub2 = string.gsub(re, '-- XML', '<monster name="' .. tab[1] .. '" file="' .. tab[1] .. '.xml"/>\n-- XML') new:write(su) local arquive = io.open("data/monster/" .. tab[1] .. ".xml", "w+") arquive:write(sub5) arquive:close() addEvent(doReloadInfo, 180 * 1000, RELOAD_MONSTERS) end function getoutfit(tab) local s = nil for opt, _ in pairs(tab) do s = s and s .. ", " .. opt or opt end return s end function isValid(msg) if #msg < 3 or #msg > 10 then return nil end for i = 1, #msg do if not(string.match(msg, "%a", i)) or (string.match(msg, "%a", i) ~= string.sub(msg, i, i) and string.match(msg, "%s", i) ~= string.sub(msg, i, i)) then return nil end end return TRUE end Feito isso, vá em data/lib, crie um arquivo chamado model.txt. Lib <?xml version="1.0" encoding="UTF-8"?> <monster name="-- NAME" nameDescription="a -- NAME" race="-- RACE" experience="0" speed="225" manacost="0"> <health now="3000" max="3000"/> -- LOOK <targetchange interval="5000" chance="0"/> <strategy attack="90" defense="10"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="0"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="0"/> <flag canpushcreatures="0"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> -- ATTACK1 -- ATTACK2 </attacks> <defenses armor="30" defense="35"/> <voices interval="10000" chance="10"> -- VOICE1 -- VOICE2 -- VOICE3 </voices> <loot> </loot> </monster> Por ultimo vá em data/monster, abra o arquivo monsters.xml e abaixo de <monsters> cole isto: -- XML Feito, o npc está instalado. O npc vai criar um novo monstro no otserv, todas as raças estão balanceadas. Depois de 3 minutos ele irá executar o reload para os monstros e o novo monstro estará disponível. Eu aconselho que apenas os mais experientes mudem o script, mas eu vou ensinar como adicionar mais looktypes para cada raça. Vá nesta tabela: local race = { ['venom'] = {['attacks'] = {1, 2}, ['looktype'] = {['slime'] = '<look type="19" head="20" body="30" legs="40" feet="50" corpse="1496"/>'}}, ['undead'] = {['attacks'] = {3, 4}, ['looktype'] = {['undead dragon'] = '<look type="231" corpse="6306"/>'}}, ['fire'] = {['attacks'] = {5, 6}, ['looktype'] = {['demon'] = '<look type="35" corpse="5995"/>'}}, ['blood'] = {['attacks'] = {7, 8}, ['looktype'] = {['vampire'] = '<look type="68" head="20" body="30" legs="40" feet="50" corpse="6006"/>'}} } Observe esta parte: {['slime'] = '<look type="19" head="20" body="30" legs="40" feet="50" corpse="1496"/>'} Agora, observe como poderia ser adicionada: {['slime'] = '<look type="19" head="20" body="30" legs="40" feet="50" corpse="1496"/>', ['wasp'] = '<look type="44" head="20" body="30" legs="40" feet="50" corpse="5989"/>'} E assim você pode adicionar quantas mais desejar. Video http://www.youtube.com/watch?v=Bmg37YQLJ00 -- Espero que gostem do npc, demorei bastante para fazer. Abraços. Se houver algum bug, por favor avisem.2 pontos -
Gesior Acc Maker 0.3.8 Modificado E Customizado
Luan Moreira reagiu a walefxavier por um tópico no fórum
Esta é uma versão do [GesiorAcc] ,um site completo e bem amplo ,com várias modificações e algumas novas funções,uma excelente opção para quem procura algo diferente ou pra quem está começando um servidor. O que há de novo? * Novos Estilos (Backgrounds,Buttons,Headers e Artworks.) * Pagina de download com Tibia 8.60, Ip Changer, HyperCam e Team Speaker. * Guild War System Customized (Scripts pegar na aba Tutoriais de WebSite) * Top 100 Killer do Servidor * Advanced Character Page (Traduzida ,bem formal e "Única".) * Who is Online? (Versão 0.3.8 modificada para adaptações em todos os servidores) * Trade System (Explicações no site e em PT) * Novo Support List * Addons Page (Com fotos,Premium Required,Male of Female e Itens necessários.) * Pagina Server Info (Modificada,bem simples e no jeito de colocar as informações do seu servidor.) * Novo Shop Offer com novo estilo (Preto e Amarelo) e as abas | Dias Vip | Itens a Venda | Outros | ! * Pagina Benefícios totalmente reformulada e muito simples para modificar. * Novo ! Pagina de Buypoints auto-explicativa...e semi-automática ! >> Leia Abaixo sobre << A pagina consiste em: O player escreve o nome do char e escolhe a quantidade de pontos que deseja comprar,clica em finalizar e é redirecionado para a página do pagseguro para terminar o pagamento. No pagseguro será mostrado o nome do char e a quantidade de pontos,assim,quando o pagamento for confirmado voce já saberá para quem os pontos devem ser entregues,não precisando mais de Confirmação de Pagamentos. Abaixo,veja algumas fotos das principais modificações: New Addons Page Pagina de Benefícios Pagina de Characters Customizada Pagina de Downloads Novo Estilo do Shop Offer Trade System Obs: 1° O site ja vai com alguns sistemas que necessitam das tabelas na sua database,como o War System,Trade System e o Top 100 Killer, então vou posta-las abaixo para que adicionem no SQL.(Quem não quiser utilizar os sistemas é so apagar as paginas ditas acima do layout.) Link das Tabelas 2° Em Htdocs/Config/Config.php , vá lá em baixo e coloque seu email pagseguro para o sistema de compra funcionar. 3° A página Houses não está a vista...mas está configurada para funcionar,quem quiser é so adiciona-la no Layout. *É isso ,por favor não postem erros de tabelas aqui,ja foi explicado acima que pode dar error por causa dos sistemas que estão nosite ,basta voce adicionar as tables que postei no download acima ou então apagar as paginas do layout ou do index.php ! Vlw Galera ! DOWNLOAD DO SITE SCAN DO SITE1 ponto -
[Gesior Acc] Guild War System Com Escudos
guiduarteee reagiu a walefxavier por um tópico no fórum
Vou postar o tão famoso Guild War System Com Escudos. Vou começar pelo site : Vá em Xampp/Htdocs e crie e um arquivo chamado wars.php,dentro add isto: <?php $main_content = "<h1 align=\"center\">Guild Wars</h1> <script type=\"text/javascript\"><!-- function show_hide(flip) { var tmp = document.getElementById(flip); if(tmp) tmp.style.display = tmp.style.display == 'none' ? '' : 'none'; } --></script> <a onclick=\"show_hide('information'); return false;\" style=\"cursor: pointer;\"><h1><center>» Click to se the commands «<center></h1></a> <table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"4\" id=\"information\" style=\"display: none;\";> <tr align=\"center\"><b>You must send this commands in GUILD CHAT.</tr> <tr style=\"background: #512e0b;\"><td align=\"center\" class=\"white\"><b>Command</b></td><td colspan=\"2\" align=\"center\" class=\"white\"><b>Description</b></td></tr> <tr style=\"background: #F1E0C6;\"><td><b>/war invite, guild name, fraglimit</b></td><td>Sends an invitation to start the war. Example: <font color=red><BR>/war invite, Chickens, 150<BR></font><B>(Invite a guild to war with 150 frags count.)</B></td></tr> <tr style=\"background: #D4C0A1;\"><td><b>/war invite, guild name, fraglimit, money</b></td><td>Send the invitation to start the war. Example: <font color=red><BR>/war invite, Chickens, 150, 10000</font><br><B> (Invite a guild to war with 150 frags count and payment of 10000 gold coins <- you need donate to guild to use it.)<B></td></tr> <tr style=\"background: #F1E0C6;\"><td><b>/war accept, guild name</b></td><td>Accepts the invitation to start a war. Example: <font color=red><BR>/war accept, Chickens</font><BR><B>(Accept the war against guild \"Chickens\".)</b></td></tr> <tr style=\"background: #D4C0A1;\"><td><b>/war reject, guild name</b></td><td>Rejects the invitation to start a war. Example: <font color=red><BR>/war reject, Chickens</font><BR><B>(Reject a invitation to war from Chickens.)</B></td></tr> <tr style=\"background: #F1E0C6;\"><td><b>/war cancel, guild name</b></td><td>Cancels the invitation. Example: <font color=red><BR>/war cancel, Chickens</font><br><b>(Cancel my guild invitation to war with Chickens.)</b></td></tr> <tr style=\"background: #D4C0A1;\"><td><b>/balance</b></td><td>See the guild balance - balance of money.</td></tr> <tr style=\"background: #F1E0C6;\"><td><b>/balance donate value</b></td><td>Deposits money on the guild's bank account. All players can donate. Example: <font color=red><BR>/balance donate 100000 </font><BR><B>(You will donate 100k to your guild balance.)</B></td></tr> <tr style=\"background: #D4C0A1;\"><td><b>/balance pick value</b></td><td>Withdraws money from the guild's bank account. Can be used only by the guild leader. Example: <font color=red><BR>/balance pick 100000 </font><BR><B>(You will withdraw 100k from your guild balance.)</B></td></tr> </table> <table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"4\"> <tr> <td style=\"background: #512e0b\" class=\"white\" width=\"150\"><b>Aggressor</b></td> <td style=\"background: #512e0b\" class=\"white\"><b>Information</b></td> <td style=\"background: #512e0b\" class=\"white\" width=\"150\"><b>Enemy</b></td> </tr><tr style=\"background: #F1E0C6;\">"; $count = 0; foreach($SQL->query('SELECT * FROM `guild_wars` WHERE `status` IN (1,4) OR ((`end` >= (UNIX_TIMESTAMP() - 604800) OR `end` = 0) AND `status` IN (0,5));') as $war) { $a = $ots->createObject('Guild'); $a->load($war['guild_id']); if(!$a->isLoaded()) continue; $e = $ots->createObject('Guild'); $e->load($war['enemy_id']); if(!$e->isLoaded()) continue; $alogo = $a->getCustomField('logo_gfx_name'); if(empty($alogo) || !file_exists('guilds/' . $alogo)) $alogo = 'default_logo.gif'; $elogo = $e->getCustomField('logo_gfx_name'); if(empty($elogo) || !file_exists('guilds/' . $elogo)) $elogo = 'default_logo.gif'; $count++; $main_content .= "<tr style=\"background: " . (is_int($count / 2) ? $config['site']['darkborder'] : $config['site']['lightborder']) . ";\"> <td align=\"center\"><a href=\"?subtopic=guilds&action=show&guild=".$a->getId()."\"><img src=\"guilds/".$alogo."\" width=\"64\" height=\"64\" border=\"0\"/><br />".$a->getName()."</a></td> <td align=\"center\">"; switch($war['status']) { case 0: { $main_content .= "<b>Pending acceptation</b><br />Invited on " . date("M d Y, H:i:s", $war['begin']) . " for " . ($war['end'] > 0 ? (($war['end'] - $war['begin']) / 86400) : "unspecified") . " days. The frag limit is set to " . $war['frags'] . " frags, " . ($war['payment'] > 0 ? "with payment of " . $war['payment'] . " bronze coins." : "without any payment.")."<br />Will expire in three days."; break; } case 3: { $main_content .= "<s>Canceled invitation</s><br />Sent invite on " . date("M d Y, H:i:s", $war['begin']) . ", canceled on " . date("M d Y, H:i:s", $war['end']) . "."; break; } case 2: { $main_content .= "Rejected invitation<br />Invited on " . date("M d Y, H:i:s", $war['begin']) . ", rejected on " . date("M d Y, H:i:s", $war['end']) . "."; break; } case 1: { $main_content .= "<font size=\"6\"><span style=\"color: red;\">" . $war['guild_kills'] . "</span> : <span style=\"color: lime;\">" . $war['enemy_kills'] . "</span></font><br /><br /><span style=\"color: darkred; font-weight: bold;\">On a brutal war</span><br />Began on " . date("M d Y, H:i:s", $war['begin']) . ($war['end'] > 0 ? ", will end up at " . date("M d Y, H:i:s", $war['end']) : "") . ".<br />The frag limit is set to " . $war['frags'] . " frags, " . ($war['payment'] > 0 ? "with payment of " . $war['payment'] . " bronze coins." : "without any payment."); break; } case 4: { $main_content .= "<font size=\"6\"><span style=\"color: red;\">" . $war['guild_kills'] . "</span> : <span style=\"color: lime;\">" . $war['enemy_kills'] . "</span></font><br /><br /><span style=\"color: darkred;\">Pending end</span><br />Began on " . date("M d Y, H:i:s", $war['begin']) . ", signed armstice on " . date("M d Y, H:i:s", $war['end']) . ".<br />Will expire after reaching " . $war['frags'] . " frags. ".($war['payment'] > 0 ? "The payment is set to " . $war['payment'] . " bronze coins." : "There's no payment set."); break; } case 5: { $main_content .= "<i>Ended</i><br />Began on " . date("M d Y, H:i:s", $war['begin']) . ", ended on " . date("M d Y, H:i:s", $war['end']) . ". Frag statistics: <span style=\"color: red;\">" . $war['guild_kills'] . "</span> to <span style=\"color: lime;\">" . $war['enemy_kills'] . "</span>."; break; } default: { $main_content .= "Unknown, please contact with gamemaster."; break; } } $main_content .= "<br /><br /><a onclick=\"show_hide('war-details:" . $war['id'] . "'); return false;\" style=\"cursor: pointer;\">» Details «</a></td> <td align=\"center\"><a href=\"?subtopic=guilds&action=show&guild=".$e->getId()."\"><img src=\"guilds/".$elogo."\" width=\"64\" height=\"64\" border=\"0\"/><br />".$e->getName()."</a></td> </tr> <tr id=\"war-details:" . $war['id'] . "\" style=\"display: none; background: " . (is_int($count / 2) ? $config['site']['darkborder'] : $config['site']['lightborder']) . ";\"> <td colspan=\"3\">"; if(in_array($war['status'], array(1,4,5))) { $deaths = $SQL->query('SELECT `pd`.`id`, `pd`.`date`, `gk`.`guild_id` AS `enemy`, `p`.`name`, `pd`.`level` FROM `guild_kills` gk LEFT JOIN `player_deaths` pd ON `gk`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `gk`.`war_id` = ' . $war['id'] . ' AND `p`.`deleted` = 0 ORDER BY `pd`.`date` DESC')->fetchAll(); if(!empty($deaths)) { foreach($deaths as $death) { $killers = $SQL->query('SELECT `p`.`name` AS `player_name`, `p`.`deleted` AS `player_exists`, `k`.`war` AS `is_war` FROM `killers` k LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id` LEFT JOIN `players` p ON `p`.`id` = `pk`.`player_id` WHERE `k`.`death_id` = ' . $death['id'] . ' ORDER BY `k`.`final_hit` DESC, `k`.`id` ASC')->fetchAll(); $count = count($killers); $i = 0; $others = false; $main_content .= date("j M Y, H:i", $death['date']) . " <span style=\"font-weight: bold; color: " . ($death['enemy'] == $war['guild_id'] ? "red" : "lime") . ";\">+</span> <a href=\"index.php?subtopic=characters&name=" . urlencode($death['name']) . "\"><b>".$death['name']."</b></a> "; foreach($killers as $killer) { $i++; if($killer['is_war'] != 0) { if($i == 1) $main_content .= "killed at level <b>".$death['level']."</b> by "; else if($i == $count && $others == false) $main_content .= " and by "; else $main_content .= ", "; if($killer['player_exists'] == 0) $main_content .= "<a href=\"index.php?subtopic=characters&name=".urlencode($killer['player_name'])."\">"; $main_content .= $killer['player_name']; if($killer['player_exists'] == 0) $main_content .= "</a>"; } else $others = true; if($i == $count) { if($others == true) $main_content .= " and few others"; $main_content .= ".<br />"; } } } } else $main_content .= "<center>There were no frags on this war so far.</center>"; } else $main_content .= "<center>This war did not began yet.</center>"; $main_content .= "</td> </tr>"; } if($count == 0) $main_content .= "<tr style=\"background: ".$config['site']['darkborder'].";\"> <td colspan=\"3\">Currently there are no active wars.</td> </tr>"; $main_content .= "</table>"; $main_content .= '<div align="right"><small><b>Customized by: <a href="http://www.xtibia.com/forum/user/240289-walef-xavier">Walef Xavier</a></b></small></div><br />'; ?> Agora vá em Xampp/Htdocs/index.php e add o seguinte: case "wars"; $subtopic = "wars"; $topic = "Guild Wars"; include("wars.php"); break; Agora para finalizar a parte do site vá em Xampp/Htdocs/Layout/Tibiacom/layout.php e add o seguinte: <a href='?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_polls' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'><font color=red>Guild Wars</font></div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> </a> Agora vamos para seu Ot: Va em GlobalEvents/scripts/start.lua e add o seguinte: db.executeQuery("DELETE FROM `guild_wars` WHERE `status` = 0 AND `begin` < " .. (os.time() - 2 * 86400) .. ";") db.executeQuery("UPDATE `guild_wars` SET `status` = 5, `end` = " .. os.time() .. " WHERE `status` = 1 AND `end` > 0 AND `end` < " .. os.time() .. ";") Agora vá em Lib e crie um arquivo .lua chamado 101-war,dentro add o seguinte: WAR_GUILD = 0 WAR_ENEMY = 1 Agora para finalizar vamos colocar os comandos em Talkactions ! Vá em Talkactions/scripts e crie dois arquivos chamados war.lua e balance.lua,dentro add o seguinte: War.lua function onSay(cid, words, param, channel) local guild = getPlayerGuildId(cid) if(not guild or getPlayerGuildLevel(cid) < GUILDLEVEL_LEADER) then doPlayerSendChannelMessage(cid, "", "You cannot execute this talkaction.", TALKTYPE_CHANNEL_W, 0) return true end local t = string.explode(param, ",") if(not t[2]) then doPlayerSendChannelMessage(cid, "", "Not enough param(s).", TALKTYPE_CHANNEL_W, 0) return true end local enemy = getGuildId(t[2]) if(not enemy) then doPlayerSendChannelMessage(cid, "", "Guild \"" .. t[2] .. "\" does not exists.", TALKTYPE_CHANNEL_W, 0) return true end if(enemy == guild) then doPlayerSendChannelMessage(cid, "", "You cannot perform war action on your own guild.", TALKTYPE_CHANNEL_W, 0) return true end local enemyName, tmp = "", db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. enemy) if(tmp:getID() ~= -1) then enemyName = tmp:getDataString("name") tmp:free() end if(isInArray({"accept", "reject", "cancel"}, t[1])) then local query = "`guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild if(t[1] == "cancel") then query = "`guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy end tmp = db.getResult("SELECT `id`, `begin`, `end`, `payment` FROM `guild_wars` WHERE " .. query .. " AND `status` = 0") if(tmp:getID() == -1) then doPlayerSendChannelMessage(cid, "", "Currently there's no pending invitation for a war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end if(t[1] == "accept") then local _tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild) local state = _tmp:getID() < 0 or _tmp:getDataInt("balance") < tmp:getDataInt("payment") _tmp:free() if(state) then doPlayerSendChannelMessage(cid, "", "Your guild balance is too low to accept this invitation.", TALKTYPE_CHANNEL_W, 0) return true end db.query("UPDATE `guilds` SET `balance` = `balance` - " .. tmp:getDataInt("payment") .. " WHERE `id` = " .. guild) end query = "UPDATE `guild_wars` SET " local msg = "accepted " .. enemyName .. " invitation to war." if(t[1] == "reject") then query = query .. "`end` = " .. os.time() .. ", `status` = 2" msg = "rejected " .. enemyName .. " invitation to war." elseif(t[1] == "cancel") then query = query .. "`end` = " .. os.time() .. ", `status` = 3" msg = "canceled invitation to a war with " .. enemyName .. "." else query = query .. "`begin` = " .. os.time() .. ", `end` = " .. (tmp:getDataInt("end") > 0 and (os.time() + ((tmp:getDataInt("begin") - tmp:getDataInt("end")) / 86400)) or 0) .. ", `status` = 1" end query = query .. " WHERE `id` = " .. tmp:getDataInt("id") if(t[1] == "accept") then doGuildAddEnemy(guild, enemy, tmp:getDataInt("id"), WAR_GUILD) doGuildAddEnemy(enemy, guild, tmp:getDataInt("id"), WAR_ENEMY) end tmp:free() db.query(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. msg, MESSAGE_EVENT_ADVANCE) return true end if(t[1] == "invite") then local str = "" tmp = db.getResult("SELECT `guild_id`, `status` FROM `guild_wars` WHERE `guild_id` IN (" .. guild .. "," .. enemy .. ") AND `enemy_id` IN (" .. enemy .. "," .. guild .. ") AND `status` IN (0, 1)") if(tmp:getID() ~= -1) then if(tmp:getDataInt("status") == 0) then if(tmp:getDataInt("guild_id") == guild) then str = "You have already invited " .. enemyName .. " to war." else str = enemyName .. " have already invited you to war." end else str = "You are already on a war with " .. enemyName .. "." end tmp:free() end if(str ~= "") then doPlayerSendChannelMessage(cid, "", str, TALKTYPE_CHANNEL_W, 0) return true end local frags = tonumber(t[3]) if(frags ~= nil) then frags = math.max(10, math.min(1000, frags)) else frags = 100 end local payment = tonumber(t[4]) if(payment ~= nil) then payment = math.max(100000, math.min(1000000000, payment)) tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild) local state = tmp:getID() < 0 or tmp:getDataInt("balance") < payment tmp:free() if(state) then doPlayerSendChannelMessage(cid, "", "Your guild balance is too low for such payment.", TALKTYPE_CHANNEL_W, 0) return true end db.query("UPDATE `guilds` SET `balance` = `balance` - " .. payment .. " WHERE `id` = " .. guild) else payment = 0 end local begining, ending = os.time(), tonumber(t[5]) if(ending ~= nil and ending ~= 0) then ending = begining + (ending * 86400) else ending = 0 end db.query("INSERT INTO `guild_wars` (`guild_id`, `enemy_id`, `begin`, `end`, `frags`, `payment`) VALUES (" .. guild .. ", " .. enemy .. ", " .. begining .. ", " .. ending .. ", " .. frags .. ", " .. payment .. ");") doBroadcastMessage(getPlayerGuildName(cid) .. " has invited " .. enemyName .. " to war till " .. frags .. " frags.", MESSAGE_EVENT_ADVANCE) return true end if(not isInArray({"end", "finish"}, t[1])) then return false end local status = (t[1] == "end" and 1 or 4) tmp = db.getResult("SELECT `id` FROM `guild_wars` WHERE `guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy .. " AND `status` = " .. status) if(tmp:getID() ~= -1) then local query = "UPDATE `guild_wars` SET `end` = " .. os.time() .. ", `status` = 5 WHERE `id` = " .. tmp:getDataInt("id") tmp:free() doGuildRemoveEnemy(guild, enemy) doGuildRemoveEnemy(enemy, guild) db.query(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. (status == 4 and "mend fences" or "ended up a war") .. " with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE) return true end if(status == 4) then doPlayerSendChannelMessage(cid, "", "Currently there's no pending war truce from " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end tmp = db.getResult("SELECT `id`, `end` FROM `guild_wars` WHERE `guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild .. " AND `status` = 1") if(tmp:getID() ~= -1) then if(tmp:getDataInt("end") > 0) then tmp:free() doPlayerSendChannelMessage(cid, "", "You cannot request ending for war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end local query = "UPDATE `guild_wars` SET `status` = 4, `end` = " .. os.time() .. " WHERE `id` = " .. tmp:getDataInt("id") tmp:free() db.query(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has signed an armstice declaration on a war with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE) return true end doPlayerSendChannelMessage(cid, "", "Currently there's no active war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end balance.lua local function isValidMoney(value) if(value == nil) then return false end return (value > 0 and value <= 99999999999999) end function onSay(cid, words, param, channel) local guild = getPlayerGuildId(cid) if(guild == 0) then return false end local t = string.explode(param, ' ', 1) if(getPlayerGuildLevel(cid) == GUILDLEVEL_LEADER and isInArray({ 'pick' }, t[1])) then if(t[1] == 'pick') then local money = { tonumber(t[2]) } if(not isValidMoney(money[1])) then doPlayerSendChannelMessage(cid, '', 'Invalid amount of money specified.', TALKTYPE_CHANNEL_W, 0) return true end local result = db.getResult('SELECT `balance` FROM `guilds` WHERE `id` = ' .. guild) if(result:getID() == -1) then return false end money[2] = result:getDataLong('balance') result:free() if(money[1] > money[2]) then doPlayerSendChannelMessage(cid, '', 'The balance is too low for such amount.', TALKTYPE_CHANNEL_W, 0) return true end if(not db.query('UPDATE `guilds` SET `balance` = `balance` - ' .. money[1] .. ' WHERE `id` = ' .. guild .. ' LIMIT 1;')) then return false end doPlayerAddMoney(cid, money[1]) doPlayerSendChannelMessage(cid, '', 'You have just picked ' .. money[1] .. ' money from your guild balance.', TALKTYPE_CHANNEL_W, 0) else doPlayerSendChannelMessage(cid, '', 'Invalid sub-command.', TALKTYPE_CHANNEL_W, 0) end elseif(t[1] == 'donate') then local money = tonumber(t[2]) if(not isValidMoney(money)) then doPlayerSendChannelMessage(cid, '', 'Invalid amount of money specified.', TALKTYPE_CHANNEL_W, 0) return true end if(getPlayerMoney(cid) < money) then doPlayerSendChannelMessage(cid, '', 'You don\'t have enough money.', TALKTYPE_CHANNEL_W, 0) return true end if(not doPlayerRemoveMoney(cid, money)) then return false end db.query('UPDATE `guilds` SET `balance` = `balance` + ' .. money .. ' WHERE `id` = ' .. guild .. ' LIMIT 1;') doPlayerSendChannelMessage(cid, '', 'You have transfered ' .. money .. ' money to your guild balance.', TALKTYPE_CHANNEL_W, 0) else local result = db.getResult('SELECT `name`, `balance` FROM `guilds` WHERE `id` = ' .. guild) if(result:getID() == -1) then return false end doPlayerSendChannelMessage(cid, '', 'Current balance of guild ' .. result:getDataString('name') .. ' is: ' .. result:getDataLong('balance') .. ' bronze coins.', TALKTYPE_CHANNEL_W, 0) result:free() end return true end Agora vá em Talkactions/talkactions.xml e add as duas tags: <talkaction words="/war" channel="0" event="script" value="war.lua" desc="(Guild channel command) War management."/> <talkaction words="/balance" channel="0" event="script" value="balance.lua" desc="(Guild channel command) Balance management."/> Pronto,seu Guild War Systema está instalado...mas para funcionar necessitará das tabelas na sua database e do Tfs 0.4 .Vou posta-los abaixo,respectivamente. . Tabelas . Para quem ainda não sabe add tabelas a sua database,vou ensinar: Acesse seu phpmyadmin,digite sua senha (caso tenha),clique no nome da sua database a esquerda,assim que carregar a sua database clique em SQL lá em cima...Aparecerá um espaço em branco lá voce irá add as seguintes tabelas...e depois clicar em Executar. CREATE TABLE IF NOT EXISTS `guild_wars` ( `id` INT NOT NULL AUTO_INCREMENT, `guild_id` INT NOT NULL, `enemy_id` INT NOT NULL, `begin` BIGINT NOT NULL DEFAULT '0', `end` BIGINT NOT NULL DEFAULT '0', `frags` INT UNSIGNED NOT NULL DEFAULT '0', `payment` BIGINT UNSIGNED NOT NULL DEFAULT '0', `guild_kills` INT UNSIGNED NOT NULL DEFAULT '0', `enemy_kills` INT UNSIGNED NOT NULL DEFAULT '0', `status` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `status` (`status`), KEY `guild_id` (`guild_id`), KEY `enemy_id` (`enemy_id`) ) ENGINE=InnoDB; ALTER TABLE `guild_wars` ADD CONSTRAINT `guild_wars_ibfk_1` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_wars_ibfk_2` FOREIGN KEY (`enemy_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE; ALTER TABLE `guilds` ADD `balance` BIGINT UNSIGNED NOT NULL AFTER `motd`; CREATE TABLE IF NOT EXISTS `guild_kills` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `guild_id` INT NOT NULL, `war_id` INT NOT NULL, `death_id` INT NOT NULL ) ENGINE = InnoDB; ALTER TABLE `guild_kills` ADD CONSTRAINT `guild_kills_ibfk_1` FOREIGN KEY (`war_id`) REFERENCES `guild_wars` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_kills_ibfk_2` FOREIGN KEY (`death_id`) REFERENCES `player_deaths` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_kills_ibfk_3` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE; ALTER TABLE `killers` ADD `war` INT NOT NULL DEFAULT 0; Pronto o Guild Wars System está totalmente instalado...falta apenas o Tfs 0.4 ! O meu The Forggoten Server 0.4 também comprei do mesmo cara que me vendeu o GWS,tenho um também que comprei na ChaitoSoft,mais conversei com eles por Msn e não permitirão que eu postasse pra ninguem,rsrs. Então vou postar o link do download e o scan: TFS 0.4 DEV Scan Ai está a DEV.... Também será necessario usar o items.xml e items.otb , a não ser que o que vc tenha seja compativel com o distro. Item.xml e otb Scan Obs: Este distro não carrega scripts que tenha a função "dbExecute.query",sempre que tiver mude para "db.query" .Todo o script ja está configurado para funcionar assim,não se preucupe. Só isso,obrigado a todos...que Deus Abençoe voces sempre !1 ponto -
Item Ou Potion De Double Exp.
Bluetooth reagiu a MatheusGlad por um tópico no fórum
Item ou potion de double exp. By: MatheusMkalo Primeiramente vamos ver oque o script tem de diferente dos outros: Se voce sair com o efeito da exp potion o tempo da potion continuara passando, se voce logar antes que ele acabe voce ainda vai poder aproveitar umpouco da double exp. Voce pode escolher varias opçoes, como escolher se so premium accounts podem usar o item, quanta mana vai gasta, se vai remover quando usar e outros AGORA O SCRIPT SOH ESTA DISPONIVEL EM MOD: Vá na pasta mods e adicione um arquivo.xml com o nome de ExpPotion.xml e bote isso: <?xml version="1.0" encoding="UTF-8"?> <mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com"> <!-- Configs and Functions --> <config name="PotionExpConfigs"><![CDATA[ ------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE configs = { time = 1, ---- TIME IN MINUTES needpa = TRUE, needlvl = {TRUE, level = 50}, costmana = {TRUE, mana = 300}, addrate = 20, -- Exp que vai adicionar em % removeonuse = TRUE } function getTime(s) local n = math.floor(s / 60) s = s - (60 * n) return n, s end CreatureEventChecker = function(event, ...) -- Colex if isCreature(arg[1]) then event(unpack(arg)) end end creatureEvent = function(event, delay, ...) -- Colex addEvent(CreatureEventChecker, delay, event, unpack(arg)) end function getPlayerExtraExpRate(cid) -- By MatheusMkalo return (getPlayerRates(cid)[8]-1)*100 end ]]></config> <!-- exppotion.lua --> <action itemid="7440" event="script"><![CDATA[ domodlib('PotionExpConfigs') if getPlayerStorageValue(cid, 62164) >= 1 then return doPlayerSendCancel(cid, "You are already taking effect from this item.") end if configs.needpa and not isPremium(cid) then return doPlayerSendCancel(cid, "You need to be a premmium account to use this item.") end if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then return doPlayerSendCancel(cid, "You need to be level " .. configs.needlvl.level .. " to use this item.") end if configs.costmana[1] then if getCreatureMana(cid) < configs.costmana.mana then return doPlayerSendCancel(cid, "You need " .. configs.costmana.mana .. " mana to use this item.") else doCreatureAddMana(cid, -configs.costmana.mana) end end if configs.removeonuse then doRemoveItem(item.uid, 1) end for i = configs.time*60, 1, -1 do local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60)) if #a < 4 then a = string.sub(a,1,2) .. "0" .. string.sub(a, 3) end if i == configs.time*60 then creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "The effect of the exp potion end.") end creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "The effect of the exp potion will end in "..a..".") end doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100)) creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100))) doPlayerSendTextMessage(cid, 22, "Agora voce ira receber mais exp por matar os mosntros.") setPlayerStorageValue(cid, 62164, os.time()) creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0) return TRUE ]]></action> <creaturescript type="login" name="ExpPotion" event="script"><![CDATA[ domodlib('PotionExpConfigs') local time = configs.time if os.time()-getPlayerStorageValue(cid, 62164) < time *60 then doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100)) creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100))) creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000 , cid, 62164, 0) for i = (time*60-(os.time()-getPlayerStorageValue(cid, 62164))), 1, -1 do local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60)) if #a < 4 then a = string.sub(a,1,2) .. "0" .. string.sub(a, 3) end if i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) then creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "The effect of the exp potion end.") end creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "The effect of the exp potion will end in "..a..".") end end return TRUE ]]></creaturescript> </mod> Tudo pronto, exp potion funcionando! O ID da potion usada no script foi o: 7440 (Mastermind Potion) Para usa-lo voce precisa tirar a linha no actions.xml da potion porque se nao vai bugar. Para trocar o id da potion eh so mudar essa linha: <action itemid="7440" event="script"><![CDATA[ Resposta para o Topico: Aew Galera Preciso Scripting Da Double Exp Potion1 ponto -
Azeroth Server Updated 14/07/2011: v1.0 Outras Versões: v1.1 [8.60]: http://www.xtibia.co...oth-rpg-reborn/ v2.0 [9.60]: http://www.xtibia.com/forum/topic/205054-960-azeroth-rpg/ Versão: 8.70 Distro: Crystal Server Mapa Base: Yourots Edited e Mix Yourots Features: > 7 Cidades: Azeroth Avalon Zatur Liberty Bay Gloria Sand Trap Tiquanda > Montarias por quest(NPC Mount Master, cavernas ao norte de Azeroth). > NPCs de Travel/Boat diferentes para cada cidade. > Corrigidos Vários Bugs do mapa. > Templo Reformado > Retirados Vários Itens custom e suas quests do antigo Riot Server. > Adicionada Dragon Dungeon. > Adicionado Vulcão de Goroma. > Adicionada Quest Especial em Gloria (NPC Gloria Scientist). > Adicionada Ferumbras Tower. > Várias Hunts adicionadas. > Adicionada Formorgar Mines. > Sistema de Refinamento e Slot. > 6 Novas Mounts. > Principais Quests: Annihilator Pits of Inferno The Inquisition FireWalker Boots Demon Helmet Draken Hell Conquer > 23 Raids Automáticas e configuradas: > Sistema de Guerras pelo Castelo [Honor Castle, a oeste de Azeroth] Evento automático. Quando a guerra é anunciada as guilds podem batalhar pelo controle do castelo, dando use no monumento do último andar e permanecendo assim até a guerra acabar. O último jogador a ter o controle do castelo antes do tempo acabar será o vencedor, e sua guild se tornará dona do castelo. Todos os membros da Guild ganharão uma recompensa e poderão acessar o mapa do subsolo. Os membros de outras Guilds serão teleportados para o templo e não poderão acessar o castelo. O sistema envia mensagens a todos antes de o evento começar, quando começar, quando o dono do castelo muda, antes de se finalizar e ao finalizar, relatando o conquistador do castelo e a guild vencedora. Imagens: Raids Castle Upgrade & Slot System Não há teleports diretos para hunts ou quests. Não há items ou monstros editados(além dos trainers). Não há sistema VIP(premium account valorizada). Não há raids com monstros excessivamente fortes nas cidades iniciais. Acc God: 2/password Créditos:Unknow YourOts Edited, Mix Yourots Team, Crystal Server Team, Tryller, Mock, TFS Team e um pouquinho (bem pouquinho) pra mim xD. Source - IP Changer 8.70 - Utilitários(opcional) - Map Editor *Utilitários inclui: Lista com códigos de todos os looktypes, SQLite Studio 1.1.1, códigos das cores dos outfits e o OTRestarter. Download Azeroth Server V 1.0 - Completo [MEDIAFIRE] Comandos: !war para executar a guerra pelo castelo manualmente, !reset para interromper o funcionamento da war e !castle para limpar todos os dados, ou seja, o castelo volta a ser terra de ninguém. V 0.2 V 0.3 V 0.4 V 1.0 Último pedido meu: encham o saco dos adms pra colocarem o tópico do tryller como fixo. É o melhor distro 8.70 que nós temos aqui, talvez ele salve os ots 8.70 daqui pra frente Contato: vmspk@hotmail.com Edit - Coloquei os Scans Edit2 - Adicionado comando Edit3 - Atualização Edit4 - Atualização http://img208.images...claymorepsf.jpg1 ponto
-
Como Criar Um Server De Wodbo
joseanpereira reagiu a dragonfight por um tópico no fórum
Pessoal, fiz esse tutorial para ajudar aqueles que estão tentando criar um server de wodbo. Vamos lá: Downloads necessários: Wodbo by Jao: http://www.mediafire.com/?zfyjjm25nbj Xampp: http://www.baixaki.com.br/download/xampp.htm Htdocs: http://www.megaupload.com/?d=39TPRQD3 Informações: Wodbo by Jao: Arquivos necessários pra por o ot e site on. Xampp: Programa necessário para rodar o site e o banco de dados do server. Configurando o banco de dados: Primeiro, extraia o xampp e o server. Após isso rode o arquivo "setup_xampp.bat", dentro da pasta xampp, para instalar o xampp. Para rodar o xampp, abra o arquivo xampp-control, aonde tem apache e mysql, clique em "start". Depois abra o internet explorer e acesso o endereço http://localhost/phpmyadmin. Se pedir usuário, digite root e senha em branco. Logo no começo vai estar assim "Criar Novo Banco de Dados", deixe Collation e no espaço em branco coloque server, e clique em criar. Do lado esquerdo irá aparecer a database, Server(0), clique nela. Depois clique na barra acima, em "importar" e importe o arquivo chamado datebase na pasta wodbo, do wodbo by jao, clique em executar. Vai ficar com 19 abas. Depois importe outro arquivo chamado database na pasta Copy of Sparking do Acc Maker, também do wodbo by jao. Vai ficar com 27 abas agora. Deixando Ot on: Abra o arquivo config.lua na pasta server e ache essa parte: --- MySQL part (ignore if you are using SQLite) sql_host = "localhost" sql_user = "root" sql_pass = "patito2858" sql_db = "otserv" Deixe assim: --- MySQL part (ignore if you are using SQLite) sql_host = "localhost" sql_user = "root" sql_pass = "" sql_db = "server" Agora rode o arquivo chamado restarter(ele simplesmente roda o arquivo serv.exe, mas se o ot cair ele abre denovo). Pronto, seu ot está online! Para testar, abra a pasta "Client i IP Changer" do wodbo by jao, abra o cliente e depois o WoDBO Server Changer for Sparking. No ip coloque "localhost" sem aspas e na port, deixe "7171", também sem aspas, e clique em Change IP. Agora tente logar a account padrão que é acc:1 e senha também 1. Se você fez tudo certo até aqui parabéns! Acertando o site: Extraia os arquivos da pasta Copy of Sparking, dentro da pasta htdocs do xampp. Se pedir autorização para substituir os arquivos, diga, "sim para todos". Depois abra o arquivo config.inc, na pasta htdocs do xampp. Aonde está: # MySQL server settings $cfg['SQL_Server'] = 'localhost'; $cfg['SQL_User'] = 'root'; $cfg['SQL_Password'] = 'wodbo9elektro8'; $cfg['SQL_Database'] = 'sparking'; Deixe: $cfg['SQL_Server'] = 'localhost'; $cfg['SQL_User'] = 'root'; $cfg['SQL_Password'] = ''; $cfg['SQL_Database'] = 'server'; Depois vá em xampp\apache\conf e abra o arquivo httpd.conf. Aonde está assim: #Listen 0.0.0.0:80 #Listen []:80 Listen 80 Deixe assim: #Listen 0.0.0.0:8090 #Listen []:8090 Listen 8090 Pronto, agora para acessar o site do seu ot, acesse http://localhost:8090 no internet explorer. Para que outras pessoas possam facilmente entrar em seu ot, aconselho procurar tutoriais sobre ip fixo, sobre "no-ip". Assim, em vez das pessoas acessarem seuip:8090, elas acessariam, endereço:8090, exemplo, wodbo.no-ip:8090. Se estiver tendo problemas para outras pessoas acessarem seu site, talvez as portas do firewall estejam bloqueadas, aconselho procurar tutoriais sobre isso. Como proteger seu ot de wodbo contra hackers: Anti-Hackers Wodbo Simplesmente siga este tutorial feito por mim, e você não terá esse tipo de problema. É isso pessoal, se gostaram, agradeçam, dê um rep+ ai, não custa nada pra você, mas me incentiva muito :smile_positivo:1 ponto -
Como Fazer Teleportes Falantes Baiak8.60
Bielzitow reagiu a gabrigunsss por um tópico no fórum
Bom é Meu Primeiro post Se Tiver Na Area Errado Perdoame ;D Bom Irei Ensinar O Jeito Que Eu Consegui Fazer Meus Teles Falantes No Baiak8.60 Entao Abra A Pasta Do Seu OT Vá Em data\globalevents\scripts E Abra O Arquivo Texto.lua Se Nao Tiver Esse Arquivo Pode Copiar Um Colar E Botar o Nome Texto.lua Entao Ao Abrir Vai Estar Assim : --------------------------------------------------------- local config = { positions = { ["Baiak"] = { x = 160, y = 54, z = 7 }, ["Welcome"] = { x = 158, y = 51, z = 4 }, ["Vip City"] = { x = 166, y = 47, z = 7 }, ["Treiners"] = {x = 153, y = 42, z = 7}, } } function onThink(cid, interval, lastExecution) for text, pos in pairs(config.positions) do doSendAnimatedText(pos, text, math.random(1, 255)) end return TRUE end ---------------------------------------------------------------- Bom Em ROXOÉ O Nome Que Vai Fica Aparecendo Em VermelhoÉ A Posiçao Do Teleporte X . Y .Z Que da dpe pegar pelo mapa editor as Coordenadas X . Y . Z Agora É So Fazer Isso Bota O Nome Que Voce Quer E Botas As Coordenadas X . Y . Z De Onde voce Que Que Apareça O Letreiro Falante ;D ---------------------------------------------------------------- Se Der CERTO ae Da Um +rep1 ponto -
Saiba Tudo Sobre Npc,monster E Spells!
Alexclusive reagiu a Lucas Rap por um tópico no fórum
Gente,peço que vcs postem o que acharam,porque realmente desanima trazer um tuto desse tamanho,separar,por cor,code,tudo bonitinho, e vcs só olharem e irem embora! Pessoal,jah vo avisando,esse tutorial não é meu,é de um usuário chamado Lucas321 de um certo fórum aí... -------------------------------------- Aprenda a fazer seus próprios Monstros, Spells e NPC Basicamente scripts sao o conjunto dos códigos que formam os arquivos de players, monster, spells, etc. Nesse tutorial vou ensinar tudo, pra vc sair daqui fazendo monstros, spells e tudo mais. E se no final houver alguma duvida poste aqui que serei grato em ajudar. Neste Tutorial existem varios comandos básicos, bons para iniciantes, parte por parte é explicada, visando um maior entendimento sobre o assunto. Vamos lá! SPELLS Primeiro vamos falar sobre as spells Existem as spells de instant e as spells de rune, as spells de instant sao aquelas em q o monstro usa nele, e as de runa ele vai usar em vc. Entao a primeira coisa que precisamos fazer é decidir se vamos fazer uma spell de runa ou de instant, vou mostrar aqui apenas um exemplo, se nao o topico ficara muito grande. Vamos começar, seguindo um exemplo de uma magia minha: Primeiro, crie um arquivo chamado crossover.lua, na pasta Data>Spells>Instant Começamos o script com isso: area = {{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},{1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1},{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},} Essa é a area em que a magia ira pegar, o numero 0 simboliza os espaços que a magia nao pega e os numeros 1, os lugares onde acontecerá a magia, no exemplo acima, é uma magia em forma de cruz Pulamos entao uma linha e acrescentamos isso: attackType = ATTACK_PHYSICALneedDirection = falseareaEffect = NM_ME_YELLOW_RINGSanimationEffect = NM_ANI_NONEhitEffect = NM_ME_HIT_AREAdamageEffect = NM_ME_DRAW_BLOODanimationColor = BLACK_WHITEoffensive = truedrawblood = true Vamos às explicações: attackType = o tipo de ataque que será, no exemplo será um ataque fisico, mas tbm poderia ser um ataque de fogo, ou de energy needDirection = se o ataque precisa de direção, como as firewaves areaEffect = o tipo de animação que saira na area na magia animationEffect = a animação de quando o player sofrer dano da magia damageEffect = o efeito que saira quando o player receber o dano animationColor = a cor da animação da Magia offensive = se a magia é de ataque ou nao drawblood = se embaixo do player vai sair sangue quando ele receber a magia Explicado, pulamos uma linha e adicionamos: UltimateExplosionObject = MagicDamageObject(attackType, animationEffect, hitEffect, damageEffect, animationColor, offensive, drawblood, 0, 0) Essa é a função que fara com q oq explicamos acima funcione, pulamos outra linha e acrescentamos: function onCast(cid, creaturePos, level, maglv, var)centerpos = {x=creaturePos.x, y=creaturePos.y, z=creaturePos.z}n = tonumber(var)if n ~= nil then-- bugged-- ultimateExplosionObject.minDmg = var+0-- UltimateExplosionObject.maxDmg = var+0UltimateExplosionObject.minDmg = 0UltimateExplosionObject.maxDmg = 0 elseUltimateExplosionObject.minDmg = (level * 2 + maglv * 3) * 2.6 - 30UltimateExplosionObject.maxDmg = (level * 2 + maglv * 3) * 3.0 end Essa é a fórmula do Dano que o player irá tomar ao receber a magia, agora pra finalizar adiconamos: return doAreaMagic(cid, centerpos, needDirection, areaEffect, area, UltimateExplosionObject:ordered())end Pronto ja terminamos nossa primeira spell, agora para faze-la funcionar precisamos acrescenta-la aou arquivo spells.xml vamos lá, na pasta Data>Spells abra o arquivo spells.xml e na sessao de INSTANT, acrescente esta linha: spell name="CrossOver" words="crossover" maglv="12" mana="160" enabled="1"><vocation id="2" /><vocation id="1" /></spell> Explicando: spell name = nome da magia (pode ser qualquer um) words = as palavras magicas que terao que ser ditas pra magia funcionar (tem q ser igual ao nome do script da magia) magvl = maglv necessario para usar essa magia mana = mana que será gasta enabled = se a magia esta abilitada ou nao vocation id = para quais vocações essa magia funcionará, no caso acima ela so funciona pra sorc e druid ------------------ MONSTERS Spell criada, vamos passar para o Monstro que usara esta spell Crie um arquivo .xml com um nome qualquer na pasta Data>Monsters <?xml version="1.0"?><monster name="The Flash" level="500" maglevel="70" experience="1000" pushable="0" armor="80" defense="90" canpushitems="1" staticattack="50" changetarget="200" speed="100000"><health now="25000" max="25000"/><look type="134" head="94" body="94" legs="94" feet="79" corpse="4246"/><combat targetdistance="4" runonhealth="0"/><attacks><attack type="instant" name="flash_light" exhaustion="500" cycleticks="8000" probability="40"/></attacks><defenses><defense immunity="physical"/><defense immunity="paralyze"/></defenses><voices><voice sentence="HEHE Vem me pegar!!"/><voice sentence="Bah, ja dei 5 voltas e vc ai parado!"/></voices><summons maxSummons="2"><summon name="Chicken" chance="5000"/></summons><loot></loot></monster> Esse é um exemplo de um monstro que eu criei, escolhi ele pq ele apresenta quase todas as funções de um monster, vamos as explicações que realmente interessam monster name = nome do monstro, esse nome é oq aparecerá quando vc sumonar ele experience = a experiencia que ele dá, geralmente é um numero normal, parecido com o do Tibia, pois no config.lua é que a exp é multiplicada, portanto se vc colocar mto alto aqui, vai ficar absurda canpushitems = se o monstro pode mover objetos changetarget = dificuldade ou facilidade do monstro mudar de alvo combat targetdistance = a distancia em sqm em que o monstro ficará do player runonhealth = o life em que o monstro correrá do player <summons> = comando para ele sumonar um monstro <loot> = aqui vc ajusta os items e o dinheiro, com a chance (Vamos falar sobre isso mais a frente) e etc <attacks> = sao os ataques que seu monstro usará, tem os attack do tipo meele (dano fisico), distance (arrows, bolts, etc), instant (magias de instant), rune (magias de rune) <defenses> = aqui é pra vc colocar se o seu monstro vai ser imune a alguma coisa, exemplo: Demon é imune a fogo, entao vc poe lá: <defense immunity="fire"/> <voices> = qual será a mensagem que ele dirá (aquela msg laranja) </monster> = funciona como um end, finaliza o script Vamos falar sobre o looktype e a lootchance: "Ah eu quero criar um Boss dos orc, mas nao sei quais sao as roupinhas" Abaixo a lista dos looktypes dos monstros mais comums {["Orc Warlord"] = 2, ["War Wolf"] = 3, ["Orc Ridder"] = 4, ["Orc"] = 5, ["Orc Shaman"] =6, ["Orc Warrior"] = 7, ["Orc Berserker"] = 8, ["Necromancer"] = 9, ["Black Sheep"] = 13, ["Sheep"] = 14, ["Trol"] = 15, ["Bear"] = 16, ["Beholder"] = 17, ["Ghoul"] = 18, ["Slime"] = 19, ["Rat"]= 21, ["Cyclops"] = 22, ["Minotaur Mage"] = 23, ["Minotaur Archer"] = 24, ["Minotaur"] = 25, ["Rotworm"] = 26, ["Wolf"] = 27, ["Snake"] = 28, ["Minotaur Guard"] =29, ["Spider"] = 30, ["Deer"] = 31, ["Dog"] = 32, ["Skeleton"] = 33, ["Dragon"] = 34, ["Poison Spider"] = 36, ["Demon Skeleton"] = 37, ["Giant Spider"] = 38, ["Dragon Lord"] = 39, ["Fire Devil"] = 40, ["Lion"] = 41, ["Polar Bear"] = 42, ["Scorpion"] = 43, ["Wasp"]= 44, ["Bug"] = 45, ["Ghost"] = 48, ["Fire Elemental"] = 49, ["Orc Spearman"] = 50, ["Djinn"] =51, ["Winter Wolf"] = 52, ["Frost Troll"]=53, ["Witch"] = 54, ["Behemot"] =55, ["Cave Rat"] = 56, ["Monk"] = 57, ["Priestess"] = 58, ["Orc Leader"] = 59, ["Pig"] = 60, ["Goblin"] = 61, ["Elf"] = 62, ["Elf Arcanist"] = 63, ["Elf Scout"] = 64, ["Mummy"] = 65, ["Dwarf Geomancer"] = 66, ["Stone Golem"] = 67, ["Vampire"] = 68, ["Dwarf"] = 69, ["Dwarf Guard"] = 70, ["Dwarf Soldier"] = 71, ["Rabbit"] = 74, ["Swamp Troll"] = 76} E a lootchance "Eu quero fazer um faraó, mas quero que item fulano caia toda hora e que item ciclano caia mto raramente", entao ai vai a lista da loot chance: --100000= all time----50000= each 2 time----33333= each 3 time----20000= each 5 time----10000= each 10 time----6666= each 15 time----5000 = each 20 time----4000 = each 25 time----3333 = each 30 time----2857 = each 35 time----2500 = each 40 time----2222 = each 45 time----2000 = each 50 time----1818 = each 55 time----1666 = each 60 time----1538 = each 65 time----1428 = each 70 time----1333 = each 75 time----1000 = each 100 time----909 = each 110 time----833 = each 120 time----800 = each 125 time--666 = each 150 time----588 = each 170 time----555 = each 180 time----500 = each 200 time----400 = each 250 time----333 = each 300 time-- NPC Bom ja criamos uma spell, um monstro, vamos criar um NPC, que quando vc pedir ele sumone um monstro pra vc Começamos a função de um NPC com isso focus = 0contador = 0talk_start = 0target = 0following = falseattacking = falsefunction onThingMove(creature, thing, oldpos, oldstackpos)endfunction onCreatureAppear(creature)endfunction onCreatureDisappear(cid, pos)if focus == cid thenselfSay('Ate breve.')focus = 0contador = 0talk_start = 0endendfunction onCreatureTurn(creature)endfunction msgcontains(txt, str)return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))endfunction onCreatureSay(cid, type, msg)msg = string.lower(msg) Bom, depois disso acrescentamos: if ((string.find(msg, '(%a*)hi(%a*)')) and (focus == 0)) and getDistanceToCreature(cid) < 3 thenselfSay('Hail ' .. creatureGetName(cid) .. '! Voce gostaria de treinar com algum de meus monstros?')focus = cidcontador = 1talk_start = os.clock()end Quando vc falar HI pra ele ele vai te dizer: selfSay('Hail ' .. creatureGetName(cid) .. '! Voce gostaria de treinar com algum de meus monstros?') Dai pulamos uma linha e acrescentamos: if string.find(msg, '(%a*)hi(%a*)') and (focus ~= cid) and getDistanceToCreature(cid) < 3 thenselfSay('Espere ' .. creatureGetName(cid) .. '!')end Isso é, se alguem chegar e falar Hi e ele estiver falando com vc, ele vai dizer para o outro: selfSay('Espere ' .. creatureGetName(cid) .. '!') Entao agora para responder a pergunta que o Npc nos fez, pulamos uma linha e colocamos: if msgcontains(msg, 'yes') and focus == cid and contador == 1 thenselfSay('/m trainer')talk_start = os.clock()end No caso, quando vc falar yes, ele vai sumonar um trainer,aqui vc poderia substituir por qualquer outro bixo, entao fechamos o script com isso: if string.find(msg, '(%a*)bye(%a*)') and focus == cid and getDistanceToCreature(cid) < 3 thenselfSay('Ate Breve jovem ' .. creatureGetName(cid) .. '!')focus = 0talk_start = 0endendfunction onCreatureChangeOutfit(creature)endfunction onThink()if (os.clock() - talk_start) > 30 thenif focus > 0 thenselfSay('Próximo Por favor...')endfocus = 0contador = 0endend Que nada mais é do q, oq ele fala e faz depois que vc fala BYE, e oq ele fala e faz depois que vc se afasta muito dele. Vamos explicar algumas funções dos NPCs: selfSay = oq ele irá falar em resposta a algo q vc disse buy(cid,itemid,qtd,price) = mto usada para Npcs que compram e vendem, esta função serve para vc comprar algo de um Npc sell(cid,itemid,qtd,price) = igual ao explicado acima, so que serve para vc vender algo para o npc DICAS * Nunca faça monstros fortes demais, primeiro avalie a força dos jogadores do seu server e faça um monstro que eles consigam matar, mesmo que para isso ralem bastante, ninguem gosta de ver um monstro ignorante matando todo mundo, isso acaba com a graça *Faça spells balanceadas para todas as vocações, fazer uma spell onde so o druida é beneficiado, fica ruim, se fizer uma spell forte para o druida, tente fazer uma para o pally, o kina e o sorc, ou de a eles algum beneficio que o druida nao tem *Existem várias funções q podem ser usadas nos Npcs, tente tirar o máximo de proveito disso para fazer quests, eventos, etc Vlw e Comentem! Postem elogios, criticas, duvidas e sugestoes! Estou aqui para ajuda-los //Lucas321 -------------------------------- LEMBRANDO,CRÉDITOS A ELE,E NÃO A MIM.1 ponto -
:w4: Olha o que eu fiz no mapa Pricipalmente no OT ADM Chapo que mapa eh??? MAPA Dorion XML. Não editei muito... Mais ta Bom! ADM Chapo o que tem de diferente??? Treiners no barco hmmm... que não tinha mais eu coloquei! As novas magias, e as que naum vem em nenhum ot: Exori con, Exori Hur, caveirao, exori gran, exori mas. e todas do global Tem estagios de lvl... MODIFICADO Sistema para nadar.. sem npc... e não muda o outfit... Novas areas hunts novas actions... supimpa novo Talkactions... todas as armas do global ate da pra encantar... imagine! bixos novos.. ate o bixo que nada.. SWIMMER... novos NPC's ADM Chapo deu trabalho???? Nem deu... fiz com bastante cuidado.. pq qualquer bug fica feio! ADM Chapo voce deve ter passado um SCAN neh? se naum agente se fode! Lógico que eu passei.. nao vo deixar um erro com a DLL mais to ai pra ajudar! Download Via Rapidshare...!....! Para download Clique Aqui.... VLW POST AEW1 ponto
-
→ OTServ Auto Restarter ← Bom, sei que aqui no XTibia existem muitos tutoriais de como se criar um OTServ Restarter, ou seja um restarter para seu OTServ, mas não vejo muitos "restarters" prontos para download, por isso resolvi fazer um. O que é um restarter? É um reinicializador para seu OTServ, quando aparece aquelas mensagens de erros do Windows no seu OTServ e o seu servidor cai de conexão, ele inicia novamente o OTServ sem você precisar estar presente. ■ Instruções: Primeiramente, para o OTServ Restarter funcionar você terá que "desativar o relatório de erros do windows" → Desativar no Windows XP: Vá em Iniciar > Painel de Controle e dê um clique duplo no ícone: "Sistema" > Na guia "Avançado", clique em "Relatório de erros" > Selecione a opção "Desativar relatório de erros." Mas, é recomendável manter a opção "Notificar quando houver erros críticos" marcada, mas se seu OTServ tem erros critícos lembre-se de desativar. Se você tiver outro sistema operacional, cheque no Google para ver como desativar o "relatório de erros" do seu sistema. → Feito isto, renomeie o executável do seu servidor para OTServ, ficará assim (OTServ.exe), mas só renomeie para OTServ. Observação: O executável do servidor, é o distro por onde você abre seu OTServ (Exemplo: Yourots, Alissow | Lembre-se de renomear para OTServ). ■ Download e Informações Finais: → Download: http://depositfiles.com/files/yt9k2h1sp ■ Ok, após fazer o download do arquivo NewRestarter, você deverá abrir seu OTServ normalmente e depois dar um duplo clique no NewRestarter. Feito isso, poderá ficar tranquilo com o seu servidor, sem se preocupar com os ataques de nukers ou erros propriamente do Windows ou do servidor. Bom proveito. Atenciosamente, Luan Henrique.1 ponto
-
Eae Galera do XTibia *-*' Está cansado de todo mundo reclamando do lag do seu servidor? Estou aqui para trazer a solução ;DD Programa feito por Machine NOVA VERSÃO, EXPERIMENTE! Diminui o PING em OTServer's de porta 7171/7173, de qualquer versão. Sobre: Programa possui base de dados de diversos OTServ's, com databases enormes, mapas tamanhos 500x500 100% preenchidos, grande quantidade de jogadores, com ou sem exausted... Tudo para garantir uma amplitude na compatibilidade e eficiência, para melhor estabilidade de seu servidor, deixando o Ping dele sempre abaixo de 1,0, o que previni o LAG no OT (In-Game). Utiliza sistema de envio e recebimento de dados de todos os player's online, bloqueando IP's com Ping muito alto, impedindo o LAG. Nova versão com recurso Kick Hight Ping, que bloqueia o acesso de jogadores, normalmente que possuem internet discada, que causam alto Ping no servidor, ocasionando LAG e Freeze. É a solução para um bom funcionamento dos servidores. Para servidores que ficam ON 24Horas por dia, é a salvação! Criador: Machine Créditos: Machine. Tamanho: 2,0 MB Versão: 2.0 Obs: Deixe o PingOut aberto enquanto o server está em execução. Download Download aqui Scan Scan Aqui Gostou? REP +1 ponto
-
Como Jogar No Tibia Flash Client
carvalhosexy reagiu a pessoa93 por um tópico no fórum
Primeiro entre em sua account e clique em My account: Segundo clique em Join Beta Terceiro clique em PLAY Simples e fácil. Gostou? Agradeça1 ponto -
@Stigal Tas de Brincadeira Né? Aqui Funcionou Perfeitamente. @Maxximuss Muito Obrigado.1 ponto
-
[Encerrado] Server Com Leg Semi Dedicado
coyotestark reagiu a SkyDangerous por um tópico no fórum
Olá CoyoteStark Concerteza o lag pode vir do seu console que possui erros. A memoria ram , é muito importante porém a internet é que faiz efeito no otserv , ou seja se tiver uma internet ruim concerteza os players ficará lagado. Converse com a ****** tenta ver se não é problema na data center deles , as vezes está em manutenção.1 ponto -
Tipo do script:TalkAction Protocolo (versão do Tibia):8.60 Servidor utilizado:TFS Nível de experiência:Medio Adicionais/Informações:Queria Uma TalkAction , de comprar items. Porem so se pode comprar esses items, se voce tiver POINTS. Os points que sao comprados no SITE. E tambem uma magia pra checkar seus points . Exemplos :!vip --(VOCE AINDA TEM 20 POINTS) !vip boots of haste. (VOCE COMPROU UMA BOOTS OF HASTE POR 20 POINTS, AGORA LHE RESTAM 0 POINTS.) Por favor me ajudem, sera muito importante no meu OTS. Grato!!!1 ponto
-
Seguinte, se tu fez o andar de cima no floor 7 e o de baixo no 8 não dara pra ver. Tem que ser do 6 pra ver o 7 ou do 8 pra ver o 9.1 ponto
-
Double Hero Quest
fsg reagiu a Matheuzinhoul por um tópico no fórum
Tipo: Missão normal Nível necessário: 0 Localização: Edron Premium: Sim Recompensa: Club Ring, Red Gem Duração: Curto (< 1 hora) Guia da missão Essa quest começa na caverna dos Heros em Edron. Aqui o mapa mostra o caminho desde o Depot até a caverna (você não vai encontrar muitas criaturas no caminho, exceto Hunters e Wild Warriors perto da entrada da Hero Cave): A linha azul clara é em um andar acima. Agora desça e continue como o mapa mostra (Wild Warriors aqui): Agora desça novamente e siga o mapa (Dark Magicians, Demon Skeletons, Bats, Hunters, Priestess, Wild Warriors e Beholders no caminho): Desça novamente e siga o mapa a seguir (Demon Skeletons, Wild Warriors, Dark Magicians e Monks aqui): Depois de descer novamente prepare-se para enfrentar Dragons e siga o mapa: Agora siga o mapa (1 Dark Apprentice, 1 Dark Magician, 2 Monks, 1 Hero e 1 Demon Skeleton aqui): Siga o próximo mapa (Wild Warriors, Monks, 2 Priestess no caminho e 2 Demon Skeletons, 1 Orc Shaman, 1 Priestess e 2 Heroes na sala dos heroes): Pegue a recompensa nas caixas. Créditos: Tibia ml1 ponto -
Sistema Completo Buypoints.
theutrindade reagiu a walefxavier por um tópico no fórum
Ei cara, Este site aqui ja vem com esse sistema de buypoints ae ! Clique Aki1 ponto -
Itens No Site!
brubru01 reagiu a Piabeta Kun por um tópico no fórum
vá em htdocs dentro dele abara o charavters.php delete tudo que esta dentro e adicione isso: <?PHP $name = stripslashes(ucwords(strtolower(trim($_REQUEST['name'])))); if(empty($name)) { $main_content .= 'Here you can get detailed information about a certain player on '.$config['server']['serverName'].'.<BR> <FORM ACTION="?subtopic=characters" METHOD=post><TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4><TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" CLASS=white><B>Search Character</B></TD></TR><TR><TD BGCOLOR="'.$config['site']['darkborder'].'"><TABLE BORDER=0 CELLPADDING=1><TR><TD>Name:</TD><TD><INPUT NAME="name" VALUE=""SIZE=29 MAXLENGTH=29></TD><TD><INPUT TYPE=image NAME="Submit" SRC="'.$layout_name.'/images/buttons/sbutton_submit.gif" BORDER=0 WIDTH=120 HEIGHT=18></TD></TR></TABLE></TD></TR></TABLE></FORM>'; } else { if(check_name($name)) { $player = $ots->createObject('Player'); $player->find($name); if($player->isLoaded()) { $account = $player->getAccount(); $main_content .= '<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%><TR><TD><IMG SRC="'.$layout_name.'/images/general/blank.gif" WIDTH=10 HEIGHT=1 BORDER=0></TD><TD><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD COLSPAN=2 CLASS=white><B>Character Information</B></TD></TR>'; if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD WIDTH=20%>Name:</TD><TD><font color="'; $main_content .= ($player->isOnline()) ? 'green' : 'red'; $main_content .= '"><b>'.$player->getName().'</b></font>'; if($player->isDeleted()) $main_content .= '<font color="red"> [DELETED]</font>'; if($player->isNameLocked()) $main_content .= '<font color="red"> [NAMELOCK]</font>'; $main_content .= '</TD></TR>'; if($player->getOldName()) { if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; if($player->isNameLocked()) $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Proposition:</TD><TD>'.$player->getOldName().'</TD></TR>'; else $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Old name:</TD><TD>'.$player->getOldName().'</TD></TR>'; } // BEGIN Position Showing *** Fixed by jerryb1988 from otfans.net $group = $player->getGroup(); if ($group == 2){$group_name = 'Tutor';} if ($group == 3){$group_name = 'Senior Tutor';} if ($group == 4){$group_name = 'Gamemaster';} if ($group == 5){$group_name = 'Community Manager';} if ($group == 6){$group_name = 'GOD';} if($group != 1) { if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Position:</TD><TD>'.$group_name.'</TD></TR>'; } // END Position Showing if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Sex:</TD><TD>'; $main_content .= ($player->getSex() == 0) ? 'female' : 'male'; $main_content .= '</TD></TR>'; if($config['site']['show_marriage_info']) { if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Marital status:</TD><TD>'; $marriage = new OTS_Player(); $marriage->load($player->getMarriage()); if($marriage->isLoaded()) $main_content .= 'married to <a href="?subtopic=characters&name='.urlencode($marriage->getName()).'"><b>'.$marriage->getName().'</b></a></TD></TR>'; else $main_content .= 'single</TD></TR>'; } if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Profession:</TD><TD>'.$vocation_name[$player->getWorld()][$player->getPromotion()][$player->getVocation()].'</TD></TR>'; if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Level:</TD><TD>'.$player->getLevel().'</TD></TR>'; if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>World:</TD><TD>'.$config['site']['worlds'][$player->getWorld()].'</TD></TR>'; if(!empty($towns_list[$player->getWorld()][$player->getTownId()])) { if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Residence:</TD><TD>'.$towns_list[$player->getWorld()][$player->getTownId()].'</TD></TR>'; if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Balance:</TD><TD>'.$player->getBalance().' Gold Coins.</TD></TR>'; } $rank_of_player = $player->getRank(); if(!empty($rank_of_player)) { { $guild_id = $rank_of_player->getGuild()->getId(); $guild_name = $rank_of_player->getGuild()->getName(); if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Guild Membership:</TD><TD>'.$rank_of_player->getName().' of the <a href="?subtopic=guilds&action=show&guild='.$guild_id.'">'.$guild_name.'</a></TD></TR>'; } } if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $lastlogin = $player->getLastLogin(); if(empty($lastlogin)) $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Last login:</TD><TD>Never logged in.</TD></TR>'; else $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Last login:</TD><TD>'.date("j F Y, g:i a", $lastlogin).'</TD></TR>'; if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; if($config['site']['show_creationdate'] && $player->getCreated()) { $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Created:</TD><TD>'.date("j F Y, g:i a", $player->getCreated()).'</TD></TR>'; } if($config['site']['show_vip_status']) { $id = $player->getCustomField("id"); if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD WIDTH=10%>Vip Status:</TD>'; $vip = $SQL->query('SELECT * FROM player_storage WHERE player_id = '.$id.' AND `key` = '.$config['site']['show_vip_storage'].';')->fetch(); if($vip == false) { $main_content .= '<TD><span class="red"><B>NOT VIP</B></TD></TR>'; } else { $main_content .= '<TD><span class="green"><B>VIP</B></TD></TR>'; } $comment = $player->getComment(); $newlines = array("\r\n", "\n", "\r"); $comment_with_lines = str_replace($newlines, '<br />', $comment, $count); if($count < 50) $comment = $comment_with_lines; if(!empty($comment)) { if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD VALIGN=top>Comment:</TD><TD>'.$comment.'</TD></TR>'; } } //Outfit shower by Pening edited by loleslav if($config['site']['show_outfit']) { $id = $player->getCustomField("id"); $main_content .= '<TD BGCOLOR="'.$config['site']['darkborder'].'">Outfit:'; $listaddon = array('128','129','130','131','132','133','134','135','136','137','138','139','140','141','142','143','144','145','146','147','148','149','150','151','152','153','154','155','158','159','251','252','268','269','270','273','278','279','288','289','302','324','325'); $lookadd = array('0','1','2','3'); foreach ($listaddon as $pid => $name) foreach ($lookadd as $addo => $name) { $addon1 = $SQL->query('SELECT * FROM players WHERE id = '.$id.' AND looktype = '.$listaddon[$pid].' AND lookaddons = '.$lookadd[$addo].';')->fetch(); if($addon1[looktype] == true ) { $finaddon = $addon1[looktype] + $addon1[lookaddons] * 300; $main_content .= '<TD with=50% style="background-color: '.$config['site']['darkborder'].'"><center><img src="images/addons/'.$finaddon.'.gif"/></center></TD></TD>'; } } } $main_content .= '</td>'; //end Outfit shower by Pening edited by loleslav if($config['site']['show_signature']) { // Signature by makr0mango. function randomSignature( $folder ) { $files = scandir ( "./$folder/" ); $signature = array(); foreach ( $files as $file ): if ( substr ( strtolower ( $file ) , -4 ) == ".png" ) $signature[] = $file; endforeach; return rand(0,count($signature)-1); } $random = randomSignature("signatures"); $main_content .= '<br><tr></tr><tr></tr><tr></tr><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD COLSPAN=2 CLASS=white><B>Signature</B></TD></TR>'; $main_content .= "<TR BGCOLOR=".$config['site']['darkborder']."><TD WIDTH=20%>Forum Link:</TD><TD><input type='text' size='75' onclick='this.select();' value='[url=\"http://" . $_SERVER['HTTP_HOST'] . "\"][img=http://" . $_SERVER['HTTP_HOST'] . "/signature.php?character=" .$player->getName(). "ℑ=" . $random . "][/url]' /></TD></TR>"; $main_content .= "<TR BGCOLOR=".$config['site']['lightborder']."><TD WIDTH=20%>Direct Link:</TD><TD><input type='text' size='75' onclick='this.select();' value='http://" . $_SERVER['HTTP_HOST'] . "/signature.php?character=" .$player->getName(). "ℑ=" . $random . "' /></TD></TR>"; $main_content .= "<TR BGCOLOR=".$config['site']['darkborder']."><TD COLSPAN='2' style='text-align: center;'><img src='signature.php?character=" .$player->getName(). "ℑ=" . $random . "' /></TD></TR>"; $main_content .= '</TD></TR></TABLE>'; // Signature by makr0mango. } //modified status scripts by ballack13 $main_content .= '<table width=100%><tr>'; //equipment shower by ballack13 $id = $player->getCustomField("id"); $number_of_items = 1; $main_content .= '<td align=center><table with=100% style="border: solid 1px #888888;" CELLSPACING="1"><TR>'; $list = array('2','1','3','6','4','5','9','7','10','8'); foreach ($list as $pid => $name) { $top = $SQL->query('SELECT * FROM player_items WHERE player_id = '.$id.' AND pid = '.$list[$pid].';')->fetch(); if($top[itemtype] == false) { if($list[$pid] == '8') { $main_content .= '<td style="background-color: '.$config['site']['darkborder'].'; text-align: center;">Soul:<br/>'.$player->getSoul().'</td>'; } if(is_int($number_of_items / 3)){ $main_content .= '<TD style="background-color: '.$config['site']['darkborder'].'; text-align: center;"><img src="images/items/'.$list[$pid].'.gif"/></TD></tr><tr>'; } else { $main_content .= '<TD style="background-color: '.$config['site']['darkborder'].'; text-align: center;"><img src="images/items/'.$list[$pid].'.gif"/></TD>'; } $number_of_items++; } else { if($list[$pid] == '8') { $main_content .= '<td style="background-color: '.$config['site']['darkborder'].'; text-align: center;">Soul:<br/>'.$player->getSoul().'</td>'; } if(is_int($number_of_items / 3)) $main_content .= '<TD style="background-color: '.$config['site']['darkborder'].'; text-align: center;"><img src="images/items/'.$top[itemtype].'.gif" width="45"/></TD></tr><tr>'; else $main_content .= '<TD style="background-color: '.$config['site']['darkborder'].'; text-align: center;"><img src="images/items/'.$top[itemtype].'.gif" width="45"/></TD>'; $number_of_items++; } if($list[$pid] == '8') { $main_content .= '<td style="background-color: '.$config['site']['darkborder'].'; text-align: center;">Cap:<br/>'.$player->getCap().'</td>'; } } $main_content .= '</tr></TABLE></td>'; //Hp/Mana/Exp Status by ballack13 $hp = ($player->getHealth() / $player->getHealthMax() * 100); $main_content .= '<td align=center ><table width=100%><tr><td align=center><table CELLSPACING="1" CELLPADDING="4"><tr><td BGCOLOR="#D4C0A1" align="left" width="20%"><b>Player Health:</b></td> <td BGCOLOR="#D4C0A1" align="left">'.$player->getHealth().'/'.$player->getHealthMax().'<div style="width: 100%; height: 3px; border: 1px solid #000;"><div style="background: red; width: '.$hp.'%; height: 3px;"></td></tr>'; if ($player->getManaMax() > 0) { $mana = ($player->getMana() / $player->getManaMax() * 100); $main_content .= '<tr><td BGCOLOR="#F1E0C6" align="left"><b>Player Mana:</b></td><td BGCOLOR="#F1E0C6" align="left">'.$player->getMana().'/'.$player->getManaMax().'<div style="width: 100%; height: 3px; border: 1px solid #000;"><div style="background: blue; width: '.$mana.'%; height: 3px;"></td>'; } else { $main_content .= '<tr><td BGCOLOR="#F1E0C6" align="left"><b>Player Mana:</b></td><td BGCOLOR="#F1E0C6" align="left">0/0<div style="width: 100%; height: 3px; border: 1px solid #000;"><div style="background: blue; width: 100%; height: 3px;"></td>'; } $main_content .= '</tr></table><tr>'; $next = ($player->getLevel() + 1); $exp = ((50 / 3) * ($player->getLevel() * $player->getLevel() * $player->getLevel()) - (100 * ($player->getLevel() * $player->getLevel())) + ((850/3) * $player->getLevel()) - 200); $expnext = ((50 / 3) * ($next * $next * $next) - (100 * ($next * $next)) + ((850/3) * $next) - 200 - $player->getExperience()); $expresult = ($expnext / (($expnext + $player->getExperience()) - $exp) * 100); $main_content .= '<tr><table CELLSPACING="1" CELLPADDING="4"><tr><td BGCOLOR="'.$config['site']['lightborder'].'" align="left" width="20%"><b>Player Level:</b></td><td BGCOLOR="'.$config['site']['lightborder'].'" align="left">'.$player->getLevel().'</td></tr> <tr><td BGCOLOR="'.$config['site']['darkborder'].'" align="left"><b>Player Experience:</b></td><td BGCOLOR="'.$config['site']['darkborder'].'" align="left">'.$player->getExperience().' EXP.</td></tr> <tr><td BGCOLOR="'.$config['site']['lightborder'].'" align="left"><b>To Next Level:</b></td><td BGCOLOR="'.$config['site']['lightborder'].'" align="left">You need <b>'.$exp.' EXP</b> to Level <b>'.$next.'</b>.<div title="99.320604545 %" style="width: 100%; height: 3px; border: 1px solid #000;"><div style="background: red; width: '.$expresult.'%; height: 3px;"></td></tr></table></td></tr></table></tr></TABLE></td>'; if($config['site']['show_skills_info']) { //Skills Pics v2. Table borders optimized by Absolute Mango $main_content .= '<br/><table cellspacing="0" cellpadding="0" border="0" width="200" align="center"><caption><strong>Skills</strong></caption><tbody><tr> <td align="center"><a href="?subtopic=highscores&list=experience"><img src="images/skills/level.png" style="border: none;"/></a></td> <td align="center"><a href="?subtopic=highscores&list=magic"><img src="images/skills/ml.png" style="border: none;"/></a></td> <td align="center"><a href="?subtopic=highscores&list=fist"><img src="images/skills/fist.png" style="border: none;"/></a></td> <td align="center"><a href="?subtopic=highscores&list=club"><img src="images/skills/club.png" style="border: none;"/></a></td> <td align="center"><a href="?subtopic=highscores&list=sword"><img src="images/skills/sword.png" style="border: none;"/></a></td> <td align="center"><a href="?subtopic=highscores&list=axe"><img src="images/skills/axe.png" style="border: none;"/></a></td> <td align="center"><a href="?subtopic=highscores&list=distance"><img src="images/skills/dist.png" style="border: none;"/></a></td> <td align="center"><a href="?subtopic=highscores&list=shield"><img src="images/skills/def.png" style="border: none;"/></a></td> <td align="center"><a href="?subtopic=highscores&list=fishing"><img src="images/skills/fish.png" style="border: none;"/></a></td> </tr></tbody></table> <table cellspacing="0" cellpadding="0" border="1" width="360" align="center"><tbody><tr><tr bgcolor="'.$config['site']['darkborder'].'"> <td align="center" width="38"><strong>Level</strong></td> <td align="center" width="38"><strong>ML</strong></td> <td align="center" width="42"><strong>Fist</strong></td> <td align="center" width="40"><strong>Club</strong></td> <td align="center" width="38"><strong>Swrd</strong></td> <td align="center" width="38"><strong>Axe</strong></td> <td align="center" width="38"><strong>Dist</strong></td> <td align="center" width="38"><strong>Shield</strong></td> <td align="center" width="38"><strong>Fish</strong></td></font> </tr> <tr bgcolor="'.$config['site']['lightborder'].'"> <td align="center" width="38">'.$player->getLevel().'</td> <td align="center" width="38">'.$player->getMagLevel().'</td> <td align="center" width="38">'.$player->getSkill(0).'</td> <td align="center" width="38">'.$player->getSkill(1).'</td> <td align="center" width="38">'.$player->getSkill(2).'</td> <td align="center" width="38">'.$player->getSkill(3).'</td> <td align="center" width="38">'.$player->getSkill(4).'</td> <td align="center" width="38">'.$player->getSkill(5).'</td> <td align="center" width="38">'.$player->getSkill(6).'</td> </tr></tbody></table><div table align="center"> <br /> </div>'; //skill script end } //quest status by ballack13 $id = $player->getCustomField("id"); $number_of_quests = 0; $main_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD align="left" COLSPAN=2 CLASS=white><B>Quests</B></TD></TD align="right"></TD></TR>'; $quests = $config['site']['quests']; foreach ($quests as $storage => $name) { if(is_int($number_of_quests / 2)) $bgcolor = $config['site']['darkborder']; else $bgcolor = $config['site']['lightborder']; $number_of_quests++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD WIDTH=95%>'.$storage.'</TD>'; $quest = $SQL->query('SELECT * FROM player_storage WHERE player_id = '.$id.' AND `key` = '.$quests[$storage].';')->fetch(); if($quest == false) { $main_content .= '<TD><img src="images/false.png"/></TD></TR>'; } else { $main_content .= '<TD><img src="images/true.png"/></TD></TR>'; } } $main_content .= '</TABLE></td></tr></table><br />'; $deads = 0; //deaths list $player_deaths = $SQL->query('SELECT `id`, `date`, `level` FROM `player_deaths` WHERE `player_id` = '.$player->getId().' ORDER BY `date` DESC LIMIT 0,10;'); foreach($player_deaths as $death) { if(is_int($number_of_rows / 2)) $bgcolor = $config['site']['darkborder']; else $bgcolor = $config['site']['lightborder']; $number_of_rows++; $deads++; $dead_add_content .= "<tr bgcolor=\"".$bgcolor."\"> <td width=\"20%\" align=\"center\">".date("j M Y, H:i", $death['date'])."</td> <td>"; $killers = $SQL->query("SELECT environment_killers.name AS monster_name, players.name AS player_name, players.deleted AS player_exists FROM killers LEFT JOIN environment_killers ON killers.id = environment_killers.kill_id LEFT JOIN player_killers ON killers.id = player_killers.kill_id LEFT JOIN players ON players.id = player_killers.player_id WHERE killers.death_id = ".$SQL->quote($death['id'])." ORDER BY killers.final_hit DESC, killers.id ASC")->fetchAll(); $i = 0; $count = count($killers); foreach($killers as $killer) { $i++; if(in_array($i, array(1, $count))) $killer['monster_name'] = str_replace(array("an ", "a "), array("", ""), $killer['monster_name']); if($killer['player_name'] != "") { if($i == 1) $dead_add_content .= "Killed at level <b>".$death['level']."</b> by "; else if($i == $count) $dead_add_content .= " and by "; else $dead_add_content .= ", "; if($killer['monster_name'] != "") $dead_add_content .= $killer['monster_name']." summoned by "; if($killer['player_exists'] == 0) $dead_add_content .= "<a href=\"index.php?subtopic=characters&name=".urlencode($killer['player_name'])."\">"; $dead_add_content .= $killer['player_name']; if($killer['player_exists'] == 0) $dead_add_content .= "</a>"; } else { if($i == 1) $dead_add_content .= "Died at level <b>".$death['level']."</b> by "; else if($i == $count) $dead_add_content .= " and by "; else $dead_add_content .= ", "; $dead_add_content .= $killer['monster_name']; } if($i == $count) $dead_add_content .= "."; } $dead_add_content .= ".</td></tr>"; } if($deads > 0) $main_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD COLSPAN=2 CLASS=white><B>Deaths</B></TD></TR>' . $dead_add_content . '</TABLE><br />'; //end if(!$player->getHideChar()) { $main_content .= '<TABLE BORDER=0><TR><TD></TD></TR></TABLE><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD COLSPAN=2 CLASS=white><B>Account Information</B></TD></TR>'; if($account->getRLName()) { if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR='.$config['site']['lightborder'].'><TD WIDTH=20%>Real name:</TD><TD>'.$account->getRLName().'</TD></TR>'; } if($account->getLocation()) { if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR='.$config['site']['darkborder'].'><TD WIDTH=20%>Location:</TD><TD>'.$account->getLocation().'</TD></TR>'; } if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; if($account->getLastLogin()) $main_content .= '<TR BGCOLOR='.$config['site']['lightborder'].'><TD WIDTH=20%>Last login:</TD><TD>'.date("j F Y, g:i a", $account->getLastLogin()).'</TD></TR>'; else $main_content .= '<TR BGCOLOR='.$config['site']['lightborder'].'><TD WIDTH=20%>Last login:</TD><TD>Never logged in.</TD></TR>'; if($account->getCreated()) { if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR='.$config['site']['lightborder'].'><TD WIDTH=20%>Created:</TD><TD>'.date("j F Y, g:i a", $account->getCreated()).'</TD></TR>'; } if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Account Status:</TD><TD>'; $main_content .= ($account->isPremium()) ? '<b><font color="green">Premium Account</font></b>' : '<b><font color="red">Free Account</font></b>'; if($account->isBanned()) if($account->getBanTime() > 0) $main_content .= '<font color="red"> [banished until '.date("j F Y, G:i", $account->getBanTime()).']</font>'; else $main_content .= '<font color="red"> [banished FOREVER]</font>'; $main_content .= '</TD></TR></TABLE>'; $main_content .= '<br><TABLE BORDER=0><TR><TD></TD></TR></TABLE><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR='.$config['site']['vdarkborder'].'><TD COLSPAN=5 CLASS=white><B>Characters</B></TD></TR> <TR BGCOLOR='.$config['site']['darkborder'].'><TD><B>Name</B></TD><TD><B>World</B></TD><TD><B>Level</B></TD><TD><b>Status</b></TD><TD><B> </B></TD></TR>'; $account_players = $account->getPlayersList(); $account_players->orderBy('name'); $player_number = 0; foreach($account_players as $player_list) { if(!$player_list->getHideChar()) { $player_number++; if(is_int($player_number / 2)) $bgcolor = $config['site']['darkborder']; else $bgcolor = $config['site']['lightborder']; if(!$player_list->isOnline()) $player_list_status = '<font color="red">Offline</font>'; else $player_list_status = '<font color="green">Online</font>'; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD WIDTH=52%><NOBR>'.$player_number.'. '.$player_list->getName(); $main_content .= ($player_list->isDeleted()) ? '<font color="red"> [DELETED]</font>' : ''; $main_content .= '</NOBR></TD><TD WIDTH=15%>'.$config['site']['worlds'][$player_list->getWorld()].'</TD><TD WIDTH=25%>'.$player_list->getLevel().' '.$vocation_name[$player_list->getWorld()][$player_list->getPromotion()][$player_list->getVocation()].'</TD><TD WIDTH="8%"><b>'.$player_list_status.'</b></TD><TD><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><FORM ACTION="?subtopic=characters" METHOD=post><TR><TD><INPUT TYPE=hidden NAME=name VALUE="'.$player_list->getName().'"><INPUT TYPE=image NAME="View '.$player_list->getName().'" ALT="View '.$player_list->getName().'" SRC="'.$layout_name.'/images/buttons/sbutton_view.gif" BORDER=0 WIDTH=120 HEIGHT=18></TD></TR></FORM></TABLE></TD></TR>'; } } $main_content .= '</TABLE></TD><TD><IMG SRC="'.$layout_name.'/images/general/blank.gif" WIDTH=10 HEIGHT=1 BORDER=0></TD></TR></TABLE>'; } $main_content .= '<BR><BR><FORM ACTION="?subtopic=characters" METHOD=post><TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4><TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" CLASS=white><B>Search Character</B></TD></TR><TR><TD BGCOLOR="'.$config['site']['darkborder'].'"><TABLE BORDER=0 CELLPADDING=1><TR><TD>Name:</TD><TD><INPUT NAME="name" VALUE=""SIZE=29 MAXLENGTH=29></TD><TD><INPUT TYPE=image NAME="Submit" SRC="'.$layout_name.'/images/buttons/sbutton_submit.gif" BORDER=0 WIDTH=120 HEIGHT=18></TD></TR></TABLE></TD></TR></TABLE></FORM>'; $main_content .= '</TABLE>'; } else $search_errors[] = 'Character <b>'.$name.'</b> does not exist.'; } else $search_errors[] = 'This name contains invalid letters. Please use only A-Z, a-z and space.'; if(!empty($search_errors)) { $main_content .= '<div class="SmallBox" > <div class="MessageContainer" > <div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif);" /></div> <div class="BoxFrameEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div> <div class="BoxFrameEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div> <div class="ErrorMessage" > <div class="BoxFrameVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></div> <div class="BoxFrameVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></div> <div class="AttentionSign" style="background-image:url('.$layout_name.'/images/content/attentionsign.gif);" /></div><b>The Following Errors Have Occurred:</b><br/>'; foreach($search_errors as $search_error) $main_content .= '<li>'.$search_error; $main_content .= '</div> <div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif);" /></div> <div class="BoxFrameEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div> <div class="BoxFrameEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div> </div></div><br/>'; $main_content .= '<BR><FORM ACTION="?subtopic=characters" METHOD=post><TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4><TR><TD BGCOLOR="'.$config['site']['vdarkborder'].'" CLASS=white><B>Search Character</B></TD></TR><TR><TD BGCOLOR="'.$config['site']['darkborder'].'"><TABLE BORDER=0 CELLPADDING=1><TR><TD>Name:</TD><TD><INPUT NAME="name" VALUE=""SIZE=29 MAXLENGTH=29></TD><TD><INPUT TYPE=image NAME="Submit" SRC="'.$layout_name.'/images/buttons/sbutton_submit.gif" BORDER=0 WIDTH=120 HEIGHT=18></TD></TR></TABLE></TD></TR></TABLE></FORM>'; } } ?> se ajudei +REP!!! :smile_positivo:1 ponto -
Primeiro leia isto: http://www.xtibia.com/forum/topic/144276-como-postar-um-bom-download/ Após a leitura formate seu tópico para ficar mais agradável. ninguém vai baixar isso sem saber o que tem de novo, edições e talz.1 ponto
-
[Item] Efeito De Wand!
vinny160600 reagiu a douguera por um tópico no fórum
em weapons.xml poem essa linha <wand id="4848" range="8" lvl="8" mana="300" enabled="1" exhaustion="20" script="superwand.lua"> </wand> em weapons/scripts crie 1 arquivo lua com nome de superwand.lua e poem issu dentro local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 37) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ME_ENERGYBALL) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -3.7, -35, -2.6, -38) function onUseWeapon(cid, var) return doCombat(cid, combat, var) end1 ponto -
Runescape Tibia
Gustavo Menille Benzi reagiu a Grangabri por um tópico no fórum
Nome: Luis Ricardo Cargo: Mapper Experiencia: Pouca, mas o que eu aprendi aqui no faz Diferença. E-mail: luis_aahonorato@hotmail.com Idade: 14 @nos Porque gostaria de entrar no projeto: Porque seria a minha 1º vez e eu ia gostar mto Eu era um jogador de Runescape, lvl 86 Luis86 Conheço o mapa do Runes, e várias outras coisas como quest, e etc.1 ponto -
Error Mysql Tfs 04
devotti2 reagiu a decosiqueira por um tópico no fórum
CAra o problema esta no seu sistema de shoping, algum player comprou algum item e está tentando gravar isso na tabela porêm o código não existe: 1- Veja quais os passos que fez para instalar o shoping, veja se criuo os itens novos, veja todos os campos novos se forum incluidos nas respectivas tabelas, você deve ter isso em algum lugar, uma coisa que você deve tomar por rotina é antes de instalar qualquer módulo faça um backup de sua base de dados para caso haja erro basta restarar.1 ponto -
Começei A Ser Spriter!
BlackTheRabbit reagiu a zothzin por um tópico no fórum
Olha cara, os sprites tão bem simples, mais pelo menos é alguma coisa, sabe fazer mais que eu até, tente parecê-los um pouco mais com o jogo do Tibia (se é este o fim que você quer dar pros seus sprites), use mais detalhes e sombras. A propósito qual programa você usa pra fazê-los? Saca alguns sprites bem massa; (by Somni) Até monstros, mais aí fica mais complicado ;x (by Dastan) Sei que você é iniciante ainda, mais tente fazer com os mesmos objetivos que o acima; Veja uns tutoriais também, aqui no XTibia tem ótimos também; exemplos; http://www.xtibia.com/forum/topic/132477-entendendo-a-perspectiva-do-tibia/ http://www.xtibia.com/forum/topic/132476-entendendo-a-iluminacao-principios-basicos-do-sombreamento/ http://www.xtibia.com/forum/topic/120652-tutorial-de-laminas/ http://www.xtibia.com/forum/topic/127205-the-pixel-art-tutorial/ Boa sorte, tem futuro man, mais questão de prática também, porque tá bem simples >.< Sour.1 ponto -
аадминские футболки купить футболку winx москва славянские футболки купить футболки простые интернет магазин лебедев футболки футболка рисунок нанести футболка хк ска прикольные футболки. идеальный мужик женская одежда топики футболки кофты розница недорого футболки с приколами с личными надписями магазины в киеве майки под заказ майка на бретелях майка со спанч бобом купить футболку саус парк печать на футболках срочно купить белую майку vbulletin футболка меняет цвет женские футболки топы блузки майки фото на футболках срочное изготовление интернет-магазины футболки блузки топы майки футболки анимэ определить рaзмер футболки футболки поло все размеры потрескавшийся рисунок на футболке футболки с микки маусом и минни мужская футболка да я мама майки на заказ майки банданы логотип на детских футболках поло изображение на майках принты на майки на заказ заказать печать на футболке от 1 шт картинки девушки на футболках футболки санкт петербург заказать футболку спанч боб заказать футболку drop dead футболка властелин колец x майки футболка отца футболки блич майки и футболки i love ny майки с мультяшками женские футболки для серв до 350 руб фото белой майки купить камеди футболку футболки бизнес план футболки оптом со склада в екатеринбурге футболка ливерпуль купить майку с картинкой футболка мужская футболки с рваными краями футболки с логотипом гимнастика майки reebok клубные футболки светящиеся футболка пантера купить майку сборной россии футболки логотипы рисунки футболки страны заказать футболку ссср футболка и трусы супермен надписи на майках печать на бейсболках акупить прикольные недорого женские футболки с бесплатной доставкой интернет магазин эмо треш ремни значки майки череп футболка печать майки футболки майка мужская белая футболка с ароматом лимона футболка суслик suka личность заказать футболку стипе плетикоса срочная цифровая печать на футболках футболки с надписью akab опыт майкельсона - морли заказать футболку tiesto футболки трусы женские приколы бизнес печать на футболках виды прикольных логотипов на футболке http://forum.mirl2.ru/member.php?u=61815 майки из сша стильные майки мужские футболки skulbone meow эмблемы корые можно наклеить на майки туристов маечка в обтяжечку майки прикольные футболка белая с лого детская футболка надпись футболки ярусский в спб south park майки отзыв мамайка сочи отзывы сколько стоит футболка денис симачев майка дули мысли становятся вещами книга футболки на заказ с логотипом кик-боксинга футболки craft заказать футболка группы amatory логотип yf футболки кепки вещмешки футболка ру рисунки сколько стоит просто напечатать термопечатью на футболках майки с изображением индейцев прикольные футболки в спб самовывоз фото на кружки и печать на футболки и подушки женские футболки печать нанесение логотипа на футболку г обнинск футболки детские москва http://www.xpimedia.net/forums/index.php?showtopic=2427&st=0entry5537 inzer майки фото сколько стоит футболка bosco sport футболки синтетика спб выкройка детской майки купить форум фк зенита футболку и шорты и гольфы гдн можно купить майку zlatana ibragimovicha где можно купить футболки linkin park футболка с пайетками купить детские майки и трусы фотография кошек породы майкун футболка я-русский и этим горжусь бейсболки футболки продажа оборудования для нанесения печати на футболки футболки детские х б майки магазин цветные футболки с рисунком dj аппаратурой ищу интернет-магазин который занимается нанесением на футболки и кепки логотопив/текстов. вивьен вествуд футболки мужские майки летние женские футболки изготовлены в питере аинтернет магазин футболки dj футболка команды зенит аршавин купить футболка символика россии майки с надписью о спорте шоссе мокрая майка футболке бен шерман прикольную футболку в интернет магазине футболки в липецке купить футболке wow футболка с именами игроков зенита майки эминем футболка я мама изготовление надписей на футболках в спб быстро футболки без рукавов купить футболку с модной надписью http://jingletech.net/bbs/profile.php?id=5736 майки с логатипами россии как выбрать футболку футболки 1 интернет магазин майка tama купить уникальные футболки купить оборудование для производства надписей на футболки купить майки в гомеле как выбрать обтягивающую маечку футболка с символикой сааб мульти сериал каппа майки футболка поло adidas nightmare clowns - street - t-shirt футболки трафарет на майку печать на футболках в нижнем новгороде футболки на заказ с хомячками футболка фк милан футболка с дисплеем футболка ф1 купить купить недорого футболку с доставкой надпись на футболке для pes2008 design футболки футболки south park в спб футболки с логотипом linkin park майка супер мэна майки футболки с изображением кассет http://www.ugra-tv.ru/forum/index.php?showtopic=1369&st=0&gopid=1729entry1729 майка с волком прикольные футболки в тюмени купить майку honda футболка национальной сборной туниса - вид сзади район мамайка сочи отзывы футболки adio circa дешево футболка с валли футболки картинки на заказ Варкрафт футболки футболкa.ру футболки с копьемитателем заказ мужские футболки iceberg цены на футболки в bosco sport футболка мапэд прикольные футболки на украине детская маечка крючком где купить футболку evanescence спб футболка i lone new york майка мужская эротическая женские футболки с длинным рукавом оранжевого цвета афутболка в спб футболки длинные футболки south parka изготовление фирменых логотипах на футболках и.т.д. в самаре на майке американский флаг продажа футболка каратель футболки сприколами в питере заказать майку с фамилией cech славянский союз футболк футболки микрофибра майки футболки с изображением кассет royal angora майка мужская длинный рукав майки камеди клуб оформление рекламы на футболках и рубашках футболки от камеди клаб http://gazon.net.ua/assets/forum/index.php?action=profile;u=3859 детская зеленая футболка майка женская lm1004-1 футболки с надписями где купить в москве замочить футболку отзыв мамайка сочи отзывы термо футболка майка суслик сука футболка с фамилией bassila интересные футболки хана монтанамайкифото сколько стоит футболка денис симачев футболки с мики маусом на заказ denis simachev футболки жизнь с майки фильм скачать бесплатно купить футболку nightwish фото граффити на футболке интернет-магазин майки с надписями слова из песен майка мироненко нанести изображение на футболку бейсболки рисунки на футболках футболки где купить футболки с прикогльными надписями прикольные майки в футболки white детство майка шиноды как купить футбольные майки милана http://space-monkey.ru/wp-includes/guest/index.php?showforum=1 заказать клубные футболки спортивные подростковые футболки нанесение логотипа на футболки сувениры москва все майки игровые хоккейные майки бумaгa для печaти нa футболкaх группа майка сканворд майка женская lm1004-1 недорог заказать футболку по интернету как быстро сделать надпись на футболке самостоятельно футболки 1 мужские футболки фирмы vans на заказ женская футболка с микки маусом майка парная футболки с новосибирском детские футболки 4 года веселые майки с изображением спантч боба майка для папы g unit fifth футболка печать на футболках нанесение логотипов ав майке майку бесплатно женские футболки москва футболка с надписью ведьма толстовки футболки бейсболки купить футболку zm футболки с приколами киров симачев футболки купить футболки с прикольными надписями в спб майки с изображением конопли на заказ купить жимовую майку прикльные женские майки сделать свои футболки питер мусульманские футболки майки группы шлюз http://www.xn--12ccx6c8azag8aygc0a0c0o.com/forum/index.php?action=profile;u=15888 прикольные футболки за 300 рублей купить футболку с символикой кубы в санкт-петербурге футболки с приколами ото футболки с изображением mylene farmer картинка на майку i love new york майка футболки с бегемотами купить как сделать светящуюся футболку футболки с играми мужские футболки майки дешево футболки нанесение фотографии жизнь с майки фильм скачать бесплатно футболки и майки сегодня холост футболка с фамилией bassila футболки pacha прикольные футболки по 200 рублей футболки красной плесени майки и футболки disney где в одессе делают фото на футболки майка с приколькой надписью арсенал майка игровая 08-10 nike красная предательская маечка глюкозы делаем майки на заказ футболка everybody lies футболки кепки бейсболки http://www.forum.banki.dlamnie.com/viewtopic.php?p=735#735 оптом детские костюмышорты футболка на майки в где купить футболку зенита майка с логотипом газпрома фото девушки в майке с надписью владею языком футболки ramones полосатая майка как сделать светящуюся футболку печать на майках в г.самара майки и топики связанные крючком жизнь с майки фильм скачать бесплатно печать на футболки футболки нанесение печать рисунков на футболках г. омск только одна футболка печать на майках в г.самара футболка апликация футболки надпись цска синяя майка хоккейная футболка с нанесением xl футболки аженские спортивные толстовки футболки адидас шелкография футболки оптом майки футболка эд харди мужские футболки опт прикольные футболки и майки в спб футболки челси футболки кружки с приколами наложенным платежом молодёжные одежда футболки 3ds max пингвин футболка на футболке в домашних футболка печать быстро купить футболки 7.62 футболки с надписями различными г.уссурийск где можно купить хоккейную майку самые прикольные футболки http://carbonsolve.com/images/guest/index.php?showuser=5030 фотография на футболке майки с приколами в казахстане купить футболку в харькове футболка мужу футбольная майка зенит прикольные рубашки майки футболки со своим фото футболка ironman печать на майках в г.самара nike майки как сделать футболку с принтом футболки с приколами санкт петербург футболки энерг.напиток burn термо футболка апликация на футболки кепки вещмешки майка под майка я люблю нью йорк онлайн футболка в москве футболки поло оптом екатеринбург рисунки для печати на футболке в москве футболки одно сердце на двоих дизайнерские футболки сша в интернет-магазинах футболки на заказ петербург футболка сборной росиии футболки камеди клаб http://www.3dsrender.com/forum/showthread.php?p=10298#post10298 мистер майки футболки с натписью i love .ty футбольная майка зенит где купить майки футболки купить футболку с оллимпиады 2008 с чебурашкой футболка мапэд печать на футболки сувенирные ежедневники девушки в футболках супермена номер на футболку фото грудь в красной футболке футболки с логотипом нирвана футболка сборной россии с фамилией на заказ женские футболки v образный ворот майка парная майки с приколами оптом в москве футболка ювентус нанесение на футболки в алматы что написать на футболке с фото трансовые футболки с длинным рукавом модные джинсы и футболки для парней афутболка с надписью lexus майки эмо заказ футболок футболки корпоративные сувениры майки хоккейные нхл велосипедные майки футболка антитеррор где купить action женские футболки с рисуноком футболки с группой nirvana футболки с логотипом на заказ в челябинске цифровые картинки на футболки бесплатно белая футболка сборной франции рок магазины футболки по 200р майка россия купить хоккейную майку display modes печать футболка киев http://www.paintball-online.nl/forum/member.php?u=113554 футболки сох майки с приколами в казахстане надпись на футболку магазин майках самара варианты принтов на майку футболки moschino футболки симпсоны футболка черная с зеленым лого. цена - 1000р купить футболку bape флуоресцентные футболки бейсболки печать на майках толстовки как обычно складывать футболки футболка дмитрия бикбаева футболка 2008 дешёвые детские футболки с длинным рукавом санкт-петербург купить футболку с эквалайзером прикольные надписи на футболки для начальника футболки по почьте баскетбольная форма майка и шорты интернет магазины hello kitty футболки со стразами и пайетками майки киокушинкай заказать футболка логотипом фотография на футболке в киеве сложить футболку в один приём футболка джокер http://www.bitsndesign.fr/smf/index.php?topic=26690.new#new купить майку с имперской российской символикой Майки на заказ с достиавкой по украине мисс ниагара мокрая майка майки футболки шрек майку и кепарь майка ментцера футболка с надписью падонак футболка с рисунком рыбы как зделать фото на футболку свастика майки футболки bizo с марсианином который пилит мышек многоцветная печать в барнауле футболки чёрная футболка с надписью loser для футболки фото девушки в майке с надписью владею языком ние логотипов на майках картинки майки камуфляжные футболки футболка с зайцем фото на детских футболках санкт-петербург акупить футболку наша раша как нанести рисунок на футболку красками хоккейная майка philadelphia flyers - home шелкография футболки надписи на футболках футболка уличные гонки футболки.москва.купить. футболка офисный планктон прикольные надписи на футболках трава дурь футболки логотипы нанесение мужские трусы майка микки маус футболки аутсайдер в желтых майках прикольные футболки с доставкой по казахстану d g футболки майки с тедди http://www.soccer.azellusgames.com/forum/index.php?action=profile;u=1565 майки найк где можно купить футболки с символикой аматори бейсболки футболки где купить футболку милана и интера в питере интересные футболки майки и футболки i love ny интернет магазин одежды майки женская футболка с микки маусом надписи на футболках абакан футболки нa зaкaз в киеве купить футболку the birthday massacre красивые надписи на детскую футболку бейсболки футболки заказать майку с логотипом черепа из фильма каратель майки тяжёлой отлетики реп футболки футболка пацан сказал пацан футболка дэвид блэйн мужские прикольные футболки прикольные футболки со скорпионом из страз майки с анимашками в стразах футболки печать розница футболка подарки донецк прикольные футболки футболки с логотипом на заказ в санкт петербурге http://www.happy-aua.org/forum/index.php?topic=1849.new#new футболки с изображением ремней безопасности майки с мишками тедди картинки на футболку пауэрлифтинг футболки ультрафиолет цены на футболки dsquared2 в ростове i love new york майка красные футболки футболка детская ульяновск заказать майку группы арда с длинным рукавом футболки и майки шелкография в москве надпись на футболку магазин где купить майки футбольных российских клубов в москве футболки прикольные выбирай футболки и кружки с приколами прикольная футболка поло где купить футболки. майка с лукашенкой футболка со смешариками где купить футболку зенита в санкт-петербурге опыт майкельсона заряд электрона афутболка с надписью criminal вязание спицами топики майки вязания фото девушка в шортах и синей майке купить футболку кино футболка надпись петербург футболка аршавин купить термоперенос на футболки надписи на футболках про блондинок футболка гробари банданы надписи на майках шелкография печать на футболки мытищи футболки с символикой команд роспись на майках каппа майки мультик майку бесплатно http://forum.onestopcolorado.com/index.php?action=profile;u=36998 купить футболку ярусский футболки bizo с марсианином который пилит мышек майки прикольные футболки на заказ в чите прикольные майки с Футболка с логотипов спартак на заказ где купить футболку white power дискотека 80-х на я майке футболки х б голубые казань прикольные футболки доставка москва футболка цска купить minibb post майки с с вырезом на спине написано на футболке борцовские майки купить майку с длинным рукавом в ставрополе женские футболки от cavalli купить майку comedy club магазин где куртка по цене футболки женские футболки симачев футболки с логотипами подарки сувениры оптом майка сандерс футболка adidas с надписью i n.novgorod футболки с флагом великобритании где купить майку алкоголичку мужская футболка купить bb http://forum.bukvoid.com.ua/index.php?showtopic=31&st=20&gopid=1937entry1937 футболка салават юлаев купить футболку с эквалайзером купить уникальные футболки майки 2010 лето фото сделаем одну футболку под заказ стразами украсить футболку хохлома на майке сколько стоит футболка денис симачев футболки с изображением рок-гитаристов футболка гондурас футболка с надписью супер бейби сделаем одну футболку под заказ прикольные под футболкой футболка поло adidas майки с приколами оптом в москве футболка пауэрлифтинг nike футболки фото плющенко вручил студентке футболку с атографом футболки galliano с длинным руковом заказать футболку i love ny азаказать майку армани джинс с надписью футболка the rolling stones купить майку для жима inzer футболка тимати прикольные футболки и кепки купить футболку сборной бразилии оригинал футболки с вашим фото нанесение рисунка на майку своими ркуами прикольные трусы футболки живые футболки получи футболку сделать хоккейные майки с номером 35 футболка аргентины купить футболка реал рисунки для печати на футболке в москве http://ice-zone.in/member.php?u=361 нанесение логотипа на пакеты - майки футболка офисный планктон футболки извесных марок где в москве купить футболку купить уникальные футболки футболки с нанесеним где купить в москве футболку с мики-маусом красивые надписи на детскую футболку купить майку led zeppelin футболка синяя коричневые детские футболки маечку краской на майке сколько стоит футболка денис симачев майку и кепарь футболка guf серая майка склaдывaть футболки купить футболку федор емельяненко футболка вратаря акинфеева интернет магазин футболок икс майка футболки cristiano ronaldo футболки с кристаллами сваровски адреса магазинов в тюмени где продаются футболки с черепами майка ак барс http://stormynight.ca/forum2/index.php?topic=4032.new#new майка инопланетянка картинки из мультсериала каппа майки как зделать фото на футболку мужчина с бородой на футболках его фото Футболка с логотипов спартак на заказ логотип железного человека на футболке купить футболку с надписью setka футболка с чебурашкой bosch sport рисунки на футболках на заказ в санкт-петербурге i ny футболки нaдпись нa футболке спб футболка цска купить minibb post как носят белую майку и с чем коричневые детские футболки майка с экволайзером киев футболки прикол stalker купить футболку доктор хаус футболки misfits где можно заказать футболку с надписью amatory хочу заказать футболку аcomedy club футболки показ моды ивана айплатова фотографии футболка с рисунком губкобобом и патриком майка омский газмяс пальто дешевле футболки купить мужские футболки showthread php фото майка науменко трафаретная печать футболки купить футболки и рюкзаки с символикой avril lavigne официальный сайт майка науменко i love me футболка футболки с логотипом сувениры москва футболки рисунок печать где можно сделать фотографию на майку в казани майки с рисунками раммштайн фото на футболки по интернету http://mojatv.etf.ba/memberlist.php?mode=viewprofile&u=2728 рекламная продукция футболки на заказ beatles футболка сколько стоят футболки дениса симачева заказать жимовую майку купить футболку нa зaкaз печать на футболках и банданах. шелкография майки для влюбленных купить футболку в харькове футболки с гитлером заказать футболку с мальтийским крестом футболки и кружки с приколами купить уникальные футболки футболки раскраски картинки на майки прикольные майка в сетку прикольная футболка превед медвед женские смешные футболки печать футболка майки the продается футболка в которой играл дизайн футболки в программе фотошоп полосатые футболки drum and bass футболки норма выдачи спецодежды футболки и кепки рабочим заказать прикольную майку http://april-dy.ru/js/guest/index.php?t=1 футболки светящиеся в ультрафиолете женские 3d футболка спартака футболка стивен джерард футболки на заказ по питеру футболки прикольные недорого детская футболка аршавин футболки подарок beatles футболка футболки для дискотек веришь ли в судьбу носишь майку с "ч" майки с приколами оптом в москве футболка косово сердце сербии майки и футболки disney burberry майка футболка заводной апельсин сука личность майки футболка бурберри интернет-магазин прикольные футболки зaкaзaть майки. своими руками. рисунок футболка с черепами афутболка frankie morello футболка антисовет купить футболку в красноярске с доставкой купить обарудование для печать на футболки прикольные футболки с женской грудью район майки даугавпилс нанесение номера на футболки логотип на футболках в районе невского проспекта майки мужские-нижнее белье заказать дешевую женскую футболку calvin klein майки обычные майка сухая изготовление хоккейные майки хочу футболку с надписью газпром майки нхл http://bestsouthampton.com/discussion/index.php?action=profile;u=8778 майки с надписями на заказ в ижевске куплю футболки tecktonik в магазинах украины заказать майку группы арда с длинным рукавом описание женской майки футболки с символикой г.москвы футболки печать бумажные пакеты ручки calvin cline футболки с логотипом футболки с группами чёрные распродажа на дом футболка-игрушка елка смешные надписи на футболке по профессиям китаянка складывает футболку бокс купить майка где в сургуте можно сделать свой рисунок на футболку футболка цска купить minibb post майка сухая женские майки и ссср майки жимовые оптом футболки юбки прикольные футболки доставка по москве печать на майках и футболках надписи на майках печать на футболках купить мужскую футболку adidas где купить футболку quaresma 77 прикольные футболки за 350р футболка зенит cj своей фамилие http://forum.avia-board.com/index.php/topic/22-%25d0%25b7%25d0%25b0%25d0%25bf%25d1%2580%25d0%25b5%25d1%2582%25d0%25b8%25d1%2582%25d1%258c-%25d0%25bc%25d0%25b0%25d1%2580%25d1%2588%25d1%2580%25d1%2583%25d1%2582-%25d0%25bf%25d0%25be%25d0%25bb%25d0%25b5%25d1%2582%25d0%25b0/page__gopid__69#entry69 футболка с изображением билана заказать майку группы арда с длинным рукавом футболка-игрушка елка заказать футболку с собственным принтом где купить футболку с чебурашкой как у российской сборной футболки печать от 1 штуки рисунок на футболке в футболка цска купить minibb post купить форум фк зенита футболку и шорты и гольфы ислам с надписью на футболках смешные майки футболки для мам футболке на заказ футболка сборной россии с фамилией на заказ где купить футболку зенита футболка клуба сатурн майки в уфе узбекистан кепки шелкография майки на заказ производство пакетов майка футболка зелёная спортивная аклёвые футболки с изображением спанча боба arkturwear футболки одежда мужское белье мужская одежда печать на майках майки бейсболки футболки из таиланда детские футболки надписи адрес магазина футболка майки на заказ superman майки сборной россии по настольноиу теннису толстовки футболки логотип футболки с обачьей символикой молодёжные одежда футболки 3ds max футболка шри кришна купить майку death row футболки с мотоциклами футболки петербург дёшево http://space-monkey.ru/wp-includes/guest/index.php?showuser=2293 красные труселя и футболки футболки bizo с марсианином который пилит мышек футболка тимати интернет магазины с футболками с мики маусом хоккей на майках футболки. майки кмф одежда футболка однокласники футболки bizo с марсианином который пилит мышек футболки с рисунками боксёрские темы футболка термопечать футболки на заказ фото футболки с изображением герои войны и магии футболки с тедди футболка джим моррисон майки и футболки i love ny майки борцовки женские roxy south park майки новые спортивные футболки с логотипом всех дизайнеров футболки с надписью matias smodis женские футболки от 100 руб футболки гуфа купить футболки с логотипом интернет магазины с футболками футболки больших размеров женская drop dead футболки http://www.pokemon24.info/forum/index.php?topic=4258.new#new магазин футболки глеб деев где можно купить футболки с символикой аматори цены на футболки dsquared2 в ростове футболки рисунки смешные купить оригинальные футболки футболки на заказ с логотипом кик-боксинга майки с креативными надписями спартак футболки именные классные картинки на майки печать на детские футболки прикольные майки новый год футболка цска купить minibb post рекламные сувениры футболки футболки с логотипами нанесение на футболки футболки на заказ санкт-петербург где в воронеже можно купить футболку с группой - stigmata черная женская футболка футболка c логотипом bmw олимпиада 2014 сочи майки купить футболку тиесто аэротика майки фото футболки печать пошив футболки с надписями фото футболки со знаменитыми футболистами российской сбрной гезер футболки компании по печати фотографий на футболках майки с надписями с доставкой по украине футболки с надписями как изгатовить самой печать изображений на футболких майка для девочек купить футболку омский газмяс купить форму фк зенита футболку и шорты и гольфы мужские футболки больших размеров футболки на заказ каратэ киокушинкай нанесение на футболки http://forum.animetheque.net/index.php?action=profile;u=4076 розовые футболки утеплитель майка и шорты недорог заказать футболку по интернету юрий титов фото фабрика 4 без майки рок майки женские спортивные тастовки футболки фирменные креативные женские футболки футболка с рисунком рыбы зайцев футболки футболки магазине zara футболка фк барселона где купить футболку группы сектор газа термофутболка с длинным руковом футболка 2008 футболка к слокси майки женские футболка мой бог меня рабом не называл купить белые майки футболки с рисунком на майки в купить майку playboy футболки с логотипом пиратской станции майки с логотипами black-metal групп футбольные футболки купить картинки на футболках тема дайвинг море http://childrenarewelcome.co.uk/forums/index.php?showtopic=2293&st=160&gopid=131162entry131162 футболки цао recordz по почте купить майку honda где купить футболку группы сектор газа боско спорт костюмы футболки девушки в футболках супермена майки с мишками тедди футболки с группами в интернет-магазине футболки с гимнастками футболки adio circa дешево заказать клубные майки через интернет в г москва цены на футболки dsquared2 в ростове спартак футболки именные изготовление ресунков на футболках рекламный ролик про футболку рексона пародия купить азербайджанские футболки надписями азербайжана футболки вднх футболки со спанч бобом фотомонтаж на футболке футболки майки толстовки женские футболки с гербом осетии агде купить футболку с прикольной надписью нанесение логотипа пакет майка заказать через интернет футболку с картинкой футболки по защите природы футболки на заказ лозунги сувениры оптом бейсболки фото на футболках толстовки печать футболки заказ футболки заказать надпись х/б футболки майка с надписью фсб фото майки динамо луч купить футболки в стиле диско картинку на футболку футболка салават футболки lineage http://www.123kletsen.nl/memberlist.php?mode=viewprofile&u=392 футболка friends футболки для мам футболки с логотипом liverpool купить футболку футболки фред перри футболки с изображением рок-гитаристов где купить футболку футбольного клуба juventus футболки детские х б надпись на футболку магазин майки камеди клуб кепки толстовки футболки оптом футболки craft купить майку мужскую intitle yabb логотипы команданте на футболки майка ментцера футболки с логотипами групп коричневые детские футболки для девочек футболка meucci магазин эмо футболки где можно купить футболку с черепами как разрисовать футболку в технике аэрографии футболка whitesnake футболки simachev футболки в санкт футболки с символикой южный парк http://rinoa.us/forum/index.php?action=post;topic=30539.0;num_replies=1 купить хоккейную майку vbulletin футболки 1 мужские футболки adidas майки с пркольными надписями burberry майка майки с приколами оптом в москве майка крючком описание футболка акинфеев футболки на заказ фото футболки для боксеров недорог заказать футболку по интернету шелкография печать на футболке нанесение логотипов печать на кружки футболки майка женская lm1004-1 бейсболки футболки получите печать фото на футболке недорого прикольные дизайнерские футболки на заказ во все регионы рф молодёжные прикольные футболки выкройка летней майки прикольные логотипы и надписи на майках асуслик сука личность футболки какая печать на майках лучше футболка с вашим рисунком картман на футболку где продаются дорогие футболки в москве фотографии на футболку майки с надписями для девушек фотогрaфия нa футболку фирменные футболки арии спб свою футболку баскетбольная форма майка и шорты интернет магазины продажа майки хоккейные майки рисунки странно но футболка сухая футболки заказать индивидуальные http://playstationkolik.com//forum/index.php//forum/index.php?action=profile;u=107102 футболки парк майка в сетку футболки губка боб сделать футболку прикольную надписть нанесение логотипа на футболки сувениры москва где можно купить футболки с символикой аматори футболки с логотипом рекламно сувенирная продукция футболки и кружки с приколами где купить майку с надписью надписи на футболках для моряка игровые хоккейные майки футболки с гитлером майки трикотаж оптом прикольные картинки футболки где купить футболку с чебурашкой как у российской сборной футболка крылья суслик футболки футболки блондинка с мозгами футболки freebsd футболки с символикой вдв футболки с изоброжением великих боксёров фото на кружки майки москва чехлы майки для авто печать на футболки тула рисунки майка миньолы http://rethinkamerica.net/forum/index.php?topic=120937.new#new армейские майки заказать футболку по почте текст песни майка науменко я завываю майки для фитнеса футболки гр.об футболки skulbone meow футболки с креативными принтами в санкт-петербурге футболка-суслик сука личность игровые хоккейные майки майки рисунки футболки pacha футболка косово сердце сербии футболка бегемот майка челси родные майки группы scooter в городе москве майка с глубоким вырезом елку футболка с попугаем кешей цифровая печать на кружки и футболки в городе тверь майки спортивные заказать футболки рисунок заказчика1 ponto
-
-1 pontos