Jump to content

Administrador

Administrador
  • Posts

    5780
  • Joined

  • Last visited

  • Days Won

    94

Reputation Activity

  1. Upvote
    Administrador got a reaction from Arisen Trapzer in Rochas e Pedras   
    Vale lembrar que este é um tutorial universal, então não estará categoricamente feito para nossos 45 graus, mas a noção que se ganha é ótima, e após isso é simples utilizar os conceitos para nossos requisitos.

    Bom, sem mais delongas, vamos lá!:

    Rochas e Pedras

    Introdução
    Rochas e texturas de pedra são uma das coisas mais difíceis de se desenhar, mas a existência de rochas em jogos são praticamente inevitáveis. Rochas estarão em todo lugar, no passado, no presente, no futuro - mesmo no espaço temos meteoros e asteroides. Tenho notado que um monte de jogos tendem a tomar o caminho mais fácil e simplesmente usar o airbrush para uma textura rochosa, ou desenhar um círculo com um preenchimento em gradiente para uma rocha. Claro, eles são práticos, mas eles não estão nem perto de estarem esteticamente atraente. Mas, com um pouco mais de trabalho, e (espero) que com este tutorial, você vai ser capaz de ter uma melhor capacidade de desenhar pedras e tal, e, finalmente, parar de usar aqueles gradientes horríveis haha.

    Relevo (Embossing)
    Bom, o primeiro passo é sabermos olhar como a iluminação afetará nosso relevo e curvas, veja esta imagem:

    Esta primeira imagem mostra como trabalha com iluminação em uma colisão com uma superfície. Na parte superior esquerda é a fonte de luz (Noroeste, assim como no Tibia), e na parte superior direita é a visão do jogador. Podemos ver que os destaques na colisão estão mais próximos da fonte de luz, e a área sombreada, onde a fonte de luz não atinge fica mais próxima de onde os jogadores veem. Isto significa basicamente que se você fosse desenhar isso, a luz seria mais perto do topo da tela e o sombreamento seria mais perto do fundo, que ficaria assim:



    Simples não?

    Agora imagine que temos uma cavidade dentro deste terreno:
    A iluminação de uma superfície recortada seria diferente. Seria algo parecido com isto:

    A partir disto, podemos ver que a área realçada é agora mais próximo do jogador, e a área sombra está mais perto da fonte de luz. E, se isso vier a ser tirado, a área sombreada seria mais perto da parte superior da tela, e a área iluminada seria mais perto do fundo. Isso se parece com isso:




    Praticamente tudo o que eu fiz para este piso foi inverter a área com sombra e luz, o que o torna mais parecido com um buraco no chão.

    Pensando em Rochas

    Ok, mas como isso se relaciona com texturas de rochas e pedras? Bem, uma textura rochosa é constituída por milhares de recuos e solavancos sobre uma superfície. É por isso que o airbrush funciona bem com este tipo de textura - com isso você pode colocar aleatoriamente em pontos escuros e claros e fazer a ilusão de minúsculas saliências e reentrâncias.
    Mas por estes recuos e colisões serem tão pequeno, não haverá um monte de contrastes com destaques e áreas sombreadas, esta é razão pela qual o número de cores deve definitivamente ser limitada quando o airbrush é usado. Eu vi as pessoas usarem 5 ou mais cores quando usam o airbrush em um solo rochoso. Este é um grande erro, porque muitas cores e contrastes fazem o ladrilho parecer extremamente brega e falso. Eu tenho uma tendência a usar apenas 2 cores e talvez às vezes três, mas não mais! A textura da rocha simples para mim ficaria assim:

    É simples, e ele cumpre seu papel. Além disso, ele se parece muito mais do que usar um monte de diferentes tonalidades.

    Rachando a superfície
    Texturas de pedra não são apenas travessões e solavancos, também são compostas de rachaduras. Mas não seria suficiente desenhar somente uma linha preta na textura e assim chamá-la de rachadura certo? Uma vez que uma rachadura é feita sobre uma superfície, as mudanças no efeito de iluminação na superfície também mudam! Desenhar uma linha preta mais parece uma mancha, mas se você adicionar a iluminação ao racho, se parecerá muito mais com uma rachadura.

    Começando com essa textura de pedra original, eu simplesmente desenhei uma linha preta que indica onde eu quero que a rachadura seja.


    Em seguida, eu usei uma sombra e a destaquei logo abaixo da linha preta. Eu fiz isso porque, essencialmente, uma rachadura é um longo travessão em uma superfície, desse modo a iluminação iria aparecer embaixo da área sombreada.


    Então, usei um tom mais escuro e protegido em uma pequena área acima da linha preta


    Por fim, acrescentei algumas máscaras extras de cor nas áreas destacadas e sombreadas para parecer um pouco menos suave e mais rígida. No total, eu só usei 5 cores.

    Pisos, tijolos e paralelepípedos
    O método acima é a base de todo o resto do tutorial. Você pode usar o mesmo método para fazer pedras, paredes de tijolos, e qualquer superfície que tenha uma estrutura semelhante.
    Assim, o próximo exemplo será uma parede de tijolos.

    Em vez de começar com a textura de pedra real, eu gosto de traçar exatamente o que o meu padrão será. Como mencionei antes, esta é uma parede de tijolos. E eu também quero ter certeza de que se eu coloque várias paredes de tijolos juntas no meu mapa, pareça coeso e que não fiquem fora do lugar.




    Em seguida,Escolho a direção que estará a sombra e destaco-a abaixo as linhas escuras e também alguns ao longo do do tijolo.


    Em seguida, eu aleatoriamente clareio a área sombreada, acrescentando tons extras de cores, de novo, para tornar essas áreas menos suaves e mais rígida.


    Por último, eu faço o mesmo com as superfícies maiores. Claro, você pode pular esta etapa caso você queria seus tijolos de aparência perfeitamente lisa.
    E, como sempre, quando você terminar de desenhar, una os desenhos para ter certeza de que eles se conectem bem, não ficando desproporcional no jogo.


    Tijolos são fáceis de fazer. Você pode combiná-los um pouco e fazer as pedras irregulares e torná-las um pouco mais interessantes.








    Bem legal né?

    Rochas e uma parede de rocha
    Texturas de rochas são grandes e tudo mais, mas são as rochas que são vistas com mais frequência em ambientes naturais no jogo. Por mais que seu jogo seja futurista, e que utilize metal como seu principal material, ainda com certeza veremos rochas espalhadas pelo mundo, então seu mapa não pode ser diferente não é mesmo?.
    Então, o que vamos fazer a seguir é uma rocha:

    Eu começo com a cor principal da rocha. É um meio-tom, por isso vou acrescentar tons mais brilhantes e tons mais escuros à ela. Com isso, eu somente desenhei a rocha de uma forma simples. Ela pode ser de qualquer formato, sendo que os detalhes a farão agradáveis aos nossos olhos.


    Eu, então, usei um tom mais escuro e sombreei a parte inferior da pedra. Para essa parte, não darei nenhum conselhos, basta seguir as técnicas básicas de sombreamento.


    Agora usei outra tonalidade mais escura e apenas sombreei a parte inferior da rocha. Isto a faz destacar-se e criar um contraste legal ali.


    Aqui eu adicionei alguns detalhes no meio da rocha. Veja que não adicionei nenhuma cor de destaque no topo, pois a rocha é curva no topo, então deve ser mais escura.

    E depois de adicionar as cores do seu gosto, você pode deixá-la assim mesmo. Do jeito que está desenhada já faz com que a pedra esteja mais suave, deixando as áreas de sombras mais limpas para dar este efeito de suavidade.


    Mas se você quiser fazer a rocha parecer um pouco mais áspera, simplesmente posicione aleatoriamente um tom um pouco mais escuro em sua imagem.

    Claro, é uma rocha bem simples, mais com isso teremos uma boa noção de como faze-las e consequentemente como aperfeiçoa-las.

    Ok, agora que já sabemos como fazer uma rocha, vamos empilhá-las e formar uma parede de rochas.
    Do jeito que olhamos a parede, as paredes em uma caverna são simplesmente um monte de pedras empilhadas uma sobre a outra, ou mesmo apenas uma grande rocha. Mas, no entanto, se você olhar para algumas das minhas mais recentes cavernas,elas são rochas essencialmente em cima de rochas em cima de mais rochas:

    Para fazer com que minhas paredes pareçam um pouco menos monótonas, eu tenho mais de um peça para a parede. Este em particular são de duas peças. Fazendo paredes das cavernas maiores fará sua caverna parecer mais maciça. Mas é claro que, em termos de um equilíbrio da função e estética, duas peças serão suficientes.

    Então, eu começo com a minha cor de base. E com outra cor que se destaca completamente, eu basicamente tracei onde meus detalhes estarão. Você poderia ter as mesmas rochas empilhadas uma em cima da outra, mas neste exemplo, eu tinha os feito menor em sua parte inferior e fazer uma leve mistura com a parede em sua parte superior. E, mais uma vez, eu apenas os juntei para ver se se encaixam como uma peça de quebra-cabeça.



    Eu percebi que a sombra que eu comecei é muito brilhante, e como tenho a intenção de fazer uma caverna escura,obviamente, usarei tons mais escuros. Se você está apontando para o realismo, use tons mais escuros a menos que haja uma boa fonte de iluminação.
    Então, eu irei trabalhar de baixo para cima, dando inicio pelo meu tom mais escuro -o preto -. Eu só tracei minha linha na parte inferior, pois será onde ficará mais escuro. Você não tem que abusar muito, fará com que pareça pegajoso. Você pode ajustá-lo mais tarde, se você sentir que você exagerou. Mas basta colocar o suficiente para que ele se destaque do solo.
    Eu também joguei um pouco de preto na metade superior da peça. Isso faz parecer que o muro está rachado e desgastado, semelhante ao de rachaduras no chão que eu fiz no início deste artigo.


    Usando a próxima sombra, eu continuo trabalhando em refazer o contorno azul que eu tinha feito antes. Aproveito também esta oportunidade para usar a mesma cor para as sombras das rochas na parte inferior da parede.


    A próxima sombra acima é basicamente a cor que utilizei como base, então eu eu vou para o próximo tom após ela.
    A partir da metade inferior da parede, eu apenas destaquei as rochas, certificando-se que eu tenho somente uma tonalidade mais escura ao redor e nada mais escura. Não há qualquer técnica real para isso, eu fiz desse jeito sem nem pensar nisso.
    E caso você não tenha notado, eu estou tentando torná-lo mais escuro na parte inferior e ir tornando-se gradualmente mais brilhante no topo. Não há qualquer razão por trás disso, nem faz qualquer sentido lógico. Mas o fato de que na maioria das cavernas em jogos, você pode ver a parede apesar de não ter qualquer fonte de luz, então eu não acho que realmente importa. É apenas para olhares.
    OBS: Se a parede de rochas for do lado externo de cavernas, então devemos nos atentar muito ao posicionamento de cores e sentido da iluminação.
    Então, por causa disso, eu percebi que a metade superior da parede ficou muito escura, então basta eu alterar a cor que eu utilizei de base para uma cor mais brilhante.


    E com a sombra que acabei de alterar na metade superior, eu termino de fazer o contorno, me certificando de adicionar o excesso em torno das cores mais escuras para realizar o sombreamento.


    E, finalmente, eu vou para a próxima sombra acima (o que seria agora a sombra mais brilhante) e basta destacar a metade de cima das rochas. Mais uma vez, não há realmente qualquer processo de pensamento por trás disso.

    Com essa última sombra adicionada, nossa parede de pedras está terminada. Então agora eu vou juntar mais de uma dela para me certificar de que elas se encaixam perfeitamente, isso é muito importante, pois elas podem não se encaixar, o que vai causar um efeito visual muito feio no jogo. E sem contar a cor rosa, eu utilizei apenas 5 cores e criei uma parede simples, porém bonita.



    superwalrusland (Tutorial)
    Thayam (Tradução e compartilhamento no fórum)
  2. Upvote
    Administrador got a reaction from ChernobylAtlant in OBDExporter v0.2.2   
    OBD EXPORTER
     
     


    Ferramenta para exportar arquivos .odb (arquivos do object builder)
     
     


     
     
     


    DOWNLOAD
     
     


    OBDExporter.rar
     
     


     
     
     


    SOURCES
     
     


    OBDExporter-master.zip
     
     


     
     
     


    Créditos: https://github.com/Mignari
     
     


     
     
     


     
     


    OBDExporter.rar
    OBDExporter-master.zip
  3. Upvote
    Administrador got a reaction from 88461415 in Magnus Challenger   
    Pra quem não conhece é um sistema de Tasks baseado no Zezenia onde você pode escolher entre tasks de matar monstros ou de coletar certos items para o npc Magnus, um guerreiro famoso da cidade que está atolado de tarefas e precisa da sua ajuda!

    Peguei os aspectos que eu julguei serem os principais do modelo do Zezenia e editei com algumas coisas que eu achei que ficariam melhores.
    Quem quiser pode ver um vídeo comentado de como o sistema funciona:
     

    Dito isso vou ensinar vocês como instalar isso no server:
    Pra começar vá em data\creaturescripts\scripts e procure login.lua, agora vá até o final do arquivo e antes do último return true coloque essas linhas abaixo
    -------------- TASK SYSTEM -------------- registerCreatureEvent(cid,"tasksystem") if getPlayerStorageValue(cid, 95673) < 0 then setPlayerStorageValue(cid, 95673, 0) end if getPlayerStorageValue(cid, 95674) < 0 then setPlayerStorageValue(cid, 95674, 0) end ----------------------------------- Ainda em creaturescripts procure creaturescripts.xml e adicione essa linha junto com as outras que já estão lá (seguindo o padrão)
    <!-- TASK SYSTEM --> <event type="kill" name="tasksystem" script="tasksystem.lua"/> Agora crie um arquivo em creaturescripts\scripts com o nome de tasksystem.lua e adicione o seguinte à ele:
    local storages = { name = 95672, count = 95673, maxcount = 95674, } local config = { partycount = true, --- true ou false pra ativar/desativar que os kills dos membros da party contem pra voce killdistance = 7 --- distancia que conta os kills } function onKill(cid, target, lastHit) if isMonster(target) and getPlayerStorageValue(cid, storages.maxcount) > 3 and getCreatureMaster(target) == target and (not(isInParty(cid)) or config.partycount ~= true) then if getCreatureName(target):lower() == string.lower(getPlayerStorageValue(cid, storages.name)) then setPlayerStorageValue(cid, storages.count, getPlayerStorageValue(cid, storages.count) + 1) if getPlayerStorageValue(cid, storages.count) == getPlayerStorageValue(cid, storages.maxcount) then doPlayerSendTextMessage(cid, 19, "You finished your task.") elseif getPlayerStorageValue(cid, storages.count) < getPlayerStorageValue(cid, storages.maxcount) then doPlayerSendTextMessage(cid, 20, "Killed ".. getCreatureName(target) .."s [".. getPlayerStorageValue(cid, storages.count) .."/".. getPlayerStorageValue(cid, storages.maxcount) .."].") end end elseif isMonster(target) and getCreatureMaster(target) == target and isInParty(cid) and config.partycount == true then leader = getPartyLeader(cid) party = getPartyMembers(leader) for i = 1, #party do pid = party[i] if getDistanceBetween(getThingPos(target), getThingPos(pid)) < config.killdistance then if getPlayerStorageValue(pid, storages.maxcount) > 3 then if getCreatureName(target):lower() == string.lower(getPlayerStorageValue(pid, storages.name)) then setPlayerStorageValue(pid, storages.count, getPlayerStorageValue(pid, storages.count) + 1) if getPlayerStorageValue(pid, storages.count) == getPlayerStorageValue(pid, storages.maxcount) then doPlayerSendTextMessage(pid, 19, "You finished your task.") elseif getPlayerStorageValue(pid, storages.count) < getPlayerStorageValue(pid, storages.maxcount) then doPlayerSendTextMessage(pid, 20, "Killed ".. getCreatureName(target) .."s [".. getPlayerStorageValue(pid, storages.count) .."/".. getPlayerStorageValue(pid, storages.maxcount) .."].") end end end end end end return true end Terminada a parte da contagem de kill vamos ao NPC em si.
    Crie um arquivo chamado Magnus.xml em data\npc e coloque isso dentro dele:
    <npc name="Magnus" script="data/npc/scripts/zezeniaa.lua" access="5" lookdir="1"> <health now="1000" max="1000"/> <look type="134" head="39" body="113" legs="38" feet="0" addons="3"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|.I've been wondering if you would never appear.. Are you interested in a {challenge} or you're just looking for your {reward}?" /> </parameters> </npc> Agora em data\npc\scripts crie um arquivo chamado zezeniaa.lua e adicione esse conteúdo dentro do arquivo:
    local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} -- OTServ event handling functions start function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end -- OTServ event handling functions end function creatureSayCallback(cid, type, msg) -- Place all your code in here. Remember that hi, bye and all that stuff is already handled by the npcsystem, so you do not have to take care of that yourself. if (not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid -------------------------------- ALL CONFIG CAN BE DONE HERE -------------------------- local short = 100 + (math.random(0,6) * 50) -- quantidade de monstros no curto local median = 500 + (math.random(0,6) * 50) -- quantidade de monstros no mediano local long = 1000 + (math.random(0,10) * 100) -- quantidade de monstros no longo local config = { levelcollect = 30, --- level pra poder fazer tasks do tipo collect time = 8 * 60 * 60, --- tempo que vc vai ficar sem poder falar com ele caso abandone uma task (em segundos) bonus = 1.2, --- bonus de exp/gold caso a task escolhida seja random multiplicator = 1 --- multiplicador de exp/gold (coloque de acordo com a necessidade do seu server) } local easy = { [1] = "Goblin", [2] = "Troll", [3] = "Rotworm", [4] = "Dwarf", [5] = "Amazon", [6] = "Elf", [7] = "Wolf", [8] = "Orc", [9] = "Minotaur" } local eacollect = { [1] = {id = 5880, count = 20}, -- iron ore [2] = {id = 5902, count = 15}, -- honeycomb [3] = {id = 5878, count = 10}, -- minotaur leather [4] = {id = 5890, count = 20}, -- chicken feather [5] = {id = 5894, count = 15}, -- bat wing [6] = {id = 5896, count = 10}, -- bear pawn [7] = {id = 5897, count = 20}, -- wolf pawn [8] = {id = 5921, count = 15}, -- heaven blossom [9] = {id = 3956, count = 10} -- elephant tusk } local medium = { [1] = "Cyclops", [2] = "Ghoul", [3] = "Dragon", [4] = "Mammoth", [5] = "Vampire", [6] = "Fire Devil", [7] = "Fire Elemental", [8] = "Valkyrie", [9] = "Monk" } local medcollect = { [1] = {id = 5876, count = 35}, -- lizard leather [2] = {id = 5678, count = 30}, -- tortoise egg [3] = {id = 5898, count = 25}, -- beholder eye [4] = {id = 5899, count = 35}, -- turtle shell [5] = {id = 2229, count = 30}, -- skull [6] = {id = 5877, count = 25}, -- dragon leather [7] = {id = 5920, count = 30} -- dragon scale } local hard = { [1] = "Giant Spider", [2] = "Dragon Lord", [3] = "Grim Reaper", [4] = "Demon", [5] = "Crystal Spider", [6] = "Demon Skeleton", [7] = "Juggernaut", [8] = "Destroyer", [9] = "Hand of Cursed Fate" } local hardcollect = { [1] = {id = 5882, count = 50}, -- red dragon scale [2] = {id = 5948, count = 45}, -- red dragon leather [3] = {id = 5930, count = 40}, -- behemoth claw [4] = {id = 5879, count = 50}, -- giant spider silk [5] = {id = 5954, count = 45}, -- demon horn [6] = {id = 6500, count = 40}, -- demoniac essence [7] = {id = 5944, count = 45}, -- soul orb } local storages = { name = 95672, count = 95673, maxcount = 95674, difficult = 95675, length = 95676, delay = 95677, type = 95678, } local gold = 1000 * ((getPlayerStorageValue(cid, storages.length)) + (getPlayerStorageValue(cid, storages.difficult))) * config.multiplicator local experience = ((getExperienceForLevel(getPlayerLevel(cid) + 1) - getExperienceForLevel(getPlayerLevel(cid))) / 100) * ((getPlayerStorageValue(cid, storages.length)) * (getPlayerStorageValue(cid, storages.difficult))) * config.multiplicator -------------------------------- END OF ALL CONFIG -------------------------- local type = getPlayerStorageValue(cid, storages.type) if (msgcontains(msg, 'task') or msgcontains(msg, 'challenge')) and (getPlayerStorageValue(cid, storages.delay) - os.time()) <= 0 then if getPlayerStorageValue(cid, storages.maxcount) > 3 and getPlayerStorageValue(cid, storages.type) == 1 then talkState[talkUser] = 6 selfSay('Your task is to kill {'..getPlayerStorageValue(cid, storages.maxcount)..' '..getPlayerStorageValue(cid, storages.name)..'s}. Hurry with this or you want to {give up}?!', cid) elseif getPlayerStorageValue(cid, storages.maxcount) > 3 and getPlayerStorageValue(cid, storages.type) == 2 then talkState[talkUser] = 6 selfSay('Your task is to collect {'.. getPlayerStorageValue(cid, storages.maxcount)..' '.. getItemNameById(getPlayerStorageValue(cid, storages.name)) ..'s}. Hurry with this or you want to {give up}?!', cid) else talkState[talkUser] = 1 selfSay('I have two types of tasks, you want to {kill} monsters or to {collect} some items for me? You can also let me choose a {random} one for you, garanting a final bonus in your reward.', cid) end elseif (msgcontains(msg, 'kill') and talkState[talkUser] == 1) then talkState[talkUser] = 2 setPlayerStorageValue(cid, storages.type, 1) selfSay('I have all kinds of tasks, you want a {easy}, {medium} or are you up to a {hard} one?', cid) elseif (msgcontains(msg, 'collect') and talkState[talkUser] == 1 and getPlayerLevel(cid) >= config.levelcollect) then talkState[talkUser] = 2 setPlayerStorageValue(cid, storages.type, 2) selfSay('I have all kinds of tasks, you want a {easy}, {medium} or are you up to a {hard} one?', cid) elseif (msgcontains(msg, 'collect') and talkState[talkUser] == 1 and getPlayerLevel(cid) < config.levelcollect) then talkState[talkUser] = 1 selfSay('You can only do collect tasks once you reach level '..config.levelcollect..'.', cid) ------- difficult --------- elseif (msgcontains(msg, 'random') and talkState[talkUser] == 1) then talkState[talkUser] = 4 selfSay('Are you sure about this?', cid) setPlayerStorageValue(cid, storages.type, math.random(1,2)) setPlayerStorageValue(cid, storages.difficult, math.random(2,4) * config.bonus) setPlayerStorageValue(cid, storages.length, math.random(2,4) * config.bonus) elseif (msgcontains(msg, 'hard') and talkState[talkUser] == 2) then talkState[talkUser] = 3 selfSay('I have all kinds of tasks, you want a {short}, {median} or are you up to a {long} one?.', cid) setPlayerStorageValue(cid, storages.difficult, 4) elseif (msgcontains(msg, 'medium') and talkState[talkUser] == 2) then talkState[talkUser] = 3 selfSay('I have all kinds of tasks, you want a {short}, {median} or are you up to a {long} one?.', cid) setPlayerStorageValue(cid, storages.difficult, 3) elseif (msgcontains(msg, 'easy') and talkState[talkUser] == 2) then talkState[talkUser] = 3 selfSay('I have all kinds of tasks, you want a {short}, {median} or are you up to a {long} one?.', cid) setPlayerStorageValue(cid, storages.difficult, 2) ------- bye --------- elseif (msgcontains(msg, 'no')) and isInArray({1, 6, 7}, talkState[talkUser]) then talkState[talkUser] = 0 selfSay('Clearly you are not ready. We can talk later...', cid) ------- length --------- elseif (msgcontains(msg, 'short') and talkState[talkUser] == 3) then talkState[talkUser] = 4 selfSay('Are you sure about this?', cid) setPlayerStorageValue(cid, storages.length, 2) elseif (msgcontains(msg, 'median') and talkState[talkUser] == 3) then talkState[talkUser] = 4 selfSay('Are you sure about this?', cid) setPlayerStorageValue(cid, storages.length, 3) elseif (msgcontains(msg, 'long') and talkState[talkUser] == 3) then talkState[talkUser] = 4 selfSay('Are you sure about this?', cid) setPlayerStorageValue(cid, storages.length, 4) ----------- give up option ----------- elseif (msgcontains(msg, 'give up') and talkState[talkUser] == 6) then selfSay('Are you saying that you want to give up this task? I will not give you any other task in the next '.. (config.time/3600) ..' hour(s).', cid) talkState[talkUser] = 7 elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 7) then selfSay('Since you will not help me, get out of here.', cid) setPlayerStorageValue(cid, storages.maxcount, 0) setPlayerStorageValue(cid, storages.delay, os.time() + config.time) talkState[talkUser] = 0 ----------------------- ------- checking --------- elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 4) then local length = getPlayerStorageValue(cid, storages.length) local difficult = getPlayerStorageValue(cid, storages.difficult) if type == 1 then if length == 2 then setPlayerStorageValue(cid, storages.maxcount, short) elseif length == 3 then setPlayerStorageValue(cid, storages.maxcount, median) else setPlayerStorageValue(cid, storages.maxcount, long) end if difficult == 2 then setPlayerStorageValue(cid, storages.name, easy[math.random(1, #easy)]) elseif difficult == 3 then setPlayerStorageValue(cid, storages.name, medium[math.random(1, #medium)]) else setPlayerStorageValue(cid, storages.name, hard[math.random(1, #hard)]) end setPlayerStorageValue(cid, storages.count, 0) talkState[talkUser] = 0 selfSay('OK then.. your task is to kill '..getPlayerStorageValue(cid, storages.maxcount)..' '..getPlayerStorageValue(cid, storages.name)..'s. Do not spare any monster!', cid) elseif type == 2 then if length == 2 then setPlayerStorageValue(cid, storages.maxcount, eacollect[math.random(1, #eacollect)].count) elseif length == 3 then setPlayerStorageValue(cid, storages.maxcount, medcollect[math.random(1, #medcollect)].count) else setPlayerStorageValue(cid, storages.maxcount, hardcollect[math.random(1, #hardcollect)].count) end if difficult == 2 then setPlayerStorageValue(cid, storages.name, eacollect[math.random(1, #eacollect)].id) elseif difficult == 3 then setPlayerStorageValue(cid, storages.name, medcollect[math.random(1, #medcollect)].id) else setPlayerStorageValue(cid, storages.name, hardcollect[math.random(1, #hardcollect)].id) end setPlayerStorageValue(cid, storages.count, 0) talkState[talkUser] = 0 selfSay('OK then.. your task is to collect {'.. getPlayerStorageValue(cid, storages.maxcount)..' '.. getItemNameById(getPlayerStorageValue(cid, storages.name)) ..'s}. Bring me the proof that you made it!', cid) end elseif (msgcontains(msg, 'no') and talkState[talkUser] == 4) then talkState[talkUser] = 0 selfSay('Ok, come back when you have the guts.', cid) ------- reward --------- elseif msgcontains(msg, 'reward') then if type == 1 then if getPlayerStorageValue(cid, storages.count) >= getPlayerStorageValue(cid, storages.maxcount) and getPlayerStorageValue(cid, storages.maxcount) > 3 then selfSay('You finished the quest, now you want to receive your reward in {gold} or in {experience}?', cid) talkState[talkUser] = 5 else selfSay('There is no reward for those who did not complete a challenge.', cid) talkState[talkUser] = 0 end end if type == 2 then if getPlayerItemCount(cid, getPlayerStorageValue(cid, storages.name)) >= getPlayerStorageValue(cid, storages.maxcount) and getPlayerStorageValue(cid, storages.maxcount) > 3 then selfSay('You finished the quest, now you want to receive your reward in {gold} or in {experience}?', cid) talkState[talkUser] = 5 else selfSay('There is no reward for those who did not complete a challenge.', cid) talkState[talkUser] = 0 end elseif (type < 1) then selfSay('There is no reward for those who did not complete a challenge.', cid) talkState[talkUser] = 0 end ---------- checking rewards --------------- elseif (msgcontains(msg, 'gold') and talkState[talkUser] == 5 ) then if (type == 1) or (doPlayerRemoveItem(cid, getPlayerStorageValue(cid, storages.name), getPlayerStorageValue(cid, storages.maxcount)) and type == 2) then for k, v in pairs(storages) do setPlayerStorageValue(cid, v, 0) end doPlayerAddMoney(cid, gold) talkState[talkUser] = 0 selfSay('Thanks for your help, here is your prize..', cid) else selfSay('Something went wrong..', cid) end elseif (msgcontains(msg, 'experience') and talkState[talkUser] == 5) then if (type == 1) or (doPlayerRemoveItem(cid, getPlayerStorageValue(cid, storages.name), getPlayerStorageValue(cid, storages.maxcount)) and type == 2) then for k, v in pairs(storages) do setPlayerStorageValue(cid, v, 0) end doPlayerAddExperience(cid, experience) talkState[talkUser] = 0 selfSay('Thanks for your help, here is your prize..', cid) else selfSay('Something went wrong..', cid) end ----------------------- msg when blockek -------------- elseif (msgcontains(msg, 'task') or msgcontains(msg, 'challenge')) and (getPlayerStorageValue(cid, storages.delay) - os.time()) > 0 then talkState[talkUser] = 0 selfSay('I can not trust you since you failed in the last job. You will have to wait until I feel that I can trust you again..', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) FEITO ISSO ESTÁ TERMINADO

    Agora aprendendo a configurar:
     
    No tasksystem vc pode editar isso daqui:
    Citar
    Eu fiz um sistema onde se vc estiver em party com alguém e a pessoa matar os bixos conta como se você tivesse matado; Assim incentiva o pessoal a ir numa cave de Dragon e ao invés de matar quem está lá pra ficar sozinho na cave, eles vão chamar party pra fazerem a task juntos.. assim fazer amigos fica mais fácil e com maiores laços é maior a chance do povo não abandonar o seu server.

    Apenas digite "true" ou "false" pra ativar/desativar esse sistema e em baixo temos a distancia máxima pro monstro estar do cara que está fazendo a task pra contar o kill. Se a distancia entre o monstro e a pessoa for maior que 7 não vai contar pra ele a kill.


    No zezeniaa.lua as coisas que dão pra configurar são maiores mas são igualmente simples:partycount = true, --- true ou false pra ativar/desativar que os kills dos membros da party contem pra voce
    killdistance = 7 --- distancia que conta os kills
     
    Citar
    Toda vez que vc pedir uma task short (curta) vc vai ter de 100 a 400 monstros pra matar, ele gera um número de 0 a 6 e multiplica por 5 e soma com os 100 iniciais.. o mesmo vale pra todos os outros valores.

    Citar
    levelcollect é o level mínimo pra fazer tasks do tipo collect.
    time é o tempo em segundos que você vai ficar sem poder falar com o npc caso desista de alguma task, o padrão é 8 * 60 * 60 (8 horas)
    bonus é por quanto vai multiplicar caso vc permita que o npc escolha aleatoriamente entre todas as opções.. o padrão é 20% de bonus (1.2)
    multiplicador é uma coisa que eu adicionei pra ficar mais fácil mexer na fórmula sem cometer cagadas, se vc tá ganhando 10% de exp e quer ganhar 80% é só colocar 8 no multiplicador.

    Citar
     
    local short = 100 + (math.random(0,6) * 50) -- quantidade de monstros no curto
    local median = 500 + (math.random(0,6) * 50) -- quantidade de monstros no mediano
    local long = 1000 + (math.random(0,10) * 100) -- quantidade de monstros no longo
     
    Isso daqui é o banco de dados principal do sistema de kill, toda vez que vc escolher uma task do tipo fácil, médio, dificil ele vai acessar essas tabelas contendo o nome das criaturas.. vc pode facilmente adicionar novos nomes, o npc já está programado pra lidar com isso, apenas siga o padrão e mantenha sempre o último sem vírgula!

    Ex: adicionando Morgaroth na tabela de hard
    local hard = {
    [1] = "Giant Spider",
    [2] = "Dragon Lord",
    [3] = "Grim Reaper",
    [4] = "Demon",
    [5] = "Crystal Spider",
    [6] = "Demon Skeleton",
    [7] = "Juggernaut",
    [8] = "Destroyer",
    [9] = "Hand of Cursed Fate",
    [10] = "Morgaroth"
    }
    atente-se também pra não repetir o número no index.. se o anterior era [9] use [10].

    O restante das tabelas são separadas para o banco de dados das tasks de collect:

    Citar
    segue a mesma lógica da de kill só que aqui você tem o id dos itens que serão usados... aquela count não tem nada a ver com o item pois ele vai gerar tanto o item aleatoriamente quanto à count;
    Ex:
    [1] = {id = 5880, count = 20}, -- iron ore
    isso não significa que se cair iron ore (id 5880) irá cair sempre 20.. até porque eu poderia escolher uma task long e easy e pegar a task de trazer até 50 iron ores, apenas tente manter os padrões que são os intervalos definidos.
    No easy ele varia de 10 a 20, no medium ele varia de 20 a 35 e no hard de 40 a 50.

    PS: Pra sumonar o npc digite com o GOD: /n Magnus ou coloque ele pelo map editor.
    Créditos: xWhiteWolf
  4. Upvote
    Administrador got a reaction from premii in Compilar OTClient Windows   
    Compilando OT CLIENT - WINDOWS
     
    Necessário:
    Cmake (2.8.8+) CodeBlocks com MinGW, otc usa a nova versão MinGW32 (20120426+) Otclient bibliotecas para mingw32 (otclient-libs_mingw32-dwarf2.zip) Otclient source (otclient-master.zip)  
     
    Certifique-se de que você instalou as últimas versões, ou algumas coisas podem não funcionar. Nota: otc utiliza C:/MinGW como diretório toolchain, você pode mudar mas cuidado.
     
    Instale MinGW32
    Note que esse GCC precisa ser 4.6 ou posterior, qualquer outro GCC que você já tenha instalado não vai funcionar porque otclient precisa de features C++11 que são suportados apenas por compiladores recentes. Execute o instalador MinGW32 e no processo de instalação certifique-se que você usa o último catalogo, quando perguntado e marque a instalação do compilador C++. Quando acabado, o MinGW deve ser instalado em C:/MinGW. é seguro instalar o sistema MSYS e funciona com isso.
     
    Instale CMake
    Rode o Instalador, se perguntado se você quer que o CMake configure Path Variable, diga não. Isto será setado manualmente nos próximos passos.
     
    Instale CodeBlocks
    Execute o instalador do CodeBlocks, lembre, não instale MinGW quando pedir.
     
    Instale Bibliotecas Otclient
    Extraia o otclient-libs_mingw32-dwarf2.zip em C:/MinGW/. Este zip contém 3 pastas *Lib,include e bin devem ser jogados em C:/MinGW/lib, C:/MinGW/include e C:/MinGW/bin.
     
    Configure system PATH variable
    Agora todas as ferramentas necessárias estão instaladas, você precisa configurar o system path variable para fazer o CMake encontrar o MinGW32 e as bibliotecas instaladas, vá até:
     
    Control Panel->System->Advanced->Environment Variables
     
    Verifique se o user variable path existe, se não, crie um, então sete isso para:
     
    C:\Program Files (x86)\CMake 2.8\bin;C:\MinGW\bin;C:\MinGW\lib;C:\MinGW\include
     
    Tenha certeza que esse user variable path existe e referencia para o diretório do CMake apropriadamente.
     
    Faça Download das Sources do OTClient
    Baixe as últimas sources do OTClient (otclient-master.zip). O diretório no qual você colocou as sources pode não conter espaços (e.g. "C:\OTClient\" é bom, contudo "C:\Program Files\OTClient" não é).
     
    Gere CodeBlocks Arquivo de Projeto (Project File)
    Rode CMake-gui.exe localizado em \Program Files\CMake 2.8\bin, e especifique o diretório no qual você recém jogou as sources, e onde você quer que os arquivos do projeto sejam criados. Pressione configurações, selecione CodeBlocks - MinGW Makefiles como gerador, então gere os arquivos do projeto.
     
    Scripting e Compilação
    Abra o (otclient.cbp) por CMake com CodeBlocks, e escreva. Para compilar, você precisa primeiro configurar a pasta do MinGW32, indo em Settings >Compiler And Debugger... > Toolchain Executables.
     
    Mantenha uma cópia do Tibia.dat e Tibia.spr dentro de /data/things// antes de rodar o cliente.
     
    Créditos e Fonte: https://github.com/edubart/otclient/wiki/Compiling-on-Windows
    Xtibia.com - Sua comunidade de Tibia e OTServ!
     
     
    otclient-master.zip
    otclient-libs_mingw32-dwarf2.zip
  5. Upvote
    Administrador got a reaction from dougdogtown in 10.80 - 10.90 | xTibia Sharp Map Tracker   
    Informações:
    (Não oficial)
    Funciona com TibiaCast
    Versões testadas: 10.80/10.90
     
    Reupado
    xTibia Map Tracker.zip
     
    xTibia Map Tracker.zip
  6. Haha
    Administrador got a reaction from miupinho in Coordenador do xTibia   
    COORDENADOR XTIBIA
     
     


    Objetivo do cargo:
     
     


    Instruir e supervisionar Moderadores para manter os padrões de conduta da comunidade;
     
     


    Realizar a manutenção de conteúdos e/ou novos conteúdos em todas as seções;
     
     


    Desenvolver projetos de aprendizagem, desenvolvimento, eventos ou outros.
     
     


     
     
     


     
     
     


    Um coordenador Não pode
     
     


    • Utilizar das ferramentas disponíveis em seu cargo para se beneficiar ou beneficiar determinado(s) indivíduo(s);
     
     


    • Ofender outros membros;
     
     


     
     
     


    Um coordenador pode
     
     


    • Banir, suspender ou limitar acesso a usuários com comportamento abusivo;
     
     


    • Promover ou remover cargo de membros da equipe;
     
     


    • Editar posts e tópicos de outros membros (log privado);
     
     


    • Editar todas informações de membros;
     
     


    • Modificar tópicos por completo (mover, editar título, fechar, ocultar, programar, etc...);
     
     


    • Acessar a comunidade quando offline para manutenção.
     
     


    • Ler Logs internos;
     
     


     
     
     
  7. Thanks
    Administrador got a reaction from Latosberry in TFS 1.1 (Cast System)   
    TFS 1.1 (Cast System) 10.77
    Downloads:
    TFS 1.1 (v 10.77) - forgottenserver-master.zip, Repositório
    Executável 32 bits - executavelx86.zip , Scan
    Executável 64 bits - executavelx64.zip , Scan
     
    Cast System:
    Execute query na DB


    data/talkactions/scripts adicionar arquivos:

    start_cast.lua
     
    function onSay(cid, words, param)local player =Player(cid)if player:startLiveCast(param)thenplayer:sendTextMessage(MESSAGE_INFO_DESCR,"You have started casting your gameplay.")elseplayer:sendCancelMessage("You're already casting your gameplay.")endreturnfalseend

    stop_cast.lua
    function onSay(cid, words, param)local player =Player(cid)if player:stopLiveCast(param)thenplayer:sendTextMessage(MESSAGE_INFO_DESCR,"You have stopped casting your gameplay.")elseplayer:sendCancelMessage("You're not casting your gameplay.")endreturnfalseend

    data/talkactions/talkactions.xml
    <talkactionwords="!cast"separator=" "script="start_cast.lua"/><talkactionwords="!stopcast"script="stop_cast.lua"/>

    OBS:
    Você precisa abrir portas 7173

    Créditos:
    marksamman - TFS
    djarek - Cast System
    Bruno Minervino - Atualizações
    forgottenserver-master.zip
    executavelx64.zip
    executavelx86.zip
  8. Upvote
    Administrador got a reaction from murluka in Reemere's Map Editor (Versão cliente extendido)   
    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:
    Basta baixar a versão  normal do Remere's Map Editor no Site do Remeres  e instalar em seu computador. Depois Baixa a versão que postei pra download. Terceiro Extraia a versão que postei pra download na pasta aonde o Remere's Map Editor foi instalado. Substitui todos os arquivos quando pedir , sempre clicando em subistituir , Sim , Ok. 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. 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.
     
    Extended Download  : 
    DOWNLOAD
    Scan : Clique Aqui
     
    Extended Download By Senhor :
    DOWNLOAD
    Scan : Clique aqui
     
    Créditos :
    Hjnilsson (RME)
    MartyX - Ajudou a compilar
    Comedinha
    EdMignari
    Pessoal do TPForums
  9. Upvote
    Administrador got a reaction from Duduh124000 in Baiak ROX nova versão EDITADO   
    -Templo com novo visual (By Dieguiin XP) -Fast attack melhorado -Castle 24HRS Unico com aviso de invasores (By Dieguiin XP) -Dodge System -Critical System -Cast System 100 % -Items VIP a mostra no templo -Todos itens VIP arrumados, agóra tão dando Skills normalmente (By Dieguiin XP) -foi adicionado mais cave donates (By Dieguiin XP) -Push Fast. Para arrumar do seu módo vá em config.lua e procure por: pushCreatureDelay = 1 * 205 -Tempo do PZ arrumado. (By Dieguiin XP) -caves donate tudo trocada, agóra caves grandes com detalhes, não aquélas quadradas (By Dieguiin XP) -nóvos itens free, pode ser obtidos em quest (By Dieguiin XP) -Teleports com novo visual (By Dieguiin XP) -Vários Teleports -Paladin arrumado, agóra heala com potion e ataca ao mesmo tempo (By Dieguiin XP) -Utito tempo san arrumado, agóra não da exausted em outras magias (By Dieguiin XP) -Novas Hunts (By Dieguiin XP) -Look Frags -Task 100% -War System 100% (Testado) -Muitas quests (By Dieguiin XP) -Arena PVP (Nóva) -Quest de set free para Pally/Kinas (By Dieguiin XP) -Quest de set free para Mages (By Dieguiin XP) -quest para armas editadas (By Dieguiin XP) -Treiners com novos visual -VIP 1 Free -VIP 2: !vip2 -Area Donate Melhorada (By Dieguiin XP) -30% a mais de experiencia para players donates (By Dieguiin XP)) -10% a mais de experiencia para guild que domina o Castle 24HRS (By Dieguiin XP) -Potions Editadas com nóvos efeitos (By Dieguiin XP) E muito mais que eu não lembrei HEHE! Eventos: Capture The Flag City War Event BattleField Event Comandos principais: !dodoge (informações do DODGE, By Dieguiin XP) !critical (informações do CRITICAL, By Dieguiin XP) /cast /castinfo (informações do CAST, By Dieguiin XP) !stamina !aol !bless !notice. Vamos as imagens: templo Castle area donate Download: http://www.4shared.c..._By_Diego.html? SCAN https://www.virustot...sis/1413568779/ Créditos: Dieguiin XP
    DeathRocks
    Vinny
  10. Thanks
    Administrador got a reaction from danilo9317 in Auto-Restarter Com Screen Linux Debian 6.0 (100% Funcional)   
    Restarter Em Linux (100% Funcional)



    Testado em Debian 6.0


     

    Primeiro de tudo você deve se logar na máquina usando SSH, não vou cobrir isso aqui neste tutorial, pois é o básico do básico para entrar em um servidor linux.



    Usaremos o Screen que é um aplicativo do linux que te permite trabalhar com várias janelas e já que precisamos deixar um OT funcionando mesmo quando a gente saia do SSH, iremos usá-lo.


     

    Instalando Screen




    sudo apt-get update
    sudo apt-get install screen



    Comandos Básicos do Screen


     

    Screen -ls (listagem de screens abertas)




    root@globalwarts:~# screen -ls
    There is a screen on:
    2037.pts-0.globalwarts (02/01/12 16:40:47) (Detached)
    1 Socket in /var/run/screen/S-root.[/left]


     
    screen (abre uma screen nova)
     
    screen -r 2037.pts-0.globalwarts

     

    CTRL + A + D (volta para a tela anterior)


     

    Outras dicas (enviadas por usuários)


     

    screen -s nome (permite dar um nome a screen - thx kydrai)



    crtl + A (que deixa você "rolar" (scrollback) a screen - thx kydrai)


     

    Pronto, já aprendeu screen né?



    Criando o Restarter em Linux



    Supondo que o meu executável compilado se chame theforgottenserver


     

    Na mesma pasta do seu otserver, faça:


     

    pico autoRestarter.sh
     
    Agora cole no arquivo:
     

    while true; do ./theforgottenserver; done
     
    Abra a screen nova para que ele não feche quando voce sair do SSH:

    screen
     
     
    Não se esqueça de dar permissões de escrita ao restarter e ao seu executável do OTserv

    chmod 777 autoRestarter.sh chmod 777 theforgottenserver
     
    Execute dentro da screen

    ./autoRestarter.sh
     
    Espero que tenha ajudado, quando eu precisei não encontrei em nenhum forum BR, acho que é legal trazer esse conhecimento para a galera.

  11. Upvote
    Administrador got a reaction from twazin in Reemere's Map Editor (Versão cliente extendido)   
    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:
    Basta baixar a versão  normal do Remere's Map Editor no Site do Remeres  e instalar em seu computador. Depois Baixa a versão que postei pra download. Terceiro Extraia a versão que postei pra download na pasta aonde o Remere's Map Editor foi instalado. Substitui todos os arquivos quando pedir , sempre clicando em subistituir , Sim , Ok. 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. 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.
     
    Extended Download  : 
    DOWNLOAD
    Scan : Clique Aqui
     
    Extended Download By Senhor :
    DOWNLOAD
    Scan : Clique aqui
     
    Créditos :
    Hjnilsson (RME)
    MartyX - Ajudou a compilar
    Comedinha
    EdMignari
    Pessoal do TPForums
  12. Upvote
    Administrador got a reaction from mixtrop10 in (novidade) otclient para android   
    Já havia visto também, muito útil. 
  13. Upvote
    Administrador got a reaction from Tibiano Pro in Tibia Ot Client   
    OT CLIENT
     
    Otclient é um cliente de Tibia alternativo para usar em Otserv. É um client flexível e completo, usa escrita .lua para toda a interface do game e suas funcionalidades/arquivos de configuração. Funciona com sistema modular, significa que cada funcionalidade é um módulo separado, dando possibilidade aos usuários mudificarem e customizarem qualquer coisa facilmente. Usuários também podem criar novos mods e extender a interface do game para seus próprios propósitos. Otclient é escrito em C++2011, e levemente escrito em lua.
     
    Últimos Commits compilados para Windows
     
    10.82
    Commit: 0d8791e (24/08/2015)
    Bot Proteção: OFF
    Download: [10.82] OT Client - Xtibia.com.zip
     
     
    10.76
    Commit: fcd481ee15 (09/03/2015)
    Download: [10.76] Ot Client - Xtibia.com.zip
     
     
    10.41
    Commit: fe585d27d8 (30/07/2014)
    Download: [10.41] Ot Client Xtibia.com.zip
     
     
     
    Aqui está o último release v0.6.5 compilado para ambos i686(32 bit) e x86_64(64 bit). Este release é compatível com protocolos 7.60 à 10.31.
    Para Windows Para Linux  
    NOTA: Você terá que baixar o spr/dat por sua conta e colocar eles em data/things/VERSÃO/ (ex:data/things/1041/tibia.spr)
     
     
    FUNCIONALIDADES
    Por trás da flexibilidade com scripts, o otc vem com algumas outras funcionalidades que tornam possivel a criação de um novo client com coisas novas, um novo client jamais visto antes. Isto inclui, sistema de sons, efeitos de gráfico com sombras, módulos/sistemas de addons, texturas animadas, interface personalizável, transparencia, multi-linguagem, in-game lua terminal, um engine OpenGL 1.1/2.0 que torna possível compatibilidade com plataformas mobile. Otclient também é flexível o bastante para criar ferramentas como map editores, apenas usando scripts. Porque nao foi desenhado para ser apenas um cliente, o OTC em si fora desenhado para ser uma combinação de framework e APIs de Tibia.
     
    WINDOWS - Como Compilar?

     
    LINUX - Como Compilar?

     
    OS X - Como Compilar?
     
     
     
    [10.82] OT Client - Xtibia.com.zip
    [10.76] Ot Client - Xtibia.com.zip
    [10.41] Ot Client Xtibia.com.zip
  14. Upvote
    Administrador got a reaction from DantieDameto in Biohazard   
    - Sobre :

    - O Servidor é uma mistura de jogos, series e filmes com o tema apocalipse zumbi, como The Walking Dead, Left4Dead, Infestation, Dayz, e outros. Sua principal base é Resident Evil pois usei muito de seu conteúdo criando o jogo (monstros, classes, cenario, etc), o objetivo do jogo seria sobreviver, cumprir missões, e matar rivais da organização inimiga (No caso seria Umbrela vs Governo"Spec Ops"). Existem algumas classes no jogo que são baseadas no resident evil operation racoon city, e algumas poucas tasks apenas para passar o tempo, já que no inicio o jogo está bem sem objetivo.



    -O servidor está bem complexo de se configurar e você irá perder um bom tempo tentando entender os sistemas, e também existem muitos erros no console do servidor, uma coisa que seria bom ser ajeitada.



    -Sistemas :

    -Sistema de Armas (Use With)

    -Sistema de Carros

    -Sistema de Carona(ainda bugando)

    -Sistema de explodir barris

    -Rest System (Sentar para recuperar vida / stamina)

    -Habilidades únicas para cada classe

    -Lie Down System (Um sistema onde seu personagem deita para dar cobertura, seus tiros dão 15% a mais de dano porem você não pode se mover enquanto estiver deitado)

    -Sistema de Aviões (não concluído)

    -Jato com misseis (não concluído)

    -Jet Ski (apenas sprite)

    -Gun Mix System (Um sistema baseado em Dead Rising onde você mistura duas armas para criar uma mais forte)

    -Npc Guard system (inicialmente a ideia era não existir Prontecion Zone, e estes guardas fariam a segurança destes locais.

    -Troca de outfit ao equipar a arma (Simples, você equipa a arma e seu personagem troca de outfit para uma que aparece a arma na mão)



    Fotos :











    LINKS:

    Spr e Dat (8.6)

    http://www.4shared.c...HSoba/860.html?

    Scan:

    https://www.virustot...sis/1422229733/





    Servidor

    http://www.4shared.c...Biohazard.html?

    Scan:

    https://www.virustot...sis/1422229622/





    OTClient

    http://www.4shared.c...ba/Client.html?

    Scan -

    https://www.virustot...sis/1422362802/



    Pra usar o SPR e o DAT com o RME, só vc baixar o object builder e mudar a versão do arquivo pra uma q o rme suporte (caso dê algum erro ao abrir o original, claro)



    Alguns Videos:

    https://www.facebook...rdOnline/videos




  15. Upvote
    Administrador got a reaction from dragaox in Reemere's Map Editor (Versão cliente extendido)   
    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:
    Basta baixar a versão  normal do Remere's Map Editor no Site do Remeres  e instalar em seu computador. Depois Baixa a versão que postei pra download. Terceiro Extraia a versão que postei pra download na pasta aonde o Remere's Map Editor foi instalado. Substitui todos os arquivos quando pedir , sempre clicando em subistituir , Sim , Ok. 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. 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.
     
    Extended Download  : 
    DOWNLOAD
    Scan : Clique Aqui
     
    Extended Download By Senhor :
    DOWNLOAD
    Scan : Clique aqui
     
    Créditos :
    Hjnilsson (RME)
    MartyX - Ajudou a compilar
    Comedinha
    EdMignari
    Pessoal do TPForums
  16. Upvote
    Administrador got a reaction from underewarr in Distros compilados [TFS 1.0 e 1.2]-[10.78] x86 - x64 + DLLs   
    Distros [TFS 1.0 e 1.2]-[10.78] x86 e x64
    1º- TFS 1.2 - 10.78 x86 ------------------- DOWNLOAD  -  SCAN  -  Novos OutFits & Mounts
    2º- TFS 1.2 - 10.78 x64 ------------------- DOWNLOAD  -  SCAN  -  Novos OutFits & Mounts
    3º- TFS 1.2 - 10.78 x64 Ubuntu 14.04 - DOWNLOAD  -  SCAN  -  Novos OutFits & Mounts
    4º- TFS 1.0 - 10.78 x86 ------------------- DOWNLOAD  -  SCAN  -  V13
    5º- TFS 1.0 - 10.78 x64 ------------------- DOWNLOAD  -  SCAN  -  V13
    6º- TFS 1.0 - 10.78 x64 Ubuntu 14.04 - DOWNLOAD  -  SCAN -  V13
     
    Sources   :  Source TFS 1.0 - V13      Source TFS 1.2 - 10.78  Novos Outfits & Mounts 


    Créditos :
    Bruno Minervino 
    Mitsuig 
    Tiroleivi
    Fireelement
  17. Upvote
    Administrador got a reaction from hazerbr in Reemere's Map Editor (Versão cliente extendido)   
    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:
    Basta baixar a versão  normal do Remere's Map Editor no Site do Remeres  e instalar em seu computador. Depois Baixa a versão que postei pra download. Terceiro Extraia a versão que postei pra download na pasta aonde o Remere's Map Editor foi instalado. Substitui todos os arquivos quando pedir , sempre clicando em subistituir , Sim , Ok. 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. 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.
     
    Extended Download  : 
    DOWNLOAD
    Scan : Clique Aqui
     
    Extended Download By Senhor :
    DOWNLOAD
    Scan : Clique aqui
     
    Créditos :
    Hjnilsson (RME)
    MartyX - Ajudou a compilar
    Comedinha
    EdMignari
    Pessoal do TPForums
  18. Upvote
    Administrador got a reaction from awfaier in Reemere's Map Editor (Versão cliente extendido)   
    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:
    Basta baixar a versão  normal do Remere's Map Editor no Site do Remeres  e instalar em seu computador. Depois Baixa a versão que postei pra download. Terceiro Extraia a versão que postei pra download na pasta aonde o Remere's Map Editor foi instalado. Substitui todos os arquivos quando pedir , sempre clicando em subistituir , Sim , Ok. 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. 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.
     
    Extended Download  : 
    DOWNLOAD
    Scan : Clique Aqui
     
    Extended Download By Senhor :
    DOWNLOAD
    Scan : Clique aqui
     
    Créditos :
    Hjnilsson (RME)
    MartyX - Ajudou a compilar
    Comedinha
    EdMignari
    Pessoal do TPForums
  19. Upvote
    Administrador got a reaction from NdboHakai in [8.54] Servidor + Client Naruto B&W [EXCLUSIVO]   
    O SERVIDOR DE NTO EXCLUSIVO DO NTO BLACK & WHITE



    [+] NOVIDADES & CARACTERISTICAS

    [+] ERROS E BUGS

    [+] PRINTS DO SERVER

    [+] DOWNLOAD

    [+] CREDITOS



    [+] NOVIDADES & CARACTERISTICAS






    - Vocations: Naruto,Sasuke,Rock Lee,Shikamaru,Neji,Tenten,Hinata,Kakashi,Killer Bee,Sakura,Gaara,Kiba,Itachi,Tobi,Minato,Madara,Tsunade,Hashirama,Nidaime,Nagato,Yamato,Raikage,Kisame,Temari,Kankuro,Orochimaru.

    - Ataque do Itachi de Levar Para Outro Mundo 100%.

    - Novas Sprites Retiradas dos Melhores Servers de NTO.

    - Vocacoes Todas Balanceadas.

    - Conta adm: GOD / GOD

    - Foram Adicionados Sasuke,Naruto,Obito e Madara Rikkudou

    - Shop npc no Templo Vendendo Sets e Vocs VIP por Premium Points

    - 8 Quests Adicionadas 100% Funcionando (INCLUINDO NTO POINTS)

    - Novos Ataques Foram Adicionados..

    - Varias Caves (zetsu,deidara,orochimaru,konan,etc..)










    [+] ERROS E BUGS






    - PERGAMINHO PAIN BUGADO POREM PERGAMINHO DO NAGATO ESTA FUNCIONANDO

    - PODE OCORRER UM BUG DE VEZ EM QUANDO DO BOSS NASCER NA QUEST MAS EH FACIL DE ARRUMAR.

    - SERVIDOR SEM ERROS

    - UNICOS PROBLEMAS NO SERVIDOR: CLIENT CHEIO LIMITE DE SPRITES ..










    [+] PRINTS DO SERVER

































    [+] Downloads

    Servidor Naruto B&W: Clique Aqui

    Client(descompilado): Clique Aqui



    [+] Creditos

    - Madara Rinnegan

    - [ADM] Johnata

    - Eytor

  20. Upvote
    Administrador got a reaction from caique8921 in Reemere's Map Editor (Versão cliente extendido)   
    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:
    Basta baixar a versão  normal do Remere's Map Editor no Site do Remeres  e instalar em seu computador. Depois Baixa a versão que postei pra download. Terceiro Extraia a versão que postei pra download na pasta aonde o Remere's Map Editor foi instalado. Substitui todos os arquivos quando pedir , sempre clicando em subistituir , Sim , Ok. 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. 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.
     
    Extended Download  : 
    DOWNLOAD
    Scan : Clique Aqui
     
    Extended Download By Senhor :
    DOWNLOAD
    Scan : Clique aqui
     
    Créditos :
    Hjnilsson (RME)
    MartyX - Ajudou a compilar
    Comedinha
    EdMignari
    Pessoal do TPForums
  21. Upvote
    Administrador got a reaction from Arcanjoroxie in Download Otclient 10.90   
    Backup do Arquivo:
     
    Otclient 10.90.rar
     
    Otclient 10.90.rar
  22. Upvote
    Administrador got a reaction from deiwidy in Sharp Loader (Ip Changer)   
    SHARP LOADER IP CHANGER



    Versão: 0.4

    Download: http://www.mediafire.com/download/cpdp3o0gxc2wq70/Sharp_Loader.rar

    Scan: https://www.virustotal.com/pt/file/77516294e57f89ad3a6a3b942ed0d4b14dc0b8856fc6ba9d1bb7feef36f7dd79/analysis/

  23. Upvote
    Administrador got a reaction from redlenc94 in Reemere's Map Editor (Versão cliente extendido)   
    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:
    Basta baixar a versão  normal do Remere's Map Editor no Site do Remeres  e instalar em seu computador. Depois Baixa a versão que postei pra download. Terceiro Extraia a versão que postei pra download na pasta aonde o Remere's Map Editor foi instalado. Substitui todos os arquivos quando pedir , sempre clicando em subistituir , Sim , Ok. 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. 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.
     
    Extended Download  : 
    DOWNLOAD
    Scan : Clique Aqui
     
    Extended Download By Senhor :
    DOWNLOAD
    Scan : Clique aqui
     
    Créditos :
    Hjnilsson (RME)
    MartyX - Ajudou a compilar
    Comedinha
    EdMignari
    Pessoal do TPForums
  24. Upvote
    Administrador got a reaction from HenryDuff in Reemere's Map Editor (Versão cliente extendido)   
    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:
    Basta baixar a versão  normal do Remere's Map Editor no Site do Remeres  e instalar em seu computador. Depois Baixa a versão que postei pra download. Terceiro Extraia a versão que postei pra download na pasta aonde o Remere's Map Editor foi instalado. Substitui todos os arquivos quando pedir , sempre clicando em subistituir , Sim , Ok. 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. 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.
     
    Extended Download  : 
    DOWNLOAD
    Scan : Clique Aqui
     
    Extended Download By Senhor :
    DOWNLOAD
    Scan : Clique aqui
     
    Créditos :
    Hjnilsson (RME)
    MartyX - Ajudou a compilar
    Comedinha
    EdMignari
    Pessoal do TPForums
  25. Upvote
    Administrador got a reaction from maicom2811 in Distros compilados [TFS 1.0 e 1.2]-[10.78] x86 - x64 + DLLs   
    Distros [TFS 1.0 e 1.2]-[10.78] x86 e x64
    1º- TFS 1.2 - 10.78 x86 ------------------- DOWNLOAD  -  SCAN  -  Novos OutFits & Mounts
    2º- TFS 1.2 - 10.78 x64 ------------------- DOWNLOAD  -  SCAN  -  Novos OutFits & Mounts
    3º- TFS 1.2 - 10.78 x64 Ubuntu 14.04 - DOWNLOAD  -  SCAN  -  Novos OutFits & Mounts
    4º- TFS 1.0 - 10.78 x86 ------------------- DOWNLOAD  -  SCAN  -  V13
    5º- TFS 1.0 - 10.78 x64 ------------------- DOWNLOAD  -  SCAN  -  V13
    6º- TFS 1.0 - 10.78 x64 Ubuntu 14.04 - DOWNLOAD  -  SCAN -  V13
     
    Sources   :  Source TFS 1.0 - V13      Source TFS 1.2 - 10.78  Novos Outfits & Mounts 


    Créditos :
    Bruno Minervino 
    Mitsuig 
    Tiroleivi
    Fireelement
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...