Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 07/26/10 em todas áreas
-
LuaSQL Bom, antes de mais nada queria me desculpar com Won Helder pela demora no tutorial, mas antes tarde que nunca... Vamos ao tutorial. Aviso: As querys que forem usadas como exemplos, bem como o tutorial são voltados à engine MySql, podendo não funcionar em sqlite. Para começarmos a criar nossas próprias querys, devemos conhecer as instruções (nome dado às ações que serão executadas), para depois aplicarmos nas querys: ► ALTER: Este comando é utilizado quando queremos criar uma row (coluna) nova. Sua sintaxe é como mostrada abaixo: ALTER [tipo] [nome da coluna] [instrução] [configurações] Complicado demais? Então vamos à um exemplo prático: ALTER TABLE `players` ADD `tutoriais` integer not null default 0 No caso acima, eu alterei a tabela “players”, adicionando a coluna “tutoriais” com as configurações “Somente números inteiros, não nulos, valor inicial 0”. ► SET: Comando usado para ajustar os valores de uma célula. Observe: UPDATE `players` SET `level` = 8 No exemplo acima, eu alterei o level de todos os jogadores na database para 8. Caso quisesse somente 1 jogador, faria assim: UPDATE `players` SET `level` = 8 WHERE `id` = 1 O comando acima altera o level do jogador número 1 da database para 8. ► SELECT: Comando utilizado para “escolher” algum valor da database. A instrução SELECT não muda os dados no banco de dados. Observe: SELECT `name` FROM `players`WHERE `id` = 1 Neste exemplo, será mostrado o nome do jogador número 1 da database, sem fazer alterações. ► INSERT: Usado para inserir dados em uma célula. Observe: INSERT INTO `accounts` (id, name, password) VALUES (2, “god”, “god”) Como podemos perceber, o INSERT pode ser usado para inserir dados múltiplos à tabela. No exemplo acima, criei uma conta com id = 2, name = “god” e senha = “god”. ► UPDATE: Usado para atualizar a tabela e a coluna que queremos acessar: UPDATE `players` SET `level` = 8 Percebam que quando uso o UPDATE, obrigatoriamente devo usar uma instrução secundária. ► DROP COLUMN: Usado para excluir colunas. Veja: Primeiro vamos criar uma coluna para excluirmos: ALTER TABLE `players` ADD `delete` varchar(255) not null default 0 Agora vamos deletar: ALTER TABLE `players` DROP COLUMN `delete` Sempre que for deletar uma coluna, um aviso será emitido, para que não haja engano na hora de deletar. Observações importantes: ► As configurações da coluna podem ser várias, as mais usadas são: integer not null default 0 varchar(255) not null default 0 A primeira é para colunas numéricas, com valor inicial zero. A segunda é para colunas que contenham textos ou palavras. Aplicando nos scripts Muitas vezes, precisamos fazer uso da database em alguns scripts. E várias são as funções de manipulação de database em LUA. Porém, usaremos somente uma delas: db.executeQuery(query) Bem simples. Observe um exemplo de uso em script de reset: function onSay(cid, words) local pid = getCreatureGUID(cid) doRemoveCreature(cid, true) db.executeQuery("UPDATE `players` SET `level` = 8, `experience` = ".. getExperienceForLevel(8) .." WHERE `id` = ".. pid ..";") return TRUE end Este script, apesar de ser bem simples, é muito utilizado e muito buscado. Sua função é mudar o level e a experiência do jogador. Bom, é isso! Tutorial feito por mim (apocarai) flw5 pontos
-
Não sei se essa é area correta se não for desculpe e porfavor moderadores se não for a area correta mova o topico para a area correta. Talvez tenha varios Tutorial de como criar seu cliente Proprio etc... esse é mais um expecificamente para a versão 8.54 não sei se funciona em outras versoes de tibia... (procurei tutoriais sobre isso atualizados .. mais não achei se tiver são poucos então vou postar 1) TUTORIAL Baixe o Tibia Customizer E siga os procedimentos abaixo Onde esta escrito en relação a imagem faça oque se pede: I: Procure o seu client .exe geralmente Tibia.exe II: Version deixe 8.10 (não se preocupe funciona!) III: Escreva O nome do Client , ex Grensky. IV: Digite o ip do servidor (no-ip) não digite o ip do meuip pois ele quando reinicia o modem ou a internet, ele muda então sugiro criar um ip no noip com 19 caracteres contando com os pontos ex: green.servegame.com = 19 caracteres OBS: TEM DE SER de 19 caracteres ou menos ex ots.servegame.com se for mais que 19 não funciona. V: caso não tenha website o servidor digite no lugar http:\\ , se tiver digite o link do website VI: caso não tenha pagina de account mananger o servidor digite no lugar http:\\ , se tiver digite o link da página. VIII: caso não tenha a pagia de account digite http:\\ , se tiver digite o link da pagina. XI: Não clique em use your pic (deixe desmarcado e não clique no lugar que esta escrito XI) Quando estiver pronto clique em build client aguarde e quando escrever done pode fechar e seguir para a proxima parte do tutorial. OBS: O IP DO SERVIDOR DEVE TER até 19 caracteres contando com os pontos e não clique em load tibia.pic se não buga! Segunda Parte Baixe o Pic Editor 8.54 extraia o para uma pasta qualquer (não extraia por exepmlo para o desktop solto extraia dentro de uma pasta ex: Desktop/Piceditor8.54) Va em images de onde você extraiu o piceditor a imagem 0.png referece a imagem que aparece quando você entra no tibia ex: a imagem 3.png referece a imagem dos "botoes do tibia" a interface etc.. ex: (esta skin se chama black skin para quem quer) (PicEditor 8.54 (foto acima)) edite as imagem a seu gosto mais deixe na mesma resolução e (talvez com o tamanho 1 pouco modificado funcione!) tamanho, programas bons para editar é o photoshop e firework , so sei usar photoshop firework não =x... agora copie essa pasta imagens depois de editar as imagens para a pasta do seu client, quando fizer isso abra o pic editor, clique em Achar e procure o tibia.pic do seu cliente e clique em Compila. Obrigado , creditor para mim e para os criadores dos softwares. Download da fonte do tibia (muito parecida, a fonte martel) Um Exemplo de pic que eu fiz: Download da skin acima Terceira Parte Caso você queira modificar uma pic que você baixou da internet por exemplo, abra o piceditor , clique em abre procure o tibia.pic que você quer modificar (recomendo que ele esteja junto com o resto dos arquivos do tibia) clique em extrair, vai aparecer as imagens onde o tibia.pic que você quer modificar está... , feche o pic editor, edite-as como quiser, sem mecher na resolução e por fim depois de salvar as imagens que você editou. Abra o pic editor e clique em compilar pronto a sua tibia.pic nova foi criada , teste para ver. caso não conseguir poste aqui! Qualquer duvida poste aqui Credito para mim e para os criadores dos programas1 ponto
-
[Oficial] Real Global Map hello Galerinha do Xtibia, Venho aqui desponibilizar o mapa do Doidin (8.57 Só que editado com minhas ideias e na versão 8.60 OBS: Para rodar esse servidor No seu pc voce tem que ter 2GB+ de memória ram e em bom estado. ( nao recomendo abrir o otserv com o mapa editor aberto junto). Real Global Map: - Versão do Tibia:8.60 - Mapa global 95% full. - Quase todos os NPC's do Tibia Global. - Servidor com o mínimo de bugs possíveis. - Scripts arrumados. - Entre outros... Cidades: Quest's: Oque tem de melhor que o servidor do Doidin? Quase nada pois ele copio minhas coisas x) Algumas Print Screen: para quem nao conseguiu abrir o spolier e gostaria de ver as SS link abaixo: print screen.txt Créditos: - Doohz Rush - Doidin - Alissow - DoidinMapper - RenanSdc - TFS Team - Styller Team - Alissow Team - Feragon - Viana! - Azevedo ATUALIZADO DIA 28/10/2010 Scan: Arquivo Muito grande para fazer scan. Remeres Mapa Editor 2.0 ( nao use outra versão ou vai bugar o mapa: Download Aqui! Doohz Rush Server : Download Aqui! OBS: FOI ARRUMADO TODOS OS LOOT'S DOS MONSTROS, E FOI ADICIONADO A NOVA AREA DE ZÃO (OS Draken elite etc, todos configurados perfeitamente ) Atualização 2.2; Arrumado os Teleport's dos Drakens; Editado os seal's da POI (+ parecido com global); adicionado 1 npc de runa em northern de ZAO; arrumada as Houses, e bugs de Cormaya; Retirado BUG de money; Arrumado detalhes do mapa. MSN: Doohz_rush@hotmail.com Gostou? REP+ Ali do lado :arrow:1 ponto
-
Boa noite, Bom, quem me conhece sabe que eu era Spriter/Client Maker, e fiz ate 2 apostilas sobre o assunto. Derrepente me deu vontade de aprender script, e fiquei lendo tutoriais em varios Foruns. E hoje estou aqui pra mostrar meu primeiro trabalho medio divulgado! Nome do Script: Castle War 2.0 ultimate Versão testada: Tfs 0.3.6 ( deve funcionar em versões anteriores ) Descriçao: Um sistema de Guerra de castelos para guilds, deferente :]! Como funciona: O Player vai no castelo, e puxa uma lavanca, e automaticamente, todos da guild dele, tem acesso ao castelo ( porta ). Alem de contar pontos pra ganhar premios por vezes que ele conseguiu conquistar Castelos! ps: esse guarda é configurado para não atacar os ‘donos’ do castelo! :fail: Instalação Actions Va na pasta Data/action/action.xml e adicione isto: Agora vá em Data/actions/scripts , crie esses 4 arquivos abaixo: castlewar1.lua ----------------------------------- ---------SCRIPT por PC98------------ NAO REMOVA OS CREDITOS ----------------------------------- function onUse(cid, item, frompos, item2, topos) ------------------ Inicio das Config ------------ local castle_one_name = "Ratim Bum" -- Nome do castelo 1 local storages = {154154,54321,123123} -- Storages ( se vc eh iniciante, deixe como está...) -------PREMIOs I N D I V I D U A L --------- local premio_por_vezes = 1 -- Premio por vezes de conquista de castelo. (1) = Ativo (0) = Desativa. local premio_vezes = 13 -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO. local premio = 2472 -- ID do Premio local premio_cont = 1 -- Quantidade do Premio local premio_reset = 1 -- Resetar o contador do premio depois que atingir a meta?? (1) = SIM (0) = NAO -------FIM PREMIOs I N D I V I D U A L --------- ----------------- FIM DAS CONFIG ----------------- local sto_ativ = getGlobalStorageValue(storages[2]) position = getCreaturePosition(cid) if isPlayerGuild(cid) == TRUE then if sto_ativ == 1 or sto_ativ == -1 then guildname = getPlayerGuildName(cid) guild = getPlayerGuildId(cid) guild_sto = getGlobalStorageValue(storages[3]) if guild ~= guild_sto then setPlayerStorageValue(cid,guild_sto,guild) if getPlayerStorageValue(cid,storages[1]) == -1 then setPlayerStorageValue(cid,storages[1],0) end sto_vezes = getPlayerStorageValue(cid,storages[1]) setGlobalStorageValue(storages[3],getPlayerGuildId(cid)) setPlayerStorageValue(cid,storages[1], sto_vezes + 1) sto_vezes_total = getPlayerStorageValue(cid,storages[1]) doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o castelo "..castle_one_name.." para a guild \""..guildname.."\" pela "..sto_vezes_total.."ª vez(s).", 22) doSendMagicEffect(position, 39) if premio_por_vezes == 1 then if getPlayerStorageValue(cid,storages[1]) == premio_vezes then if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then doBroadcastMessage("O "..getCreatureName(cid).." ganhou uma(o) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!", 21) doPlayerAddItem(cid, premio,premio_cont) doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!") ----------------------------------------------- -- if premio_reset == 1 then -- setPlayerStorageValue(cid,storages[1],0) -- Resetar a contagem end -- ----------------------------------------------- -- else doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Vamos verificar novamente em 10 segundos!") addEvent(additem,10000,cid,premio,premio_cont,premio_reset) end end end else doPlayerSendCancel(cid,"Este castelo ja foi conquistado pela sua guild!") doSendMagicEffect(position, 2) end else doPlayerSendCancel(cid,"O sistema está desativado") end else doPlayerSendCancel(cid,"É nescessario ter guild para dominar o castelo!") doSendMagicEffect(position, 2) end end ------------------------- por pc98 function additem(cid,premio,premio_cont,premio_reset) if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then doPlayerAddItem(cid, premio,premio_cont) doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!") if premio_reset == 1 then setPlayerStorageValue(cid,storages[1],0) end stopEvent(additem) else doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Verificando novamente em 10 segundos!") addEvent(additem,10000,cid) end end ------------------------- por pc98 function isPlayerGuild(cid) if getPlayerGuildName(cid) ~= "" then return TRUE else return FALSE end end castlewar2.lua ----------------------------------- ---------SCRIPT por PC98------------ NAO REMOVA OS CREDITOS ----------------------------------- function onUse(cid, item, frompos, item2, topos) ------------------ Inicio das Config ------------ local castle_two_name = "do Dracula" -- Nome do castelo 2 local storages = {154154,54321,321321} -- Storages ( se vc eh iniciante, deixe como está...) -------PREMIOs I N D I V I D U A L --------- local premio_por_vezes = 1 -- Premio por vezes de conquista de castelo. (1) = Ativo (0) = Desativa. local premio_vezes = 13 -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO. local premio = 2472 -- ID do Premio local premio_cont = 1 -- Quantidade do Premio local premio_reset = 0 -- Resetar o contador do premio depois que atingir a meta?? (1) = SIM (0) = NAO -------FIM PREMIOs I N D I V I D U A L --------- ----------------- FIM DAS CONFIG ----------------- local sto_ativ = getGlobalStorageValue(storages[2]) position = getCreaturePosition(cid) if isPlayerGuild(cid) == TRUE then if sto_ativ == 1 or sto_ativ == -1 then guildname = getPlayerGuildName(cid) guild = getPlayerGuildId(cid) guild_sto = getGlobalStorageValue(storages[3]) if guild ~= guild_sto then setPlayerStorageValue(cid,guild_sto,guild) ----------------------------------------------------- if getPlayerStorageValue(cid,storages[1]) == -1 then setPlayerStorageValue(cid,storages[1],0) end ----------------------------------------------------- sto_vezes = getPlayerStorageValue(cid,storages[1]) setGlobalStorageValue(storages[3],getPlayerGuildId(cid)) setPlayerStorageValue(cid,storages[1], sto_vezes + 1) sto_vezes_total = getPlayerStorageValue(cid,storages[1]) doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o castelo "..castle_two_name.." para a guild \""..guildname.."\" pela "..sto_vezes_total.."ª vez(s).", 22) doSendMagicEffect(position, 39) if premio_por_vezes == 1 then if getPlayerStorageValue(cid,storages[1]) == premio_vezes then if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then doBroadcastMessage("O "..getCreatureName(cid).." ganhou uma(o) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!", 21) doPlayerAddItem(cid, premio,premio_cont) doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!") ----------------------------------------------- -- if premio_reset == 1 then -- setPlayerStorageValue(cid,storages[1],0) -- Resetar a contagem end -- ----------------------------------------------- -- else doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Vamos verificar novamente em 10 segundos!") addEvent(additem,10000,cid,premio,premio_cont,premio_reset) end end end else doPlayerSendCancel(cid,"Este castelo ja foi conquistado pela sua guild!") doSendMagicEffect(position, 2) end else doPlayerSendCancel(cid,"O sistema está desativado") end else doPlayerSendCancel(cid,"É nescessario ter guild para dominar o castelo!") doSendMagicEffect(position, 2) end end ------------------------- Por PC98. function additem(cid,premio,premio_cont,premio_reset) if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then doPlayerAddItem(cid, premio,premio_cont) doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!") if premio_reset == 1 then setPlayerStorageValue(cid,storages[1],0) end stopEvent(additem) else doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Verificando novamente em 10 segundos!") addEvent(additem,10000,cid) end end ------------------------- por pc98 function isPlayerGuild(cid) if getPlayerGuildName(cid) ~= "" then return TRUE else return FALSE end end castledoor1.lua --------------- -----BY PC98------- --------------- function onUse(cid, item, frompos, item2, topos) -------------------------Config----------------------------------------------------------------- door_opened = 1228 -- ID da porta aberta storage_guild = getGlobalStorageValue(123123) -- A 3ª storage configurada em Castle.lua guarda_ativ = 1 -- Caso um invasor tente abrir a porta, sumonar o Monstro "Guarda"?? | (1) = SIM (0) = NAO guarda_cont = 2 -- Caso ativo: a quantidade de guardas a sumonar guarda_pos = {x=123,y=123,y=7} -- Posiçao a ser sumonada os guardas! -------------------------Fim de Config----------------------------------------------------------- if getPlayerGuildId(cid) == storage_guild then doTeleportThing(cid,getThingPos(item.uid)) doTransformItem(item.uid, door_opened) doPlayerSendTextMessage(cid, 22, "Seja bem vindo a vosso castelo!") return TRUE else if guarda_ativ == 1 then doPlayerSendTextMessage(cid, 22, "Guaaaardas, tirem esses invasores daqui!!") for i=1, guarda_cont do doSummonCreature("Guarda", guarda_pos) end return FALSE else doPlayerSendTextMessage(cid, 22, "Este castelo nao pertence a sua guild") return FALSE end end end castledoor2.lua --------------- -----BY PC98------- --------------- function onUse(cid, item, frompos, item2, topos) -------------------------Config----------------------------------------------------------------- door_opened = 1228 -- ID da porta aberta storage_guild = getGlobalStorageValue(321321) -- A 3ª storage configurada ( ja esta configurada o PADRAO ) guarda_ativ = 1 -- Caso um invasor tente abrir a porta, sumonar o Monstro "Guarda"?? | (1) = SIM (0) = NAO guarda_cont = 4 -- Caso ativo: a quantidade de guardas a sumonar guarda_pos = {x=321,y=321,y=7} -- Posiçao a ser sumonada os guardas! -------------------------Fim de Config----------------------------------------------------------- if getPlayerGuildId(cid) == storage_guild then doTeleportThing(cid,getThingPos(item.uid)) doTransformItem(item.uid, door_opened) doPlayerSendTextMessage(cid, 22, "Seja bem vindo a vosso castelo!") return TRUE else if guarda_ativ == 1 then doPlayerSendTextMessage(cid, 22, "Guaaaardas, tirem esses invasores daqui!!") for i=1, guarda_cont do doSummonCreature("Guarda", guarda_pos) end return FALSE else doPlayerSendTextMessage(cid, 22, "Este castelo nao pertence a sua guild") return FALSE end end end Talkactions Va na pasta Data/talkaction/talkactions.xml , clique com o botao direito e depois editar. Adicione esta linha: <talkaction words="/war" event="script" value="castlesystem.lua"/> Agora va na pasta scripts , e crie um arquivo lua chamado castlesystem.lua. castlesystem.lua function onSay(cid, words, param) access = 4 -- Coloque aqui o access requirido para Ativar/Desativar o sistema if param == "start" then if getPlayerAccess(cid) == access then setGlobalStorageValue(54321,1) doPlayerSendTextMessage(cid, 20, "Voce ativou o Castle Wars com suscesso!") return TRUE end elseif param == "stop" then if getPlayerAccess(cid) == access then setGlobalStorageValue(54321,2) doPlayerSendTextMessage(cid, 20, "Voce desativou o Castle Wars com suscesso!") return TRUE end end end Monster O mostro Guarda... aquele que eu disse que pode ficar dentro do castelo :] Instalaçao: va na pasta data/monsters e edite o arquivo Monster.xml , adicionando esta linha: <monster name="Guarda" file="guarda.xml"/> e depois crie um arquivo na mesma pasta chamado guarda.xml guarda.xml <?xml version="1.0"?> <monster name="Guarda" nameDescription="the guard" experience="6000" speed="268" race="Blood"> <health now="20000" max="20000"/> <look type="73" corpse="6080"/> <strategy attack="200" defense="300"/> <targetchange speed="420" chance="1"/> <flags> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag attackable="1"/> <flag pushable="0"/> <flag staticattack="90"/> <flag targetdistance="1"/> </flags> <attacks> <attack name="melee" interval="2000" chance="100" min="-400" max="-800" range="1"/> <attack name="physical" interval="4000" chance="25" min="-600" max="-700" range="7" radius="8" target="1"> <attribute key="shootEffect" value="arrow"/> </attack> </attacks> <defenses defense="45" armor="40"/> <immunities> <immunity name="paralyze"/> <immunity name="invisible"/> </immunities> <voices speed="2200" chance="75"> <voice sentence="Grrrrrrrrrr" yell="1"/> <voice sentence="Saia daqui intrusos!" yell="1"/> <voice sentence="Sua resistencia e inutil!" yell="1"/> <voice sentence="Voce vai ser preso!" yell="1"/> </voices> <script> <event name="guard"/> </script> <elements/> <loot/> </monster> Creatures Scripts Bom, agora a gente tem de configurar pra esse bixo nao atacar os donos do castelo neh, se nao ele vai sair porai matando GERAL :fuu:. Vamo nessa. Va na pasta data/creaturescripts e edite o arquivo creaturescripts.xml adicionando esta linha: <event type="combat" name="guard" script="guard.lua"/> agora abra a pasta scripts, que esta na mesma pasta e crie um arquivo chamado guard.lua. guard.lua function onCombat(cid, target) if(not isPlayer(target)) then return TRUE else targets = getMonsterTargetList(cid) if getPlayerGuildId(target) == getGlobalStorageValue(123123) then addEvent(check,1000,cid,targets) return FALSE else return TRUE end end end function check(cid,targets) for i=1, #targets do if getPlayerGuildId(targets[i]) == getGlobalStorageValue(123123) then addEvent(check,1000,cid,targets) return FALSE else stopEvent(check) return TRUE end end end Esta configurado o Monstro! Vamos pra proxima etapa! Instalaçao no MapaEditor Va ate no primeiro castelo, e adicione uma lavanca ( id recomendado: 1945 ) e coloque aonde voce quiser. Depois de colocado a lavanca, clique nela com o botao direito do mouse e va em property. No campo "ActionID:" coloque 9999. Faça a mesma coisa com o segundo castelo, crie la a lavanca, e coloque actionID 8888. Se voce quiser voce pode criar uma porta especial, por onde so os 'donos' do castelo pode entrar, afinal, ja ta instalado! :fail: Coloque ActionID 9998 na porta no primeiro castelo, e actionID 8887 na porta do segundo castelo. Comandos /war start - Para Ativar o sistema ( ja vem ativado por padrao) /war stop - Para desativar o sistema. Bom, eh isso ai. Eh meu primeiro Script ( de muitos ) pro forum XTibia, e espero ta ajudando o forum. Creditos: PC98 - Pelo script MonsterEditor - Pelo mosntro Guarda. ( blackdemon) obs: Esse mesmo script foi postado em outro forum, porem fui eu mesmo que postei ( PC98 - mesmo nick ). abraços!1 ponto
-
Ktibiax® Tibia Launcher [2.1] - Ip Changer [7.6 À 8.60]
michaellol reagiu a keyrox por um tópico no fórum
Confira o novo Ktibiax® Tibia Launcher Update (Junho/2010) Uma nova e empolgante interface Suporte para as versões até 8.60 Melhorias e correções de bugs no Lag checker Melhorias no consumo de memória Não será mais necessário realizar nenhuma instalação, KTibiaX agora é portable Não confie em links do rapidshare, easyshare ou afins. Baixe o programa apenas do googlecode ou codeplex! [Download do Programa] KTibiaX® Launcher Setup 2.1.3 .Net 20 (Para quem possui o .Net Framework 2.0) KTibiaX® Launcher Setup 2.1.3 .Net 35+ (Para quem possui o .Net Framework 3.5 ou posterior) [Código Fonte / Suporte] KTibiaX® Launcher CodePlex KTibiaX® Tibia Launcher 2.1 [Modo de Distribuição] Open Source [Linguagem de Construção] C# 3.5 [suporte para as versões] 7.6 - 7.92 - 8.0 - 8.10 - 8.11 - 8.20 - 8.21 - 8.22 - 8.30 - 8.31 - 8.4 - 8.41 - 8.42 - 8.50 - 8.54 - 8.55 - 8.57 - 8.60 [iPChanger (Server / Port)] Funcionalidade conhecida. Permite que você altere o ip do login server, para que você se conecte em OTServers. Também funciona com o Tibia Oficial (apenas não selecione nenhum servidor). [status Checker & Lag Measurement] Essa funcionalidade permite que você cheque se um determinado servidor está online e o Lag deste servidor. Obtém informações completas sobre o OT. Medidor de lag 100% funcional. Você está correto, até 250 (ainda verde no medidor) o server é "jogável". Acima disso (parte vermelho/alaranjado no medidor) significa que o servidor não é recomendável ou simplesmente não suporta mais jogadores. Uma boa aplicação para esta funcionalidade seria medir o lag do servidor quando o cliente começar a travar ou "freezar" demais, dessa forma você poderia identificar se o problema está no servidor ou na sua internet. []'s [OTServer Maps Distinct] Mantenha separados os Mapas dos OTs que você joga. Evitando a substituição e a bagunça nos mapas, causada pela utilização de varios servidores. E manteha os mapas oficiais intactos. Não é necessário alterar nenhuma configuração para que o ktibiax separe os mapas. Em opções avançadas existe um campo com o diretório onde os mapas de ot serão salvos e uma outra opção (que já vem marcada) que permite que os mapas de ots sejam separados. Dessa forma o programa criará uma pasta para cada ot que vc jogar e salvará os mapas na pasta deste ot. Assim quando você jogar neste ot novamente, o programa irá dizer ao tibia que os mapas que precisam ser usados são os mapas já salvos na pasta do ot. []'s [safe Multi-Client] Permite que você utilize a função de Multi-Cliente para qualquer versão 8.* sem risco de ser banido. Esse MC é indetectável, pois eu não modifico o cliente! Apenas fique atento, não logue vários MC's ao mesmo tempo pois a CIP grava registros dos jogadores que fazem isso. Aguarde ao menos 2 minutos entre os logins de seus chars para não correr risco de ser banido. []'s [server Address Storage] Salve informações de seus servidores favoritos e recupere quando quiser. [Client & Version Managment] Salva os clientes e suas respectivas versões. E sempre que vc selecionar um servidor, o cliente será sugerido automaticamente. [Graphics and FrameRate] Permite que você defina um Graphics Engine e que vc personalize o Frame Rate antes de abrir o cliente. Disponível para versões 8.* [Tibia.cfg Managment] Você pode salvar diferentes versões do seu Tibia.cfg com suas definições favoritas (Hotkeys, configurações, gráficos, etc.) para cada vocação, e usá-los para abrir os clientes quando quiser. [RSA Key Writer] Possibilita a personalização da chave RSA de login para OTServers. [Advanced Options Managment] Você pode definir qualquer uma das opções avançadas do sistema, e suas preferências serão salvas. [Form Skins] Você pode escolher entre os vários skins disponíveis. Não confie em links do rapidshare, easyshare ou afins. Baixe o programa apenas do googlecode ou codeplex! [Download do Programa] KTibiaX® Launcher Setup 2.1.3 .Net 20 (Para quem possui o .Net Framework 2.0) KTibiaX® Launcher Setup 2.1.3 .Net 35+ (Para quem possui o .Net Framework 3.5 ou posterior) [Código Fonte / Suporte] KTibiaX® Launcher CodePlex []'s1 ponto -
Olá Galera .. Vou Encinar Cmo Colocar Um Monstro Com O Look Type (Aparencia) De Items ( Estaduas , Items , Paredes Etc..) Aqui Tem Um Exempo do Trainer normal : <?xml version="1.0" encoding="UTF-8"?> <monster name="Training Target" nameDescription="a training target" race="undead" experience="0" speed="50" manacost="0"> <health now="9000000" max="9000000"/> <look type="57" head="20" body="30" legs="40" feet="50" corpse="3128"/> <targetchange interval="60000" chance="0"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag staticattack="50"/> <flag lightlevel="0"/> <flag lightcolor="0"/> <flag targetdistance="1"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="500" min="0" max="0"/> </attacks> <defenses armor="0" defense="0"> <defense name="ultimate healing" interval="4000" chance="500" min="900000" max="900000"/> </defenses> <immunities> <immunity physical="0"/> <immunity energy="0"/> <immunity fire="0"/> <immunity poison="0"/> <immunity lifedrain="0"/> <immunity paralyze="0"/> <immunity outfit="0"/> <immunity drunk="0"/> <immunity invisible="1"/> </immunities> <voices interval="2000000" chance="1"> <voice sentence="Bate que nem homem porra!"/> <voice sentence="Feel my kick!"/> <voice sentence="Voce nunca vai me mata."/> </voices> <loot> <item id="2148" countmax="20" chance1="100000" chancemax="0"/> <item id="1949" chance="10000"/> <item id="2467" chance="10000"/> <item id="2642" chance="6666"/> <item id="1987" chance="100000"> <inside> <item id="2044" chance="6666"/> <item id="2689" countmax="3" chance1="20000" chancemax="0"/> <item id="2401" chance="3333"/> <item id="2166" chance="1428"/> </inside> </item> </loot> </monster> O Look Type é sua aparencia. Então Vamos Supor Que Você Quer Mudar Sua Aparencia E Colocar Um Item , o Item Id 5787... Então é so você trocar o <look type="57" Por look typeex="5787"... é simples depois que você colocou look typeex vc coloca o id do item que você que que apareca como aparencia do monstro , no caso o trainer ficou com a aparencia do item 5787. o Trainer vai ficar assim: <?xml version="1.0" encoding="UTF-8"?> <monster name="Training Target" nameDescription="a training target" race="undead" experience="0" speed="50" manacost="0"> <health now="9000000" max="9000000"/> <look typeex="5787" head="20" body="30" legs="40" feet="50" corpse="3128"/> <targetchange interval="60000" chance="0"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag staticattack="50"/> <flag lightlevel="0"/> <flag lightcolor="0"/> <flag targetdistance="1"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="500" min="0" max="0"/> </attacks> <defenses armor="0" defense="0"> <defense name="ultimate healing" interval="4000" chance="500" min="900000" max="900000"/> </defenses> <immunities> <immunity physical="0"/> <immunity energy="0"/> <immunity fire="0"/> <immunity poison="0"/> <immunity lifedrain="0"/> <immunity paralyze="0"/> <immunity outfit="0"/> <immunity drunk="0"/> <immunity invisible="1"/> </immunities> <voices interval="2000000" chance="1"> <voice sentence="Bate que nem homem porra!"/> <voice sentence="Feel my kick!"/> <voice sentence="Voce nunca vai me mata."/> </voices> <loot> <item id="2148" countmax="20" chance1="100000" chancemax="0"/> <item id="1949" chance="10000"/> <item id="2467" chance="10000"/> <item id="2642" chance="6666"/> <item id="1987" chance="100000"> <inside> <item id="2044" chance="6666"/> <item id="2689" countmax="3" chance1="20000" chancemax="0"/> <item id="2401" chance="3333"/> <item id="2166" chance="1428"/> </inside> </item> </loot> </monster> Ta Ai Galera Espero Que Gostem , Meu Primeiro Topico1 ponto
-
Olá para todos os XTibianos, Trago hoje a vocês o primeiro Teaser do projeto Solscian, para que vocês tenham uma idéia de como ele está sendo desenvolvido. A princípio, os Teasers serão divididos em dois tipos: Mapas e Sistemas. No caso de um Teaser de Mapa, vocês terão uma descrição sobre ele e um show off e no caso de um Teaser de Sistema, vocês terão um vídeo de funcionamento do sistema! O tema do nosso primeiro Teaser é: Archaria, a ilha dos Novatos! "Archaria é um pequeno conjunto de ilhas, onde as almas puras ficam até completar seu aprendizado. Ela serve de ajuda para os Squires, onde estes aprenderão a combater as criaturas que povoam o mundo. Em Archaria, os novatos aprendem a coletar itens, desde minerando a criando eles através da alquimia básica. Quando uma alma pura atinge um certo nível de evolução, ela já está pronta para saber seu destino através daquele que liga os Deuses ao mundo material, o Oráculo, e então partir rumo ao Grande Continente." Show Off "O templo de devoção aos Deuses, também é o lugar mais seguro para aqueles que precisam de proteção." "Existem muitas árvores por aqui, que tal obter madeira de algumas? O serralheiro provavelmente paga por elas!" "Um belo descanso na praia naquele dia de sol... Desse jeito não quero sair de Archaria..." "Nem tudo são flores, no subsolo você já encontra Rats e... casalzinho simpático de Cockroachs aquele, não é?" "Esses malditos Trolls adoram atacar o vilarejo, se soubessemos onde eles se escondem..." "Muito cuidado! Aquela pequena ilha com uma vegetação estranha não é legal, pois é o território das Spiders!" "Até no subsolo esses malditos aracnídeos vivem... Que droga!" "Certo, você está fugindo daquele monte de Poison Spiders, sobe uma montanha e dá de cara com uma delas bem maior... Ops..." "As riquezas da ilha de Archaria atraíram Orcs e eles montaram uma fortaleza ao sudeste, muito cuidado, eles adoram seres humanos!" Bom, esse é o final do nosso primeiro Teaser, Não deixem de conferir as novidades que virão no primeiro System Teaser: Shop System e Mining System. Abraços!1 ponto
-
[Spell] Cancel Magic Shield
quijinrock reagiu a miter por um tópico no fórum
Olá XTibianos, Resolvir criar uma magia para que seu OT fique mais legal, A magia é simples. Você digita exana vita (ai autocancela o seu Magic Shield "utamo vita"). Agora vamos aos Scripts: Vá na pasta spells/scripts/custom, copie qualquer arquivo, cole e renomei-o para "cancelcondition" (sem aspas), abra-o e cole isso: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_MANASHIELD) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Agora abra a pasta data\spells e abra o arquivo "spells.XML", em "instant spells" adicione o seguinte codigo: <instant name="Cancel Magic Shield" words="exana vita" lvl="20" mana="50" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" script="custom/cancelcondition.lua"> <vocation name="Sorcerer"/> <vocation name="Druid"/> <vocation name="Paladin"/> <vocation name="Master Sorcerer"/> <vocation name="Elder Druid"/> <vocation name="Royal Paladin"/> </instant> Pronto, agora você tem aquela magia simples e que todo OT gostaria de ter, e que vai ajudar muito os mages do seu OT. Até a próxima, fiquem com Deus. Magia by Miter1 ponto -
eu testei aqui e funciono perfeitamente,se não está funcionando ai é porque vc fez algo errado. cara vc tem que colocar no actions.xml <action itemid="ID DO ITEM EXILIR" script="NOME DO SCRIPT.lua" /> qualquer coisa add ai thiagoredlife@hotmail.com1 ponto
-
Ja Esta Disponivel?
johnnyewert reagiu a renansdc por uma questão
Sim, é possível amigo, apenas copie a pasta world do Mix Yourots antigo que você editou e subistitua ela no Mix Yourots novo 8.60. E se quiser baixar o RME Map Editor 8.60, o link está ai: http://remeresmapeditor.com/rmedl.php?file=RME-win-2.0.msi1 ponto -
Fix outro patch mais não esta 100% ainda mais ja esta bom, rasuavel, war system não pega, vc tem que comprar uma por sei la quanto :S Water Elemental Fishing Pegando. Firewalker Boots Quest 100% Zão arena 100% Novos itens 50%1 ponto
-
[Arquivado]Qual Map E O Preferido
Fodastico1025 reagiu a marcelo1025 por um tópico no fórum
Qual map voce acha ser o preferido pelos jogadores? e por que. Ai Pessoal me add como amigo e so clicar ali no rostinho <<<<<1 ponto -
[Arquivado]Qual Map E O Preferido
marcelo1025 reagiu a Fodastico1025 por um tópico no fórum
Tu Ta certu chapolin. Agora o cara vai sai dando patada em todos que posta algo errado.1 ponto -
@dulpforever Acabei de testar e funciona normalmente. Tem certeza que colocou o script de login corretamente? Tenta usar o script dessa forma abaixo, assim ele irá mostrar o tempo caso a vip não tenha acabado. function onLogin(cid) if getVipTime(cid) > 0 and isVip(cid) == FALSE then local townid = 1 doPlayerSetTown(cid, townid) local templePos = getTownTemplePosition(getPlayerTown(cid)) doTeleportThing(cid, templePos, false) setVipTime(cid, 0) doTeleportPlayers(cid, templePos) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua Vip acabou!") else local duration = getVipDate(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) end return TRUE end1 ponto
-
1 ponto
-
Dúvida sanada, tópico reportado. Abraços.1 ponto
-
Passando Um Otserv Para 8.60
kamikazex reagiu a comedinhasss por um tópico no fórum
sim funciona... Todos Foram Testados E Aprovados1 ponto -
Faça Isso: faça um novo arquivo .lua em: C:\xampp\htdocs com o nome frags. cole isso: <?php $main_content .= '<div style="text-align: center; font-weight: bold;">Top 30 frags on ' . $config['server']['serverName'] . '</div> <table border="0" cellspacing="1" cellpadding="4" width="100%"> <tr bgcolor="' . $config['site']['vdarkborder'] . '"> <td class="white" style="text-align: center; font-weight: bold;">Name</td> <td class="white" style="text-align: center; font-weight: bold;">Frags</td> </tr>'; $i = 0; foreach($SQL->query('SELECT `p`.`name` AS `name`, COUNT(`p`.`name`) as `frags` FROM `killers` k LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id` LEFT JOIN `players` p ON `pk`.`player_id` = `p`.`id` WHERE `k`.`unjustified` = 1 AND `k`.`final_hit` = 1 GROUP BY `name` ORDER BY `frags` DESC, `name` ASC LIMIT 0,30;') as $player) { $i++; $main_content .= '<tr bgcolor="' . (is_int($i / 2) ? $config['site']['lightborder'] : $config['site']['darkborder']) . '"> <td><a href="?subtopic=characters&name=' . urlencode($player['name']) . '">' . $player['name'] . '</a></td> <td style="text-align: center;">' . $player['frags'] . '</td> </tr>'; } $main_content .= '</table>'; ?> agora va em: latestnews e adicione isso: $main_content .= '<div class="NewsHeadline"> <div class="NewsHeadlineBackground" style="background-image:url(' . $layout_name . '/images/news/newsheadline_background.gif)"> <table border="0"> <tr> <td style="text-align: center; font-weight: bold;"> <font color="white">Most powerfull guilds</font> </td> </tr> </table> </div> </div> <table border="0" cellspacing="3" cellpadding="4" width="100%"> <tr>'; foreach($SQL->query('SELECT `g`.`id` AS `id`, `g`.`name` AS `name`, `g`.`logo_gfx_name` AS `logo`, COUNT(`g`.`name`) as `frags` FROM `killers` k LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id` LEFT JOIN `players` p ON `pk`.`player_id` = `p`.`id` LEFT JOIN `guild_ranks` gr ON `p`.`rank_id` = `gr`.`id` LEFT JOIN `guilds` g ON `gr`.`guild_id` = `g`.`id` WHERE `k`.`unjustified` = 1 AND `k`.`final_hit` = 1 GROUP BY `name` ORDER BY `frags` DESC, `name` ASC LIMIT 0, 4;') as $guild) $main_content .= ' <td style="width: 25%; text-align: center;"> <a href="?subtopic=guilds&action=show&guild=' . $guild['id'] . '"><img src="guilds/' . ((!empty($guild['logo']) && file_exists('guilds/' . $guild['logo'])) ? $guild['logo'] : 'default_logo.gif') . '" width="64" height="64" border="0"/><br />' . $guild['name'] . '</a><br />' . $guild['frags'] . ' kills </td>'; $main_content .= ' </tr> </table>'; Teste E me Fale o Resultado.1 ponto
-
A partir de agora não é mais Real Server e sim We Do OTS, para você conferir mais clique aqui. Até mais, Doidin.-1 pontos