Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 01/14/15 em todas áreas

  1. Testado em: TFS 0.4 8.60. Otclient 0.6.3. Descrição: O player só poderá entrar no seu otserver com este mod, caso contrário, levará um kick bonito Bom galera, criei este mod para ajudar um membro do fórum que, quer que seu server só seja acessado com um otclient dele, então, vamos ao mod. Vá na pasta do seu otclient e entre na pasta mods, lá, crie outra pasta, chamada exclusiveclient, nesta pasta, crie um arquivo com o nome exclusiveclient.lua e coloque isso dentro: function init() connect(g_game, 'onTextMessage', serverComunication) connect(g_game, { onGameEnd = hide } ) end function terminate() disconnect(g_game, { onGameEnd = hide }) disconnect(g_game, 'onTextMessage', serverComunication) end function serverComunication(mode, text) if not g_game.isOnline() then return end if mode == MessageModes.Failure then if text:find("$@$ExclusiveClient") then g_game.talk("/$@$exclusive$@$") end end end Feche e salve o arquivo. Ainda na mesma pasta, crie um novo arquivo chamado, exclusiveclient.otmod (lembrem-se da extensão sempre, exemplo: login>.lua<) No exclusiveclient.otmod coloque isto dentro: Module name: Exclusive Client description: author: Snowsz website: autoload: true autoload-priority: 1000 scripts: - exclusiveclient.lua @onLoad: init() @onUnload: terminate() Após isso, feche e salve o arquivo, não é só isso, agora iremos mexer no seu servidor, vá na pasta data/creaturescripts/scripts e abra o login.lua, coloque isso antes do ultimo return true. addEvent(doPlayerSendCancel, 100, cid, "$@$ExclusiveClient$@$") addEvent(doPlayerSendCancel, 200, cid, " ") addEvent(function() if getPlayerStorageValue(cid, "exclusive") <= 0 then doRemoveCreature(cid) end end, 500) Após isso, feche e salve o arquivo, agora, crie um novo arquivo nesta mesma pasta, chamado exclusivelogout.lua, nele coloque isto dentro: function onLogout(cid) setPlayerStorageValue(cid, "exclusive", -1) return true end Feche e salve o arquivo, agora, vá em data/creaturescripts/creaturescripts.xml e coloque esta tag: <event type="logout" name="ExlusiveLogout" event="script" value="exclusivelogout.lua"/> Após isso, vá em data/talkactions/scripts e crie um arquivo chamado exclusive.lua, coloque isso dentro: function onSay(cid, words, param) setPlayerStorageValue(cid, "exclusive", 1) return true end Feche e salve o arquivo, vá em data/talkactions/talkactions.xml e coloque esta tag: <talkaction log="no" access="0" words="/$@$exclusive$@$" event="script" value="exclusive.lua"/> Feche e salve o arquivo, pronto, sistema instalado, espero que gostem Créditos: Snowsz
  2. A Importância do OTServer

    Pepeco e 3 outros reagiu a Asp Amaral por uma resposta no tópico

    4 pontos
    E ae? Como vai? Eu estou ótimo, obrigado. Tenho 23 anos e comecei a entrar em contato com otserver em 2007 (se não me falha a memória). Estive pensando sobre esse tópico há dias e gostaria de colocar para vocês a minha reflexão sobre a importância de um otserver na vida de uma pessoa. Isso não se restringe à minha vida, mas de pessoas que venho acompanhado... hora de longe, hora de perto... alguns colegas e amigos que fiz em toda a comunidade de otserver (não estou me referindo só às comunidades brasileiras). Tibia sempre será um grande clássico dos MMORPGS. Um dia ele acabará, como tudo na vida. Conheço muita gente e tenho muitos amigos que já jogaram Tibia. Alguns jogam até hoje. Aposto que essa situação se repete para quase todos de vocês aqui. Para aqueles que tiveram Tibia como o primeiro MMORPG instalado no computador, sabe como ele é marcante. E então venho falar sobre outra coisa marcente: os otservers. Os otservers possibilitaram que o universo fantasioso estivesse em nossas mãos de forma mais facilitada. Com a criação de um otserver ou mesmo a reprodução de um que seja quase idêntico ao Tibia (pois nenhum otserver é), sentimos que somos poderosos... pois o universo paralelo de games está em nosso domínio (não diria controle porque sempre acontece alguma coisa que a gente não quer ou não conseguimos editar o suficiente para deixar como queríamos por falta de conhecimento). É o primeiro passo que damos como o empreendedor, como o criador, como o Game Master. A partir de então as pessoas interessadas nesse mundo começaram a se conectar com áreas mais especializadas pois queriam montar o seu próprio universo... Alguns gostaram de fazer o mapa, outros gostaram de programar, outros gostaram de escrever histórias, outros gostaram apenas de administrar o servidor, outros gostaram de fazer sprites, outros gostaram de jogar e viver um mundo fantasioso que recobre a vida e injeta adrenalina no nosso corpo, justamente porque estamos imersos nesse universo do jogo. O que vejo é que muitas pessoas se colocam a disposição de ter um otserver, mas poucos realmente aprendem sobre o funcionamento, sobre a programação, sobre como fazer um mapa de qualidade ou sprites de qualidades... ou até mesmo um site de qualidade. Utilizamos sempre os modelos e aquilo que está mais acessível, pois o humano segue a lógica do mínimo esforço (e garanto que é uma lógica excelente, mas isso fica para um outra discussão mais filosófica/espiritualista). As pessoas que tem uma certa ligação com algumas áreas acabam conseguindo aprender sozinhas, como na real funciona o ensino. As escolas nada mais fazem do que jogam o conteúdo e pedem pro aluno ler o livro texto e fazer os exercícios. O professor tenta desenvolver a lógica de tudo, mas normalmente as aulas são desinteressantes! Será realmente que as escolas nos fazem aprender e montar uma lógica sobre tudo e de como tudo funciona, de forma que anos depois que você leu sobre o funcionamento do rim você saiba chegar ao que a escola teoricamente ensinou? Se não existe lógica no ensino, não existe aprendizado. Isso é um ponto importante da nossa conversa, mais pra frente vocês verão o porquê. Eu não culpo aqueles que não conseguiram aprender a programar, nem aqueles que não conseguiram deixar o servidor online por mais de um mês sem sofrer um ataque e consequentemente desistirem de Otserver ou até mesmo simplesmente abrirem mão de querer aprender para fazer um servidor de qualidade. A gente vai pra escola por obrigação muitas vezes e sentar para ler e aprender se torna chato. Quando você tem que se deparar com um livro de conceitos básicos de programação, você desiste a não ser que você tenha muito interesse por aquilo. Alguns querem fazer um servidor só para amigos (como fiz muitas vezes), mas acaba que um amigo convida outro amigo, que convida outro amigo e de repente seu servidor tem pelo menos 50 pessoas jogando. O número então só cresce se o servidor estiver divertido. Pois bem... Mas porque o otserver é tão importante na vida de uma pessoa? Para muita gente foi nesse mundo que começamos a ter contato com a nossa vocação ou com aquilo que fazemos hoje (digo isso por muita gente que conheço). Dessa escola chamada Otserver saíram game designers, programadores, administradores, matemáticos, designers, artistas, jornalistas, escritores. Conheço muita gente que iniciou seu contato com alguma dessas profissões aqui e hoje está vivendo com isso. Então temos aqui uma escola. A comunidade de otservers é uma escola disfarçada, das mais divertidas escolas, pois lida com a nossa criatividade, com a nossa imersão em uma realidade paralela: somos empreendedores do nosso próprio universo paralelo. Seguindo raciocínio... pensem comigo... Se um dos mais clássicos jogos de MMORPG é Tibia e se otserver é uma clássica ferramente para criar um MMORPG... estamos falando de uma das mais importantes escolas. Obviamente que nem todo mundo segue o mundo que aqui descobriu (como um amigo meu que era programador, pois aprendeu na comunidade otserver a programar e acabou entrando em medicina e assim segue sua vida)... Não existe regra dizendo "todo membro da comunidade otserver terá sua vida alavancada e direcionada por alguma profissão que envolva a criação de otserver", mas existe um movimento de convergência das quais as pessoas passam depois de entrar em contato com essa escola. Pensando que aqui temos uma escola divertida, gostaria de deixá-la mais divertida ainda com uma ideia que tive. Por que a comunidade de otserver não pode ter um próprio otserver de ensino? Em que eu possa entrar em um jogo para aprender mais sobre o próprio jogo e seu funcionamento? A minha ideia é: temos um material excelente aqui que pode servir para ficar ainda mais importante para as nossas vidas... Se for ainda mais divertido a mexer com otserver e ainda mais divertido aprender sobre o seu funcionamento, talvez mais pessoas sejam "tocadas" por esse mundo de criação de games... Logo o conteúdo circulado nas comunidades se tornam ainda mais relevantes e importantes. Assim, talvez mais programadores possam ser "formados" pela comunidade... mais "mappers" e "spriters" (arquitetos e artistas), mais designers etc. Vi um tópico a respeito de organizar o material de servidores alternativos... muito boa a iniciativa, mas se tivermos mais pessoas engajadas e realmente com conhecimento sobre o assunto seria ainda mais efetivo. E por que não ensinar de uma forma ainda mais divertida? Uma forma ingame? Talvez, essas pessoas que gostam de postar e ajudar as outras (porque sabem do benefício que isso faz como pessoa), pudessem se unir para montar uma plataforma interativa de ensino... Talvez aprender a programar ingame seja mais divertido, talvez aprender a fazer um mapa ingame seja mais divertido... talvez escrever uma história e reunir pessoas para reproduzir esse rpg seja mais divertido ingame. Apenas uma reflexão da importância do otserver e uma proposta de ensino diferenciada sobre os conteúdos que aqui se aprensetam. O que acham? Muito maluca essa ideia? Otservers realmente podem ser importantes para a vida de uma pessoa? Postem algum comentário sobre de história de vcs sobre o contato com otserver.. se realmente é importante para vc... De qualquer forma, tudo que escrevi pode ser apenas uma besteira da minha cabeça junto de ideias que tive esses dias... mas sei que de ideias assim, novas pessoas podem ter ideias realmente coerentes e significativas. Abraço a todos. PS.: Decidi postar esse tópico também em outra comunidade, pois gostaria de compartilhar da ideia com um maior número de pessoas...
  3. pack styles

    Snowsz e 3 outros reagiu a Beeny por uma resposta no tópico

    4 pontos
    Mediafire se pedir alguma senha : beenytibiaking
  4. Remake Sprite PokeBalll (poketibia)

    Kazov e 2 outros reagiu a rydeofsky por uma resposta no tópico

    3 pontos
    Ola galerinha, venho aqui postar algumas balls para vcs http://imgur.com/iWzKEIq se ajudei deixa um rep+ vlw Créditos : ----------- (não sei quem as fez) link mediafire: https://www.mediafire.com/?g8n3ivae8n3babc
  5. Free Avatars

    Raphael Darkath e 2 outros reagiu a Beeny por uma resposta no tópico

    3 pontos
    fala seus puto. tava pensando em algo para ajudar o fórum e vi que a maioria dos doido não usa avatar. aí eu fui fazendo uma pa de avatar pra postar aqui, e tal aí eu vou atualizando com o tempo se alguém quiser ser útil para algo, e quiser ajudar a ideia. ficaria feliz pra peste. é, tá tudo meio bosta mesmo mas pra quem não tem nada, tá ótimo abraços
  6. [MODERN AAC] Naruto White

    Lincoln123123 e um outro reagiu a Beeny por uma resposta no tópico

    2 pontos
    Acredito que todos já tenham visto esse layout no ntoot.com e não, eles não tem crédito nenhum nisso aí. O administrador pagou pra um doente nukar o OT, e ele só parava se mandar o site ç.ç Anyway, tá aí •Imagens •Download Mediafire •Créditos Beeny TFS Team Matheus Gogo TK !
  7. Download Muitos Pokemon Megas

    MarleyJr e um outro reagiu a Drazyn1291 por uma resposta no tópico

    2 pontos
    Eae galera hj eu vim postar um .spr que tem muitos pokémons mega mais ou menos 36 pokémons mega com outros items ta ai uma lista dos pokemons que tem : Algumas Imagens no final do tópico Download : https://mega.co.nz/#!JJZBSDrA!cgWBL7x9G4dzyOOCi4947OYFdcdFMRI8bvxfyYrE5qI Scan : https://www.virustotal.com/pt/file/d4a5ebcf78b51914540034e077a4dfbc61fa763f70002417ead3fd0dba4bd6f9/analysis/1420069094/ Creditos : eu Por procurar por varios clients e tals Pxg por criar as sprites e uns mulek por te feito algumas sprites
  8. 2 pontos
    Olá pessoal, estou fazendo esse tutorial a pedido de admelite no meu tópico como um tutorial é algo fácil e rápido de fazer (dependendo do tema) eu me propus a fazer: Esse tutorial é bem simples, porém não se encontra no TibiaKing, acho que o motivo é a sua simplicidade, e ele pode ajudar a qualquer um que esteja começando agora a criar um servidor tibia OTserver. Ok chega de lorotas, vamos começar: De nada adianta você querer adicionar uma spell, se você não sabe fazer uma, por isso, eu recomendo que veja pelo menos dois tópicos do fórum antes de ver este: http://www.tibiaking.com/forum/topic/7448-criando-spells-para-seu-servidor/ http://www.tibiaking.com/forum/topic/48868-spell-creator/ O principal a se saber antes de eu começar é: que quase todos os scripts ou sistemas do tibia, sejam eles de creaturescripts ou actions ou qualquer coisa, precisam ser registrados em um XML, para serem carregados ao OTserver ligar ou carregados ao GOD dar o comando /reload (param), não esquecendo também que os scripts são extremamente necessários, sem uma das duas partes, seja XML ou seja SCRIPT, não será possível utilizar o script no servidor. Nota: XMLs: Os XMLs, são arquivos com a extensão XML e servem para mostrar ao servidor o que carregar, como se fosse um indicador. Vou usar o exemplo de um XML de spells... Todos os XMLs precisam ser abertos e fechados internamente, o xml da Spells é aberto com <spells> e é fechado com </spells> E todas as spells, devem ser inseridas em baixo de um </instant> , exceto a primeira de uma aba, que pode ser criada assim: <!-- Aba --> o </instante> serve para separar o começo da nova spell do final da spell anterior, ele é de extrema importância, se não você irá bugar 2 spells. <instant name="Death Strike" words="exori mort" lvl="16" mana="20" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/death strike.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="5"/> <vocation id="6"/> </instant> Legenda: Linguagem binária: Usa-se 0 para não e 1 para sim ! instant name = Nome da magia. words = Palavra para chamar a magia. lvl = Level mínimo para usar a magia mana = Mana que gastará a magia. prem = Se precisa de premmium para usar a magia. range = Distância (em sqm) da magia casterTargetOrDirection = Seguir alvo ou direção. blockwalls = Não passará paredes. exhaustion = Tempo para repetir a magia. (em mili segundos cada 1000 é 1 segundo) needlearn = Se precisa aprender para usar a magia event = Sempre use script, não interessa a function agora... value = Onde se encontra o script vocation = Vocação para usar a magia. Vocations: Nos servidores normais: Rookie = 0 (qualquer um pode usar) Sorcerer = 1 Druid = 2 Paladin = 3 Knight = 4 Master Sorcerer = 5 Elder Druid = 6 Royal Paladin = 7 Elite Knight = 8 Agora se você quer adicionar uma nova spell no seu XML, suponhamos que seja assim o seu XML: <?xml version="1.0" encoding="UTF-8"?> <spells> <!-- Suas spells --> <instant name="Death Strike" words="exori mort" lvl="16" mana="20" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/death strike.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="5"/> <vocation id="6"/> </instant> </spells> Para adicionar simplesmente fazemos isso: <?xml version="1.0" encoding="UTF-8"?> <spells> <!-- Suas spells --> <instant name="Death Strike" words="exori mort" lvl="16" mana="20" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/death strike.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="5"/> <vocation id="6"/> </instant> <instant name="Death Strike" words="exori mort" lvl="16" mana="20" prem="1" range="3" casterTargetOrDirection="1" blockwalls="1" exhaustion="2000" needlearn="0" event="script" value="attack/death strike.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="5"/> <vocation id="6"/> </instant> </spells> Veja como o </instant> no final das spells, serve para dividi-las. Aviso: De nada serve adicionar a spell ao XML se não tiver o SCRIPT a tag no XML é simplesmente para avisar ao otserver que tem um conteúdo, ou seja, de nada vai servir avisar que tem, se não tiver, só dará erro na distro e dor de cabeça. Créditos: EU O Tutorial acaba aqui. se você gostou deixe o seu obrigado como post ! Espero que tenha ajudado um bocado de membros e visitantes, se você é um visitante cadastre-se e poste no meu tópico Qualquer dúvida ou sugestão em relação ao tutorial, POSTE AQUI:
  9. [Show Off] Gabisa00

    Snowsz e um outro reagiu a gabisa00 por uma resposta no tópico

    2 pontos
    Show Off Gabisa00 Bom dia galera do Tk, comecei a fazer sprites essa semana (12.01.2015) e gostaria da opnião de vocês para minhas primeiras sprites, tentarei sempre postar novas sprites que provavelmente entrarão no meu projeto, portanto a cópia delas é ILEGAL. Escudos: Espadas: Armaduras: Pedras: Por favor, dicas e sugestões são bem vindas.
  10. 2 pontos
    local teleport = { tpId = 1387, --ID do teleport, tpDuration = 5, --Duração, em minutos. positions = { {{x = x, y = y, z = z, stackpos = 1}, {x = x, y = y, z = z}}, --{{onde o tp será criado}, {para onde o tp levará}}, {{x = x, y = y, z = z, stackpos = 1}, {x = x, y = y, z = z}}, {{x = x, y = y, z = z, stackpos = 1}, {x = x, y = y, z = z}}, {{x = x, y = y, z = z, stackpos = 1}, {x = x, y = y, z = z}}, }, } function onUse(cid, item, fromPosition, item2, toPosition) for i = 1, #teleport.positions do if getThingFromPos(teleport.positions[i][1]).uid > 0 then return doPlayerSendCancel(cid, "Os teleports já foram criados.") end doCreateTeleport(teleport.tpId, teleport.positions[i][2], teleport.positions[i][1]) addEvent(function() local items = getThingFromPos(teleport.positions[i][1]).uid if items > 0 then doRemoveItem(items, 1) end end, teleport.tpDuration * 60 * 1000) end return true end
  11. Eu me referi ao que você disse no tópico, passou informação incorreta, e isso já é algo coerente. Não fique puto por errar, todos erram.
  12. capa+avatar

    jNo e um outro reagiu a Beeny por uma resposta no tópico

    2 pontos
    bônus
  13. Spell Creator

    jora312312 reagiu a Caronte por uma resposta no tópico

    1 ponto
    Olá pessoal, estou trazendo um spell creator bem dinâmico, feito a muito tempo por um programador da otland chamado TGYoshi. Acho que não precisa de explicação para o uso do spell creator, pois é muiiiito simbles, bom sem mais delongas: Ao você terminar a criação da spell, o programa gera o XML e .Lua Algumas gifs do programa em funcionamento: Abra o spoiler para ver mais ! POSSÍVEIS ERROS: |_ Solução: SpellCreator.zip Outras opções de download: Link 1 ou Link 2. Créditos inteiramente ao: TGYoshi I'll be coding this in C#.NET, it'll increase both my programming skills and might be useful for the community. The code will be open source.
  14. Boa Tarde Tk's . Bom como já vi varios reclamando que não consegue abrir o remeres map editor para Clientes versão extended , estarei postando para ajudar vocês. Customized Remere's Map Editor Suporta Versão: 7.6 - 10.37 Features: * Suporte para extended clients. * Support for transparency (Menu File > Preferences > Client Version) Visual C++ Redistributable Packages (Required installation) GitHub Instalando: 1º Basta baixar a versão normal do Remere's Map Editor no Site do Remeres e instalar em seu computador. 2º Depois Baixa a versão que postei pra download. 3º Terceiro Extraia a versão que postei pra download na pasta aonde o Remere's Map Editor foi instalado. ​4º Substitui todos os arquivos quando pedir , sempre clicando em subistituir , Sim , Ok. 5º Abre o Remere's Map Editor e vai em Menu File > Preferences > Cliente Version , Clique em Extended e Selecione a pasta do cliente do pokemon ou que você deseja. 6º Basta Fechar o Remere's Map Editor e abrir novamente e selecionar o mapa que deseja editar. Obs: Os clientes regulares não apoiará dados com transparência e / ou opção Extended. Obs: Já esta configurado para versão do Servidor e do cliente que postei do Cyan By Senhor Extended Download : http://www.4shared.com/rar/YPgAc2hAce/Remeres_Map_Editor.html Scan : Clique Aqui Extended Download By Senhor : https://www.mediafire.com/?fyklwfdwcawxepv Scan : Clique aqui OBS: Coloquei Dois Download , Um que ta configurado para versão do meu Servidor e do Meu cliente estendido e o Outro está configurado para versão normal dos clientes estendidos. Créditos : Hjnilsson (RME) MartyX - Ajudou a compilar Comedinha (Bruno Carvalho) EdMignari Pessoal do TPForums Vudi por postar. Outros
  15. 1 ponto
    fala pessoal td bem, então.... Eu vo abrir um otserv e quero algumas dicas pra mim criar um mapa própio, eu curto bastante mapa baiak.. se alguem poder me ajudar ficarei grato; e td de bom para todos....
  16. Como usar addEvent

    Gogetasaya reagiu a Killua por uma resposta no tópico

    1 ponto
    Usando addEvent O uso do addEvent tem inúmeras utilidades e pode ser complicado para algumas pessoas, inclusive era para mim quando eu estava começando a aprender LUA. Para que serve o addEvent? Para "chamar" uma função após um periodo de tempo, ou seja, executar uma função após um tempo estipulado. O addEvent tem como parâmetros: callback, delay e ... addEvent(callback, delay, ...) Onde callback é a função que será chamada, delay é o tempo (em milissegundos) até que se chame essa função e ... são os parâmetros que a função chamada utiliza. Exemplo: addEvent(doBroadcastMessage, 1000, "Bom dia", 23) Aqui, após 1 segundo (1000 ms), a função doBroadcastMessage(message, type) será executada com os parâmetros message = "Bom dia" e type = 23. O addEvent pode ser usado de duas maneiras: Chamando uma função existente ou criando uma nova função. Para chamar uma função existente, basta usar como acima, para usá-lo para criar uma nova função, usa-se assim, por exemplo: addEvent(function() if isCreature(cid) then doPlayerAddItem(cid, 2160, 10) doPlayerSendTextMessage(cid, 25, "Voce ganhou 10k.") end end, 1000) Assim é basicamente a mesma coisa, mas pude colocar várias funções dentro de um único addEvent e mantive o delay 1000 (1 segundo). Obs: Precisei usar 2 ends, um para fechar function() e outro para fechar o if. Atenção! Além disso, existe uma outra diferença entre as duas formas de uso, vou tentar explicar da melhor maneira possível: Quando usamos o addEvent com uma função já existente (1o exemplo), as informações usadas serão as geradas no momento em que o evento foi chamado, por exemplo: function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) > 10 then doPlayerSendTextMessage(cid, 25, "Uma pedra sera criada na sua posiçao dentro de 2 segundos.") addEvent(doCreateItem, 2000, 1308, 1, getThingPos(cid)) end return true end Se usarmos assim, a pedra será criada na posição onde o jogador se encontrava no momento em que "deu use" e não onde ele estará 2 segundos depois. Se você quiser que a pedra seja criada na nova posição do jogador (pos de 2 segundos depois), você deve fazer uma nova checagem, criando uma função: function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) > 10 then doPlayerSendTextMessage(cid, 25, "Uma pedra sera criada na sua posiçao dentro de 2 segundos.") addEvent(function() if isCreature(cid) then doCreateItem(1308, 1, getThingPos(cid)) end end, 2000) end return true end Atenção novamente: A checagem if isCreature(cid) que utilizei, é muito importante para um addEvent que envolva criaturas. Se você executasse o addEvent sem a checagem e o player logasse ou morresse antes desses 2 segundos se passarem, daria um erro na distro e interromperia o resto do script. Recursão Uma outra ótima funcionalidade dos addEvents é a recursão, ou seja, criar um evento que fica se repetindo. É simplesmente um addEvent chamando a sí mesmo. Para usar, crie uma função, exemplo: function respawnMonster(name, pos) if doCreateMonster(name, pos) then doBroadcastMessage(name.." nasceu!") end addEvent(respawnMonster, 10000, name, pos) end Quando chamada, esta função ficará criando um monstro e uma determinada área a cada 10 segundos, sem nunca parar. Para chamar a função, seria assim: respawnMonster("Demon", {x = 123, y = 123, z = 5}) Considerações Reloads param os addEvents. Se um script talkaction executou um addEvent programado para acontecer depois de 5 minutos e se dentro deste intervalo de tempo, você usar /reload talkactions, o addEvent será interrompido. Erros no código podem fazer o evento ser interrompido, preste sempre atenção. Se ainda ficou com alguma dúvida, poste aqui.
  17. 1 ponto
    E ai galera blz? Eu to postando um layout antigo do Znote, mas eu mudei ele pra ficar compativel com essa versão mais nova do site, com forum e outras coisas, deem uma olhada: Espero que gostem! É só substituir a pasta layout! Download: http://www.mediafire.com/download/55apsyhji8jdmku/layout.rar Scan: https://www.virustotal.com/pt/url/5cd97ee13a3cae9e5f55e882ce86c9312282c5c6af8051967682a442b7c181fb/analysis/1421207643/ layout.rar
  18. 1 ponto
    Bom, eu passei por um problema quando estava testando o Gesior no meu OTServer: mesmo com o server online e portas liberadas o site continuava mostrando como offline. Eu vi que algumas pessoas sugeriram trocar no arquivo layout.php isto: if($config['status']['serverStatus_online'] == 1) por isto: if($config['status']['serverStatus_online'] >= 0) mas eu vi que estava errado, pois ele iria mostrar o server como online mesmo que não estivesse. Então eu andei olhando os códigos, mexendo nos arquivos e acabei achando o erro. No arquivo load.compat.php, dentro da pasta system, na linha #254 (pelo menos aqui) eu encontrei o seguinte código: $statusInfo = new ServerStatus($config['server']['ip'], $config['server']['statusPort'], 1); onde está escrito 'statusPort' eu percebi que no config.lua não tinha isto, pois lá estava 'statusProtocolPort'. Então basta trocar esta linha por: $statusInfo = new ServerStatus($config['server']['ip'], $config['server']['statusProtocolPort'], 1); Espero ter ajudado!
  19. Poke zot editado por factur v2.0

    Igorzerah reagiu a Factur por uma resposta no tópico

    1 ponto
    ATENÇÃO O Tópico ainda pode ser atualizado. Em breve versão v2.2 !! Eae galera tudo beleza? venho trazendo pra vocês Um novo server PokeZot! Eu editei ele bastante!, Vou mostrar algumas coisas que eu editei, algumas coisas que adicionei E algumas que eu resolvi... ------------------ // ------------------ [~] Bugs ------------------ // ------------------ [~] Quest's Modificadas/Adicionadas. ------------------ // ------------------ [~] Resto que foi Editado/Adicionado/Removido ------------------ // ------------------ [~] Prints ------------------ // ------------------ [~] Download ------------------ // ------------------ [~] Créditos Pelo jogo = Wolf Admin Por Editar = Factur Flw galera! Factur ~ ------------------ // ------------------
  20. Boa galera estamos mais uma vez trazendo o que a de melhor pra todos e esse sistema é muito top pra qualquer administrador de OTserver. Um parceiro meu Felipe Funck administrador do ImperialOT chegou pra mim com essa ideia de fazer um backup de point me explicou como deveria ser, achei uma ideia muito interessante e fui atrás de fazer o sistema. Esse sistema tem a função de registrar todos os pontos adquiridos por uma ACC em outras palavras ele faz um backup de todos os pontos que essa ACC recebe, sim mais e dai? As vezes temos a obrigação de resetar a database e eu confesso não tem nada mais chato do que devolver os pontos, simplesmente porque é muito trabalhoso você devolver pontos. Veja abaixo como adicionar o sistema no seu server: Acesse sua database e na tabela accounts execute está query: ALTER TABLE `accounts` ADD `backup_points` INT NOT NULL AFTER `premium_points`; Feito né? Essa query é a coluna backup_points nela vai ficar registrado todos os pontos que serão adicionados na ACC. Agora abra o seu retpagseguro.php e na linha 151 vai ter esse code: mysql_query("UPDATE accounts SET premium_points = premium_points + '$NumItens' WHERE name = '".htmlspecialchars($accname)."'"); Adicione abaixo o seguinte code: mysql_query("UPDATE accounts SET backup_points = backup_points + '$NumItens' WHERE name = '".htmlspecialchars($accname)."'"); Quem não tiver o sistema de pagseguro automático veja esse TUTORIAL. Cuidado a você que utiliza o double points pra não esquecer da multiplicação * 2. Certo, pra você que ainda não utiliza o sistema pagseguro utilize este shopadmin abaixo que já está configurado pra adicionar os pontos nas duas colunas. shopadmin.php Serve para todos os Gesior ACC. Pronto dessa forma todos os pontos adicionados em premium_points vai ficar registrado em backup_points. Bom galera o sistema está feito, beleza, quando você for resetar você vai executar a query abaixo. Mais qual a função dela? A função dessa query é limpar a coluna premium_points e leva os pontos que tiverem na coluna backup_points pra coluna premium_points, assim todos os pontos que entraram naquela ACC estaram de volta e corretamente. Nunca apague os registros do backup_points. Cuidado antes de usa a query faça um backup da sua database, só pra precaver nada de mais! UPDATE `accounts` SET `premium_points` = `accounts`.`backup_points` WHERE `backup_points` > 0; Query feita por, Raphael Luiz. Galera quem gostar clica em GOSTEI e valeu!
  21. [Utilitário] Anti-Nuker

    Xurumela reagiu a LuckinhaSan por uma resposta no tópico

    1 ponto
    Anti-Nuker Fala pessoal da World Tibia! Hoje estou aqui para disponibilizar um antigo e ótimo Anti-Nuker pra quem não entende muito de Linux, e quer um servidor no bom e velho Windows XP 2003. Download (Senha para descompactar junto ao arquivo .rar) - Scan - Introdução - Ele é um dos melhores anti-nukers. Digo isso pois já vi vários comentários de pessoas satisfeitas com seu funcionamento, dizendo que diminuiu muito os ataques que eles sofriam frequentemente antes de usar o anti-nuker. Um amigo meu alugou uma VPS em Windows XP 2003, e deixou um servidor online só pra brincar com o pessoal que mora aqui na cidade. O servidor dele teve uns 50/80 jogadores online, e ele sempre reclamava pra mim de ataques. Eu resolvi ajudar, dei um jeitinho lá na VPS dele, e liguei esse anti-nuker. Ele ficou muito satisfeito, dizendo que ninguém mais estava atacando seu servidor. Bem, vamos direto ao assunto. O anti-nuker foi feito por Beholder Caolho, eu fiz apenas algumas edições básicas nele. Tutorial De Como Ativar: Primeiramente, abra o executável Anti-Nuker. Em seguida, clique em Monitorar. Aparecerá uma outra janela com as portas, selecione todas e clique em Configurar. Aparecerá a frase "O Anti-Nuker by Beholder Caolho está monitorando". Pronto pessoal, seu servidor estará protegido contra ataques. Bom uso!
  22. 1 ponto
    Olá Galera, este é meu primeiro tópico no TK.. E quero aproveitar para divulgar o servidor da qual faço parte da equipe.. Postarei alguns remakes feitos por mim que estarão no jogo. Sempre que der atualizo, mas no forum do server tem todas as atualizações.. KADABRA: ---------- CHARIZARD e GRAN CHARIZARD, QUE SERA USADO NO VALLEY.: o da esquerda é o atual da PXG, do meio o remake que fiz em cima dele, corrigindo face, braços e alguns detalhes nas asas, da direita o GRAND CHARIZARD, redimensionado e corrigido por mim.. xD KINGLER : --------------------------- Shiny: CORPO: LUDICOLO: Esquerda o atual da PXG, da direita o meu.. SOLROCK: --- Teste de atques: CORREÇÂO DAS ASAS DO PIDGEOT: PXG: FEITOS POR MIM: PARASECT: Espero que tenham gostado, vejam outras sprites aqui: http://pdub.foruns.com.pt/t113-correcao-de-cores, Vejam nossos sistemas exclusivos e nosso mapa unico e feito totalmente do zero, um novo continente.. Ainda está em desenvolvimento....Off, logo postaremos novidades!
  23. Criando suas Raids

    CoyoteStark reagiu a Kimoszin por uma resposta no tópico

    1 ponto
    Olá galerinha, hoje vou ensinar como vocês podem criar suas proprias Raids. - Mais oque são Raids? São invasões, eventos, que em determinado tempo podem acontecer. - Para que servem? Deixar seu servidor mais legal, as raids acontecem automaticamente, ou seja, você nao precisa estar com o GOD, CM, GM online para que as invasões começem. - Opa, gostei... como eu começo? Simples, vou ensinar a vocês agora mesmo. 1. Vá para \data\raids e crie um arquivo .xml com o nome de um monstre (Exemplo: Monk) 2. Logo em seguida, adicione os seguintes codigos: <raid> <announce delay="0" type="event" message="Message1"> Quando executar a raid, com o tempo do delay ira mandar a Message1 /> <announce delay="2000" type="event" message="Message2"> Quando executar a raid, com o tempo do delay ira mandar a Message2 /> <announce delay="4000" type="event" message="Message3"> Quando executar a raid, com o tempo do delay ira mandar a Message3 /> <singlespawn delay="6000" name="Monk" x="XXXX" y="YYYY" z="ZZ"> Quando executar a raid, com o tempo do delay ira summonar o Monk, nas posições X, Y, Z. /> </raid> 3. Seja coerente, sempre bote umas diferença de tempo (delay) para funcionar tudo perfeitamente. 4. Agora para a Raid funcionar, você deve adicionar ela em \data\raids\raids.xml a seguinte linha <raid name="MonkRaid" file="Monk.xml" chance="10" interval2="60" margin="0"> A cada 60 minutos tem a chance de 10% da raid iniciar /> 5. Para você adicionar mais de um bixo na raid, basta adicionar as seguintes linhas. <singlespawn delay="1500" name="Rat" x="592" y="603" z="6"> <singlespawn delay="1500" name="Cave Rat" x="602" y="573" z="7"> <singlespawn delay="1500" name="Bat" x="607" y="573" z="7"> Variaveis: delay=" " -- Tempo para executar message=" " -- Mensagem quando executar. name=" " -- Nome do monstro que ira summonar x=" " y=" " z=" " -- Posição que ira summonar o monstro raid name=" " -- Nome da raid file=" " -- Nome do arquivo xml da raid chance=" " -- Quanto de chance tem para executar a raid, porcentagem interval2=" " -- Tempo em minutos Bom é isso, tentei explicar ao maximo para vocês conseguirem criar suas proprias raids. Qualquer duvida estarei aqui. Abraços.
  24. 1 ponto
    PokeZot Olá Galerinha, alguns devem me conheçer, sou o ADM Wolf, criador do "PokeZot".. Hoje venho apresentar a vocês tudo que o servidor tem de bom..Vamos Começar ~~Versão 1.0 PokeZot 1.0 OBS: Desculpe pelo tamanho excessivo do servidor, minhas ferramentas que uso no servidor foram junto ai ficou muito pesado. @Atualizado 16/08 Abaixo disponibilizo a vocês o Servidor PokeZot 2.0, atualização do 1.0, onde ocorreu varias mudanças, e foi um ótimo trabalho na minha opinião • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; └ Creditos. Informações Edições Erros Prints Downloads Créditos Então, é isso.. Espero que gostem e aproveitem bastante. E se Gostou, por favor Deixe um "Gostei" aqui que me Ajuda Muito Até a Próxima Galera
  25. ESSE MÉTODO NÃO ESTÁ MAIS FUNCIONANDO. Talvez esse aqui posso ser mais útil http://www.tibiaking...-muito-estável/ MAS CASO QUEIRAM TENTAR MESMO ASSIM \/\/\/\/\/\/ ----------------- Muitos que não consegue colocar account manager junto com Site é porque quando criamos conta nele elá é feita senha + salt, ja no site é so a senha então para resolver esse problema é simples, mais precisa das sources da distro para compila depois. Na sources ache o arquivo iologindata.cpp, nele procure: bool IOLoginData::setPassword(uint32_t accountId, std::string newPassword) { std::string salt; if(g_config.getBool(ConfigManager::GENERATE_ACCOUNT_SALT)) { salt = generateRecoveryKey(2, 19, true); newPassword = salt + newPassword; } e onde está newPassword = salt + newPassword retire o salt ficando newPassword = newPassword Aqui você resolveu o problema de criar acconta mais caso alguem mude a senha por account manager tera o mesmo bug entao procure agora: uint64_t IOLoginData::createAccount(std::string name, std::string password) { std::string salt = generateRecoveryKey(2, 19, true); password = salt + password; e retire o salt de password = salt + password; ficando: password = password; Após isso apenas compile sua distro e estará resolvido. ---- --- Para quem quiser a distro ja Compilada > http://www.tibiaking.com/forum/topic/40463-distro-tfs-04-ant-dv-war-system-no-otbm-check-no-gerar-salt-acc-manager-pega-junto-com-site-em-sha1/#entry230588
  26. Poke Zot editado por Factur Final 80%

    SombriadoO reagiu a Factur por uma resposta no tópico

    1 ponto
    A ultima versão sera á 90%, não sera 100% poís ja criei um tópico falando os motivos; A Versão 80% e apenas para vocês verêm como ficou o CP novo e as novas quests; E também verem as novas quests que vorão e terem uma ídeia de como vai ser as próximas; A Mais recente foi a quest box +5, que se encontra no teleport do penúltimo andar do CP de Saffron Vamos lá ! A conta do god é Login: Luh Senha: 123 - Novos pokémons alguns deles : Shiny Lugia // Shiny Heatran // Shiny Articuno // Shiny Moltres // Gogoat // Xerneas // Yveltal // Giratina // Black Articuno // Black Celebi -Fly de alguns pokémons: Alguns deles: Shiny Zekrom // Shiny Articuno // Giratina // Black Articuno - Ride de alguns pokémons: Alguns deles: Raikou // Suicune - Adicionado npc "Teleportador" Quando você fala "HI" e depois "TRAVEL" e depois "YES" você é teleportado para saffron. -Removido a quest bike; -Removido o stronp -Removido algumas houses -Removido alguns npcs - -Adicionado quest de box Algumas delas: Box +1 // Box +2 // Box +3 // Box +4 // Box +5 -Adicionado algumas quests de pokémons Alguns deles: Shiny Lugia // Divine Jirachi // Shiny Riolu // Shiny Reshiram // Green Dialga // Victini // Shiny Regigigas -Adicionado quest Diamonds Recompensa: 50 Diamonds -Adicionado quest Ultra Rod Recompensa: 1 Ultra Rod Bug de atravessar parede da quest Latias/Latios Quest (Corrigido) /t para os players (Corrigido) Bug de atravessar parede do Shiny Zekrom Quest (Corrigido) Quando matar Attack deoxys MVP não abria teleport na Kyogre Quest (Corrigido) Bug da quest Deoxys que não tinha teto (Corrigido) Bug dos novos Megas que não tem atack nem força (Não foi corrigido) MAPA E QUESTS POKÉMONS Servidor http://www.mediafire.com/download/c6calm48gh7v6w5/PokeZot.rar Cliente http://www.mediafire.com/download/pw3qvqpgdf7tgha/OTclient.rar Servidor https://www.virustotal.com/pt/file/5c2a7d33c35d5d6acf10b368dfe15fbfa5d4d2645440a4205c97bf4eed0cb5a1/analysis/1409199216/ Cliente Não é possível tirar um Scan do client, poís ele pesa mais do que 64 MB Factur - Por adicionar os pokémons Poke pro - Pelas sprites Otsclop - Não posso revelar Não lembro - Por me ensinar a tira o /t para os players Tio do Leite - Por eu estar aguardando a sprite do shiny corsselia
  27. 1 ponto
    @Summ, doPlayerAddItem não altera o atributo charges... @ADM Lucas OTBR tente assim, local storage = 105977 local itemid, charges = 2197, 100 function onUse(cid, item) if getPlayerStorageValue(cid, storage) < 1 then doPlayerAddItem(cid, itemid, 1) doItemSetAttribute(itemid, 'charges', charges) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You received " .. getItemName(itemid) .. ".") setPlayerStorageValue(cid, storage, 1) else return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Item not found") end return true end
  28. (Resolvido)MAP EDITOR 10.35

    diegocereza reagiu a xBlackWolf por uma resposta no tópico

    1 ponto
    Se não me engano, esse meu funciona. Upei ele só pra você. Agradece se ajudar. =) Download
  29. Se quer cristais pelo mapa utilize as últimas versões, elas tem mais recursos para esse tipo de tema
  30. [PEDIDO] Background e Capa.

    RodAlbu reagiu a Beeny por uma resposta no tópico

    1 ponto
    tut's
  31. (Resolvido)[Ajuda] Script Teleport Yalahar Quest

    Rcsdj reagiu a Summ por uma resposta no tópico

    1 ponto
    Não esqueça de configurar as coordenas. function onStepIn (cid, item, pos) local pos = {x = xxxx, y = xxxx, z = x} -- Configura as coordenadas aqui if item.actionid == 7809 then doTeleportThing(cid, pos) doSendMagicEffect(getThingFromPos(cid), 14) end return true end <movevent type="StepIn" actionid="7809" event="script" value="nomedoarquivo.lua"/>
  32. TFS by OrochiElf

    guiimattos reagiu a CarlosHenrique7457 por uma resposta no tópico

    1 ponto
    Eu fiz scan esta sem vírus, porem esta sem Surce tbm. mas muito bom parabéns.
  33. capa+avatar

    Beeny reagiu a jNo por uma resposta no tópico

    1 ponto
    valeu bruxo, fico muito foda :3
  34. (Resolvido)[PEDIDO] System De !rank 854

    Fire3712 reagiu a neighbourhood por uma resposta no tópico

    1 ponto
    Isso já vem junto com o server Va até a pasta talkactions "data\talkactions" Depois abra o arquivo: talkactions.xml e cole isso lá: <talkaction words="!rank" script="ranks.lua"/> Depois crie um novo bloco de notas na area de trabalho e renomeie para: ranks.lua e cole/salve isso dentro do bloco de notas: local ranks = { ['fist'] = {0}, ['club'] = {1}, ['sword'] = {2}, ['axe'] = {3}, ['distance'] = {4}, ['shield'] = {5}, ['fish'] = {6}, ['magic'] = {7}, ['level'] = {8}, } function onSay(cid, words, param) local msg = string.lower(param) if ranks[msg] ~= nil then str = getHighscoreString((ranks[msg][1])) else str = getHighscoreString((8)) end doPlayerPopupFYI(cid, str) return TRUE end depois jogue o bloco de notas que voce criou: ranks.lua dentro dá pasta: data\talkactions\scripts ESPERO TER AJUDADO
  35. [PEDIDO] - Sistema de Key

    xWhiteWolf reagiu a roriscrave por uma resposta no tópico

    1 ponto
    so fazer um movement pra ela fechar
  36. opa você poderia me explicar com clareza onde adiciono issso? Edit: fui tentando e tentando até que conseguir, obrigado ____________________________________________________________ Para quem tiver com a mesma duvida que eu é muito simples... procure por "latestnews" copie e cole o arquivo logo após o <?php abços...
  37. [Desafio] Alavanca bem Elaborada

    falling reagiu a Wise por uma resposta no tópico

    1 ponto
    local info = {1, 5} -- {souls, cooldown} local gstor = 78910 -- global storage local m = {name = 'Demon', pos = {x = 123, y = 456, z = 7}} -- monster function onUse(cid) if getGlobalStorageValue(gstor) < os.time() then setGlobalStorageValue(gstor, os.time() + info[2]) doPlayerAddSoul(cid, -info[1]) doCreateMonster(m.name, m.pos) doSendMagicEffect(m.pos, CONST_ME_MAGIC_GREEN) else doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) end return true end
  38. local vocations = {3, 4, 7, 8} function onStepIn(cid, item, position, fromPosition) if not isInArray(vocations, getPlayerVocation(cid)) and isPlayer(cid) then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, 18, "Sua vocação não pode passar.") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) end return true end
  39. Naruto White

    Fire3712 reagiu a Beeny por uma resposta no tópico

    1 ponto
    oi elton cara, postar esse servidor deu um rolo. pra nego ficar de mimimi não fode.
  40. (Resolvido)[PEDIDO] Script TOP LEVEL

    ArielZeRah reagiu a Bruno Minervino por uma resposta no tópico

    1 ponto
    Em data/creaturescripts/creaturescripts.xml adicione: <event type="login" name="TopEffect" event="script" value="topeffect.lua"/> Em data/creaturescripts/scripts/login.lua adicione no fim: registerCreatureEvent(cid, "TopEffect") Agora crie um arquivo em data/creaturescripts/scripts com o nome topeffect.lua e adicione: local tempo = 10 --tempo em segundos function onLogin(cid) query = db.getResult("SELECT `name`, `level` FROM `players` WHERE `group_id` < 2 ORDER BY `level` DESC LIMIT 1") if (query:getID() ~= -1) then name = query:getDataString("name") if getPlayerName(cid) == name then TopEffect(cid) end end return true end function TopEffect(cid) if isPlayer(cid) then doSendAnimatedText(getCreaturePosition(cid), "[TOP]", TEXTCOLOR_LIGHTBLUE) doSendMagicEffect(getCreaturePosition(cid), 30) addEvent(TopEffect, tempo*1000, cid) end return true end Altere apenas a primeira linha de acordo com sua necessidade. Espero ter ajudado! EDIT: Coloquei um outro efeito também rsrs
  41. Como conectar em um VPS Windows?!

    guiimattos reagiu a CarlosHenrique7457 por uma resposta no tópico

    1 ponto
    Vps é uma maquina que vc paga por ela para colocar seu otserve online.
  42. Alguns trabalhos.

    Sexyboyy reagiu a Ewerton Weto Costa por uma resposta no tópico

    1 ponto
    Não é permitido a cópia dos mesmo a cima, sem minha permissão, todos gráficos acima são de minha feição. Como prometido dei uma organizada no meu tópico, se gostou do meu trabalho me repulte Eai o que acharam? Comentem Se você se interessou pelo meu trabalho, eu vendo sprites com todas movimentações e etc. Contato: [email protected] ou mande pm pelo tibia king.
  43. 1 ponto
    Sim Segue Código <!-- networks theme box --> <?PHP $nF = $SQL->query("SELECT " .$SQL->fieldName('network_link'). " FROM " .$SQL->tableName('z_network_box'). " WHERE " .$SQL->fieldName('network_name'). " = 'facebook'")->fetch(); $nT = $SQL->query("SELECT " .$SQL->fieldName('network_link'). " FROM " .$SQL->tableName('z_network_box'). " WHERE " .$SQL->fieldName('network_name'). " = 'twitter'")->fetch(); ?> <?PHP if(!empty($nF)){ ?> <div id="NetworksBox" class="Themebox" style="background-image:url(<?PHP echo $layout_name; ?>/images/themeboxes/networks/networksbox.png);"> <div id="FacebookBlock"> <div id="FacebookLikeBox"> <div class="fb-like-box fb_iframe_widget" data-href="https://www.facebook.com/<?PHP echo $nF['network_link']; ?>" data-width="175" data-height="180" data-show-faces="true" data-stream="false" data-border-color="none" data-header="false" fb-xfbml-state="rendered"> <span style="vertical-align: bottom; width: 181px; height: 180px;"> </span> </div> </div> <div id="FacebookSendBox"> <div class="fb-send fb_iframe_widget" data-href="https://www.facebook.com/<?PHP echo $nF['network_link']; ?>" data-width="50" data-height="20" fb-xfbml-state="rendered"> <span style="vertical-align: bottom; width: 50px; height: 20px;"> </span> </div> </div> <div id="FacebookLikes"> <div class="fb-like fb_edge_widget_with_comment fb_iframe_widget" data-href="https://www.facebook.com/<?PHP echo $nF['network_link']; ?>" data-send="false" data-width="225" data-show-faces="false" fb-xfbml-state="rendered"> <span style="height: 28px; width: 225px;"> </span> </div> </div> </div> <?PHP if(!empty($nT)){ ?> <div id="TwitterBlock"> <a href="https://twitter.com/<?PHP echo $nT['network_link']; ?>" class="twitter-follow-button" data-show-count="false">Follow @<?PHP echo $nT['network_link']; ?></a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> </div> <?PHP } ?> <div class="Bottom" style="background-image:url(<?PHP echo $layout_name; ?>/images/general/box-bottom.gif);"></div> </div> <?PHP } ?> <?PHP if($config['site']['screenshot_page']){ ?> Segue Database -- phpMyAdmin SQL Dump -- version 4.2.11 -- http://www.phpmyadmin.net -- -- Host: 127.0.0.1 -- Generation Time: 08-Jan-2015 às 02:37 -- Versão do servidor: 5.6.21 -- PHP Version: 5.5.19 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- Database: `global` -- -- -------------------------------------------------------- -- -- Estrutura da tabela `z_network_box` -- CREATE TABLE IF NOT EXISTS `z_network_box` ( `id` int(11) NOT NULL, `network_name` varchar(10) NOT NULL, `network_link` varchar(50) NOT NULL ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; -- -- Extraindo dados da tabela `z_network_box` -- INSERT INTO `z_network_box` (`id`, `network_name`, `network_link`) VALUES (1, 'NomePage', 'NomePage'), (3, 'facebook', 'https://www.facebook.com/NomePage'); -- -- Indexes for dumped tables -- -- -- Indexes for table `z_network_box` -- ALTER TABLE `z_network_box` ADD PRIMARY KEY (`id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `z_network_box` -- ALTER TABLE `z_network_box` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
  44. Duvida básica sobre return

    esnio12 reagiu a xWhiteWolf por uma resposta no tópico

    1 ponto
    em lua que você usa no open tibia não faz muito sentido usar return (com excessão de algumas funções que precisam retornar algo ou nos callbacks) mas em java, por exemplo, tem de maneira bem definida o motivo de se usar return. da mesma forma que vc tem algumas spells feitas dessa maneira aqui: function onCastSpell(cid, var) return doCombat(cid, combat, var) end você poderia muito bem apenas fazer isso: function onCastSpell(cid, var) doCombat(cid, combat, var) return true end o motivo principal de você poder colocar return 1 ou return TRUE e dar certo é porque lua tem uma propriedade de considerar como true qualquer variável ou numero existente. se eu fizer local FALSE = "auhhueuhaiuehu" e por return FALSE ele vai verificar se FALSE existe e já que eu defini anteriormente que ele existe e tem o valor de uma string "auhhueuhaiuehu" então ele vai entender FALSE como true e executar tudo certinho. nil e false PODEM ser interpretados como false dependendo do caso mas eles são coisas diferentes visto que o primeiro representa um valor nulo e o segundo um valor inexistente ou falso. em java temos classes de funções que retornam coisas e elas são definidas da seguinte maneira: public ____ NomeDaFunção (parametros) { // oque a função faz aqui return (algo do mesmo tipo que ____) } ali no ____ eu posso colocar int, double, arrayList, array, string, boolean e outros tipos (int são numeros inteiros e double são números com virgula.) então uma função simples que retorna multiplicação de dois números seria assim: public int multiplication (int a, int b) { return a * b } e qnd eu usasse a = multiplication(5, 10) iria automaticamente setar a como sendo 50 pois é oque a função retorna. Analogamente temos funções que não retornam nada, elas só fazem alguma coisa sem retornar nada e por isso são do tipo "void" public void mandarMensagem() { print("Insira a mensagem aqui") } e se eu fizer a = mandarMensagem() vai setar a como sendo nil pois essa função não retorna nada. Entendeu + ou - agora?
  45. Spell Creator

    mormaiot reagiu a MAMAEU2 por uma resposta no tópico

    1 ponto
    Obrigado eu sou um pouco nub nessas coisa de spell então Obrigado ! E TamBem Não esqueça de colocar scan , Fiz um para você !! https://www.virustotal.com/pt/file/0f48def87a33a61816d75e26f921cff359fdb9b1b50d0d5f89fe47e4daf5cf44/analysis/
  46. eu fiz isso mas continua criando um um codigo de salt ai quando eu vou logar nao aceita quando eu fiz isso no site ele aceitava a conta mas mesmo fazendo conta no client nao aceitava preciso q eu possa fazer contas no client e o site aceite e vice versa eu ja fiz as duas operações pedidas ali e nao resolve o problema quando eu crio a conta pelo acc manage fica assim em salt com um codigo encripitado D6K2h98iA4F8IfRHV2z-V48NYH9g5pLJgmT4Dd2 se eu crio pelo site nao aparece esse codigo e loga normal no server ______________________________________________________________-- consegui resolver o problema Va até std::string salt = generateRecoveryKey(2, 19, true); password = salt + password; e troque por std::string salt = ""; password = password; Font: Otland - user Kimet
  47. 1 ponto
    Nao. Se o Servidor For (PDA) Tem que mexer em 2 arquivos (Exp.lua e some functions.lua) @edit: Tenta assim vai em data/lib/some functions.lua e procure por = function canAttackOther(cid, pid) [+] La em baixo antes do > if ehMonstro(cid) and ehMonstro(pid) and not isSummon(cid) and not isSummon(pid) then adiciona isso: [+] Caso nao funcione ainda voce deixa no Modo (PvP-Enforced) e teste-o Dnv [+] essa Funçao funcionou no meu Servidor que postei (Servidor que esta na Assinatura) \/
  48. (Resolvido)[Pedido] Sistema De Anuncio

    DarkRed reagiu a Drazyn1291 por uma resposta no tópico

    1 ponto
    Se Ajudei Rep++
  49. (Resolvido)[Pedido] Sistema De Anuncio

    DarkRed reagiu a Drazyn1291 por uma resposta no tópico

    1 ponto
    ta ai >> http://www.tibiaking.com/forum/topic/34763-pedido-sistema-de-broadcast-para-players-pago/#entry196253
  50. Criando suas Raids

    Bissonho reagiu a BoneFox por uma resposta no tópico

    1 ponto
    Creio que seja isso que a Huziwara queria mostrar <raid> <announce delay="1000" type="event" message="Elf Scouts have been sighted near Venore!" /> <announce delay="20000" type="event" message="The elves attack from shadowthorn!" /> <announce delay="60000" type="event" message="Venore is under attack!" /> <!--Area Spawns--> <areaspawn delay="60000" fromx="32853" fromy="32123" fromz="7" tox="32861" toy="32130" toz="7"> <monster name="elf" amount="25" /> <monster name="elf scout" amount="20" /> <monster name="elf arcanist" amount="15" /> </areaspawn> <areaspawn delay="60000" fromx="32932" fromy="32158" fromz="7" tox="32944" toy="32168" toz="7"> <monster name="elf" amount="25" /> <monster name="elf scout" amount="20" /> <monster name="elf arcanist" amount="15" /> </areaspawn> <areaspawn delay="60000" fromx="32853" fromy="32025" fromz="7" tox="32868" toy="32034" toz="7"> <monster name="elf" amount="25" /> <monster name="elf scout" amount="20" /> <monster name="elf arcanist" amount="15" /> </areaspawn> </raid>[/html] [size=6][b]EDIT!! ----------------------------[/b][/size] Me responde uma coisa [b]Kismozin[/b] No meu raid.xml ta assim <raid name="Necropharus" file="Necropharus.xml" chance="50" interval2="30" margin="1800" enabled="yes"/> <raid name="Hornedfox" file="Hornedfox.xml" chance="50" interval2="30" margin="1800" enabled="yes"/> <raid name="Halloweenhare" file="Halloweenhare.xml" chance="50" interval2="40" margin="1800" enabled="yes"/> Sabe me explicar o porque desse [html]margin="1800" Eu tentei tirar + deu erro no distro e eu não sei se isso também é o tempo, sendo que tem o interval se você souber, me responde please eu to muito enrolado com esse lance de invasão eu coloquei margin bem baixa e ficou dando invasão toda hora por isso preciso saber o que significa, pra calcular o tempo certo entre o interval e o margin Obrigado pelo espaço BoneFox
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo