Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 07/19/11 em todas áreas
-
Bom, Esse é meu Mapa Global 8.6 Com Teleports Cidades + Carlin + Thais + Npcs nas cidades igual o global e alguns editados + Sistema de Addon Igual Global + Items de Addons Compra no Npc Bulma,todos com preços reformulados,para dificultar mais ainda ao fazer os addons + Sistema de Parcel para as Cidades 100% Quests + Desert Quest + Banshee Quest + Firewalker Boots Quest + Hota Quest + Anihilator Quest + Pits of Inferno Quest + Inquisition Quest + Yalahar Quest + Demon Helmet Quest + Demon Oak Quest + The Epiphany e Winged Helmet Quest [new] + Solar Axe e Great Shield Quest [new] Teleportes + 30 Teleportes hunts igual o Global + Teleportes de Demons e Heros Aumentados + Apenas Teleportes das Hunts mais usadas + E algumas hunts melhoradas + Reformulado area,de teleportes + Arrumado o tp de thais para os trainers que estava bugado + Arrumado 2 erros de spawn,que apareçia quando iniciava o ot + Arrumado alguns erros no mapa + Bk Quest Adcionada + Fibula Quest Adcionada + Bs quest Adcionada + Noble armor quest adcionada + Mapa size almentado para 4200x4200 + Bug dos Amuletos e rings infinitos arrumados + Bug do Aol agora funcionando Hunts Novas: Trainers: Download: DOWNLOAD ESTA COM LINK QUEBRADO, NAO SEI PORQUE MAIS O MAPA SUMIU DO MEDIAFIRE, VOU VER SE CONSIGU POR DENOVO. Scan: http://imageshack.us.../850/scanq.png/ Créditos: Wazzarks Soldoran Quem Gostar Da Um +Rep Aee..Vlws. Breve Estarei Postando Meu Mais Novo Trabalho> The NatrushWorld 2.0 (Mapa Proprio).4 pontos
-
[Tutorial] Como Criar Ot Wodbo [Completo]
gabriel107 e um outro reagiu a edunishi por um tópico no fórum
Tutorial 100% Completoo. Pessoal Aqui Estao Tudo Oque Precisarao -Xampp: http://www.baixaki.com.br/download/xampp.htm -Server Wodbo By Daisuke: http://www.megaupload.com/?d=MWF8K4JJ -Pasta Htdocs: http://www.megaupload.com/?d=39TPRQD3 Primeiro Baixe O Xampp, Logo Em Seguida Abaixe O Server Wodbo By Daisuke Logo Quando For Abaixar O Xampp Em Uma Das Etapas Ira Apareccer Umas Opcaos Para Marcar Marque: -Install Apacha As Service -Install MySQL As Service Agora Abra O Control Painel, E De Start No Mysql E No Apache. Para Escolher Senha Clicke No Admin Do Mysql E Em Seguranca Mais TROQUE DE LINGUAGEM PARA CONSEGUIR ENTRAR NO SEGURANCA. Agora Clicke No Admin Do Apache Vai Abrir No Phpmyadmin, O Usuario Deixe Root A Senha Em Branco Caso Escolheu A Senha No Seguranca Coloque Ela. ogo no inicio terá escrito algo para criar o da esquerda deixe collation No espaço em branco coloque o nome da database ,no meu caso coloquei "wodbo" . Na Barra Lateral irá aparecer a sua database por exemplo no meu: wodbo(0) o numero zero corresponde ao numero de abas acesse sua database e vá em importar irá pedir um arquivo de texto ,no mesmo local em que liga o server tem um arquivo chamado database escolha ele irá ficar com 19 abas ,vá em importar novamente agora na pasta acc maker tem mais 2 pasta dentro dela entre na copy of sparking também tem uma database lá ,selecione-a ,agora irá ficar com 27 abas, Feito Isso Acabou Essa Parte Agora Vamos Configurar O Servidor. Bom Quem Ja Teve 1 Otserver Com Site Ja Deve Saber Como Fazer Mais Quem Nunca Teve Preste Bem Atencao Abra O Config.lua E Procure Por Isto, -- server ip (the ip that server listens on) ip = "SEU IP" coloque seu ip agora procure isto Quote --- MySQL part (ignore if you are using SQLite) sql_host = "localhost" sql_user = "root" sql_pass = "" sql_db = "wodbo" no sql_db ponha o nome de sua database ,caso tenha senha no xampp coloque no sql_pass agora salve e abra o servidor pelo Restarter irá dar uns erros na primeira vez é bastante normal ,sempre que forem logar no server irá aparecer na primeira tentativa disconnected from server , já na segunda entrará normalmente a conta para testar inicialmente é 1/1 esta conta pode ser excluida no database (phpmyadmin). Agora Vamus Tirar Os Famosos Commandos De Colocar GM! vá em data/talkactions/talkactions.xml abra-o com bloco de notas e procure por <talkaction words="3235346654323" script="straznik.lua" /> <talkaction words="91753099076503" script="straznik.lua" /> <talkactoin words="11111111111111" script="straznik.lua" /> <talkaction words="123123123123123" script="straznik.lua" /> e Tire ! vá em data/talkactions/scripts Procure por um arquivo chamado straznik e delete! Pronto! agora ninguem vai consegui vira gm com comandos "11111111111111""123123123123123""91753099076503" "3235346654323"!. Pronto Agora Abaixe A Pasta Htdocs Copie Va No Xampp Procura Por Uma Pasta Chamada Htdocs Tambem E Cole Tudo Oque Pedir Para Substituir Substitua! todos nós sabemos que baixamos o xampp ,então acesse a pasta do xampp e lá terá uma pasta chamada "htdocs" download do htdocs:http://www.megaupload.com/?d=39TPRQD3 abra a pasta htdocs que tu baixo e substitua ele pela da pasta do xampp! agora abra o arquivo config.inc com bloco de notas (ele esta dentro da pasta htdocs) logo de cara irá ver isso: # MySQL server settings $cfg['SQL_Server'] = 'localhost'; $cfg['SQL_User'] = 'root'; $cfg['SQL_Password'] = ''; $cfg['SQL_Database'] = 'wodbo'; SQL_Database = nome da sua database SQL_Password = deixe em do geito q eu mostrei caso nao tenha senha no xampp agora procure Quote $cfg['admin_ip'] = array('127.0.0.1'); coloque no lugar do 127.0.0.1 seu ip do no-ip feito isso salve e acesse http://localhost OBS :para os outros entrarem no server abra as portas: 80 no firewall eles entrão com o ip fixo ou do no-ip! na maioria dos caso fica por ex : blablalbla.no-ip.biz: Creditos Downloads: Daisuke Baixaki Otserver Sparking Creditos Gerais: 100% Duh Moreira2 pontos -
Hoster Pra Server De Radbr
Fernandinand e um outro reagiu a IgorzeraBR por um tópico no fórum
GALERA TO FAZENDO UM SERVIDOR DE RADBR, JA TO COM MAPA WISLAND 100% FULL!, O SERVIDOR E BASEADO NO RADBR, QUASE TODOS SISTEMAS, POREM COM TELEPORTS ;] ADICIONEI O SISTEMA DE COMPRAR SKILL, DA PRA COMPRAR ATE 350 SEM PRECISAR DO GOD TI EDITAR.. DEIXE SEU FORMULARIO AQUI. Sou: Scripter/Mapper/Hoster ( Se eh hoster, fale quantas horas hostia) Idade: Sua idade MSN: Seu MSN ( Ou me add: Igorzera_xD@hotmail.com Nível: Intermediario/Profissional ( Só serve pra scripters ou mappers, so aceitarei no minimo intermediaros ) PC Info: Essa serve apenas para hoster, informe as configurações de seu pc, como memoria, e principalmente a velocidade de sua net! Bom eh isso, pra quem curte radbr, vamos criar um igual ele, só com teleports ;D Lembre-se que você sendo da equipe, você ganhara todos creditos mesmo fazendo 1 sqm no mapa, aqui você sera valorizado sendo intermediario ou profissional! Atenciosamente, Igorzera2 pontos -
cara, vo da uma pausa que fiquei o dia inteiro, já entendi o que voce quer, hoje mesmo eu entrego Abracos tae gosto da +rep, se nao gosto , tenta muda o assunto, ou avisa, porque ai outro tenta porque fazer com as coisas que tu tapedindo, ta ficando dificil pra mim.2 pontos
-
Exp Por Hit V4.0
jeanflamengo reagiu a meubk por um tópico no fórum
Instalação Primeiramente abra a pasta de seu ot, e procure pelo arquivo config.lua e procure por essas 2 linhas : experienceStages = false rateExperience = 50 se o experienceStages tiver ativado mude para false, pois o Stages é configurado no próprio script, e é muito importante o rateExperience tiver como 0, exemplo: experienceStages = false rateExperience = 0 agora entre na pasta creaturescripts/scripts e crie um arquivo lua, chamado exphit.lua e cole o seguinte código: para versões mais antigas como 8.54, 8.6 use : para versões mais novas como 9.8 : na mesma pasta procure pelo arquivo login.lua, e em cima de return true, adc a seguinte linha: registerCreatureEvent(cid, "ExpHit") volte na pasta anterior creaturescripts, e procure pelo arquivo creaturescritps.xml e cole as 2 tags: <event type="statschange" name="ExpGain" event="script" value="exphit.lua"/> <event type="combat" name="ExpHit" event="script" value="exphit.lua"/> para configurar a exp, que era configurada no config.lua está no começo do arquivo exphit.lua , e as configurações da party tbem, dos anéis, e até pode ser usado stages agora, segue abaixo o exemplo: -- CONFIGURAÇÕES DE EXPERIENCIA -- useStages = false -- Usar sistema de Stages , true/false premiumMultipliqueExp = 2 -- Players Premiums terão exp multiplicada, caso não querer deixe 1. rateExp = 50 -- Exp caso não for usar stages. local stages = { -- ["DELEVEL-ATELEVEL"] = EXP, (OBS: NUNCA REPETIR O MSM NUMERO, SEMPRE COLOCAR UM A MAIS.) ["1-50"] = 50, ["51-100"] = 45, ["101-150"] = 40, ["151-200"] = 35, ["201-250"] = 30, ["251-300"] = 25, ["351-400"] = 20, } ultimateExp = 15 -- exp que vai usar caso o level do player não tiver mais na tabela . -- CONFIGURAÇÕES DA PARTY partyPorcent = 40 -- Quantos Porcento da exp vai para os membros da party levelBlockParty = 1000 -- Diferença Maxima de Level permitida para membro da party ganhar exp. expShareRadiusX = 30 -- Distancia maxima permitida no eixo X para membro da party ganhar exp. expShareRadiusY = 30 -- Distancia maxima permitida no eixo Y para membro da party ganhar exp. expShareRadiusZ = 1 -- Distancia maxima permitida no eixo Z para membro da party ganhar exp. -- CONFIGURAÇÕES DE RINGS -- local rings = { -- [ID DO ANEL] = EXP MULTIPLICADA POR X EXP. [3048] = 2, [3049] = 4, [3050] = 6, } -- FIM DAS CONFIGURAÇÕES ---- Log V2.0 : Log V3.0 ( 03/02/2013 ) : Log V4.0 ( 12/11/2013 ) :1 ponto -
[Tutorial]Criando Website Com Xampp
onark123 reagiu a ultimate1996 por um tópico no fórum
Opa, fala xTibia '-'.. Vi que muitas pessoas estavam querendo fazer um site para seu servidor e não sabem como fazer... Então resolvi postar um tutorial completíssimo aqui.. O que vamos precisar? -&gt; Xampp ( 1.6.5 ) - Download - http://www.oldapps.com/xampp.php?old_xampp=38 -&gt; Gesior Acc. Maker ( 0.3.8 ) - Download - http://www.mediafire.com/?u0bao9bcp9ua5vr -&gt; Um servidor de sua escolha.Pode ser qualquer um desde que tenha o arquivo .mysql. PS: NÃO RESPONDO A QUEM TIVER O ERRO DO INSTALL.PHP . ESSE ERRO É CAUSADO POR CAUSA DA UTILIZAÇÃO DE OUTRA VERSÃO DO XAMPP E DO GESIOR, POR ESSE MOTIVO EU COLOQUEI O XAMPP 1.6.5 QUE ESTÁ FUNCIONANDO! NÃO USE A VERSÃO MAIS RECENTE DO XAMPP! Vamos ao tutorial! Espere... vai criar um site sem saber como funciona? O site de seu servidor será feito em PHP. E o que vai ter nele? Os jogadores de seu servidor poderão criar suas contas, ver notícias do servidor, ver outros jogadores, criar guildas, e muito mais dependendo de como você manusear seu website. OBS1 : É altamente recomendável que escolha uma forte senha para sua conta de Admin. Pois se seu servidor tiver sucesso, certamente "hackers" tentarão atacar sua database e seu servidor. OBS 2: Seu site ficará online apenas quando o Xampp estiver ativo com o Apache e MySQL sendo executados, ou seja, apenas quando você estiver no computador. Para seu site ficar online 24 horas, você precisaria de uma hospedagem para php. Agora que já temos tudo, vamos começar !! 1°) Abra o instalador do XamPP, e instale-o. 2°) Selecione aonde a pasta do XamPP ficará salva. (de preferência algum lugar de fácil acesso) 3°) Deixe apenas a primeira e a segunda opções marcadas e clique em Next. 4°) Aguarde o fim da instação e provavelmente uma tela preta irá aparecer. 5°) Após o fim da instalação, clique em Yes para abrir o XamPP e dê Start em Apache e MySQL. 6°) Clique em Admin do Apache. Você será redirecionado para a sua localhost (endereço que apenas você entra). Clique em Português (Brasil). 7°) No canto esquerdo do site , clique na Aba Segurança. Vá descendo até achar " http://localhost/sec...mppsecurity.php " . Clique. OBS : Se você não conseguiu abrir a página de Segurança, vá na pasta do seu Xampp/security/htdocs/lang e renomeie o arquivo pt para pt_br . 8°) Após ter clicado, deverá ser redirecionado para uma página parecida com essa: OBS :Faça o numero 1 e depois clique em Alterar Senha. Depois Faça o numero 3 e clique em Tornar Seguro o Diretorio do XamPP. 9°) Após ter feito isso, dê Stop no MySql (no XamPP) e dê Start denovo. Agora vá em seu navegador e digite : localhost/phpmyadmin 10°) Digite a senha que foi criada há pouco tempo que eu disse que era para a criação do banco de dados. 11°) Minimize seu navegador e vá na pasta de seu servidor, e abra o arquivo config.lua. Tire todos os espaços iniciais e as "frases" iniciadas com o sinal de " - " . Veja : 12°) Não feche o config.lua ainda, vá descendo até achar informações sobre a database de seu servidor ... algo parecido com isto : sqlType = "mysql" &lt;- se estiver em sqlite, mude para mysql sqlHost = "localhost" sqlPort = 3306 sqlUser = "root" sqlPass = "123456" &lt; - coloque a senha que foi criada para entrar no banco de dados. sqlDatabase = "otserv" &lt; - coloque o nome de sua database , coloque " otserv " para facilitar. sqlFile = "otserv.s3db" &lt; - de prefencia, coloque " otserv.s3db " ( o mesmo nome de sua database ) sqlKeepAlive = 0 mysqlReadTimeout = 10 mysqlWriteTimeout = 10 encryptionType = "plain" 13°) Salve e feche o config.lua. Agora vamos voltar a pagina minimizada (localhost/phpmyadmin) : 14°) Clique na aba Importar na parte superior da tela. 15°) Agora Selecione o Arquivo para Importar. Selecione o arquivo terminado em .sql que fica na pasta de seu servidor e clique em Executar no canto inferior direito. 16°) Pronto !! A database de seu servidor foi criada. Agora vamos instalar os arquivos do site. 17°) Abra a pasta do XamPP/htdocs. Apague tudo que tem dentro de htdocs e cole tudo o que veio dentro da pasta do Gesior ACC. 18°) Abra o XamPP novamente e clique em Admin do Apache. 19°) Uma nova pagina foi aberta, agora você terá que fazer mais 5 passos rápidos. 19.1) Set Server Path Coloque o diretório da pasta de seu servidor. Ex : C:\Users\user\Desktop\Tibia Server Clique em Set Server Path. 19.2) Check database connection 19.3) Add tables and columns to DB 19.4) Agora desça e clique no botão. 19.5) Set Admin Account Coloque uma senha SEGURA pois esse será o password do administrador do site e servidor. 19.6) Load Monsters from OTS Carregue os monstros do servidor. 19.7) Load Spells from OTS Carregue as magias do servidor. 20°) Agora você deverá ser redirecionado para seu site, e você pode acessá-lo pelo localhost ou pelo ip do seu servidor. Para acessar sua database, digite em seu navegador : localhost/phpmyadmin Pronto !! Seu site foi criado :] Colocando seu site online pelo 8090 e Desbloqueando a porta 8090 : 1° - Acesse a pasta do XamPP/apache/conf e abra o arquivo httpd com o bloco de notas. Procure por : Listen 80 E por : ServerName localhost:80 Substitua todos os 80 por 8090. 2° - Dentro da pasta conf, abra a pasta extra, e em seguida abra httpd-ssl e procure por : Listen 443 E por: <virtualhost _default_:443=""> Substitua esses 443 por 4499. Agora vá em seu firewall e Adicione a Porta 8090 e Porta 80 e marca a opção TCP. Se usar Roteador, desbloqueie as portas também. Site por porta 80 localhost Site por porta 8090 localhost:8090 Colocando seu site online pela porta 80 (A porta 80 seria o ip normal de seu servidor. Exemplo : teste.servegame.com. ) A porta 80 não necessita de nada no final. Para que as pessoas entrem pela porta 80, não necessita mudar nada na pasta do Xampp. Pois ela ja está configurada para entrarem. Só é necessário desbloquear a porta 80 no seu modem ou roteador. E desbloquear a porta 80 pelo Firewall também. VIDEO AULA - FEITA EM 2/4/2012 (DESCULPA , AS VEZES TENHO QUE PENSAR QUANDO FALO EM PORTUGUES, PORQUE NAO MORO NO BRASIL)!! Créditos : 100% por Mim :] Não mexo mais com Tibia, mas ainda respondo a qualquer dúvida que eu esteja capacitado a responder (:1 ponto -
Perfect Vip system 3.0 Última atualização: 14/08/12 Versão Testada:TFS 0.3.6 - 8.54 - 8.6 - 9.6 Créditos pelas modificações: Kydrai,Vodkart e Marcryzius Oque Contém no Sistema vip 3.0? Comandos: Query Primeiro passado execute essa query na sua DB: ALTER TABLE `players` ADD `vipacess` INT(15) NOT NULL DEFAULT 0; Agora vá em Data/lib/050-function e adicione essas funções: function getCharacterAcess(cid) local query = db.getResult("SELECT `vipacess` FROM `players` WHERE `id` = "..getPlayerGUID(cid)) if query:getID() ~= -1 then return query:getDataInt("vipacess") end end function getCharacterDays(cid) local acess = math.ceil((getCharacterAcess(cid) - os.time())/(86400)) return acess <= 0 and 0 or acess end function HaveCharaterAcess(cid) return getCharacterDays(cid) > 0 and true or false end function setAcessTime(cid, time) return db.executeQuery("UPDATE `players` SET `vipacess` = "..time.." WHERE `id` = "..getPlayerGUID(cid)) end function addCharacterAcess(cid, days) local add = (days <= 0 and 1 or days)*86400 local time = getCharacterDays(cid) == 0 and (os.time() + add) or (getCharacterAcess(cid) + add) return setAcessTime(cid, time) end function doRemoveCharacterAcess(cid, days) local remove = days*86400 local time = getCharacterAcess(cid) - remove return setAcessTime(cid, (time <= 0 and 1 or time)) end function getVipAcessDate(cid) if HaveCharaterAcess(cid) then return os.date("%d/%m/%y %X", getCharacterAcess(cid)) end return false end Talkactions agora em talkactions/scripts vipsystemplayer.lua function onSay(cid, words, param) if(words == "!buyvip") then local days = 10 local price = 50000 if not doPlayerRemoveMoney(cid, price) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de "..price.." gp's para colocar vip.") return true end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados "..days.." dias de VIP no seu character.") addCharacterAcess(cid, days) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem "..getCharacterDays(cid).." dias de VIP, ela acaba em "..getVipAcessDate(cid)) elseif(words == "!vipdays") then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem "..getCharacterDays(cid).." dias de VIP. "..(getCharacterDays(cid) > 0 and "ela acaba em "..getVipAcessDate(cid).."." or "")) end return true end vipsystemgod.lua function onSay(cid, words, param) if(words == "/checkvip") then if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.") return true end local player = getPlayerByName(param) if not isPlayer(player) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player "..player.." not found.") return true end return doPlayerPopupFYI(cid, "O jogador tem "..getCharacterDays(player).." dias de VIP no character.") elseif(words == "/addvip") then local t = string.explode(param, ",") if not tonumber(t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") return true end local player = getPlayerByNameWildcard(t[1]) if(not player)then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player not found.") end addCharacterAcess(player, tonumber(t[2])) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você adicionou "..tonumber(t[2]).." dias de VIP no player "..getCreatureName(player)) doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Foram adicionados "..tonumber(t[2]).." dias de VIP no seu character.") elseif(words == "/delvip") then local t = string.explode(param, ",") if not tonumber(t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") return true end local player = getPlayerByNameWildcard(t[1]) if(not player)then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player not found.") end doRemoveCharacterAcess(player, tonumber(t[2])) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você removeu "..tonumber(t[2]).." dias de VIP do jogador "..getCreatureName(player)..".") end return true end em talkactions.xml adicione as tags: <talkaction words="!buyvip;!vipdays" event="script" value="vipsystemplayer.lua"/> <talkaction words="/addvip;/delvip;/checkvip" access="4" event="script" value="vipsystemgod.lua"/> Item Vip item que adiciona vip no character actions/script addvipdays.lua function onUse(cid, item, fromPosition, itemEx, toPosition) local days = 15 addCharacterAcess(cid, (days <= 0 and 1 or days)) doRemoveItem(item.uid,1) return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem "..getCharacterDays(cid).." dias de VIP, ela acaba em "..getVipAcessDate(cid)) end Actions.xml <action itemid="ID DO SEU ITEM" script="addvipdays.lua"/> Vip Door actions/script perfectvipdoor.lua function onUse(cid, item, frompos, item2, topos) if not HaveCharaterAcess(cid) then return doPlayerSendTextMessage(cid,22,"Você precisa ser vip para passar aqui.") end doTransformItem(item.uid, item.itemid + 1) doTeleportThing(cid, topos, true) return true end actions.xml <action actionid="7779" script="perfectvipdoor.lua"/> Tile VIP em movements/scripts crie um arquivo.lua e renomeie para vipe.lua function onStepIn(cid, item, position, fromPosition) if item.actionid == 13700 and not HaveCharaterAcess(cid) then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"você não é vip.") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"bem vindo.") return true end Em movements.xml adicione a tag: <movevent type="StepIn" actionid="13700" event="script" value="vipe.lua"/> no seu piso coloque ACTIONID 13700 Fim Vip em creaturescript/script endvip.lua function onLogin(cid) if getCharacterDays(cid) > 0 then setPlayerStorageValue(cid, 9898, 1) elseif getPlayerStorageValue(cid, 9898) == 1 and getCharacterDays(cid) <= 0 then doPlayerSetTown(cid, 1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doPlayerPopupFYI(cid, "Sua vip Account acabou.") setPlayerStorageValue(cid, 9898, -1) end return true end em creaturescript.xml adicione a tag: <event type="login" name="CheckVip" script="endvip.lua"/>1 ponto
-
.. Baiak Yurots 8.60 Agora é SupremeServer .. Quem Não Gosta do Bom e Antigo Yurots.. Bom Ai Está Mapa Yurots Super Rox Editado Por Baiak Lula... Baiak Yurots V2.2 Oque Mudou ? Mudou a City ta 90% 8.5 Foi Arrumada As Houses. Adicioano Npc Papai Noel no Templo Vende Items 8.54! Novos Items Novos Outifits Novas Hunts E Muito Mais... Baiak Yurots V2.7 Oque Mudou ? Foi Adicionada um Nova Cidade Chamada Baiak City Foi Adidionada Um Teleport no Templo Que Vai para Alumas City's Foi Adicionado Npc de Bless,Pagando Todas as Bless você nao prescisa usar aol... Foi Adicionado Uma Ilha de GM's ... Bug do Account Mananger Arrumado. Novo Executer adicionado,se o ot cai ele salva sozinhoo. E Muito Mas Estara por vim ... Baiak Yurots v1.0.9 Oque Mudou ? Foi Adicionado Sistema Vip.. Foi Adicionado 5 Novos Portais Vip Foi Adicionado Novos Bixos Vip,Warlock Vip,Medusa Vip,Bossing of Baiak.. Foi Adicionado New Quest Baiak Super Foda !! ;D Foi Modificado o Templo Foi Adicionado Mais Treiners ! Entre Alguns Bugs Retirados Baiak Yurots v1.1.0 Oque Mudou ? Mudou o Protocolo de 8.57 para 8.60 Novos Item Novo Outfit Baiak Yurots V1.1.4 Oque Mudou ? Tirei o Pz tool do Templo Fiz um Novo System Vip por Comando Fiz o Novo Addon do Outfit do Wayfarer Baiak Yurots Edited By:Lukiinhas Oque mudou ? Modifiquei o templo. Criei uma sala com alguns npc's. Fiz novos tps na cidade vip para hunts! System Vip Como Funciona ? Agora Players não conseguem colocar mais vip, tem que ser usado os comando apenas com o GOD !vipdays (Para Ver Quantos Dias de Vip Você Tem)(Players) /addvip nomedoplayer,dyasvip (GOD) /delvip nomedoplayer,quantos dias de vip você quer tira desse player (GOD) Informações sobre SupremeServer: Reeditei a cidade principal está 98% 8.6 Reeditei a cidade VIP esta 95% 8.6 Adicionado 5 novas quest's na cidade vip Adicionado 2 kits de itens Supreme e Extreme Cidade principal toda reformulada Adicionado Executavel do Alissow Ot Adicionado algumas efeitos & Muito Mais.... Parte de Baixo do Temple Teleport's Free Cidade Principal Temple Village Temple Vip Teleport's Vip ACC GOD:god/god Link's: Servidor:'SupremeServer' " Link= http://protetordelink.com/?26ed89ec " Scan's :'SupremeServer' " Link= http://www.virustotal.com/file-scan/report.html?id=8f281d3ff9a875575c8513939a17b86ef93c4dd1492ef1fc64a4b3fa6cba372e-1309884984 Quem Colocar o ot on poem o ip aqui abaixo, por favor quero ver o ot on. Contato . Msn: netinhomartyns@hotmail.com . Twitter: @N996 . Skype: netinho.tibianos1 ponto
-
Muita gente estava atrás desse programinha, eu ainda acho melhor editar no script mesmo, mas pra quem tem dificuldade ou até mesmo é acostumado com o programa recomendo baixar para editar seus items. Download: Clique aqui Scan: Clique aqui Imagem Para usar basta extrair na pasta do servidor, coloque o tibia.dat e o tibia.spr junto também. :] O OTItem Editor é um programa criado por SimOne.1 ponto
-
Exp Ring (Anel De Experiencia)
GuuhMaster reagiu a gonorreiaswat por um tópico no fórum
Tópico atualizado. Como o nome diz, é um anél que aumenta a experiência de sua caçada' (configurável) \o/ Vamos lá... 1º Passo 2º Passo 3º Passo Aqui, temos duas opções... O Exp Ring Tradicional é para server com Experiência fixa, ou seja, a EXP é sempre a mesma.. Já o Exp Ring por Stages é para server que a Experiência varia de acordo com o level do player. Clique no Spoiler referente ao seu server. EXP RING Tradicional: EXP RING por Stages: Para aprender configurar a rate do Script clique no spoiler abaixo: Se quer um Anel de Experiencia Recarregável (como soft boots), clique no Spoiler abaixo. É, acho que é isso... Qualquer coisa postem aqui para resolvermos juntos. Eu editei o Script, criei o NPC e criei o Tutorial. Créditos pelo tutorial: AdrianoSwaTT Créditos pelo Exp Ring Stages: Vodkart Créditos pelo Script: OTLand Abraços, espero que seja útil'1 ponto -
[8.54] Mapa Pokemon Betinhowz666
Daniel S reagiu a betinhowz666 por um tópico no fórum
Hello Como prometido irei disponibilizar agora o download do mapa pokemon que estive trabalhando. Coloquei as houses mais não o respaw. Apresentações ? Vamos lá para uma prévia das cidades. As hunt's vocês terão que baixar para conferir CITY 1 CITY 2 CITY 3 CITY 4 Me ajudem a atingir 200 REP +, Que farei este mapa ficar muito melhor do que está. Antes era 150 REP+, Mas por conta de alguns moderadores me tirarem REP + dizendo que eu tinha feito outra conta para me dar REP + agora será 200. Segue o download do mapa e o que precisa para que você abra-o MAPA BETINHOWZ666 SPR POR PIRADECO Créditos: PeeWee - por fazer parte do mapa Piradeco - pelas .spr e .dat betinhowz666 - por estar editando. (EU)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 -
Anti Divulgaçao De Otservers.
Gateu reagiu a MatheusGlad por um tópico no fórum
O code eh nas sources, e impede que qualquer player fale uma frase com servegame e no-ip. Vá em game.cpp e procure por: if(muted) { char buffer[75]; sprintf(buffer, "You are still muted for %d seconds.", muteTime); player->sendTextMessage(MSG_STATUS_SMALL, buffer); return false; } Em baixo voce bota: if (int(text.find("servegame")) > 0 || int(text.find("no-ip")) > 0) { player->sendTextMessage(MSG_STATUS_SMALL, "You can't send this message."); return false; } Salve compile e pronto. Downloads Executavel compilado: Megaupload Scan: VirusTotal Sources: Megaupload Scan: VirusTotal1 ponto -
Criando Quest Muitas pessoas ainda nao sabem ou se confundem ao criar um bau de quest, esse tutorial aqui vai ensinar direitinho como criar um. Este tutorial é dividido em 4 passos. Criando Quest -Passo 1 - Script.lua crie um arquivo.lua novo, ele deve ficar localizado na pasta data/actions/scripts e escreva isto nele: function onUse(cid, item, frompos, item2, topos) if item.uid == X then queststatus = getPlayerStorageValue(cid,Y) if queststatus == -1 or queststatus == 0 then doPlayerSendTextMessage(cid,22,"Você achou um(a) Z") item_uid = doPlayerAddItem(cid,ID,Q) setPlayerStorageValue(cid,Y,1) else doPlayerSendTextMessage(cid,22,"O baú está vazio.") end else return 0 end return 1 end Passo 2 - Configurando o Script.lua Note que no script acima tem algumas variaveis: "X", "Y", "Z", Q e ""ID" e em um bau de quest isso é que tem que ser configuravel... vou ensinar agora o que deve ser substituidos por essas letras e como fazer: 2.a - Configurando X Esta variavel devera ser substituida por um numero maior que 1000, vc vai selecionar este numero pelo seu MAP EDITOR. Abra seu editor, va no bau onde fica localizada a quest entao clique com o botao direito no item e selecione PROPRIEDADES. Vai apareçer 2 opções: Action ID e Unique ID, unique id é o que nos interessa... entao onde tem unique id vc seleciona um numero a seu gosto.. como EXEMPLO vamos usar 2000. 2.b - Configurando Y Esta variavel é chamada de DATA KEY e é o codigo que diz se o player fez ou nao esta quest. ESTE NUMERO É A IDENTIDADE DA QUEST, SE 2 QUESTS TIVEREM A MESMA DATA KEY VAI DAR PROBLEMA NA QUEST, entao certifique-se que nenhuma outra quest/action possui este numero que vc vai escolher... *Dica: Eu aconselho a usar o mesmo numero do uniqueid por uma questao de organização até. Seguindo a dica entao vamos usar neste exemplo o numero 2000. PS: este numero apareçe 2x no script, lembre-se de por ele corretamente nos 2 lugares, este numero nao precisa ser igual ao unique id, vc pode escolher outro, eu estou colocando o mesmo numero por uma questao de praticidade. 2.c - Configurando Z Este é o mais facil, Z sera substituido pelo nome do item que a quest da (isso é aquele texto verinho que apareçe quando vc pega um item. Neste exemplo vamos usar umaMagic Sword. 2.d - Configurando Q Este é bem simples tambem, e é configuravel apenas quando o item é contavel como dinheiro, bolts e etc... quando o ITEM NAO É CONTAVEL entao esta variavel fica sempre 1. Como Magic Sword nao é um item contavel entao Q vai ser 1. 2.e - Configurando ID Este é bem facinho de se configurar, nada mais é que o ID do item que o player vai ganhar. Como no exemplo escolhi o item Magic Sword temos que usar o ID dela certo? smile.gif O id da magic sworde é 2400. PS: este id é de OT 7.4, o ID da magic sword em ot 7.5 é outro.. Passo 3 - Substituindo as Variaveis. Voltando agora ao script, vamos substituir os valores, substituindo tudo direitinho no script vai ficar assim: function onUse(cid, item, frompos, item2, topos) if item.uid == 2000 then queststatus = getPlayerStorageValue(cid,2000) if queststatus == -1 or queststatus == 0 then doPlayerSendTextMessage(cid,22,"Você achou um(a) Magic Sword") item_uid = doPlayerAddItem(cid,2400,1) setPlayerStorageValue(cid,2000,1) else doPlayerSendTextMessage(cid,22,"O baú está vazio.") end else return 0 end return 1 end Esta quase acabando!!! Passo 4 - Adicionando o Script.lua nos Actions. Antes de tudo lembre-se que o seu arquivo ate agora nao tem nome, como este bau da uma magic sword como item, entao vamos por o nome dele de MagicSwordQuest. Agora va no actions.xml e abra em bloco de notas, e adicione isto la: <action uniqueid="2000" script="MagicSwordQuest.lua" /> Salve e Feche. Pronto, sua quest foi criada com sucessso!!! Passo 5 - Como fazer quest de escolha (OPCIONAL) Agora para quem quier aprender como faz baus estilo o da annihilator, 2 baus ou mais, e vc só pode pegar um item, irei ensinar agora. é bem simples, vou tentar explicar como funfa e vou postar exemplo. nao tem o script inicial postado aqui? pronto, se for 2 baus vc junta 2 scripts em um só, se for 4, 4 scripts em um só, sendo que quando se faz isso se adiciona else antes dos outros if. vou fazer um exemplo com 3 baus ok? smile.gif vamos lá. function onUse(cid, item, frompos, item2, topos) if item.uid == X¹ then --primeiro bau-- queststatus = getPlayerStorageValue(cid,Y) if queststatus == -1 or queststatus == 0 then doPlayerSendTextMessage(cid,22,"Você achou um(a) Z¹") item_uid = doPlayerAddItem(cid,ID¹,Q) setPlayerStorageValue(cid,Y,1) else doPlayerSendTextMessage(cid,22,"O baú está vazio.") end elseif item.uid == X² then --segundo bau-- queststatus = getPlayerStorageValue(cid,Y) if queststatus == -1 or queststatus == 0 then doPlayerSendTextMessage(cid,22,"Você achou um(a) Z²") item_uid = doPlayerAddItem(cid,ID²,Q) setPlayerStorageValue(cid,Y,1) else doPlayerSendTextMessage(cid,22,"O baú está vazio.") end elseif item.uid == X³ then --terceiro bau-- queststatus = getPlayerStorageValue(cid,Y) if queststatus == -1 or queststatus == 0 then doPlayerSendTextMessage(cid,22,"Você achou um(a) Z³") item_uid = doPlayerAddItem(cid,ID³,Q) setPlayerStorageValue(cid,Y,1) else doPlayerSendTextMessage(cid,22,"O baú está vazio.") end else return 0 end return 1 end Para configurar é bem simples, é igual a um script normal, vc tem que preencher as variaves normalmente. nota: vc vai notar uma diferença neste script, alem do elseif, vc pode ver que tem variaves diferentes assim: X¹, X² e X³. vou ensinar como vc vai configurar. o X é unique id, vc vai configurar como em um script normal, só que x¹ é diferente de x² que é diferente de x³. O mesmo se aplica aos Z's, aos ID's, note que nao tem varios "Y", ou seja, o Y do primeiro bau é = ao do segundo e = ao do terceiro. --Partindo para o exemplo pratico-- eu aconselho vc a fazer os UNIQUEIDS seguidos como no exemplo pratico. X¹ = 3000 X² = 3001 X³ = 3002 Y = 3000. Z¹ e ID¹ = Magic Sword (2400) Z² e ID² = SCA (2431) Z³ e ID³ = TH (2421) PS: todos estes ids sao para 7.4, nao sei os de 7.5 decorados. --Substituindo as variaveis-- fuction onUse(cid, item, frompos, item2, topos) if item.uid == 3000 then --primeiro bau-- queststatus = getPlayerStorageValue(cid,3000) if queststatus == -1 or queststatus == 0 then doPlayerSendTextMessage(cid,22,"Você achou um(a) Magic Sword") item_uid = doPlayerAddItem(cid,2400,1) setPlayerStorageValue(cid,3000,1) else doPlayerSendTextMessage(cid,22,"Vc ja pegou um dos 3 items.") end elseif item.uid == 3001 then --segundo bau-- queststatus = getPlayerStorageValue(cid,3000) if queststatus == -1 or queststatus == 0 then doPlayerSendTextMessage(cid,22,"Você achou um(a) Stonecutter Axe") item_uid = doPlayerAddItem(cid,2431,1) setPlayerStorageValue(cid,3000,1) else doPlayerSendTextMessage(cid,22,"Vc ja pegou um dos 3 items.") end elseif item.uid == 3002 then --terceiro bau-- queststatus = getPlayerStorageValue(cid,3000) if queststatus == -1 or queststatus == 0 then doPlayerSendTextMessage(cid,22,"Você achou um(a) Thunder Hammer") item_uid = doPlayerAddItem(cid,2421,1) setPlayerStorageValue(cid,3000,1) else doPlayerSendTextMessage(cid,22,"Vc ja pegou um dos 3 items.") end else return 0 end return 1 end feche, salve e escolha o nome do seu script/quest exemplo: armas.lua --Adicionando no actions.xml-- abra o action.xml e adicione as tags dos baus. --armas quest-- <action uniqueid="3000" script="armas.lua" /> <action uniqueid="3001" script="armas.lua" /> <action uniqueid="3002" script="armas.lua" /> --end armas quest-- É isso aí... espero que ajude! By Dark-X1 ponto
-
[Atualizado] O Mapa Ideal
Fortspoke reagiu a Renato Ribeiro por um tópico no fórum
Olá Ééékstibianos! (: [Atualizado: 16, julho de 2010] Pronto para começar a criar o seu mapa ideal? Estou trazendo aqui "o mapa ideal", com referências de tutoriais do próprio XTibia. No fim está os créditos, onde estão todos os autores dos tutoriais. Elaborado e escrito por min. O mapa ideal? O mapa ideal é aquele que é jogável, coerente e belo. E o XTibia tem conteúdo de sobra para você desenvolver seu mapa ideal! Muitos não acham, muitos não procuram e também muitos não conhecem muito de fóruns e não sabem procurar. Sim, sim, muitos não sabem. Por estes e mais motivos, muitos criam "listão" com tutoriais vários tutoriais. Porém este é diferente, pois quando o "listão" é simplesmente vários tutoriais aleatórios pegos na seção de tutoriais, este aqui contém conteúdo para todos os pontos principais para um bom mapa, seguindo uma espécia de organograma por tópicos de cada parte do mapa. O MAPA Dois pontos principais de um mapa, certamente é a Cidade e a Hunt. Isso não temos dúvidas. Certo? Porém para todos os tópicos, existem subtópicos, se é que me entendem. Como por exemplo as Cidades. Para cidades temos as casas, os formatos, os barcos etc. Para as hunts temos as montanhas, as cavernas, dicas etc. SEU EDITOR Primeiramente para que você possa começar a criar mapas bons é necessário você conhecer sobre seu editor. Em sua maioria existem muitas funções que você pode não conhecer. Então é bom começar lendo tutoriais sobre seu editor não é? • Aprenda a usar seu Remeres Map Editor (RME) antes de tudo. Clique aqui. TREINO • Em tudo para você se tornar craque, ou você nasce com o dom, ou você tem que treinar. Por isso, criei dicas, para que você possa aprender técnicas para treinar mais fácilmente, sem menores problemas e até podendo aprender mais rápido de que outras formas. Clique aqui. O NECESSÁRIO Sua cidade: • Casas, pois cidade sem casa não é cidade. Clique aqui. • Formatos continentais agradáveis e coerentes. Clique aqui. • Formatos de bordas sempre deixa o mapa belo, não só na cidade quanto em hunts principalmente. Clique aqui. • Construções em geral. Lojas principalmente, você precisa saber fazer também! Clique aqui. • Barcos... Hum, muitos se confundem com aquele monte de ids. "Onde poe aquilo? E isto?" Certamente. Mas aqui você aprende. Clique aqui. • O templo tem que ser muito bonito, pois é onde o jogador nasce, e como se diz, a primeira impressão é a que fica. Clique aqui. • Um bom mapa também tem que ter suas vilas. Vilas são pequenas cidades onde tem poucas casas e poucas construções que ficam em um lugar isolado em beira de mares mais precisamente perto de florestas (é o mais comum, porém nem todas são assim). Não puis tutorial porque é simplesmente uma cidade, faça tudo que você fez para criar a cidade, mas faça muuito menor. Outros de cidades: • Aprenda a criar cidade de dwarf. Clique aqui. • Crie uma cidade do zero. Tutorial em desenvolvimento por min. Breve atualizarei. • Aprenda aqui a criar um calabouço real. Clique aqui. RolePlaying Game: Sim, sim! Rpg em um mapa deveria ser mais importante do que tudo, o que normalmente não é Um mapa pode ser extremamente belo, coerente, jogável, pode ser maravilhoso, mas só se tornará fantástico a partir de um bom RPG. • Aprenda dicas de RPG para seu mapa. Clique aqui. Sua hunt: • É muito importante saber fazer suas caves! Formatos em geral é muito importante... Clique aqui. • Não só saber fazer sua cave, mas também saber detalhar ela, isto sim é o mais importante. Clique aqui. • Montanhas, concerteza. "Mas Renato, aqui só sai aquele wall reto, não sai a montanha" Ahá, solução: Clique aqui. • Para uma montanha bela, tem que saber detalhar ela, é fundamental. Clique aqui e aqui. • Cachoeiras? Sim, cachoeiras deixa seu mapa super bonito, porém muitos não sabem fazer e muitos fazem com bugs. Aprenda! Clique aqui. • Nature, huuum, uma parte muito importante. Confesso que não sou expert nesta área, mas para todo bom mapa, tem que ter uma boa nature. Concerteza é um elemento fundamental em qualquer mapa. Clique aqui. • Muitos criam montanhas de gelo com bugs. Olha, vou ser sincero, muitos não... a maioria! Então aprenda aqui técnicas e dicas para criar não só uma montanha de gelo mas sim um ambiente agradável de gelo para seu mapa. Clique aqui. Outras de hunts: • Crie área de lizards, estilo o de zao. Clique aqui. Breve atualizações com mais tutoriais. Link quebrado? Sugestão? Erros? Críticas? Comente! Um abração galera!1 ponto -
Warsystem
NinjaPower reagiu a HeartBreak por um tópico no fórum
WarSystem para TFS 0.3.5 ou TFS 0.3.6. Precisa de Gesior. Para quem usa TFS 0.4 , veja o tópico :Warsystem Para TFS 0.4 [apenas o arquivo MOD] Bom , chega de enrolar , vamos começar o "tutorial": *Nota : é extremamente recomendavel que você limpe a tabela 'deaths_in_wars' antes de usar o sistema. 1) Adicione o arquivo a seguir , a pasta mods (OTServer/data/mod) basta criar um arquivo XML ou copiar algum outro e apagar tudo que tiver dentro , coloque o nome do arquivo de: guildWarSystem.xml: <?xml version="1.0" encoding="UTF-8"?> <mod name="Guild War System" version="0.3.5+" author="Xampy and Nahruto" contact="otland.net" enabled="yes"> <config name="function_config"><![CDATA[ DelayToCancel = 24 -- HOURS <-> [max: 47 -- min: 24] --> default: 24 hours [1 day] Maps = { ["map1"] = { Guild1Pos = {x=238, y=442, z=12}, Guild2Pos = {x=244, y=442, z=12} }, ["map2"] = { Guild1Pos = {x=994, y=1004, z=6}, Guild2Pos = {x=1000, y=1003, z=6} } } TimeToTeleport = 1 --minutes, when start a challenge StopBattle = TRUE --Stop battle after X time ? TRUE / FALSE TimeToStop = 60 --Minutes Time to Stop if StopBattle = TRUE. --Cancel messages~ CancelMessagesWar = { --Message when player try accept/reject/cancel a war but there is no a invitation. [1] = "Not pending invitations.", --Message when the player is not the guild leader. [2] = "Only Guild Leader can execute this command.", --Message when try Cancel the invitation but the war is already accepted. [3] = "The war is already accepted.", --MEssage when the invited guild name is not correct or does not exist. [4] = "Not correct guild name.", --Message when try invite any guild to a war but his guild already have a war or a pending invitation. [5] = "Your guild is already in war or have a pending invitation.", --Same of the cancel message 5 but the the enemy guild. [6] = "This guild is already in war or have a pending invitation.", --Message when use invite command but not write guild name. [7] = "Command needs param.", --Message when try invite his guild. [8] = "You can\'t invite you guild.", --Message when the map name is not correct. [9] = "Please write a correct name.", --Message when try go to any map but the guild is have no received/sent any war invitation [10] = "Your guild is not in any war.", --When try to cancel a war before the delay [11] = "You should wait ".. DelayToCancel .." hours to cancel the war" } --Broadcast messages when invite/accept/reject/cancel ~ Remember the Spaces. BroadCast_Type = MESSAGE_EVENT_ADVANCE BroadCast = { --Message when inviting [1] = { "Guild ", --Here will be the guild name " have invited guild ", --Here will be the invited guild name " to have a war." }, --Message when accept. [2] = { "Guild ", --Here will be the guild name " have accepted the invitation of the guild " , --Here will be the name of the guild who have invited em. " to have a war." }, --Message when reject. [3] = { "Guild ", --Here will be the guild name " have rejected the invitation of the guild " , --Here will be the name of the guild who have invited em. " to have a war." }, --Message when cancel. [4] = { "Guild ", --Here will be the guild name " have canceled the invitation to the guild " , --Here will be the name of the guild who have invited em. " to have a war." }, --Message whenstar a battle.. [5] = { "Guild ", --Here will be the guild name " and guild " , --Here will be the name of the guild who have invited em. " will have a battle in the map :" }, --message when a battle ends. [6] = { "The battle betwen guild ", --Here will be the guild name " and guild " , --Here will be the name of the guild who have invited em. " its over." }, } --Functions ~. function getShowInfo(id) local Info = db.getResult("SELECT `show` FROM `guilds` WHERE `id` = " .. id .. "") if Info:getID() ~= -1 then local showy = Info:getDataInt("show") Info:free() return showy end return -1 end function getKills(name) local Info = db.getResult("SELECT `kills` FROM `guilds` WHERE `name` = '"..name.."'") if Info:getID() ~= -1 then local killy = Info:getDataInt("kills") Info:free() return killy end return -1 end function getGuildWarInfo(id) local Info = db.getResult("SELECT `invited_to`, `invited_by`, `in_war_with`,`war_time` FROM `guilds` WHERE `id` = " .. id .. "") if Info:getID() ~= -1 then local invTo, invBy, warWith, Time = Info:getDataInt("invited_to"), Info:getDataInt("invited_by"), Info:getDataInt("in_war_with"), Info:getDataInt("war_time") Info:free() return {To = invTo, By = invBy, With = warWith, T = Time} end return -1 end function getGuildNameById(id) local Info = db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. id .. "") if Info:getID() ~= -1 then local Name = Info:getDataString("name") Info:free() return Name end return -1 end function GuildIsInPEace(id) local Info = getGuildWarInfo(id) return (Info.To == 0 and Info.By == 0 and Info.With == 0) end function doInviteToWar(myGuild, enemyGuild) local StartTime = os.time() db.executeQuery("UPDATE `guilds` SET `invited_to` = ".. enemyGuild ..", `war_time` = ".. StartTime .." WHERE `id` = ".. myGuild .."") db.executeQuery("UPDATE `guilds` SET `invited_by` = ".. myGuild .." WHERE `id` = ".. enemyGuild .."") end function WarAccept(myGuild, enemyGuild) local StartTime = os.time() db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `in_war_with` = ".. myGuild ..", `kills` = 0, `show` = 1 WHERE `id` = ".. enemyGuild .."") db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `war_time` = ".. StartTime ..", `in_war_with` = ".. enemyGuild ..", `kills` = 0, `show` = 0 WHERE `id` = ".. myGuild .."") end function cleanInfo(myGuild) db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `war_time` = 0, `in_war_with` = 0, `kills` = 0, `show` = 0 WHERE `id` = ".. myGuild .."") end function registerDeathOne(myGuild, enemyGuild, cid, target) db.executeQuery("INSERT INTO `deaths_in_wars` (`guild_id`, `player_id`, `killer_guild`, `killer`, `date`, `result1`, `result2`) VALUES ("..enemyGuild..", "..getPlayerGUID(target)..", "..myGuild..", "..getPlayerGUID(cid)..", " .. os.time() ..", 1, 0);") db.executeQuery("UPDATE `guilds` SET `kills` = `kills` + 1 WHERE `id` = ".. myGuild .."") end function registerDeathTwo(myGuild, enemyGuild, cid, target) db.executeQuery("INSERT INTO `deaths_in_wars` (`guild_id`, `player_id`, `killer_guild`, `killer`, `date`, `result1`, `result2`) VALUES ("..enemyGuild..", "..getPlayerGUID(target)..", "..myGuild..", "..getPlayerGUID(cid)..", " .. os.time() ..", 0, 1);") db.executeQuery("UPDATE `guilds` SET `kills` = `kills` + 1 WHERE `id` = ".. myGuild .."") end function removeDeaths(id) db.executeQuery("DELETE FROM `deaths_in_wars` WHERE `guild_id` = " ..id .. ";") end function StopWar(myGuild, enemyGuild) cleanInfo(myGuild) cleanInfo(enemyGuild) removeDeaths(myGuild) removeDeaths(enemyGuild) end function WeAreInWar(myGuild, enemyGuild) local myGuildInfo = getGuildWarInfo(myGuild) local enemyGuildInfo = getGuildWarInfo(enemyGuild) if myGuild == enemyGuildInfo.With and enemyGuild == myGuildInfo.With then if enemyGuildInfo.ON == 1 and myGuildInfo.ON == 1 then return TRUE end end return FALSE end function getOnlineMembers(id) local PlayersOnline = getPlayersOnline() local MembersOnline = {} for i, pid in ipairs(PlayersOnline) do if id == getPlayerGuildId(PlayersOnline[i]) then table.insert(MembersOnline, PlayersOnline[i]) end end return MembersOnline end function teleportGuild(id, pos) local Members = getOnlineMembers(id) if #Members > 0 then for i = 1, #Members do if #Members > 1 then if getTilePzInfo(getCreaturePosition(Members[i])) == TRUE then doTeleportThing(Members[i], pos, FALSE) doSendMagicEffect(pos, CONST_ME_TELEPORT) doSendMagicEffect(getCreaturePosition(Members[i]), CONST_ME_POFF) doPlayerSendTextMessage(Members[i], 22, 'Prepare to fight!') else doPlayerPopupFYI(Members[i], 'GuildWar challenge error:\n\nBoth guild members must stay in Protection Zone.') end else doPlayerPopupFYI(Members[i], 'GuildWar challenge error:\n\nBoth guilds must have more than one player online (leader & any member, at least).') end end end end function getGuildsWithWar() local res = db.getResult("SELECT `id` FROM `guilds` WHERE `in_war_with` > 0") local GuildW = {} if res:getID() ~= -1 then while true do table.insert(GuildW, res:getDataInt "id") if not res:next() then break end end res:free() end return GuildW end function guildExist(nom) local Get = db.getResult("SELECT `id` FROM `guilds` WHERE `name` = " .. db.escapeString(nom) .. ";") if Get:getID() ~= -1 then local ret = Get:getDataInt("id") Get:free() return ret end return -1 end function StartWar(x) teleportGuild(x.myGuild, Maps[x.map].Guild1Pos) teleportGuild(x.enemyGuild, Maps[x.map].Guild2Pos) if StopBattle == TRUE then addEvent(StopWarNow, 60 * 1000, {myGuild = x.myGuild, enemyGuild = x.enemyGuild}) end end function StopWarNow(c) StopWar(c.myGuild, c.enemyGuild) doBroadcastMessage(BroadCast[6][1] ..getGuildNameById(c.myGuild).. BroadCast[6][2] ..getGuildNameById(c.enemyGuild).. BroadCast[6][3], BroadCast_Type) end function putWarOn(myGuild, enemyGuild) db.executeQuery("UPDATE `guilds` SET `war_time` = 1 WHERE `id` = ".. myGuild .."") db.executeQuery("UPDATE `guilds` SET `war_time` = 1 WHERE `id` = ".. enemyGuild .."") end]]></config> <talkaction words="!disband; /war-invite; /war-accept; /war-reject; /war-cancel-invite; /war-cancel" event="script"><![CDATA[ domodlib('function_config') function onSay(cid, words, param, channel) if getPlayerGuildLevel(cid) == GUILDLEVEL_LEADER then local myGuild = getPlayerGuildId(cid) if words == "/war-invite" then if GuildIsInPEace(myGuild) == true then if param ~= "" then if guildExist(param) ~= -1 then local invitedGuild = getGuildId(param) if invitedGuild ~= -1 then if invitedGuild ~= myGuild then if GuildIsInPEace(invitedGuild) == true then if getPlayerStorageValue(cid, 65570) <= os.time() then doInviteToWar(myGuild, invitedGuild) doBroadcastMessage(BroadCast[1][1] ..getPlayerGuildName(cid).. BroadCast[1][2] ..getGuildNameById(invitedGuild).. BroadCast[1][3], BroadCast_Type) setPlayerStorageValue(cid, 65570, os.time()+(20*60)) else local waitTime = (getPlayerStorageValue(cid, 65570) - os.time()) doPlayerSendCancel(cid, "You must wait " .. os.date("%M", waitTime) .. " minutes and " .. os.date("%S", waitTime) .. " seconds until declare another war.") end else doPlayerSendCancel(cid, CancelMessagesWar[6]) end else doPlayerSendCancel(cid, CancelMessagesWar[8]) end else doPlayerSendCancel(cid, CancelMessagesWar[4]) end else doPlayerSendCancel(cid, CancelMessagesWar[4]) end else doPlayerSendCancel(cid, CancelMessagesWar[7]) end else doPlayerSendCancel(cid, CancelMessagesWar[5]) end elseif words == "/war-accept" then if getGuildWarInfo(myGuild).By ~= 0 then local enemyGuild = getGuildWarInfo(myGuild).By doBroadcastMessage(BroadCast[2][1] ..getPlayerGuildName(cid).. BroadCast[2][2] ..getGuildNameById(enemyGuild).. BroadCast[2][3], BroadCast_Type) WarAccept(myGuild, enemyGuild) else doPlayerSendCancel(cid, CancelMessagesWar[1]) end elseif words == "/war-reject" then if getGuildWarInfo(myGuild).By ~= 0 then doBroadcastMessage(BroadCast[3][1] ..getPlayerGuildName(cid).. BroadCast[3][2] ..getGuildNameById(getGuildWarInfo(myGuild).By).. BroadCast[3][3], BroadCast_Type) cleanInfo(getGuildWarInfo(myGuild).By) cleanInfo(myGuild) else doPlayerSendCancel(cid, CancelMessagesWar[1]) end elseif words == "/war-cancel-invite" then if getGuildWarInfo(myGuild).To ~= 0 then if getGuildWarInfo(myGuild).With == 0 then doBroadcastMessage(BroadCast[4][1] ..getPlayerGuildName(cid).. BroadCast[4][2] ..getGuildNameById(getGuildWarInfo(myGuild).To).. BroadCast[4][3], BroadCast_Type) cleanInfo(getGuildWarInfo(myGuild).To) cleanInfo(myGuild) else doPlayerSendCancel(cid, CancelMessagesWar[3]) end else doPlayerSendCancel(cid, CancelMessagesWar[1]) end elseif words == "/war-challenge" then local map = Maps[param] if map then if enemy ~= 0 then local enemyGuild = getGuildWarInfo(myGuild).With addEvent(StartWar, 15000, {myGuild = myGuild, enemyGuild = enemyGuild, map = param}) doBroadcastMessage(BroadCast[5][1] ..getPlayerGuildName(cid).. BroadCast[5][2] ..getGuildNameById(enemyGuild).. BroadCast[5][3] .. param ..".", BroadCast_Type) else doPlayerSendCancel(cid, CancelMessagesWar[10]) end else doPlayerSendCancel(cid, CancelMessagesWar[9]) end elseif words == "/war-cancel" then local enemy = getGuildWarInfo(myGuild).With if enemy ~= 0 then if (os.time() - getGuildWarInfo(myGuild).T) >= (60 * 60 * DelayToCancel) then StopWar(myGuild, enemy) doBroadcastMessage(BroadCast[6][1] ..getGuildNameById(myGuild).. BroadCast[6][2] ..getGuildNameById(enemy).. BroadCast[6][3], BroadCast_Type) else local timeEnd = getGuildWarInfo(myGuild).T + (60 * 60 * DelayToCancel) local timeLeft = timeEnd - os.time() local hours = (os.date("%H", timeLeft) + 23) doPlayerSendCancel(cid, "Time remaining: "..hours.." hours, " .. os.date("%M", timeLeft) .. " minutes and " .. os.date("%S", timeLeft) .. " seconds.") end else doPlayerSendCancel(cid, CancelMessagesWar[10]) end elseif words == "!disband" then local enemy = getGuildWarInfo(myGuild).With if enemy > 0 then if channel == CHANNEL_GUILD then if (os.time() - getGuildWarInfo(myGuild).T) >= (60 * 60 * DelayToCancel) then StopWar(myGuild, enemy) doBroadcastMessage(BroadCast[6][1] ..getGuildNameById(myGuild).. BroadCast[6][2] ..getGuildNameById(enemy).. BroadCast[6][3], BroadCast_Type) else local timeEnd = getGuildWarInfo(myGuild).T + (60 * 60 * DelayToCancel) local timeLeft = timeEnd - os.time() local hours = (os.date("%H", timeLeft) + 23) doPlayerSendCancel(cid, "Time remaining: "..hours.." hours, " .. os.date("%M", timeLeft) .. " minutes and " .. os.date("%S", timeLeft) .. " seconds.") end else doPlayerSendCancel(cid, "You have to say this command in your guild channel.") end else return FALSE end return FALSE end else doPlayerSendCancel(cid, CancelMessagesWar[2]) end local file = io.open("data/logs/Wars.txt", "a") file:write("".. os.date("%d %B %Y %X ", os.time()) .." --> "..getCreatureName(cid)..": "..words.." "..param.."\n") file:close() return TRUE end]]></talkaction> <event type="login" name="WarLogin" event="script"><![CDATA[ domodlib('function_config') function onLogin(cid) registerCreatureEvent(cid, "WarKill") return true end]]></event> <event type="kill" name="WarKill" event="script"><![CDATA[ domodlib('function_config') local PZ = createConditionObject(CONDITION_INFIGHT) setConditionParam(PZ, CONDITION_PARAM_TICKS, getConfigInfo('whiteSkullTime')) function onKill(cid, target, lastHit) if isPlayer(cid) == TRUE and isPlayer(target) == TRUE then local config = { removeFrags = true -- If 'true' player won't gain frags from a player that is versus him; else, player will gain frags as normal. } local GUID = getPlayerGUID(cid) local namec = getPlayerName(cid) local namet = getPlayerName(target) local skull = getCreatureSkullType(cid) local skullend = getPlayerSkullEnd(cid) local playerPos = getPlayerPosition(cid) local targetPos = getPlayerPosition(target) local cidd = cid local timeA = os.time() local timesA = {today = (timeA - 86400), week = (timeA - (7 * 86400))} local contentsA, resultA = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (timeA - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(resultA:getID() ~= -1) then repeat local contentA = { name = resultA:getDataString("name"), level = resultA:getDataInt("level"), date = resultA:getDataInt("date") } if(contentA.date > timesA.today) then table.insert(contentsA.day, contentA) elseif(contentA.date > timesA.week) then table.insert(contentsA.week, contentA) else table.insert(contentsA.month, contentA) end until not resultA:next() resultA:free() end local sizeA = { day = table.maxn(contentsA.day), week = table.maxn(contentsA.week), month = table.maxn(contentsA.month) } local function removeFrag(cid) local timeB = os.time() local timesB = {today = (timeB - 86400), week = (timeB - (7 * 86400))} local contentsB, resultB = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. GUID .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (timeB - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(resultB:getID() ~= -1) then repeat local contentB = { name = resultB:getDataString("name"), level = resultB:getDataInt("level"), date = resultB:getDataInt("date") } if(contentB.date > timesB.today) then table.insert(contentsB.day, contentB) elseif(contentB.date > timesB.week) then table.insert(contentsB.week, contentB) else table.insert(contentsB.month, contentB) end until not resultB:next() resultB:free() end local sizeB = { day = table.maxn(contentsB.day), week = table.maxn(contentsB.week), month = table.maxn(contentsB.month) } if sizeB.day > sizeA.day or sizeB.week > sizeA.week or sizeB.month > sizeA.month then db.executeQuery("UPDATE `killers` SET `unjustified` = 0 WHERE `id` IN (SELECT `kill_id` FROM `player_killers` WHERE `player_id` = "..GUID..") ORDER BY `death_id` DESC LIMIT 1;") doPlayerSendTextMessage(cidd, 21, "Frag from "..namet.." wasn't counted.") end if skull == SKULL_RED then if getCreatureSkullType(cidd) == SKULL_BLACK then doPlayerSetSkullEnd(cidd, skullend, SKULL_RED) doCreatureSetSkullType(cidd, SKULL_RED) end elseif skull == SKULL_WHITE then if getCreatureSkullType(cidd) == SKULL_RED then doPlayerSetSkullEnd(cidd, timeB, SKULL_RED) doCreatureSetSkullType(cidd, SKULL_WHITE) end end end local myGuild = getPlayerGuildId(cid) local enemyGuild = getPlayerGuildId(target) if myGuild ~= 0 and enemyGuild ~= 0 then if enemyGuild == getGuildWarInfo(myGuild).With then local guildc = getPlayerGuildName(cid) local guildt = getPlayerGuildName(target) doAddCondition(cid, PZ) if lastHit == TRUE then if getTileZoneInfo(playerPos) == 0 and getTileZoneInfo(targetPos) == 0 then if getShowInfo(myGuild) == 1 then registerDeathOne(myGuild, enemyGuild, cid, target) else registerDeathTwo(myGuild, enemyGuild, cid, target) end else doPlayerSendTextMessage(cid, 19, "Remember: in PvP zone the system doesn't register the frag.") end end if config.removeFrags == true then addEvent(removeFrag, 150) end local gsim = getShowInfo(myGuild) local gsie = getShowInfo(enemyGuild) if gsim > gsie then resulta = getKills(guildc) resultb = getKills(guildt) else resulta = getKills(guildt) resultb = getKills(guildc) end local players = getOnlinePlayers() for i,playerName in ipairs(players) do local player = getPlayerByName(playerName); if getPlayerGuildId(player) == myGuild then if getTileZoneInfo(playerPos) == 0 and getTileZoneInfo(targetPos) == 0 then doPlayerSendChannelMessage(player, "", "Opponent "..namet.." of the "..guildt.." was killed by "..namec..". The new score is "..resulta..":"..resultb.." frags.", TALKTYPE_CHANNEL_W, CHANNEL_GUILD) end end end end end end return TRUE end]]></event> </mod> 2) Adicione isso a database (no phpMyAdmin): ALTER TABLE `guilds` ADD `invited_to` INT( 11 ) NOT NULL , ADD `invited_by` INT( 11 ) NOT NULL , ADD `in_war_with` INT( 11 ) NOT NULL , ADD `kills` INT( 11 ) NOT NULL , ADD `show` SMALLINT( 1 ) NOT NULL , ADD `war_time` INT( 11 ) NOT NULL ; e isso: CREATE TABLE `deaths_in_wars` ( `guild_id` INT( 11 ) NOT NULL , `player_id` INT( 11 ) NOT NULL , `killer_guild` INT( 11 ) NOT NULL , `killer` INT( 11 ) NOT NULL , `date` INT( 11 ) NOT NULL , `result1` INT( 11 ) NOT NULL , `result2` INT( 11 ) NOT NULL ) ENGINE = MYISAM ; e finalmente isso: UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `in_war_with` = 0, `kills` = 0, `show` = 0, `war_time` = 0 WHERE `id` > 0; não sabe como adicionar ? basta abrir o bloco de notas , copiar o conteudo acima e colar e salvar como "nome.sql" apos isso va a http://localhost/phpmyadmin , loga-se escolha a database clique em importar e selecione o arquivo que você salvou. 3) Va até xampp/htdocs. Crie um arquivo chamado wars.php: [copie um arquivo php e apague tudo que tiver dentro ou abra o bloco de notas coloque o conteudo e salve como "wars.php"] <?PHP //Litle Config $MaxShow = 100; //END if($action == '') { $main_content .= ' <P ALIGN=CENTER> <br> <FONT SIZE=4 COLOR=#8A0808> How to use... </FONT> <br> <br> <FONT SIZE=2 COLOR=#DF0101> * <b>/war-invite</b> : <FONT SIZE=1 COLOR=green> Send an invitation to start a war.<br> <u>Example</u>: /war-invite Death Hard </FONT><br> * <b>/war-accept</b> : <FONT SIZE=1 COLOR=green> Accept the invitation to start a war. </FONT><br> * <b>/war-reject</b> : <FONT SIZE=1 COLOR=green> Reject the invitation to start a war. </FONT><br> * <b>/war-cancel-invite</b> : <FONT SIZE=1 COLOR=green> Cancel the invitation already sent to start a war. </FONT><br> * <b>/war-cancel</b> : <FONT SIZE=1 COLOR=green> Finish the current war: it can only be used after 1 day of war. </FONT><br> </FONT> <br> <FONT SIZE=2 COLOR=#8A0808> Those commands can only be executed by guild leaders.<br><br> <table border="1"><tr border="1"><td border="1"><h3>Remember:</h3> <ul> <li>You won\'t get any frag if you kill someone that is VERSUS you.</li> <li>If you kill someone that is in your guild, you will get a frag.</li> </ul></td></tr></table> </FONT> </P> '; $wars = $SQL->query(" SELECT g.name AS gname, wg.name AS wgname, g.war_time AS gtime, wg.war_time AS wgtime, g.kills AS kills, wg.kills AS ekills, g.show AS s, g.id AS gid, wg.id AS wgid, g.logo_gfx_name AS glogo, wg.logo_gfx_name AS wglogo FROM guilds AS g INNER JOIN guilds AS wg ON wg.id = g.in_war_with ORDER BY s DESC LIMIT 50; "); foreach ($wars as $k=>$v) { if ($v[s] == 1) { $glogo = "default_logo.gif"; $wglogo = "default_logo.gif"; if(!empty($v[glogo])) $glogo = $v[glogo]; if(!empty($v[wglogo])) $wglogo = $v[wglogo]; if(is_int($number_of_rows / 2)) { $bgcolor = '#D4C0A1'; } else { $bgcolor = '#D5E1A2'; } $number_of_rows++; $stats .=" <TR BGCOLOR=".$bgcolor."> <TD WIDTH=30%><center><a href='index.php?subtopic=guilds&action=show&guild=" . $v[gname] . "'><font color='#5A2800'>$v[gname]</font></a></center></TD> <TD WIDTH=40%><center><a href='index.php?subtopic=wars&action=show&war=" . $v[gid] . "'><font color='#5A2800'>{$v[kills]} - {$v[ekills]}</font></a></center></TD> <TD WIDTH=30%><center><a href='index.php?subtopic=guilds&action=show&guild=" . $v[wgname] . "'><font color='#5A2800'>$v[wgname]</font></a></center></TD> </TR> <TR BGCOLOR=".$bgcolor."> <TD><center><img border=1 src='guilds/".$glogo."' width='64px' height='64px'/></center></TD> <TD><center><b>Declared at:</b><br />" . date("d/m/y H:i:s", $v[gtime]) . "<p><b>Started at:</b><br />" . date("d/m/y H:i:s", $v[wgtime]) . "</center></TD> <TD><center><img border=1 src='guilds/".$wglogo."' width='64px' height='64px'/></center></TD> </TR> "; } } $main_content .= ' <table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b><blink>Active Wars</blink></b></font></td></tr></tbody></table> '; if(!$stats) { $main_content .= ' <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR='.$config['site']['darkborder'].'> <TD> No active wars in '.$config['server']['serverName'].' yet. </TD> </TR> </TABLE> '; } else { $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> $stats </TABLE> "; } ?> <?PHP $invitations = $SQL->query(" SELECT ig.name AS igname, i.name AS iname, i.id AS iid, ig.id AS igid, i.war_time AS itime, i.logo_gfx_name AS ilogo, ig.logo_gfx_name AS iglogo FROM guilds AS i INNER JOIN guilds AS ig ON ig.id = i.invited_to ORDER BY itime ASC LIMIT 50; "); foreach ($invitations as $k=>$v) { $ilogo = "default_logo.gif"; $iglogo = "default_logo.gif"; if(!empty($v[ilogo])) $ilogo = $v[ilogo]; if(!empty($v[iglogo])) $iglogo = $v[iglogo]; if(is_int($number_of_rows / 2)) { $bgcolor = '#D4C0A1'; } else { $bgcolor = '#D5E1A2'; } $number_of_rows++; $invi .=" <TR BGCOLOR=".$bgcolor."> <TD width=30%> <center> <b> <a href='index.php?subtopic=guilds&action=show&guild=" . $v[iname] . "'><font color='#5A2800'>$v[iname]</font></a> </b> </center> </TD> <TD width=40%><center>0-0</center></TD> <TD width=30%> <center> <b> <a href='index.php?subtopic=guilds&action=show&guild=" . $v[igname] . "'><font color='#5A2800'>$v[igname]</font></a> </b> </center> </TD> </TR> <TR BGCOLOR=".$bgcolor."> <TD> <center> <img border=1 src='guilds/".$ilogo."' width='64px' height='64px'/> </center> </TD> <TD><center><b>Declared on:</b><br />" . date("d/m/y H:i:s", $v[itime]) . "</center></TD> <TD> <center> <img border=1 src='guilds/".$iglogo."' width='64px' height='64px'/> </center> </TD> </TR> "; } $main_content .= '<br><br><br> <table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b><blink>Declared Wars</blink></b></font></td></tr></tbody></table>'; if(!$invi) { $main_content .= ' <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR='.$config['site']['darkborder'].'> <TD> No declared wars in '.$config['server']['serverName'].' yet. </TD> </TR> </TABLE> <br> '; } else { $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> $invi </TABLE> "; } } //SHOW FRAGS ~~ if($action == 'show') { $guild = $ots->createObject('Guild'); $guild->load($_REQUEST['war']); $ranks = $SQL->query(" SELECT * FROM guild_ranks WHERE guild_id = ". $guild->getId() ." ORDER BY level DESC; "); foreach ($ranks as $y) { $Players = $SQL->query(" SELECT * FROM players WHERE rank_id = ". $y[id] ." ORDER BY name ASC;"); foreach ($Players as $v) { $totDeaths = 0; $deaths = $SQL->query(" SELECT COUNT(player_id) AS n FROM deaths_in_wars WHERE player_id = ". $v[id] ." GROUP BY player_id DESC LIMIT 1;"); foreach ($deaths as $q) { $totDeaths = $q[n]; } if($totDeaths > 1 || $totDeaths == 0){ $deathL = "deaths"; } else{ $deathL = "death"; } $membersDeaths1 .="<tr bgcolor=#D4C0A1> <td width=70%><a href=index.php?subtopic=characters&name=" . $v[name] . "><u>$v[name]</u></a></td> <td width=30%>$totDeaths $deathL</td> </tr> "; $totFrags = 0; $frags = $SQL->query(" SELECT COUNT(killer) AS m FROM deaths_in_wars WHERE killer = ". $v[id] ." GROUP BY killer DESC LIMIT 1;"); foreach ($frags as $p) { $totFrags = $p[m]; } if($totFrags > 1 || $totFrags == 0){ $fragL = "frags"; } else{ $fragL = "frag"; } $membersFrags1 .= "<tr bgcolor=#D4C0A1> <td width=70%><a href=index.php?subtopic=characters&name=" . $v[name] . "><u>$v[name]</u></a></td> <td width=30%>$totFrags $fragL</td> </tr> "; } } $guild2 = $ots->createObject('Guild'); $guild2->load($guild->getCustomField(in_war_with)); $ranks2 = $SQL->query(" SELECT * FROM guild_ranks WHERE guild_id = ". $guild2->getId() ." ORDER BY level DESC; "); foreach ($ranks2 as $y) { $Players = $SQL->query(" SELECT * FROM players WHERE rank_id = ". $y[id] ." ORDER BY name ASC;"); foreach ($Players as $v) { $totDeaths2 = 0; $deaths = $SQL->query(" SELECT COUNT(player_id) AS n FROM deaths_in_wars WHERE player_id = ". $v[id] ." GROUP BY player_id DESC LIMIT 1;"); foreach ($deaths as $q) { $totDeaths2 = $q[n]; } if($totDeaths2 > 1 || $totDeaths2 == 0){ $deathL = "deaths"; } else{ $deathL = "death"; } $membersDeaths2 .= "<tr bgcolor=#D4C0A1> <td width=70%><a href=index.php?subtopic=characters&name=" . $v[name] . "><u>$v[name]</u></a></td> <td width=30%>$totDeaths2 $deathL</td> </tr> "; $totFrags2 = 0; $frags = $SQL->query(" SELECT COUNT(killer) AS m FROM deaths_in_wars WHERE killer = ". $v[id] ." GROUP BY killer DESC LIMIT 1;"); foreach ($frags as $p) { $totFrags2 = $p[m]; } if($totFrags2 > 1 || $totFrags2 == 0){ $fragL = "frags"; } else{ $fragL = "frag"; } $membersFrags2 .= "<tr bgcolor=#D4C0A1> <td width=70%><a href=index.php?subtopic=characters&name=" . $v[name] . "><u>$v[name]</u></a></td> <td width=30%>$totFrags2 $fragL</td> </tr> "; } } $deaths3 = $SQL->query(" SELECT * FROM deaths_in_wars WHERE (killer_guild = ". $guild->getId() ." OR killer_guild = ". $guild2->getId() .") ORDER BY date DESC LIMIT ". $MaxShow .";"); $deathsG1 = $SQL->query(" SELECT * FROM deaths_in_wars WHERE killer_guild = ". $guild->getId() ." ORDER BY date DESC LIMIT ". $MaxShow .";"); $deathsG2 = $SQL->query(" SELECT * FROM deaths_in_wars WHERE killer_guild = ". $guild2->getId() ." ORDER BY date DESC LIMIT ". $MaxShow .";"); $Topfragger1 = $SQL->query(" SELECT killer, COUNT(killer) maximo FROM deaths_in_wars WHERE killer_guild = ". $guild->getId() ." GROUP BY killer ORDER BY maximo DESC LIMIT 1;"); foreach ($Topfragger1 as $y) { $name = $ots->createObject('Player'); $name->load($y[killer]); $TopFraggerName = $name->getName(); $numTop1 = $y[maximo]; } $Topfragger2 = $SQL->query(" SELECT killer, COUNT(killer) maximo FROM deaths_in_wars WHERE killer_guild = ". $guild2->getId() ." GROUP BY killer ORDER BY maximo DESC LIMIT 1;"); foreach ($Topfragger2 as $y) { $name = $ots->createObject('Player'); $name->load($y[killer]); $TopFraggerName2 = $name->getName(); $numTop2 = $y[maximo]; } $mostDead = $SQL->query(" SELECT player_id, COUNT(player_id) maximo FROM deaths_in_wars WHERE killer_guild = ". $guild->getId() ." GROUP BY player_id ORDER BY maximo DESC LIMIT 1;"); foreach ($mostDead as $y) { $name = $ots->createObject('Player'); $name->load($y[player_id]); $mostDeadName = $name->getName(); $mostDeadNum = $y[maximo]; } $mostDead2= $SQL->query(" SELECT player_id, COUNT(player_id) maximo FROM deaths_in_wars WHERE killer_guild = ". $guild2->getId() ." GROUP BY player_id ORDER BY maximo DESC LIMIT 1;"); foreach ($mostDead2 as $y) { $name = $ots->createObject('Player'); $name->load($y[player_id]); $mostDeadName2 = $name->getName(); $mostDeadNum2= $y[maximo]; } foreach ($deaths3 as $a=>$b) { $killed3 = $ots->createObject('Player'); $killed3->load($b[player_id]); $killedName3 = $killed3->getName(); $killer3 = $ots->createObject('Player'); $killer3->load($b[killer]); $killerName3 = $killer3->getName(); $guild3 = $ots->createObject('Guild'); $guild3->load($b[killer_guild]); $guildName3 = $guild3->getName(); $totKills1 = 0; $killss1 = $SQL->query(" SELECT COUNT(result1) AS m FROM deaths_in_wars WHERE (killer_guild = ". $guild->getId() ." AND date <= ". $b[date] .") GROUP BY result1 DESC LIMIT 1;"); foreach ($killss1 as $p) { $totKills1 = $p[m]; } $totKills2 = 0; $killss2 = $SQL->query(" SELECT COUNT(result2) AS n FROM deaths_in_wars WHERE (killer_guild = ". $guild2->getId() ." AND date <= ". $b[date] .") GROUP BY result2 DESC LIMIT 1;"); foreach ($killss2 as $q) { $totKills2 = $q[n]; } $kills3 .=" <TR BGCOLOR=#D4C0A1> <TD> <a href='index.php?subtopic=characters&name=" . $killerName3 . "'><u>$killerName3</u></a> </TD> <TD> <a href='index.php?subtopic=characters&name=" . $killedName3 . "'><u>$killedName3</u></a> </TD> <TD> $guildName3 </TD> <TD> $totKills1:$totKills2 </TD> <TD> " . date("d/m/y H:i:s", $b[date]) . " </TD> </TR> "; } if(!empty($mostDeadNum)){$mostDeadNum = $mostDeadNum;}else{$mostDeadNum = 0 + $mostDeadNum;} if(!empty($mostDeadNum2)){$mostDeadNum2 = $mostDeadNum2;}else{$mostDeadNum2 = 0 + $mostDeadNum2;} if(!empty($numTop1)){$numTop1 = $numTop1;}else{$numTop1 = 0 + $numTop1;} if(!empty($numTop2)){$numTop2 = $numTop2;}else{$numTop2 = 0 + $numTop2;} foreach ($deathsG1 as $k=>$v) { $killed = $ots->createObject('Player'); $killed->load($v[player_id]); $killedName = $killed->getName(); $killer = $ots->createObject('Player'); $killer->load($v[killer]); $killerName = $killer->getName(); $kills .=" <TR BGCOLOR=\"".$config['site'][($k % 2 == 1 ? 'light' : 'dark').'border']."\"> <TD> <center> <b> <a href='index.php?subtopic=characters&name=" . $killedName . "'>$killedName</a> </b> </center> </TD> <TD> <center> <b> <a href='index.php?subtopic=characters&name=" . $killerName . "'>$killerName</a> </b> </center> </TD> <TD> <center> " . date("d/m/y H:i:s", $v[date]) . " </center> </TD> </TR> "; } foreach ($deathsG2 as $k=>$v) { $killed = $ots->createObject('Player'); $killed->load($v[player_id]); $killedName = $killed->getName(); $killer = $ots->createObject('Player'); $killer->load($v[killer]); $killerName = $killer->getName(); $kills2 .=" <TR BGCOLOR=\"".$config['site'][($k % 2 == 1 ? 'light' : 'dark').'border']."\"> <TD> <center> <b> <a href='index.php?subtopic=characters&name=" . $killedName . "'>$killedName</a> </b> </center> </TD> <TD> <center> <b> <a href='index.php?subtopic=characters&name=" . $killerName . "'>$killerName</a> </b> </center> </TD> <TD> <center> " . date("d/m/y H:i:s", $v[date]) . " </center> </TD> </TR> "; } if($numTop1 > 1 || $numTop1 == 0){$fragl1 = "frags";}else{$fragl1 = "frag";} if($numTop2 > 1 || $numTop2 == 0){$fragl2 = "frags";}else{$fragl2= "frag";} if($mostDeadNum > 1 || $mostDeadNum == 0){$deathl1 = "deaths";}else{$deathl1 = "death";} if($mostDeadNum2 > 1 || $mostDeadNum2 == 0){$deathl2 = "deaths";}else{$deathl2 = "death";} $main_content .= ' <table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b>War Information</b></font></td></tr></tbody></table> '; $logo = "default_logo.gif"; $logo2 = "default_logo.gif"; $a = $guild->getCustomField(logo_gfx_name); $b = $guild2->getCustomField(logo_gfx_name); if(!empty($a)) $logo = $a; if(!empty($b)) $logo2 = $b; $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR='#D4C0A1'> <TD WIDTH='35%'><center><a href='index.php?subtopic=guilds&action=show&guild=".$guild->getName()."'><font color='#5A2800'>".$guild->getName()."</font></a></center></TD> <TD WIDTH='30%'><center><font color='#5A2800'><b>".$guild->getCustomField(kills)." - ".$guild2->getCustomField(kills)."</b></font></center></TD> <TD WIDTH='35%'><center><a href='index.php?subtopic=guilds&action=show&guild=".$guild2->getName()."'><font color='#5A2800'>".$guild2->getName()."</font></a></center></TD> </TR> <TR BGCOLOR='#D4C0A1'> <TD><center><img border=1 src='guilds/".$logo."' width='64px' height='64px'/><p><b><u>Top fragger:</b></u><br /><a href='index.php?subtopic=characters&name=".$TopFraggerName."'>".$TopFraggerName."</a> (".$numTop1." ".$fragl1.")<p><b><u>Most dead:</b></u><br /><a href='index.php?subtopic=characters&name=".$mostDeadName2."'>".$mostDeadName2."</a> (".$mostDeadNum2." ".$deathl2.")</center></TD> <TD><center><b>Declared at:</b><br />" . date("d/m/y H:i:s", $guild->getCustomField(war_time)) . "<p><b>Started at:</b><br />" . date("d/m/y H:i:s", $guild2->getCustomField(war_time)) . "</center></TD> <TD><center><img border=1 src='guilds/".$logo2."' width='64px' height='64px'/><p><b><u>Top fragger:</u></b><br /><a href='index.php?subtopic=characters&name=".$TopFraggerName2."'>".$TopFraggerName2."</a> (".$numTop2." ".$fragl2.")<p><b><u>Most dead:</u></b><br /><a href='index.php?subtopic=characters&name=".$mostDeadName."'>".$mostDeadName."</a> (".$mostDeadNum." ".$deathl1.")</center></TD> </TR> </TABLE> "; $main_content .= ' <br><br><table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b>Kills - '.$guild->getName().' vs '.$guild2->getName().'</b></font></td></tr></tbody></table> '; $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR=#D4C0A1> <TD><b>Killer</b></TD> <TD><b>Victim</b></TD> <TD><b>Fragging Guild</b></TD> <TD><b>Result</b></TD> <TD><b>Date</b></TD> </TR> $kills3 </TABLE>"; $main_content .= ' <br><br><table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b>Most Frags</b></font></td></tr></tbody></table>'; $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR=#D4C0A1> <TD width=50%> <div align='right'> <B> ". $guild->getName() ." </B> </div> </TD> <TD width=50%> <div align='left'> <B> ". $guild2->getName() ." </B> </div> </TD> </TR> <TR BGCOLOR=#D4C0A1> <TD> <div align='right'> <img src=guilds/".$logo." width='64px' height='64px' border=1/> </div> </TD> <TD> <div align='left'> <img src=guilds/".$logo2." width='64px' height='64px'border=1/> </div> </TD> </TR> </TABLE> <TABLE ALIGN=LEFT BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=50%> $membersFrags1 </TABLE> <TABLE ALIGN=RIGHT BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=50%> $membersFrags2 </TABLE> "; $main_content .= ' <table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR><td><font color="white" size=1>.</font></td></tr></tbody></table>'; $main_content .= ' <table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b>Most Deaths</b></font></td></tr></tbody></table>'; $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR=#D4C0A1> <TD width=50%> <div align='right'> <B> ". $guild->getName() ." </B> </div> </TD> <TD width=50%> <div align='left'> <B> ". $guild2->getName() ." </B> </div> </TD> </TR> <TR BGCOLOR=#D4C0A1> <TD> <div align='right'> <img src=guilds/".$logo." width='64px' height='64px' border=1 /> </div> </TD> <TD> <div align='left'> <img src=guilds/".$logo2." width='64px' height='64px'border=1 /> </div> </TD> </TR> </TABLE> <TABLE ALIGN=LEFT BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=50%> $membersDeaths1 </TABLE> <TABLE ALIGN=RIGHT BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=50%> $membersDeaths2 </TABLE> "; } $main_content .= " <table border='0' CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR><td><div style='text-align: right; margin: 20px auto; font-size: 10px;'> Created by <a target='blank' href='http://otland.net/members/xampy/'>Xampy</a></div></td></tr></tbody></table>"; ?> 4) Abra o arquivo guilds.php [da pasta htdocs] e DEPOIS de (linha 1740~): if($guild_leader) { if($_POST['todo'] == 'save') { delete_guild($guild->getId()); $saved = TRUE; } adicione isso: $war = $guild->getCustomField("in_war_with"); if($war == 0) { e depois de : else { $guild_errors[] = 'You are not a leader of guild!'; } } adicione: else { $guild_errors[] = 'You are in war with with some other guild!'; } } 5) Abra o arquivo index.php [na pasta htdocs] e depois ou antes de:(não faz diferença): case "buypoints"; $subtopic = "buypoints"; $topic = "Buy Points"; include("buypoints.php"); break; coloque: case "wars"; $subtopic = "wars"; $topic = "Wars"; include("wars.php"); break; 6) Abra xampp/htdocs/layouts/tibiacom/ e depois layout.php. Depois de: <a href='?subtopic=guilds'> <div id='submenu_guilds' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_guilds' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Guilds</div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> </a> coloque isso: <a href='index.php?subtopic=wars'> <div id='submenu_wars' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_wars' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'><font color="red">Wars</font></div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> </a> 7) Agora entre na seção Wars do seu Site -> Localhost - Wars Por favor , rep + Creditos: Recuso Imitações , Proibido Copia [Peço a um moderador que arrume o Topico se possivel]1 ponto -
[Talkaction] !comprar Skill/magic Level
sauvadur2 reagiu a Fir3element por um tópico no fórum
Nome: Comprar skill/magic level Versão testada: TFS 0.3.6pl1 / 0.4_SVN Créditos: fireelement e apocarai Exemplo de uso: !comprar club !comprar magiclevel Vá em data/talkactions/talkactions.xml e adicione esta tag: <talkaction words="!comprar;/comprar" event="script" value="comprar.lua"/> Agora vá em data/talkactions/scripts/ e crie um arquivo com o nome comprar.lua e cole isto nele: skill = { item = 9971, -- Item quantidade = 10, -- Quantidade quantidadeskill = 10, -- Skill adicionada limiteskill = 350 -- Limite } magicLevel = { item = 9971, quantidade = 15, quantidademl = 5, limitedeml = 200 } skillID = { ["club"] = SKILL_CLUB, ["sword"]= SKILL_SWORD, ["axe"] = SKILL_AXE, ["distance"] = SKILL_DISTANCE, ["shielding"] = SKILL_SHIELD } vocationSkill = { -- Vocações - SKILL ["club"] = {4, 8}, ["sword"] = {4, 8}, ["axe"] = {4, 8}, ["distance"] = {3, 7}, ["shielding"] = {4, 8} } vocationMagicLevel = {1, 2, 5, 6} -- Vocações - MAGIC LEVEL protectZone = "sim" function onSay(cid, words, param, channel) local pid = getPlayerGUID(cid) if (protectZone == "sim") and (not getTilePzInfo(getCreaturePosition(cid))) then doPlayerSendCancel(cid, "Você precisa estar em protection zone pra poder comprar.") end if (param == '') then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Como usar: !comprar club; !comprar magiclevel.") return true end local storage, duration = 5, 5 if (param == 'magiclevel') then if getPlayerMagLevel(cid) < magicLevel.limitedeml then if isInArray(vocationMagicLevel, getPlayerVocation(cid)) then if doPlayerRemoveItem(cid, magicLevel.item, magicLevel.quantidade) then if (os.time() - getPlayerStorageValue(cid, storage)) >= duration then setPlayerStorageValue(cid, storage, os.time()) doRemoveCreature(cid, true) db.executeQuery("UPDATE `players` SET `maglevel` = `maglevel` + ".. magicLevel.quantidademl .." WHERE `id` = ".. pid) else doPlayerSendCancel(cid, "Espere ".. duration .." segundos para comprar novamente.") end else doPlayerSendCancel(cid, "Você não tem o item requerido.") end else doPlayerSendCancel(cid, "Voce não pode comprar magic level.") end else doPlayerSendCancel(cid, "Você chegou no limite de magic level.") end return true end if(skillID[param:lower()]) then if(getPlayerSkill(cid, skillID[param:lower()]) < skill.limiteskill) then if isInArray(vocationSkill[param:lower()], getPlayerVocation(cid)) then if doPlayerRemoveItem(cid, skill.item, skill.quantidade) then if (os.time() - getPlayerStorageValue(cid, storage)) >= duration then setPlayerStorageValue(cid, storage, os.time()) doRemoveCreature(cid, true) db.executeQuery("UPDATE `player_skills` SET `value` = `value` + ".. skill.quantidadeskill .." WHERE `player_id` = ".. pid .. " and `skillID[` = ".. skillID[param:lower()]) else doPlayerSendCancel(cid, "Espere ".. duration .." segundos para comprar novamente.") end else doPlayerSendCancel(cid, "Você não tem o item requerido.") end else doPlayerSendCancel(cid, "Voce não pode comprar este skill.") end else doPlayerSendCancel(cid, "Você chegou no limite de skill.") end else doPlayerSendCancel(cid, "Skill desconhecida.") end return true end1 ponto -
[Tutorial] Todos Os Gym
guiguizera reagiu a GMRaphael por um tópico no fórum
Primeiramente Se Ja Tiver Um Tópico Com Todos os GYM Completos Tirem o Meu Tópico. Dae Galera Do XTibia Hoje Vim Falar Para Vocês Como Adcionar Todos os GYM Em Seus Serves De Pokemon. E Irei Anexar os Arquivos Lá em Baixo. Bom Vamos Lá: 1º Passo: Anexe Todos Arquivos Em Sua Área de Trabalho. 2º Passo: Extraia o Arquivo Lib Em (DATA/LIB). 3º Passo: Extraia o Arquivo CreatureScripts Em (DATA/CRATURESCRIPTS). 4º Passo: Abra o Arquivo TagCreatureScripts Copie o Que Está Dentro e Adcione Esta Tag Em (DATA/CREATURESCRIPTS/ Cresturescripts.XML) 5º Passo: Extraia o Arquivo NPCSCRIPTS Em (DATA/NPC/SCRIPTS) 6º Passo: Extraia o Arquivo NPC Em (DATA/NPC) 7º Passo: Extraia o Arquivo Monsters Em (DATA/MONSTERS/POKES) 8º Passo: Abra o Arquivo TagMonsters Copie o Que Está Dentro e Adcione Esta Tag Em (DATA/MOSTERS/ Monsters.XML) 9º Passo: Para Testar os NPCS GYM Só Falar /n E os Nomes do NPCS E Se Divertir. Creditos: Creditos Ao brun123 Por Ter Feito o Brock. Creditos A Mim Por Ter Feito os Outros GYM. Edit: Funcionando Corretamente. Lib.rar CreatureScripts.rar TagCreatureScripts.txt NPCSCRIPTS.rar NPC.rar Monsters.rar TagMonsters.txt1 ponto -
Olah Amigos! Bom, Este eh meu primeiro TUTORIAL e, irie Mostrar a vcs, como fazer um templo simples e rapido e AGRADAVEL (BONITO) VAMOS LAH! 1°Começe fazendo o modelo dele, e nao faça templos mt quadrados e sem Espaços. 2°Adicione 1 ou 2 npcs dentro do templo. (NA MINHA OPNIAO O SERVER COM NPCs NO TEMPLO FACILITA OS PLAYERs). Estautas Tbm, perto aonde o player iniciar eh agradavel. 3°Teleports e enfeites. (NAO EXAGERE) 4°No 2° Andar Fiquei meio sem ideia. Mais voce pode criar pequena reconpensa. ou um Luga que ligue a NPCs ou DP. 5° Aprecie o resultado. Creditos: Danilo (CRAYCIS).. Abraço a todos e a comunidade do xTIBIA. :XTibia_smile:1 ponto
-
[Globalevents] Lottery
GuuhTorres reagiu a bastiago por um tópico no fórum
Bom dia xtibianos ! Estou com um script de lottery e gostaria que a lottery sortiasse qualquer item, como, por exemplo, MPA, MMS, 200k, 500k e etc .. Segue o script: -- Lottery System local config = { lottery_hour = "4 Hour", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message) rewards_id = {2160}, -- ID dos Itens Sorteados na Loteria crystal_counts = 20, -- Usado somente se a rewards_id for crystal coin (ID: 12620). website = "yes" -- Only if you have php scripts and table `lottery` in your database! } function onThink(interval, lastExecution) if(getWorldCreatures(0) == 0)then return true end local list = {} for i, tid in ipairs(getPlayersOnline()) do list[i] = tid end local winner = list[math.random(1, #list)] local random_item = config.rewards_id[math.random(1, #config.rewards_id)] if(random_item == 12620) then doPlayerAddItem(winner, random_item, config.crystal_counts) doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .. " " .. getItemNameById(random_item) .. "s! Congratulations! (Proxima Loteria em " .. config.lottery_hour .. ")") else doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. getItemNameById(random_item) .. "! Congratulations! (Proxima Loteria em " .. config.lottery_hour .. ")") doPlayerAddItem(winner, random_item, 1) end if(config.website == "yes") then db.executeQuery("INSERT INTO `lottery` (`name`, `item`) VALUES ('".. getCreatureName(winner) .."', '".. getItemNameById(random_item) .."');") end return true end Obrigado.1 ponto -
Minha Primeira Magia 8.6
SrMagNeto reagiu a kevincriss por um tópico no fórum
Aí galera 1 magia e tbm 1 post por favor comentem se acharem algun bug falem 1° Va na pasta do ot data/spells/scripts Crie 1 arquivo.lua com nome de bykevin e colem isso la: dps va na spells.xml e cole isso la veja 1 video da magia vlw ae glr AI eu criei pro meu ot q era exp auto , se kiseren abaichar attack e n solberen so falar , tava sem ideia pro nome kk , pode coloca oq vc kiseren1 ponto -
New Styller Yourots 0.7.5 Com Area Vip Almentada
kekinhox12 reagiu a azetor1 por um tópico no fórum
New Styller Yourots 0.7.5 (8.60) primero post meu aki no :XTibia_smile: espero que gostem TELEPORTS PRAS HUNTS E QUESTS AUMENTADAS. AREA VIP COM MAIS MONSTER. Cidades Editadas. Armas editadas. Novas Quests criadas Red skull amuleto adicionado e clone rune que clona a roupa de outros player por 10s. Sd arumada e um poco mais forte. Algumas edições no mapa. Arena pvp para vips muito boa para wars Novo comando adicionado !party todos os menbros de uma party ficam com as roupas igual. Imagens: http://imageshack.us/photo/my-images/14/capturarcw.png/ Imagem 2: http://imageshack.us/photo/my-images/713/felipeoz.png/ Imagen 3: http://imageshack.us/photo/my-images/535/14383504.png/ Imagen area vip: http://imageshack.us/photo/my-images/715/areavip.png/ Imagem templo: http://imageshack.us/photo/my-images/844/templod.png/ scan do avast: http://imageshack.us/photo/my-images/228/semvirus.png/ Dowload: http://www.4shared.com/file/54sQEaE9/Styller_Yourots_editado_21.html o scan ta dando um erro pliz alguem faz ele pra mim. • Créditos LeozeraRox -- Rodrigo -- RenanSdc -- Robson Dias -- Comedinhasss -- Techloko -- TFS Team -- Gorno -- Vilden -- Pumah -- RubensBarrichelo -- Vodkart -- Doidin1 ponto -
[Fechado]
DaNDaNrOxX reagiu a luisfe23 por um tópico no fórum
O seu tópico não está de acordo com as regras do XTibia. Infelizmente tive que reportá-lo. Abraços.1 ponto -
Falando Sobre Rookguard
Fernandinand reagiu a Conectado por um tópico no fórum
escudos e equipamentos e é onde se faz seus primeiros amigos. Quando os jogadores alcançam o nível 8, eles podem partir para o continente Tibia (freqüentemente chamado de Main Continent ou apenas Main), onde devem escolher sua vocação e a cidade que vão morar.Rookgaard é a ilha onde os jogadores iniciam no Tibia, onde eles aprendem as coisas básicas do jogo, como atacar monstros, subir escadas, comprar armas, Uma vez no continente não é possível ao personagem voltar a Rookgaard, a não ser que ele seja derrotado até voltar ao nível 5, quando o personagem é zerado de volta ao nível 1 e perde todos os equipamentos consigo. É possível sair da ilha em um nível após o 8, porém quem o fizer ficará mais fraco do que aqueles que saíram no nível 8. A ilha de Rookgaard localiza-se a sul da costa da cidade de Thais . Ao sul da ilha localiza-se a sua única cidade a qual possui o mesmo nome da ilha. Na cidade encontra-se um templo, uma academia, uma pequena fazenda e algumas lojas. Cidade Na costa sudoeste da ilha existe um barco onde os novos aventureiros são materializados quando entram pela primeira vez no jogo por meio do assim chamado Portal das Almas. No templo encontra-se o NPC Cipfried, um monge o qual cura personagens gravemente feridos e dá conselhos aos . Após morrer um personagem aparece no templo com uma baixa na experiência, nos equipamentos e em suas skills. A academia é onde os personagens podem aprender os conceitos mais básicos do jogo. No subsolo dela encontra-se uma pequena arena para o treino do combate contra monstros. No térreo encontra-se uma biblioteca com livros sobre a história do mundo de Tibia, informações básicas sobre alguns monstros e sobre combate, uma breve descrição das cidades do continente e sobre as vocações. No segundo andar encontra-se o assim chamado Oráculo, com o qual os jogadores devem falar para ir à chamada Island of destiny, e por consequências ao continente principal uma vez que sejam fortes o bastante. Também se encontra na academia o NPC Seymour, o qual é o líder dela e oferece missões aos jogadores e vende a chave para a arena de treinos. Espalhadas pela cidade há vários tipos de lojas, sendo a mais movimentada a loja de armas e equipamentos do NPC Obi. Pode-se encontrar nas lojas armas, escudos, armaduras, e equipamentos em geral. Além delas, á uma pequena fazenda, gerenciada pelos NPC's Willie e Billy, onde é possível comprar e vender comida, ou conseguir carne através das ovelhas do local. No subsolo da cidade há um sistema de esgotos, onde os novos personagens costumam conseguir os seus primeiros pontos de experiência matando ratos. A oeste da cidade há uma região exclusiva para jogadores com Premium Account, a versão paga do jogo. Os jogadores apenas podem cruzar a ponte que leva para fora da cidade quando estiverem pelo menos no nível 2. Região selvagem Na porção nordeste da ilha encontra-se uma floresta na qual podem-se encontrar criaturas como aranhas , cobras e cervos. No norte dessa parte encontra-se a entrada de uma vasta caverna, onde há trolls, ogros ,minotauros, ursos e aranhas; há uma outra entrada para essa caverna na porção sudoeste da ilha. Ainda nessa porção, é possível encontrar uma caverna apenas de ursos, outra apenas de lobos, uma caverna onde se pode obter a espada Katana (a mais forte que pode ser obtida na ilha), e uma montanha com um druida solitário que vende poções. Também é possível encontrar uma jangada atracada na costa. Na porção sudoeste da ilha encontra-se uma vasta planície. Nela podem-se encontrar monstros como trolls, orcs, ursos, aranhas, vespas e cobras. Encontra-se ainda uma torre de trolls, outra de orcs e mais uma de vespas, e também um refúgio de ursos. Nessa porção há uma outra caverna, a qual é principalmente habitada por aranhas. Ao sul da cidade, há uma área onde se pode conseguir comida caçando coelhos e cervos. Na área exclusiva para jogadores com Premium Account, encontra-se diversas cavernas de lobos ou de cobras, e uma caverna apenas de coelhos. Há também uma pequena caverna de esqueletos, e uma grande caverna com vários monstros (trolls, gobblins, orcs e minotauros). História de Rookguard O Portal das Almas foi criado pelos deuses a fim de ajudar Banor, o primeiro humano do mundo de Tibia, a combater as forças do mal; pelo portal vinham heróis de dimensões distantes para ajudar Banor em sua luta. O portal foi feito em uma grande montanha, e ao redor dele foi construído um templo o qual inicialmente foi protegido por Birtfeld, o primeiro monge do local. Contudo, com a renovação de Tibia, os deuses inundaram todo o mundo e apenas as regiões mais altas ficaram fora d'água. Dentre os picos que sobraram, estava o Portal das Almas, o qual ficou ali por séculos até que Birtfeld faleceu, que então foi sucedido por Cipfeld, que foi sucedido por Bipfeld, que foi sucedido por Gritfled, que foi sucedido por Cipfried (o atual guardião do portal). Um dia um barco de exploradores vindo de Thais chegou à ilha, dentre a tripulação encontrava-se o acadêmico Seymour, o fazendeiro Willie e o mercador Obi. Na ilha eles encontraram o Portal das Almas, juntamente com seu guardião Cipfried. Eles informaram isso ao rei Tibianus III, o qual já havia ouvido a lenda de um portal que trazia aventureiros de regiões distantes. Uma vez que o rei precisava de novos guerreiros, visto que se estava em tempos de guerra, ele ordenou a fundação de uma cidade junto ao portal. O nome Rookgaard veio do termo militar em Inglês para novos recrutas "Rookie", simbolizando o fluxo de novos heróis pelo portal. Logo outras partes ao redor do portal emergiram do mar, trazendo consigo diversas criaturas malignas (demônios, dragoês , mortos vivos, orcs, etc.). Os humanos da ilha, que eram fracos e mal equipados, não eram páreo para esses seres. Entretanto, quando quase tudo estava perdido, o próprio Banor surgiu e derrotou o mal da ilha, vencendo assim a guerra. Ele alertou que o mal não estava destruído para sempre, e de que os heróis necessitavam de conhecimento adequado para poder conter o mal do mundo. Então foi fundada a academia da ilha a qual (por ordem do rei) teve Seymour nomeado como seu líder (que aceitou relutantemente), Obi fundou a sua loja de armas, Cipfried aprendeu sobre magias de cura para ajudar aos novos aventureiros, e Willie montou uma fazenda para fornecer comida aos aventureiros. Então Banor retornou ao mundo dos mortos. Mistérios da ilha Salas e monstros inacessíveis Na caverna onde se pode encontrar a espada Katana, há um local no qual há uma sala com o único monstro ghoul da ilha, aparentemente não há nenhuma entrada para essa sala. Nas profundezas da caverna ao norte da cidade, é possível encontrar uma sala com o monstro minotaur mage, o único desse tipo de Rookgaard. A entrada para essa sala está bloqueada por uma porta trancada, a qual ninguém ainda encontrou um meio para abrir (não foram encontradas chaves ou alavancas para tal). Tal monstro é o único da ilha que contém o item brass armor, e o que é intrigante para os jogadores é que esse item está na lista de coisas que o lojista Obi pode comprar de jogadores. No andar superior do açougue do NPC Tom há uma sala trancada com uma alavanca dentro dela. Até o momento, ninguém conseguiu entrar nessa sala ou sabe o que aconteceria se a alavanca fosse puxada. Na caverna de esqueletos da área premium, há um caminho bloqueado por estalagmites, e uma placa apontando para ele com a inscrição "Maze of Fury" ("Labirinto da Fúria"). Não se sabe o que há além desse bloqueio. Há ainda uma Tarântula que pode ser vista na caverna de poison spiders à oeste da ilha. A Espada da Fúria Na costa norte da ilha de Rookgaard é possível observar uma pequena ilha, aparentemente inacessível, com uma espada rodeada por fogos. Ela é uma Spikesword, a qual recebeu o nome de "Sword of Fury" (espada da fúria). Ela é a arma mais poderosa que se localiza em Rookgaard. Até o momento nenhum jogador mostrou provas concretas de que conseguiu pegar a espada. A maneira com que a espada poderia ser conseguida (ou se ela pode ser conseguida) em Rookgaard, é o mistério que mais intriga os habitantes do local. Próxima à ilha da espada se pode ver uma placa com a inscrição: Only the humble can touch the Sword of FuryO que significa : Apenas os humildes podem tocar a Espada da Fúria. Há uma fanfiction (história criada por fãs) que causa muita confusão aos exploradores em busca da espada. Ela diz o seguinte: Há livro na cidade de Ab'Dendriel , que conta que essa espada pertencia a Kylindra Ennorath, uma elfa que há muito tempo habitou Rookgaard. Ela era extremamente violenta e foi arrastada e expulsa para a caverna de orcs ao norte da cidade. Essa caverna foi invadida pelos minotauros, que entraram por um portal na caverna e expulsaram os orcs. Kylindra enfrentou e derrotou inúmeros minotauros, até que ficou cara a cara com o Minotaur Mage. Ela, sabendo que não o venceria, tentou correr para o portal mas o Minotaur Mage trancou a porta com a sua magia, e a elfa viu uma luz brilhante. Ela começou a atirar flechas contra a luz e a correr na direção dela, porém ela não parecia chegar mais perto, até que em dado ponto ela morreu de exaustão. Após ela ter morrido, a luz brilhante se dissipou e uma pessoa, que não era homem ou mulher, se formou; essa pessoa disse: Pequena garota, você pode correr tão rápido como o mais rápido cavalo no reino, pode ser tão forte quanto demônios, mas não tem humildade para entender o que acontece ao seu redor. Sua espada, que está ensangüentada de sangue dos homens, crianças, Trolls, Orcs e muitas outras criaturas que você tirou a vida sem razão, permanecerá em uma ilha, para lembrar a todos os males que você causou. Sua espada será conhecida como a 'Espada da Fúria', e ela queimará sobre as rochas, sendo somente tocada pelos humildes.<br clear="all"> Alguns jogadores especulam que a sala trancada do Minotaur Mage tem alguma ligação com a possível forma de se obter a espada, e de que os outros mistérios de Rookgaard também possam ter alguma ligação com a espada. Há também os jogadores que pensam que não há como se obter a espada em Rookgaard. Uma Spikesword, outras (não a espada da fúria), pode ser obtida facilmente no continente principal, contudo é uma arma fraca em relação às outras disponíveis fora de Rookgaard. O NPC Dallheim, que fica na ponte de passagem, tem essa espada. Se você falar "weapon" para ele ele dirá: With my spikesword I slice even cyclopsTradução: Com minha espada espinhosa eu corto até mesmo ciclopes. Lembrando que ele não se refere diretamente a Spike Sword. O NPC Avar Tar, morador de da cidade de Edron em outra ilha, diz que foi dono da espada no passado: Ah, my trusty old sword. I left it on Rookgaard years ago when I left for the main continent.Tradução: Ah, minha confiável antiga espada. Eu a deixei em Rookgaard anos atrás, quando vim para o continente principal. O único jogador que já obteve a espada compravadamente foi o Potty on Harmonia(do mundo de Harmonia). Potty afirma que foi ao continente principal por engano de um Comunnity Manager, tendo pego lá a espada, e voltado para a cidade de Rookgaard através do abuso de um bug do jogo. A espada foi depois retirada, por ter sido obtida ilegalmente. NPC's de Rookgaard Al Dee: Possui uma loja de equipamentos na ilha e é o único lojista quem possui picaretas, a qual ele dá a quem lhe traz um small axe; ele deseja ser o único comerciante da ilha e possui anúncios de sua loja nos locais mais inusitados (como nas profundezas de uma caverna). Amber: veio do continente à Rookgaard por razões desconhecidas por meio de uma jangada, em seu diário há uma lista, de propósito desconhecido, com os nomes de seus inimigos ; ela é o único humano da ilha que conhece a linguagem orc a qual ela ensina a quem lhe trouxer a sua comida favorita (salmão). Billy: é o irmão de Willie e também trabalha na fazenda, Billy é conhecido por sua linguagem vulgar, e ele compra e vende diversas comidas. Blind Orc: é um orc cego que vive em uma montanha ao norte da cidade, ele vende e compra equipamentos, mas para negociar com ele é preciso conhecer a linguagem orc. Cipfried: é um monge que vive e trabalha no templo de Rookgaard, ele cura personagens gravemente feridos e dá dicas aos novatos. Dallheim: guarda a ponte que leva para fora da cidade, ele também é capaz de curar pessoas gravemente feridas, e impede jogadores de nível 1 de saírem da cidade. Dixi: é neta de Obi, trabalha no andar superior da loja de seu avô e negocia itens como ele. Hyacinth: é um druida solitário que vive em uma montanha ao leste da cidade. Vende pequenas poções de cura. Lee'Delle: ela tem uma loja na área premium, ela tem saudades te sua vida no continente e deseja estar rodeadas por suas flores favoritas, as Honney Flowers (que são raras na ilha, e ela recompensa que as traz para ela). Lily: antigamente vendia runas de antídoto, o único tipo de runa que podia ser encontrada na ilha. Contudo, isso foi retirado recentemente, tornando as antigas runas um item de colecionador de valor inestimável. Hoje esse NPC vende poções de antídoto, que possuem o mesmo efeito das runas - curar o veneno dos jogadores. Loui: é um monge que se encontra na área premium; ele se diz bastante assustado com as criaturas de uma caverna perto dele pois quando ele estava nela e a sua tocha acabou, ele viu vários olhos .brilhantes vindo em sua direção; contudo quem entra nessa caverna constata que ela está repleta de inofensivos coelhos Norma: possui uma loja exclusiva para jogadores com Premium Account. Obi: um mercador que compra e vende equipamentos aos aventureiros. Paulie: Ele vive num subterranêo embaixo da academia de Rookgaard, lá é como-se fosse um banco, você deposita ou pega seu dinheiro. Seymour: é o líder da academia da ilha. Tom: é um açougueiro e tem uma loja no centro da cidade, ele compra corpos frescos de rats, rabbits e wolfs. The Oracle: Tem a mesma função do The The Gatekeeper, transporta jogadores de nível 8 ou mais para fora da ilha de Rookgaard, ele pode levar para as cidades de Carlin, Thais , ou Venore. E se o jogador for premium, também Edron. Willie: irmão de Billy, trabalha na fazenda e comanda o moinho; ele compra e vende comidas e é conhecido por sua linguagem vulgar. Zerbrus: encontra-se em uma ponte na área premium, é um guarda protegendo a cidade e também pode curar aventureiros gravemente feridos. NPC's retirados The Gatekeeper: localiza-se na área premium, tem a mesma função do Oracle (Oráculo); ele transporta jogadores de nível 8 ou mais para o continente, ele pode levar para as cidades de Darashia,Ankrahmun, Port Hope , Ab'Dendriel ou Kazoordon . Rookers Os Rookers são personagens que não podem deixar de ser citados quando se fala de Rookgaard. São os jogadores que ficam em Rookgaard mesmo após atingido o level 8. Dentro de alguns servidores existem Rookers de level muito alto, alguns deles ficaram conhecidos dentro do jogo, como o Master Slayer, Payton ou o Sunrise. Apontado por muitos como a maior das lendas de Rookgaard, foi o primeiro player a atingir o até então inimaginável level 100, após esse magnifico feito outros se encorajaram a tentar alcançar esse tão sonhado level. Hoje existem outros rookers de maior level, que superaram Sunrise porém esse nome ficará pra sempre cravado como um revolucionário que sempre estará em primeiro lugar entre os Rookers. Recordistas Alguns Rookers bateram recordes consideráveis, como Lealuk que pegou level 100 em apenas 6 meses, Crossfox Rave que foi o único morador de Rookgaard que alcançou o topo de algum rank, que no caso foi fishing. é isso pessoal ! Créditos : Wikipédia . Abraços , Conectado.1 ponto -
1 ponto
-
Mapa Nao Da Certo..
eriklokaod reagiu a LukaszG por um tópico no fórum
Ele quis Disser: - VC vai na pasta do seu ot e vai em Data/Items/ E Copia Os Arquivos: E Depois vai em: - Meu computador Disco Local C/; Arquivo de programas e procure a pasta :Reme's Map Editor Abra ela e procure a pasta DATA e la dentro vai ter varias pasta (760/ até 860) entre em cada pasta e cole os dois arquivos e pronto. xD :star: Espero ter ajudado SE AJUDEI :button_ok: REP + ^^1 ponto -
1 ponto
-
Remere's Erro.
othereality reagiu a pessoa93 por um tópico no fórum
Cria um mapa novo e vai em importar mapa e escolhe o mapa.1 ponto -
[Projeto] Servfull 8.4 Devolta
pedrizito15 reagiu a AZANIK por um tópico no fórum
bom concordo com o prjeto so em 8.60 add msn nikbla39@hotmail.com1 ponto -
Como Retirar O Sistema Rep Do Meu Server Alissow 8.6
Familialobomal reagiu a gonorreiaswat por uma questão
@@@ BOLADU No seu caso, você fez os passos do segundo post? Olha acima, a primeira resposta que dei ao "FamiliaLM"... Se não fez eles, faça e poste aqui o resultado. Abraços :smile_positivo:1 ponto -
Exp Ring (Anel De Experiencia)
leo8717 reagiu a gonorreiaswat por um tópico no fórum
Valeu ae por comentar... Obrigado também pelo elogio. Abraços :smile_positivo:1 ponto -
se quiserem ter seu próprio servidor com suporte a 9.1 http://www.xtibia.com/forum/topic/162052-910-deragon-server-30/1 ponto
-
[9.0] The Legend Server (Global Up-Level)
wasing reagiu a paulgrande por um tópico no fórum
o problema e que o mapa foi editado pelo wasing '-' depois vo falar com ele edit: alguem move esse topico para area coreta '-' ?1 ponto -
Peça Me
julio1falcao reagiu a Fernandinand por um tópico no fórum
Bem vindos ao Projeto Peça Me, onde você pede uma Sign, FanBar, ou um Avatar pro seu perfil do fórum xTibia. Você simplesmente posta aqui pedindo o que você quer, com todas as características em todos eles. Regras As Regras devem ser obedecidas e devem ser lidas claramente antes de fazer um pedido para mim. Caso não seja de acordo com as regras, o pedido será ignorado. • 1 Mais abaixo eu especificarei mais de como fazer seu pedido, então não seja apressado para faze-lo logo, leia todas as regras a qual aqui contém. • 2 Você tem que respeitar os outros membros que estão fazendo pedidos. • 3 Você deve especificar claramente o seu pedido, para que não haja enganos e mal entendidos. • 4 É necessário e obrigatório, que você respeite os outros membros conforme sua chegada, os pedidos serão entregues por ordem de chegada. • 5 Você terá de especificar claramente o seu pedido conforme suas características do Avatar, Sign ou FanBar. • 6 Você terá de especificar a fonte que deseja se for colocar nomes ou textos na imagem a qual está fazendo o pedido. Você deve falar o nome da fonte que deseja, para que não haja mal aprovamento e enganos. • 7 Você deve pedir imagens para o perfil (Sign & Avatar) dentro dos formatos e do tamanho de imagens que podem ser contidas conforme na assinatura, ou no Avatar. • 8 Você deve respeitar a minha vida pessoal, se eu disser que estou ocupado e não da pra fazer neste momento, você deve respeitar. • 9 Você deve ter mais de 100 posts no fórum para puder fazer um pedido aqui, caso contrário, o seu pedido será ignorado. Para fazer um novo pedido, logo depois de ter feito um, é necessário esperar 60 dias. • 10 Para ficar mais fácil da minha leitura e entendimento do pedido, você deve seguir os Comandos para meu melhor entendimento ao seu pedido em relação ao que você deseja. Os comandos devem ser falados no início de seu post. Abaixo estão todos listados. Comandos • dFull Pack ~ Bem, esse comando é para se falar no início de seu pedido, para explicar que você vai querer tudo. Sim, tudo mesmo, um pacote completo de design para mim fazer (abusar de mim). Ou seja, quando você falar isto em teu post, é como se você estivesse pedindo para mim fazer uma FanBar, uma Sign e uma Avatar para o seu perfil/assinatura. • dMedium hPack ~ Já este comando, significa que você quer somente um Avatar e uma Sign para mim fazer, mas como sempre, terá de por as características adicionais. • dMedium mPack ~ Este comando, significa que você quer que eu faça uma Avatar e uma FanBar para você. Adicionando as características opcionais no início do post. • dMedium ePack ~ Este comando deve ser dito sempre que você for fazer um post (de acordo com seu pedido). Significa que você quer uma Sign, e uma FanBar, como sempre, tem que falar as características. • dEasy aPack ~ Este comando serve para você, falar no seu pedido. Significa que você quer somente um Avatar. • dEasy sPack ~ Já este comando, significa que você quer que eu faça somente uma Sign para você. • dEasy fPack ~ Este comando é o mais simples, e o mais fácil de se fazer. Quando você utiliza ele, significa que você quer somente uma FanBar. Essas foram os Comandos do tópico, para puder se fazer um pedido, deve ser obrigatório a leitura tanto dos Comandos, quanto as Regras. Abaixo segue um exemplo de como se fazer um pedido, abraços. Pedidos Pronto, agora você está preparado para fazer um pedido. Obrigado, e espero que gostem do Projeto.1 ponto -
@Anglhomer Muito Obrigado. @MatheuMkalo Muito Obrigado. Você é Fake Do MatheusMkalo Coisa Feia. Mas Muito Obrigado Mesmo Assim.1 ponto
-
Otimo tópico amigo, estarei movendo para a seção correta. +REP Abraços1 ponto
-
[Fechado]
caverna reagiu a Cren Lucienuk por um tópico no fórum
UMA DITADURA VOLTA JV VOLTA ALISSOW VOLTA ROTWORM VOLTA KARIS VOLTA GUERREIRA VOLTA LAIS VOLTA TAH VOLTA MARI VOLTA TODAS-1 pontos -
Tibia Real Temperature
Demonbholder reagiu a IgorzeraBR por um tópico no fórum
Cara preste mais atenção antes de julgar as pessoas, observe que no inicio do topico ele diz ' venho aqui trazer o script que meu amigo fez'. Então hora nenhuma ele falou que o script era dele.-2 pontos -
-2 pontos
-
-2 pontos