Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 09/25/13 em todas áreas

  1. Roksas

    [PVP-System] Changer 1.0

    [PVP-System] Changer 1.0 Versão testada: 8.60 e 9.60 Distro utilizado: TFS 0.4 e TFS 0.2 Comandos: /pvp guild, on/off e /pvp level, 300 Saudações marmanjada, firmeza na tereza? Vim apresentar hoje á vocês um sistema criado por mim, uma ideia bem legal, que seria o jogador escolher quem ele pode atacar, isso por guild e/ou level. Uma solução muito prática para quem não quer atacar amigos ou newbies na war Vá em (data/talkactions/scripts), crie um arquivo cujo nome seja pvpSys.lua e adicione dentro: --[[ PVP-System Changer 1.0, criado por Roksas! Acesse já XTIBIA.COM ]]-- function onSay(cid, words, param) local s = string.explode(param, ",") if not s[1] then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[PVP-System] Acesso negado. É necessário que informe o tipo de PVP.") and true end --//--// if s[1] == "guild" then if not s[2] then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[PVP-System] Acesso negado. Favor informar os parâmetros {on} ou {off}.") and true end if (getPlayerGuildId(cid) < 1) or (not getPlayerGuildId(cid)) then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[PVP-System] Acesso negado. Você não pode utilizar este comando, pois não percente á nenhuma guild.") and true end if s[2] == "on" then if getPlayerStorageValue(cid, 21400) >= 1 then return doPlayerSendCancel(cid, "[PVP-System] Acesso negado. Já está ativado o seu Guild PVP.") and true end setPlayerStorageValue(cid, 21400, 1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[PVP-System] Você ativou o Guild PVP, agora não pode atacar players da sua guild.") elseif s[2] == "off" then if getPlayerStorageValue(cid, 21400) < 1 then return doPlayerSendCancel(cid, "[PVP-System] Acesso negado. Já está desativado o seu Guild PVP.") and true end setPlayerStorageValue(cid, 21400, -1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[PVP-System] Você desativou o Guild PVP, pode atacar os players de sua guild.") return true end return true end --//--// if s[1] == "level" then if not s[2] then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[PVP-System] Acesso negado. Favor informar o level mínimo para atacar.") and true end if tonumber(s[2]) > getPlayerLevel(cid) then return doPlayerSendCancel(cid, "[PVP-System] Acesso negado. Você não pode determinar leveis maiores que o seu.") and true end if getPlayerStorageValue(cid, 21401) == tonumber(s[2]) then return doPlayerSendCancel(cid, "[PVP-System] Acesso negado. Este level já foi determinado antes.") and true end setPlayerStorageValue(cid, 21401, tonumber(s[2])) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "[PVP-System] Acesso negado. Você determinou o level mínimo para atacar ["..s[2].."].") return true end --//--// return true end No arquivo talkactions.xml da pasta (data/talkactions), você deve adicionar a seguinte tag: <talkaction words="/pvp" event="script" value="pvpSys.lua"/> Muito bem, esta parte foi a instalação do comando utilizado, agora iremos adicionar ao nosso servidor a parte de hits e target. Em (creaturescripts/scripts), devemos criar um arquivo com o mesmo nome, no caso, pvpSys.lua e nele, adicionar isto dentro: function onTarget(cid, target) --//--// if getPlayerStorageValue(cid, 21400) >= 1 then if getPlayerGuildId(cid) == getPlayerGuildId(target) then return doPlayerSendCancel(cid, "[PVP-System] Você não pode atacar jogadores da mesma guild com este PVP ativado.") and false end return false end --//--// if getPlayerStorageValue(cid, 21401) >= getPlayerLevel(target) then return doPlayerSendCancel(cid, "[PVP-System] Acesso negado. Não é possível atacar jogadores com level menor que ["..getPlayerStorageValue(cid, 21401).."].") and false end return true end --//--// function onStatsChange(cid, attacker, type, combat, value) --//--// if type == STATSCHANGE_HEALTHLOSS then if getPlayerStorageValue(attacker, 21400) >= 1 then if getPlayerGuildId(attacker) == getPlayerGuildId(cid) then return false end return false end --//--// if getPlayerStorageValue(attacker, 21401) >= getPlayerLevel(cid) then return false end end return true end --//--// Na mesma pasta, podemos encontrar o arquivo login.lua, no qual adicionamos estas linhas: registerCreatureEvent(cid, "pvpAtt") registerCreatureEvent(cid, "pvpStats") Voltando uma pasta (data/creaturescripts), abriremos o arquivo creaturescripts.xml com algum editor de texto e dentro coloquemos estas tags: <event type="target" name="pvpAtt" event="script" value="pvpSys.lua"/> <event type="statschange" name="pvpStats" event="script" value="pvpSys.lua"/> É isto aêe galerinha, espero que tenham gostado e que funcione, qualquer dúvida estou aqui para respondê-los haha. #Perfect, #GoodLuck.
    5 pontos
  2. Achei que não ia chegar meia noite mais... os votos pro Banana foram taaaaaantos né? Mais infelizmente o membro BananaFight (30 dias) foi suspenso e desclassificado pela sua falta de respeito, imaturidade e indisciplina perante o concurso e equipe. E os outros engraçadinhos: Meunometemvinteletra - vvdda91 - auerback - Frenvius - (20 dias), estão suspensos também! Vocês perderam a noção aqui agora...isso aqui pode parecer bagunçado mais tem gerencia! Acho que isso merece um "Quotão": Achar uma votação que possa ser votada mais de uma vez é...?? Nada te impede de matar alguém, mas você não o faz porque sabe que está errado. Nada te impede de votar duas vezes, você não vota porque sabe que TODA votação é permitido apenas um voto por pessoa. Ignorar isso, é ignorar as leis humanas, é a mesma coisa que nunca ter existido nesse mundo. - Não preciso acrescentar nada! Mais tarde posto o tópico com a contagem dos votos e resultado oficial! Atenciosamente, Alexandre. Galera, estou saindo de viagem e volto no fim de semana pra dar o resultado oficial. E também enteando em contado com os vencedores. Abraços!
    4 pontos
  3. Nolis

    [Encerrado]OTAvatar Voltou !

    Adicionado imagem referente ao sistema.
    4 pontos
  4. Tonynh

    XLOGO

    Para quem estava me pedindo o famoso logo do xtibia, estarei postando uma versão que eu mesmo desenvolvi a partir do original. Espero que gostem, e usem a vontade =) Formato .png Abraços!
    3 pontos
  5. Tonynh

    Street Fighter em formas básicas

    Para quem acha que não é possível adquirir um bom resultado apenas com traços básicos de figuras geométricas, aqui mostro para vocês um trabalho sensacional que é digno de atenção. Quem fez essa arte foi o tailandês Phuwadon Thongnoum! Espero que gostem =)
    2 pontos
  6. alissonfgp

    Global Server 10.10

    Sources 0.3: http://www.mediafire.com/download/2ry3qq47zzfcbia/0.3+Source+10.10.rar SCAN SOURCES 0.3: https://www.virustotal.com/pt-br/url/6e078916e88f224cbe73c48baa17197072141bba0e1642909a6e6af93326ffa2/analysis/1380332296/ Pra quem precisa, nao tem os novos sistemas, browse field, pvp, guild, entre outros....
    2 pontos
  7. -- [[> Automated Database Cleanup 1.1 //By Cybermaster <]] -- -- [[> Function getDBPlayersCount() by Elf <]] -- function getDBPlayersCount() local result = db.getResult("SELECT COUNT(`id`) as `count` FROM `players`;") local tmp = result:getDataInt("count") result:free() return tmp end function onStartup() local DB_BEFORE = getDBPlayersCount() --In each table, players with below specified level, and days of inactivity will be deleted from db on server startup local cleanup = { [1] = {level = 11, time = 5 * 24 * 60 * 60}, [2] = {level = 50, time = 15 * 24 * 60 * 60}, [3] = {level = 100, time = 30 * 24 * 60 * 60}, [4] = {level = 200, time = 60 * 24 * 60 * 60}, [5] = {level = 300, time = 90 * 24 * 60 * 60} } for i = 1, #cleanup do db.executeQuery("DELETE FROM `players` WHERE `level` < ".. cleanup[i].level .." AND `id` > 6 AND `group_id` < 2 AND `lastlogin` < UNIX_TIMESTAMP() - ".. cleanup[i].time ..";") end local DB_NOW = DB_BEFORE - getDBPlayersCount() if DB_NOW > 0 then local text = ">> [DBCLEANUP] "..DB_NOW.." inactive players have been deleted from database." print("" .. text .. "") local file = io.open("data/logs/db_cleanup.txt", "a") file:write("\n[".. os.date("%d %B %Y %X ", os.time()) .."] "..text.."") file:close() end return true end
    2 pontos
  8. ikaroangelo

    Pedido

    Ok, vamos por a mão na massa! Basicamente nós nos basearemos nisso: Localizado em: DATA/XML/VOCATION.XML Exemplo Quote <vocation id="1" name="Sorcerer" description="a sorcerer" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="6" gainhpamount="50" gainmanaticks="3" gainmanaamount="50" manamultiplier="1.1" attackspeed="400" soulmax="100" gainsoulticks="120" fromvoc="1"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" armor="1.0" /> <skill id="0" multiplier="1.5" /> <skill id="1" multiplier="2.0" /> <skill id="2" multiplier="2.0" /> <skill id="3" multiplier="2.0" /> <skill id="4" multiplier="2.0" /> <skill id="5" multiplier="1.5" /> <skill id="6" multiplier="1.1" /> </vocation> Primeiro vou explicar cada item pra você criar sua vocação certinha! id = não deve haver nenhuma igual, tente seguir a sequencia para não se perder. name = nome da nova vocação. description = quando der look aparecera esse nome, e caso acc manager também. needpremium = se precisa de premmium para ter essa vocação (0 = não 1 = sim) gaincap = o tanto de cap que vai ganhar quando upar gainhp = o tanto de vida que vai ganhar quando upar gainmana = o tanto de mana que vai ganhar quando upar gainhpticks = o tanto de segundos que demora pra subir a vida gainhpamount = o tanto de vida que vai ganhar a cada ( no nosso exemplo 6 ) segundos gainmanaticks = o tanto de segundos que demora pra subir a mana gainmanaamount = o tanto de mana que vai ganhar a cada ( no nosso exemplo 3 ) segundos manamultiplier = quanto ml vai demorar pra subir, quanto menor mais rápido attackspeed = velocidade do ataque de wands e weapons (quanto menor mais rápido) soulmax = o maximo de soul gainsoulticks = o tanto de segundos que vai demorar pra subir o soul fromvoc = como ele será reconhecido nos scripts ( bote igual o id ) Formulas: meleeDamage = quanto hita com weapons ( exceto wands e rods ) distDamage = quanto hita com ataques a distancia wandDamage = quando hita com wand magDamage = quando hita com magias magHealingDamage = quanto heala com magias de cura, ( tanto exura como exura sio ) defense = quanto defende com escudos armor = quanto defende com armaduras Skill Ids: (0) Fist (1) Club (2) Sword (3) Axe (4) Distance (5) Shield (6) Fishing PS: Quando menor o skill multiplier, mais rápido upa os skills. Criando nova vocação : 1. Basta você adicionar nosso exemplo, embaixo das vocations. Exemplo Quote <?xml version="1.0" encoding="UTF-8" ?> <vocations> <vocation id="0" name="None" description="none" needpremium="0" gaincap="5" gainhp="5" gainmana="5" gainhpticks="6" gainhpamount="1" gainmanaticks="6" gainmanaamount="1" manamultiplier="4.0" attackspeed="2000" soulmax="100" gainsoulticks="120" fromvoc="0" attackable="no"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" armor="1.0" /> <skill id="0" multiplier="1.5" /> <skill id="1" multiplier="2.0" /> <skill id="2" multiplier="2.0" /> <skill id="3" multiplier="2.0" /> <skill id="4" multiplier="2.0" /> <skill id="5" multiplier="1.5" /> <skill id="6" multiplier="1.1" /> </vocation> <vocation id="1" name="Sorcerer" description="a sorcerer" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="6" gainhpamount="50" gainmanaticks="3" gainmanaamount="50" manamultiplier="1.1" attackspeed="400" soulmax="100" gainsoulticks="120" fromvoc="1"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" armor="1.0" /> <skill id="0" multiplier="1.5" /> <skill id="1" multiplier="2.0" /> <skill id="2" multiplier="2.0" /> <skill id="3" multiplier="2.0" /> <skill id="4" multiplier="2.0" /> <skill id="5" multiplier="1.5" /> <skill id="6" multiplier="1.1" /> </vocation> <vocation id="2" name="Druid" description="a druid" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="6" gainhpamount="50" gainmanaticks="3" gainmanaamount="50" manamultiplier="1.1" attackspeed="400" soulmax="100" gainsoulticks="120" fromvoc="2"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" armor="1.0" /> <skill id="0" multiplier="1.5" /> <skill id="1" multiplier="1.8" /> <skill id="2" multiplier="1.8" /> <skill id="3" multiplier="1.8" /> <skill id="4" multiplier="1.8" /> <skill id="5" multiplier="1.5" /> <skill id="6" multiplier="1.1" /> </vocation> <vocation id="3" name="Paladin" description="a paladin" needpremium="0" gaincap="20" gainhp="10" gainmana="15" gainhpticks="4" gainhpamount="50" gainmanaticks="4" gainmanaamount="50" manamultiplier="1.4" attackspeed="400" soulmax="100" gainsoulticks="120" fromvoc="3"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" armor="1.0" /> <skill id="0" multiplier="1.2" /> <skill id="1" multiplier="1.2" /> <skill id="2" multiplier="1.2" /> <skill id="3" multiplier="1.2" /> <skill id="4" multiplier="1.1" /> <skill id="5" multiplier="1.1" /> <skill id="6" multiplier="1.1" /> </vocation> <vocation id="4" name="Knight" description="a knight" needpremium="0" gaincap="25" gainhp="15" gainmana="5" gainhpticks="3" gainhpamount="55" gainmanaticks="6" gainmanaamount="50" manamultiplier="3.0" attackspeed="400" soulmax="100" gainsoulticks="120" fromvoc="4"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" armor="1.0" /> <skill id="0" multiplier="1.1" /> <skill id="1" multiplier="1.1" /> <skill id="2" multiplier="1.1" /> <skill id="3" multiplier="1.1" /> <skill id="4" multiplier="1.4" /> <skill id="5" multiplier="1.1" /> <skill id="6" multiplier="1.1" /> </vocation> <vocation id="5" name="Master Sorcerer" description="a master sorcerer" needpremium="1" gaincap="10" gainhp="5" gainmana="30" gainhpticks="4" gainhpamount="250" gainmanaticks="2" gainmanaamount="250" manamultiplier="1.1" attackspeed="400" soulmax="200" gainsoulticks="15" fromvoc="1" lessloss="30"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" armor="1.0" /> <skill id="0" multiplier="1.5" /> <skill id="1" multiplier="2.0" /> <skill id="2" multiplier="2.0" /> <skill id="3" multiplier="2.0" /> <skill id="4" multiplier="2.0" /> <skill id="5" multiplier="1.5" /> <skill id="6" multiplier="1.1" /> </vocation> <vocation id="6" name="Elder Druid" description="an elder druid" needpremium="1" gaincap="10" gainhp="5" gainmana="30" gainhpticks="4" gainhpamount="250" gainmanaticks="2" gainmanaamount="250" manamultiplier="1.1" attackspeed="400" soulmax="200" gainsoulticks="15" fromvoc="2" lessloss="30"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" armor="1.0" /> <skill id="0" multiplier="1.5" /> <skill id="1" multiplier="1.8" /> <skill id="2" multiplier="1.8" /> <skill id="3" multiplier="1.8" /> <skill id="4" multiplier="1.8" /> <skill id="5" multiplier="1.5" /> <skill id="6" multiplier="1.1" /> </vocation> <vocation id="7" name="Royal Paladin" description="a royal paladin" needpremium="1" gaincap="20" gainhp="10" gainmana="15" gainhpticks="3" gainhpamount="250" gainmanaticks="3" gainmanaamount="250" manamultiplier="1.4" attackspeed="400" soulmax="200" gainsoulticks="15" fromvoc="3" lessloss="30"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" armor="1.0" /> <skill id="0" multiplier="1.2" /> <skill id="1" multiplier="1.2" /> <skill id="2" multiplier="1.2" /> <skill id="3" multiplier="1.2" /> <skill id="4" multiplier="1.1" /> <skill id="5" multiplier="1.1" /> <skill id="6" multiplier="1.1" /> </vocation> <vocation id="8" name="Elite Knight" description="an elite knight" needpremium="1" gaincap="25" gainhp="15" gainmana="5" gainhpticks="2" gainhpamount="255" gainmanaticks="4" gainmanaamount="250" manamultiplier="3.0" attackspeed="400" soulmax="200" gainsoulticks="15" fromvoc="4" lessloss="30"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" armor="1.0" /> <skill id="0" multiplier="1.1" /> <skill id="1" multiplier="1.1" /> <skill id="2" multiplier="1.1" /> <skill id="3" multiplier="1.1" /> <skill id="4" multiplier="1.4" /> <skill id="5" multiplier="1.1" /> <skill id="6" multiplier="1.1" /> </vocation> <vocation id="9" name="Nome da Nova voc" description="an new voc" needpremium="1" gaincap="25" gainhp="15" gainmana="5" gainhpticks="2" gainhpamount="255" gainmanaticks="4" gainmanaamount="250" manamultiplier="3.0" attackspeed="400" soulmax="200" gainsoulticks="15" fromvoc="4" lessloss="30"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" armor="1.0" /> <skill id="0" multiplier="1.1" /> <skill id="1" multiplier="1.1" /> <skill id="2" multiplier="1.1" /> <skill id="3" multiplier="1.1" /> <skill id="4" multiplier="1.4" /> <skill id="5" multiplier="1.1" /> <skill id="6" multiplier="1.1" /> </vocation> Adicionando Spells às novas vocações 2. Basta adicionar o nome da nova vocação em: data/spells/spells.xml Exemplo Quote <instant name="Flame Strike" words="exori flam" lvl="12" mana="20" prem="1" range="5" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" script="attack/flame strike.lua"> <vocation name="Sorcerer" /> <vocation name="Druid" /> <vocation name="Master Sorcerer" /> <vocation name="Elder Druid" /> <vocation name="Nome da Voc" /> <----- Aqui você bota a nova vocação </instant> Se Ajudei REP+
    2 pontos
  9. BananaFight

    OtClient - Tutorial Básico #1

    OtClient - Tutorial Básico #1 Aula 1 : Editando mod/Modules Bom galera, hoje eu vou ensinar vocês a como editar mod/Modules, e também como posiciona-los na janela. OBS: Quando eu falar Janela, estou me referindo aos objetos: MainWindow, Botton etc Passo 1 entendendo os arquivos Dentro da maioria das pasta no OtClient existirão 3 arquivos com as seguintes extensões: .lua.otmod.otui Cada uma dessas extensões executam um papel EXTREMAMENTE importante dentro do mod/module que você pretende criar, Mais será explicado mais para a frente, Nessa aula vamos mexer apenas no arquivo ".otui". Passo 2 Indentação Uma das coisas mais importante dentro dos arquivos ".otui" é a indentação, pois se você errar um espaçamento qualquer você pode estar 'bugando' todo o funcionamento da sua mod/module. Vou ensinar a vocês o modo certo de indentar seus códigos para que não tenham erros. MainWindowid: tutorialWindowsize: 80 80&save: true Dentro dos arquivos '.otui' só é permitido a indentação com a tecla "Espaço", Caso você tente usar "Tab" para indentar seu código ele vai dar erro e não irá funcionar. A indentação deve ser feita com apenas 2 espaços, e sempre seguindo a ordem do item que você ta criando. Exemplo: MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 Como o Botão 'Button1' vai ficar dentro da janela ' tutorialWindow', ele tem que ficar a uma distancia de 2 espaços da janela 'MainWindow', Caso eu quebre esse espaçamento provavelmente poderei ter bugs na hora de abrir esse mod/module dentro do client. Outra coisa para tomar cuidado é quando for dar linha para adicionar outra janela, nessa linha em que separa uma janela não pode conter nem um espaço e nenhum comando. Exemplo: Certo MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 Errado MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 Vocês não conseguem ver a diferença, mais tente selecionar os dois códigos que vão entender melhor, o que eu falei. Agora a organização e edição de cada janela dentro do arquivo '.otui' deve seguir o mesmo principio de 2 espaços de distancia. Exemplo: Certo MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 Errado MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 E também esta Errado desta forma MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 Como o botão vai aparecer dentro da janela 'MainWindow' ele tem que ficar a 2 espaçamento dela pois se eu deixar os 2 na mesma posição é como se eu estivesse dizendo ao script que são duas janelas separadas e o botton vai aparecer por conta própria quando eu executar o mod/module. Passo 3 conhecendo as janelas Existem diversos modos de se criar uma janela onde vai aparecer vários botoes textos e etc, Mais sempre vai ter uma janela que será a matriz de todos, onde todos deverão aparecer, que no nosso exemplo é : MainWindowid: tutorialWindowsize: 80 80&save: true Esse código é nossa janela principal, É nela que vai aparecer tudo que queremos mostrar com no script, Agora vou mostrar o que cada função que tem dentro de MainWindow faz. MainWindowid: esse é o ID do MainWindow, Supondo que tenham 2 MainWindow, é com esse id que vamos diferencia-lassize: aqui é onde configuramos a largura e altura da janela, nessesariamente nessa ordem&save: isso fica para as próximas aulas Não precisamos usar necessariamente size para mostrar o tamanho ou largura da janela, podemos utilizar por exemplo : width: 80height: 80 Esses 2 códigos podem ser utilizados no lugar de size e farão exatamente a mesma coisa. Caso você tenha editado ou criado algum mod/modules para testar esses códigos que mostrei acima, percebeu que na janela não aparece nome e nem nada do gênero e é isso que irei mostrar agora. !text: tr('Texto') - Essa função adiciona o texto na janela em que você adicionar esta linhaicon: img.png - Esta função pega a sua imagem e usa ela de icone para a janela ( neste caso a imagem tem que estar na mesma pasta que o arquivo '.otui', e isso só irá funcionar dependendo do tipo da janela matriz, veremos em outros tutoriais.) Com esses dois Código você consegue personalizar a janela onde irão aparecer os botoes, textos etc que você pretende fazer. Exemplo: MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: true Agora vamos começar a criar botoes, escrever textos e etc. Vamos começar adicionando uma Label que vai mostrar o texto 'Olá Xtibia'. MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftmargin-top: 5margin-left: 5 Como vocês podem ver apareceram algumas funções novas, que são elas : anchors.top: parent.topanchors.left: parent.leftanchors.right: parent.rightanchors.bottom: parent.bottomanchors.top: prev.topanchors.left: prev.leftanchors.right: prev.rightanchors.bottom: prev.bottommargin-top: 5margin-left: 5margin-right: 5margin-bottom: 5 Com essas funões nós determinamos onde cada item da nossa janela vai ficar. Entendendo as novas funções anchors.top: parent.top Com a linha 'anchors.top:' estamos dizendo que a posição do meu item vai ser definida para cima, agora adicionando 'parent.top' estamos dizendo que a posição do meu item deve se Colada com começo da Janela, e isso segue para left, right, bottom também. agora se no lugar de 'parent.top' eu usar 'prev.top' eu estou dizendo que meu item vai ficar colado com a parte de cima do item que tem encima, Confuso eu sei mais vou dar um exemplo: MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.left Ali no script acima eu estou mandando a Label1 ficar colada com a borda de cima da janela principal, e a esquerda, Já na Label2, eu estou mando ela ficar colada com a Label1 ( pois a label1 que esta encima ) e também ficar colada com a borda da janela principal. Isso se aplica a todos os lados, se eu usar prev.left, eu vou estar dizendo que a label2 tem que ficar exatamente do lado esquerdo da label1. As funções 'margin-top: 5' vão fazer com que meu item fique com a distancia de 5 pixel ( Não tenho certeza se são pixels ) do item que esta acima MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.leftmargin-top: 5 Nesse Exemplo eu fiz a label2 ficar a 5 pixel abaixo da Label1, e isso é a mesma coisa se eu ultilizar left, right, bottom eu vou pegar uma distancia do que estiver do lado do meu item ou embaixo etc. Mais agora nós não precisamos nos prender a ficar somente com parent, e prev na hora de criar um item. podemos utilizar o id de um item como referencia de onde deve ficar meu item, como no exemplo : MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.leftmargin-top: 5Labelid: Label3!text: tr('Xtibia OtClient')anchors.top: parent.topanchors.left: Label1.left Nesse Exemplo eu fiz com que a Label3 ficasse a esquerda da Label1, e grudada a margem da janela principal, mais eu também poderia fazer ela ficar embaixo da Label1, e grudada ao lado direito da margem da janela principal. MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.leftmargin-top: 5Labelid: Label3!text: tr('Xtibia OtClient')anchors.top: Label1.topanchors.right: parent.right Mais caso você for testar isso vai perceber que o Label2 vai ficar encima do Label1 e ao invés do Label3 ficar embaixo do Label1 ele vai ficar do lado, Para corrigir esses pequenos erros você pode juntar códigos como no exemplo : MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.bottomanchors.left: parent.leftmargin-top: 5Labelid: Label3!text: tr('Xtibia OtClient')anchors.top: Label1.bottomanchors.right: parent.right Pelo Simples fato de eu ter trocado top por bottom agora o script sabe que a Label2 tem que ficar no fim da Label1 e o mesmo para a Label3, e por isso usamos margin, para deixa uma distancia entre cada item, e para ficar mais organizado. Bom acho que é isso, Caso eu lembre de algo relevante estarei editando e adicionando mais coisas, Espero que gostem e quais quer DUVIDAS relacionadas AO TÓPICO é só fazer um comentário aqui embaixo que estarei respondendo. @Edit, Infelizmente o Xtibia Quebrou a indentação, mais lembre-se é sempre 2 espaços.
    1 ponto
  10. Lordbaxx

    Pokémon Centurion V8.0

    OpáH Galerinha, essa Vai Para Os Fãs do "Pokémon Centurion" Bom Eu Curto Muito Mais Não Mexo Mais e Decidi Postar Aqui Meu Projeto do Centurion Digamos que é a Versão 8.0.. Créditos á "Jobby Magalhães" Pelo Centurion Que Eu Usei Pra Fazer Esse Ai.. Valleeu Jobby... Bom Vamos Ao Que Interessa. O Que Foi Feito... - Prints - | \/ -Downloads - Peço Quem For Postar o Servidor Em Outro Fórum Por Favor, Coloque os Créditos á Jobby Magalhães e á Lordbaxx (EU)... XTibia! Lordbaxx - Boundless Anonymous Representation!
    1 ponto
  11. alissonfgp

    Global Server 10.10

    Estou liberando o update de correção de bugs, tivemos muitos reportes de bugs, mas consegui trabalhar bem na reparação dos erros. Pesso desculpa pelo atraso neste update. Segue abaixo o que foi corrigido neste update: * Sem os novos sistemas de Browse Field, PVP(10.10) e Guild mark 10.10 * New Ab'Dendriel 98% * Houses De Ab'Dendriel Adicionadas * Protection Zones das novas areas * New Drefia 98% * Monsters 10.10, mas nao completos faltam loots e attacks (Postarei em breve no forum caso ninguem poste) * Npcs adicionado (mas estao com nome e outfit alterada tem que ajustar.) * Bug de Fibula removido * Bug dos 15kk Trolls Removido * Bug da ML removido * Bug Factory Quarter Yalahar new cave de War golems corrigido agora 100% acessivel * Adicionado Trainers Offline em Ab'Dendriel e Ankrahmun (as que faltavam) * Protection Zone em Quirefang * Concertado hits de alguns monstros das versoes 9.4 ~~ 9.6 * Bug Demon Oak, entrar mais que 1 player foi corrigido, Só entra 1 agora * Bug Warzones (agora pode refaze-las apos 20h) * Npc Avar Tar entregando Demon outfits and addons * Save configurado agora nao salva frequentemente * Buracos no mapa corrigido-- se encontrarem mais por favor reportem * Novas mounts adicionadas * NPCS Gamon(Thais), Nydala(Carlin) e Allen(Venore) vendendo a nova cama canopy bed kit adicionado * Database concertada (erro quando deslogava character resetava o player)-- precisa importa sql doc gatilho player dentro da pasta * Items.xml com corpses dos novos monstros * Items.xml Alguns items adicionados (Nail case, Tiles entre outros, Nao estao 100% peso, Descriçao e talz) * /newtype adicionado 10x (para quem quiser ver as novas looktype) * Porta da ilha Vegas trancada (Soft boots free ¬¬) * D'lair Kazz Adicionada * Lizard Chosen new respawn adicionado * Lancer Beetle new respawn adicionado Sources nao postarei ainda vou tentar adicionar os novos sistemas. Creditos: 8.6 Denner 8.6x+ Alissonfgp (EU) Outros (reportaram bugs, no mapa, scripts e talz) Distro: TFS Team 9.86 e Update 10.10 feito por min(Alissonfgp). Links: Datapack: http://www.4shared.com/rar/j-GBsosP/Global1010byAlissonfgpPT_2_.html Distro TFS 0.3: http://www.mediafire.com/?cbvkjxe1oggcr52 Source 0.3 Novo Sistema de Party adicionado: http://www.4shared.com/rar/lpVxPgKU/03_Source_1010_By_Alissonfgp.html Scan: https://www.virustotal.com/pt-br/url/4822c0a42c15bb81680e89daa34a55d91a58043272b2fc33cc127b28ec709724/analysis/1381956584/ Scans: SCAN DATAPACK: https://www.virustotal.com/pt-br/url/908394709feeffb6a947ded09b79db2b659ead4f655e75072bab33e77a222ff7/analysis/1381322018/ SCAN TFS 0.3: https://www.virustotal.com/pt-br/url/b30016d7ece4a831a9a4e02c002bc0255736f4356cd96b8cfdc4f13d04c8b4f7/analysis/1377522194/ Senha do God... Account: tibia Password: 234567 UPDATE DIA 13/10/2013 Link: http://www.4shared.com/rar/j-GBsosP/Global1010byAlissonfgpPT_2_.html Scan: https://www.virustotal.com/pt-br/url/908394709feeffb6a947ded09b79db2b659ead4f655e75072bab33e77a222ff7/analysis/1381322018/ Alguns Bugs Removidos... * Novo Sistema de Party Adicionado * Quest Drefia Adicionado * Portas de Drefia e Buracos, onde se usa Corda(rope) arrumado * Monsters 10.10 98% loots e atks (by Avronex) * Database Sqlite arrumado * Portas de Venore concertadas (as portas com a maçaneta brilhando e que nao querem abrir adicione actionid 100) * Libs sem utilizaçao removidas. * Mounts e Mount doll concertados... * Bug Container Removido * Bug 64 Bits para win64 removido (agr roda sem esse erros) * NPC e Escada em Thais, npc Xodet de Potions... Breve... Browse field e Novo Sistema de Guild e a Source. E removerei mais bugs... Algumas imagens: Novo Party System Drefia Ab'dendriel Norte Carlin Norte Ab'dendriel Hellgate
    1 ponto
  12. Roksas

    Simple Pet System

    Simple Pet System Saudações galerinha, bão? Tive uma ideia bem simples e vim trazer para vocês, é um PET para ele te ajudar nas batalhas. Instalação Vá em data/actions/scripts, copie algum arquivo da pasta e cole, renomeie para simple_pet e adicione isso dentro: Muito bem, agora sigamos para actions.xml e adicione essa tag: <action itemid="11256;11207;11144;9019" event="script" value="simple_pet.lua"/> Configuração Nesta parte do código: local dolls = { [11256] = {pet = "Crystal Spider"}, [11207] = {pet = "Ashmunrah"}, [11144] = {pet = "Demon"}, [9019] = {pet = "Vampire"}, } Oque está entre [ e ] nós colocamos os Item ID dos items que vão chamar o PET. Já entre { e } aonde está entre aspas, colocamos o nome do PET. E na tag do actions.xml adicionamos estes MESMOS Item Ids, separando-os por ; ficando: <action itemid="ID;ID;ID;ID" event="script" value="simple_pet.lua"/> Para o PET teleportar para você quando subir escadas, ou ficar muito longe, vá em config.lua e procure por: teleportPlayerSummons Se estiver false coloque true, se estiver "no", coloque "yes" Demonstração Finalizações Obrigado pela atenção galera, espero que tenham gostado, e qualquer dúvida estou aqui para respondê-los
    1 ponto
  13. Alissow OTS 5.0!!!!! [17/03/ 2013] Provavelmente vocês estão pensando "mas que diabo de OTS é esse?", afinal, já faz 2 anos desde que a ultima versão foi lançada (http://www.xtibia.co...10-86-completo/) e desde lá prometemos algo que não foi cumprido - até agora -, uma versão nova. ENFIM, TEMOS AGORA A MAIS NOVA VERSÃO DE UM DOS SERVIDORES MAIS AVACALHADOS JOGADOS DOS ULTIMOS TEMPOS. Mas eu tenho uma má noticia, está incompleto. Sim, o mapa está inacabado. Muitas coisas que eu planejei fazer nele eu não completei. Boa parte o Comedinha ajudou a terminar, adicionando o resto dos caminhos básicos e os monstros. mas mapa inacabado não quer dizer que não está jogável, quer dizer que faltou detalhar (Ex: x:55 y: 137 z: 9, x: 104 y: 140 z: 7, etc). A ultima versão foi baixada mais de 50 mil vezes e esperamos que essa versão faça o mesmo sucesso. VAMOS BAIXAR E JOGAR, SEUS LINDOS Créditos Gerais: Sobre o OT/Mapa: Principais quests: -Annihilator -Inquisition Quest -Pits of inferno -Demon Oak -Solar axe quest -HOTA -MPA quest -The Challenger Monstros: -Total monstros: 10292 -Total spawn: 5587+ Cidades: -12 Cidades -200 Houses+- Raids/Invasões: -Rat -Orshabaal -Ghazbaran -Giant spider/The old window -Ferumbras -Morgaroth Spells: -Magias editadas para balanceamento das vocações Changelog Atualização [3.4 BETA]: Atualização nº 2 [3.4]: Atualização 3.5 [06/08/2009]: Atualização Patch 3.5.1 [07/08/2009]: Atualização 3.6 [10/08/2009]: Atualização 3.7! Beta [18/12/2009]: Atualização 3.7 Patch 1 [27/12/2009]: Atualização 3.8 [17/01/2010]: Atualização 3.8 Minor Patch 1 [17/01/2010]: Atualização 3.9 [15/02/2010]: Atualização 4.0 [15/02/2010]: Atualização 4.11! [11/07/2010]: Atualização 5.0!!!!! [17/03/2013] - Atualizado para a versão 9.83 (Comedinhasss, Tfs Team) - Sistemas novos para a nova versão, montaria, war system, etc. (Comedinhasss, Tfs Team) - Rep System e Antbot Removido. (Comedinhasss) - 64 Quests reformuladas. (Comedinhasss/Alissow) - Novo sistema de dicas a cada 15 min. - (Comedinhasss) - Novo sistema de map marks ao entrar no servidor. (Comedinhasss) - Organização geral em Actions e Moveevents. (Comedinhasss) - Nova organização nos monstros agora usando os que não tem no tibia original na pasta monsters em mods. (Comedinhasss) - Npcs sem utilidade removidos (Comedinhasss) - Alavanca de runas e potions reformuladas (Comedinhasss, Alissow) - Bug PZ nas Hydras arrumado (Alissow) - Cidade principal parcialmente reformulada (Alissow) - Cidade de Flam totalmente reformulada (Alissow) - As lojas agora não são mais areas PZ (Alissow) - Corrigido erros em portas que não deveriam abrir, e portas que não deveriam fechar (Alissow) - Continente de Zao removido? (Alissow) - Arrumado bugs onde podia-se pegar items na ferumbras tower e vários outros lugares (Alissow) - Arrumado caminho da "inquisition" (Alissow) - Respawns recolocados em algumas áreas de yalahar, dragons, elfs Hydras, Dark magicians e apprentices (Alissow) - Nova entrada para arena (Svargrond) na cidade principal e funcionando! (Alissow) - Elevado nível de dificuldade da Arena (Svargrond) (Alissow) - Nova localização da Ferumbras Tower (Alissow) - Cidade de Mistyc removida (Alissow) - Novo sistema premium igual ao global. (Comedinhasss) - Sistema de bless reformulado e agora por items. (Comedinhasss) - Sistema de portais/teleports (Comedinhasss, Alissow) - Sistema offline training (Comedinhasss, TFS) - Sistema de casamento trocado (Comedinhasss, Outros) - Spells (OTX) Screenshots: Mais screenshots: Clique Aqui Download: Windows: http://www.mediafire...cap2yi5jee5e7an (Tam: 16MB) Linux (Debian): http://www.mediafire...5lu3476fd8jcnc8 (Tam: 7MB) Link Protegido Windows: http://lix.in/-d3c97c Link Protegido Linux (Debian): http://lix.in/-d5501d Scan Virus Total: https://www.virustot...sis/1363492837/ IP Changer: http://www.mediafire...6stsdskhljaa0c1 -Atenção- - Acc do God: admin/admin - LEIA o tópico antes de postar qualquer coisa ou duvida - Reportem se houver algum bug - Offline Train Level configurado no config.lua em levelToOfflineInBed - As estatuas de offline que ficam no templo não funcionam por serem enfeites - Para tirar o , previewer do nome, no config.lua em serverPreview mude para false - Todos os addons são vendidos menos o demon que o comedinha acabou esquecendo de coloca - Comandos personalizados: /ta - itens pro sv inteiro, /tp - locais do mapa, /p - tem na assinatura do comedinha ensinando, /e - abrir e fechar portal(open, close). - Para usar os portais você primeiro deve explorar a área indo até ela - Tem alguns segredinhos e lugares escondidos muito legais para vocês descobrirem - Favor, não usar o nosso distro sem o nosso consenso, obrigado. - Se você gostou, clique no ali embaixo ó
    1 ponto
  14. Avuenja

    Modern AAC por Avuenja V0.2

    Kon'nichiwa pessoal! Estou de volta é depois de um dia já tem uma atualização! Mais um conteúdo exclusivo XTibia.com Bom arrumei muita coisa bugada! Então vamos as Informações ou Chagelogs... Informações: v0.1 Arrumado algumas páginas Layout modificado Bootstrap inserido Traduzido algumas partes do front end Mais leve Contém psd do topo v0.2 Páginas melhoradas Traduzido 85% da front end System Guild Fixed implantado NO ERROS System Shop Fixed implato NO ERROS Bugs encontrados retirados Melhorado quase 80% a mais do que na v0.1 Bom ta melhorando aos poucos galera... Qualquer sugestão ou bug só reportar aqui mesmo, é que as vezes não lembro de tudo então... Imagens: Download: modernv0.2 Scan: modernv0.2 Créditos: Modern AAC Team Avuenja
    1 ponto
  15. LuckOake

    Partner System 2.0 [Atualizado]

    Olááá galera do Ékz. Esses dias o XTibia tá muito parado, não tem nem pedido direito pra atender, e no último Sds teve poucos scripts. Entããão resolvi postar um sisteminha que eu fiz com base num pedido em algum lugar da internet. É o Partner System. O que ele faz: Você chama um amigo seu para jogar o server, mas para dar um ânimo nele, você convida-o para ser seu Partner, e enquanto ele for abaixo de tal level (configurável, default 50), ele terá um bônus de EXP (configurável, default 10%). Assim que chegar no level limite, o bônus acaba. Motivos para usar o sistema? Ora, como já disse anteriormente, serve para animar o jogo do player, para incentivá-lo a jogar mais. Chega de blablabla e vamos ao script: Novidades: • Agora você pode aceitar ou rejeitar convites mesmo que a pessoa que te convidou esteja offline • Quando você convida alguém e ele rejeita ou aceita o convite com você offline, ao logar você recebe uma mensagem informando a decisão da pessoa. • Todos os bugs corrigidos Configurando: waittime = 24 -- Tempo de espera em horas para convidar alguém novamente storage = 4651 level = 100 -- Level necessário para convidar alguém maxlevel = 50000 -- Level máximo para alguém virar partner e para ter bônus de EXP maxp = 5 -- Maximo de partners que alguém pode ter rate = 1.1 -- Rate do bônus Uso: Player: !partner Fulano -- Fulano foi convidado Fulano: !partner aceitar ou rejeitar -- Fulano aceita ou rejeita o convite. Observações: 1) Todos os bugs corrigidos. 2) Funciona em TFS versão 0.3.6 pra frente. Créditos: LuckOake -- Pelo sistema Vodkart -- Pela ideia e ajudas
    1 ponto
  16. vital900

    [Arquivado]Mapping Show Off

    Bom, no meio desta reforma, usaremos aqui como o novo local de show off. Todos os mapas aqui foram feitos pela equipe do Medieval Realms Of Elysium. [20] Fotos [20] Fotos [11] Fotos
    1 ponto
  17. Gabrieltxu

    [Pokemon] Gabrieltxu Sem level 1.0

    Bom Galerinha Como presente trouxe esse Servidor que todos pediam. Gabrieltxu 1.0 sem level system. Não irei ir atualizando com frequência peso a todas pessoas que forem editar por favor me mandar as atualizações que vocês fazerem e me mandar, claro irei colocar nas Proximas versões com os devidos créditos. • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; └ Creditos. • Informações Basicas • • Edições / Ajustes • • Erros Do Servidor • • PrintScreen • • Download's • Download Servidor (4Shared): http://www.4shared.com/rar/acEE3SOw/Servidor_GabrielTxu_Sem_level_.html Download Client (4Shared): http://www.4shared.com/rar/SpEJX6j1/Client_GabrielTxu_sem_level_10.html • Creditos • Eu Gabrieltxu eo Slicer Stylo Maldoso por Ediçoes no map Exclusividade XTIBIA Não poste em Outro forum
    1 ponto
  18. Gabriel Couto

    Entrada de Tumba com Tar Pit

    Entrada de Tumba com Tar Pit Opa, beleza galera? Vou postar mais um tutorial de como se fazer uma entrada de tumba, para sua cidade desértica, usando tar pit, e outros diferenciais que podem deixar seu mapa inigualável (até agora!). Primeiramente, vou colocar meu vídeo fazendo o mapa. É legal que o acompanhem antes de lerem as instruções. Assim, vocês poderão, talvez, entender melhor!! Agora que você já viu o vídeo, podemos começar com o texto, que deverá ficar mais fácil agora de se entender! Comece seu mapa fazendo o chão com sand (areia), é claro, pois estaremos fazendo uma entrada criativa de tumba em deserto! Após pôr o chão de areia, coloque pequenos "bolinhos" de tar pit (id 708). Evite fazer coisas muito grandes, para dar passagem aos players do seu servidor. Agora, usaremos o raw palette para colocar as bordas de areia envolvendo o tar pit. Eu aconselho que você use as bordas que esfarelam (id 4760 até 4771), pois ficam mais bonitas em visual. Mas você também pode optar pelas comuns (id 4772 até 4783). Além disso, você agora irá criar a entrada da tumba. Você pode usar um cave hole, claro, mas ficará mais criativo usando duas escadas. As de id 411 são as que mais se encaixam com o perfil do local (Para o andar inferior, use as escadas que vão do id 1398 até 1405). Também faça o contorno delas, com as sandstone boards (id 778 até 789). Elas possuem "dois lados". Você pode escolher à vontade qual quer usar! Agora, um detalhamento bem fácil e criativo, que sim, qualquer um poderia fazer, é super bobos, mas poucos possuem essa ideia, ou até conhecem o que utilizarei agora! Coloquei 4 estátuas de id 1451 "contornando" as escadas, o que dá um tom muito legal e até um pouco místico à entrada. Você pode trocá-las ou até usar juntas com as de id 1450! Também coloquei várias ornate tombstones, procurando deixar todas perto do tar pit. Os ids são 12950, 12951, 12956 e 12957. Esse item, por ser meio novo, talvez deva ser pouco conhecido, é um diferencial e tanto! Agora, é fazer o detalhamento do mapa. Como vocês viram o que fiz, através do vídeo, irei postar somente os ids usados, com suas respectivas indicações Pedrinhas Andáveis: 3610 até 3614. Mangrove Seco: 5396. Tufo de Grama Seco: 10740. TrollHair (Grama/Planta Alta Seca): 10741. Cactos: 2727+. Gravel Debris de Areia: 8033 até 8045. Pedras "Coloridas": 1290+ e 1358+. Esses são os itens essenciais. Os que não citei, foram adicionais para deixar o mapa mais bonito, mas que são facilmente encontráveis! Espero que tenham gostado, e que apertem o botãozinho curtir aqui no canto! Abraços, espero ajudar mais em breve! Att, Anyur.
    1 ponto
  19. Galera, estou com um probleminha ... estou refazendo um layout para gesior pelo bootstrap igual ao layout do shadowcores, mas queria um header para usar ele no meu ot. Alguém poderia me ajudar? Outra imagem de fundo, mas sem perder a base, e com o nome Extreme - Styller... DOU REP+, Obrigado!
    1 ponto
  20. Avuenja

    OTA Web - Show off

    OTA Web Olá pessoal, sou Marcelo Carvalho, e cuido da parte de web do nosso querido OTAvatar(OTA), aqui você poderá acompanhar algumas imagens do nosso site e afins... Fiquem ligados! xD Ai pessoas, fiz o 1° planejamento do site no PhotoShop. É apenas versão de visualização, e mudanças podem ocorrer! Ainda não há todas as funções, mas é uma base legal! Planejamentos de design: Até breve pessoal com mais informações do OTA Web!
    1 ponto
  21. Alexclusive

    OTA Web - Show off

    Bem maneiro Avu...ta ficando profi na coisa heim!
    1 ponto
  22. Avuenja

    [Encerrado]OTAvatar Voltou !

    3° Planejamento - Por Avuenja Obs: 2° Planejamento - Por Ozai - Ainda sendo feito!
    1 ponto
  23. Overpower

    Anyur's Art Place

    Mophus, não liga. Anyur, achei que poderia ter trabalhado melhor na iluminação e preencher com alguma coisa aquele espaço vazio atrás da render.
    1 ponto
  24. Alexclusive

    Street Fighter em formas básicas

    Imagina o rascunho disso ai tudo....kkkkkkkkkkk
    1 ponto
  25. Legnus

    [Encerrado]OTAvatar Voltou !

    Opa, gogo. ^^
    1 ponto
  26. Erimyth

    Se conectando em um VPS Windows

    Ola Amigos Xtibianos. Hoje trago a vocês um Tutorial explicando facilmente como se conectar em um VPS Windows, o VPS usado hoje sera o Windos Starter da Empresa ServerSoft, bom espero que gostem vamos la. Passo 1.0 Primeiramente Vamos ao Botão Iniciar no Seu Windows. e na barra " Pesquisar programas e Arquivos " Digite a seguinte frase: " Conexão de área de Trabalho Remota " assim você ira localizar o sistema que ira utilizar para se conectar ao VPS como mostra a Imagem abaixo. Passo 2.0 Quando você Localizar a Conexão de área de Trabalho Remota clique sobre ela, e uma nova janela ira aparecer, nessa nova janela você ira Colocar o IP do VPS que a empresa lhe passou após contratar o serviço. Exemplo: Passo 2.1 Após colocar seu IP Clique em Conectar, e aguarde aparecer a tela de Login. Nela coloque seu Password, que também foi Informado a você após contratar o serviço, este password ou foi escolhido por você ou pela empresa e foi enviado Juntamente ao IP através do seu e-mail de contato cadastrado no site. Exemplo: Após digitar seu Password clique em OK e aguarde a conexão. Prontinho amigo, você já esta conectado ao Seu VPS Windows. Foi super Fácil né? espero poder ajudar a você em tirar suas duvidas com a Conexão em Windows. Segue uma Imagem da área de Trabalho Remota.
    1 ponto
  27. caotic

    CTLua 1.0

    Tão lembrando do ctlua aquele codigo que com lua executa o mesmo funcionamento de uma linguagem. Pois é eu resolvi fazer uma coisinha superior: Codigo: Example code: --function print ["oi hear"["ola"["verdade"; --function print ["oi"; --loopCT [4 [y++ [{--function print [y}; --gets [7 > 6 / 8 > 2 [{--function print ["oi"}; --var [a ["variavel"; --function print [a; --declarefuncvar [ab [{--function string.sub ["oi" [1 [1}; --function print [ab; --newfunc [newp [x/s [{--function print [x/--function print [s}; --function newp ["oi" ["YEAR"; --condloop [4 [[1 > 1 [{--function print [y}; Confira o debbuger para testar osscripts: CTLUA.rar
    1 ponto
  28. LuckOake

    Sistema anti-pega-e-corre (quest)

    90% dos jogos de rpg fazem isso(muitos mmorpg tbm)... @warotserv anyway, seria melhor se o cara so pudese abrir o bau após matar os mobs, porque n faz sentido vc abrir o bau e receber apenas depois de certo tempo. e já que vc fez um comentario falando sobre ensinar alguma coisa, deveria pelo menos saber o que é uma quest e o que uma treasure chest, são coisas bem differentes.... Falei "quem quiser fazer um servidor bem profissional". No caso, tô me referindo a Tibia, outros MMO não entram nesse quesito. Se você dissesse "90% dos servidores de Tibia", aí eu já digo: Por isso disse "quem quiser fazer um servidor bem profissional". 90% dos servidores existentes de tibia são só coisas zoadas mesmo. E de qualquer maneira, galera, vamo parar de discussão. Vocês já tão brigando por opinião, que é bem errado por ser algo subjetivo, que varia de cada um pra cada um.
    1 ponto
  29. function onStartup() local count,cleanup = 0, { {level = 11, time = 5 * 24 * 60 * 60}, {level = 50, time = 15 * 24 * 60 * 60}, {level = 100, time = 30 * 24 * 60 * 60}, {level = 200, time = 60 * 24 * 60 * 60}, {level = 300, time = 90 * 24 * 60 * 60} } for i = 1, #cleanup do if db.executeQuery("DELETE FROM `players` WHERE `level` < ".. cleanup.level .." AND `id` > 6 AND `group_id` < 2 AND `lastlogin` < "..os.time() - cleanup.time) then count = count + 1 end end if count > 0 then local text = ">> [DBCLEANUP] "..count.." inactive players have been deleted from database." print("" .. text .. "") local file = io.open("data/logs/db_cleanup.txt", "a") file:write("\n[".. os.date("%d %B %Y %X ", os.time()) .."] "..text.."") file:close() end return true end
    1 ponto
  30. Marok

    [Encerrado]OTAvatar Voltou !

    Muito interessante! Curti o sistema, você tem mais informações sobre? Este mapa está com alguns bugs.
    1 ponto
  31. mkbrabsolute

    Help VPS

    Parece ser boa a máquina caso esse E3 seja o Xeon V3 e tenha realmente 1GBPS de uplink bruto para conexão. Qual a empresa amigo? Parece valer a pena, roda seu mapa tranquilo sem usar muito CPU. Tenha um excelente dia! Ajudei? REP+
    1 ponto
  32. LuckOake

    Sistema anti-pega-e-corre (quest)

    Tamanho de script não representa qualidade. Isso, por maior que fique, vai apresentar apenas alguns milissegundos de diferença, imperceptível para o jogador. Poderia ser reduzido? Sim, poderia. Mas muitas vezes é até melhor ficar grande por uma questão de organização. É perfeitamente possível fazer um script de teletransportar um jogador até uma coordenada específica, cobrando dinheiro e verificando level em apenas um único return. Mas fazer isso deixaria o script deveras desorganizado. E se o dono do server quer criar um servidor bem profissional, bloquear as saídas ficaria meio gambiarra, o que não é muito legal.
    1 ponto
  33. Kluivert

    ajuda Woe plx

    1- Isso e duvida de website ! 2- Esta na área errada ! 3- O nome do tópico tem que esta relacionado com sua duvida/pedido !
    1 ponto
  34. actions/scripts/ Spoiler local premios = { --[ACTIONID] = {ID DO ITEM, QUANTIDADE}, [2222] = {1245, 1}, [3333] = {1245, 1}, [4444] = {1245, 1}, } local sto = 53599 --storage de completar a quest function onUse(cid, item, frompos, item2, topos) if getPlayerStorageValue(cid, sto) >= 1 then return doPlayerSendTextMessage(cid, 27, "You already completed this quest!") end local premio = premios[item.actionid] doPlayerAddItem(cid, premio[1], premio[2]) setPlayerStorageValue(cid, sto, 1) doPlayerSendTextMessage(cid, 27, "Congratulations, you have completed this quest!") return true end tag: <action actionid="xxxx" event="script" value="yyyy.lua"/> Se ajudei REP+
    1 ponto
  35. tem sim amigo Vou te dar uma solução não é aconselhavel, caso cause lag no servidor tire-o. Esse script vai salvar o próprio player a cada meio segundo. Vai em data/creaturescripts/scripts, cria um arquivo e nomeia pra "playersave", sem as aspas e nele cole: function onThink(cid, 10) doPlayerSave(cid, true) return true end Em creaturescripts.xml poe a tag: <event type="think" name="PlayerSave" event="script" value="playersave.lua"/> E no login.lua, antes do último return true: registerCreatureEvent(cid, "PlayerSave") Se Ajudei REP+
    1 ponto
  36. Tonynh

    CAPA PARA FACEBOOK

    uhauhauh... obrigado! foto do perfil pra acompanhar o set =) #Mophus Pode deixar que eu ou o cmgabriel movemos os tópicos =)
    1 ponto
  37. Omega

    Knight ganhar item da arena

    function getPlayerTopMeleeSkill(cid) local skill = 0 local value = 10 for i = 1, 4 do if getPlayerSkillLevel(cid, i) > value then value = getPlayerSkillLevel(cid, i) skill = i end end return {skill = skill, value = value} end function isKnight(cid) local knight = {4, 8} if isPlayer(cid) then return isInArray(knight, getPlayerVocation(cid)) end return false end function onAdvance(cid, skill, oldLevel, newLevel) if not isKnight(cid) then return true end if getPlayerTopMeleeSkill(cid).skill > 3 then return true end local weap = {7415, 7390, 7434} if skill == 8 and newLevel >= 60 and getPlayerStorageValue(cid, 876125) == -1 then local topskill = getPlayerTopMeleeSkill(cid) if doPlayerAddItem(cid, weap[topskill.skill], 1, false) then doPlayerSendTextMessage(cid, 25, "Parabens, voce ganhou uma arma especial por passar do level 60!") setPlayerStorageValue(cid, 876125, 1) end end return true end Tá funcionando agora?
    1 ponto
  38. Mophus

    Anyur's Art Place

    masoq No collage você colocou bastante coisa, mas coisas desnecessárias e deixou espaços bem vagos, reparando fixamente. E reparando as duas, você não mexeu na iluminação. Mas ficou legal, continue treinando e parabéns UAehUAHEUAHEUAHEUAHEUAHEUAA q nada a ver UAHEUAHEUAEHUEHAEAUHAEU até parece que sabe de algo... opiniões é proibido agora no xtibia?
    1 ponto
  39. @Kenny TAG globalevents.xml <globalevent name="Loteria Aleatoria" interval="180000" event="script" value="loteriarandom.lua"/> Arquivo loteriarandom.lua
    1 ponto
  40. Vmspk

    Azeroth Server Updated

    Azeroth Server Updated 14/07/2011: v1.0 Outras Versões: v1.1 [8.60]: http://www.xtibia.co...oth-rpg-reborn/ v2.0 [9.60]: http://www.xtibia.com/forum/topic/205054-960-azeroth-rpg/ Versão: 8.70 Distro: Crystal Server Mapa Base: Yourots Edited e Mix Yourots Features: > 7 Cidades: Azeroth Avalon Zatur Liberty Bay Gloria Sand Trap Tiquanda > Montarias por quest(NPC Mount Master, cavernas ao norte de Azeroth). > NPCs de Travel/Boat diferentes para cada cidade. > Corrigidos Vários Bugs do mapa. > Templo Reformado > Retirados Vários Itens custom e suas quests do antigo Riot Server. > Adicionada Dragon Dungeon. > Adicionado Vulcão de Goroma. > Adicionada Quest Especial em Gloria (NPC Gloria Scientist). > Adicionada Ferumbras Tower. > Várias Hunts adicionadas. > Adicionada Formorgar Mines. > Sistema de Refinamento e Slot. > 6 Novas Mounts. > Principais Quests: Annihilator Pits of Inferno The Inquisition FireWalker Boots Demon Helmet Draken Hell Conquer > 23 Raids Automáticas e configuradas: > Sistema de Guerras pelo Castelo [Honor Castle, a oeste de Azeroth] Evento automático. Quando a guerra é anunciada as guilds podem batalhar pelo controle do castelo, dando use no monumento do último andar e permanecendo assim até a guerra acabar. O último jogador a ter o controle do castelo antes do tempo acabar será o vencedor, e sua guild se tornará dona do castelo. Todos os membros da Guild ganharão uma recompensa e poderão acessar o mapa do subsolo. Os membros de outras Guilds serão teleportados para o templo e não poderão acessar o castelo. O sistema envia mensagens a todos antes de o evento começar, quando começar, quando o dono do castelo muda, antes de se finalizar e ao finalizar, relatando o conquistador do castelo e a guild vencedora. Imagens: Raids Castle Upgrade & Slot System Não há teleports diretos para hunts ou quests. Não há items ou monstros editados(além dos trainers). Não há sistema VIP(premium account valorizada). Não há raids com monstros excessivamente fortes nas cidades iniciais. Acc God: 2/password Créditos:Unknow YourOts Edited, Mix Yourots Team, Crystal Server Team, Tryller, Mock, TFS Team e um pouquinho (bem pouquinho) pra mim xD. Source - IP Changer 8.70 - Utilitários(opcional) - Map Editor *Utilitários inclui: Lista com códigos de todos os looktypes, SQLite Studio 1.1.1, códigos das cores dos outfits e o OTRestarter. Download Azeroth Server V 1.0 - Completo [MEDIAFIRE] Comandos: !war para executar a guerra pelo castelo manualmente, !reset para interromper o funcionamento da war e !castle para limpar todos os dados, ou seja, o castelo volta a ser terra de ninguém. V 0.2 V 0.3 V 0.4 V 1.0 Último pedido meu: encham o saco dos adms pra colocarem o tópico do tryller como fixo. É o melhor distro 8.70 que nós temos aqui, talvez ele salve os ots 8.70 daqui pra frente Contato: vmspk@hotmail.com Edit - Coloquei os Scans Edit2 - Adicionado comando Edit3 - Atualização Edit4 - Atualização http://img208.images...claymorepsf.jpg
    1 ponto
  41. BananaFight

    OtClient - Tutorial Básico #2

    OtClient - Tutorial Básico #2 Aula 2: Editando mod/Modules Parte 2 Hoje estarei me especificando mais com as janelas matrizes ou raízes como preferirem. Passo 1: Conhecendo as matrizes Irei mostrar 2 matrizes para vocês que são as únicas que vi até agora dentro dos códigos do OtClient (Isso não quer dizer que não possam existir novos modelos) Modelo 1 : MainWindowModelo 2: MiniWindow Cada um desses 2 modelos tem um jeito diferente para ler o código. No Modelo 1, ele é mais simples, Pois você só precisa mostrar a janela que irá ser criada dentro dele, como no exemplo: MainWindowid: tutorialWindow!text: tr('Tutorial')size: 150 150Buttonid: tutorialbutton!text: tr('Ok')anchors.top: parent.topanchors.left: parent.leftanchors.right: parent.right Como podem ver é um jeito mais simples e pratico de fazer os códigos, Porem, esse tipo de janela não "Gruda" nos painéis direitos e nem esquerdos. Já no Modelo 2, as coisas ficam um pouco mais complicadas como por exemplo, o código tem que ser escrito de uma maneira diferente para que funcione corretamente, Mais também tem as suas vantagens, como, botão de fechar e minimizar automático icones ao lado do titulo entre outros, agora vamos ver alguns exemplos: 1° vou dar um exemplo de codigo '.lua', para se usar com a matriz MiniWindow E agora 1 exemplo de código .otui usando MiniWindow de forma errada MiniWindowid: tutorialWindow!text: tr('Tutorial')size: 150 120@onClose: onMiniWindowClose()&save: trueButtonid: tutorialbutton!text: tr('Ok')anchors.top: parent.topanchors.left: parent.leftanchors.right: parent.right E agora 1 exemplo de cósigo .otui usando MiniWindow escrito certo TutorialButton < Buttonid: tutorialbutton!text: tr('Ok')anchors.top: parent.topanchors.left: parent.leftanchors.right: parent.rightMiniWindowid: tutorialWindow!text: tr('Tutorial')height: 150@onClose: onMiniWindowClose()&save: trueMiniWindowContentsTutorialButton Agora vamos intender o porque dessa forma mais complicada. 1° para que o MiniWindow funcione corretamente ele precisa da função 'MiniWindowContents' dentro dele, dentro dessa função existem duas formas de adicionarmos itens, que são elas: 1° TutorialButton < Buttonid: tutorialbutton!text: tr('Ok')anchors.top: parent.topanchors.left: parent.leftanchors.right: parent.rightMiniWindowid: tutorialWindow!text: tr('Tutorial')height: 150@onClose: onMiniWindowClose()&save: trueMiniWindowContentsTutorialButton 2° MiniWindowid: tutorialWindow!text: tr('Tutorial')height: 150@onClose: onMiniWindowClose()&save: trueMiniWindowContentsButtonid: tutorialbutton!text: tr('Ok')anchors.top: parent.topanchors.left: parent.leftanchors.right: parent.right Dos dois modos estão certos, mais é importante lembrar que você também pode usar as duas maneiras juntas como no exemplo: TutorialButton < Buttonid: tutorialbutton!text: tr('xD')anchors.top: prev.bottomanchors.left: parent.leftanchors.right: parent.rightMiniWindowid: tutorialWindow!text: tr('Tutorial')height: 150@onClose: onMiniWindowClose()&save: trueMiniWindowContentsButtonid: tutorialbutton!text: tr('Ok')anchors.top: parent.topanchors.left: parent.leftanchors.right: parent.rightTutorialButton Você também pode adicionar um icone na MiniWindow, como exemplo: MiniWindowid: tutorialWindow!text: tr('Tutorial')height: 150icon: /images/topbuttons/skills@onClose: onMiniWindowClose()&save: true Lembre-se que '/images/topbuttons/' é o diretório onde o ícone tá, e 'skills' é a imagem. Bom, esse é um tutorial mais básico só para apresentar as 2 Janelas matrizes ( Eu só conheço esses 2 modelos "Main, Mini" e não sei se existem outros.) e ensinar um pouco da diferença e das vantagens entre usar uma e outra. Passo 2: Adicionando funções aos botoes Bom até agora eu só mostrei os botoes mais ainda não ensinei a fazer eles executarem outra funções, e é isso que eu estarei ensinando agora. Existem diversas formas de um botão executar uma função, Você pode criar essa função no arquivo.lua caso ela seja mais complexa ou pode fazer elas direto no arquivo.otui. Tenha em mente, que não irei ensinar a criar funções, só estarei ensinando a como fazer um botão executar ela. Vamos pegar nosso botão Buttonid: tutorialbutton!text: tr('Ok')anchors.top: parent.topanchors.left: parent.leftanchors.right: parent.right Aqui nesse exemplo, o botão é criado mais não tem nem uma função pre definida, ou seja, mesmo que clicando nele nada irá acontecer. Agora vamos fazer uma função dento do arquivo.lua para que o botão execute function sendBottom()return g_game.talk('Nossa Funcionou')end Quando a função sendBottom for executada o jogador vai falar "Nossa Funcionou" Agora vamos fazer o botão executar ela usando esta função @onClick: a função onClick vai ser executada quando alguém clicar no nosso botão, Agora vamos adicionar ela no nosso botão e adicionar o parâmetro que ela deve executar. Buttonid: tutorialbutton!text: tr('Ok')anchors.top: parent.topanchors.left: parent.leftanchors.right: parent.right@onClick: sendBottom() Pronto agora nosso botão vai executar o que lhe foi programado, Porem por ele executar uma função simples podemos simplificar ainda mais o que nosso botão deve fazer deixando assim: Buttonid: tutorialbutton!text: tr('Ok')anchors.top: parent.topanchors.left: parent.leftanchors.right: parent.right@onClick: g_game.talk('Nossa Funcionou') Ele irá fazer a mesma coisa que a função sendBottom() porem não precisamos criar nada dentro do arquivo.lua
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...