Ir para conteúdo

wayout

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    wayout deu reputação a xWhiteWolf em New Library v. 1.2   
    Fala galera, hoje vim trazer pra vocês uma nova biblioteca de funções que eu venho desenvolvendo, pretendo ir atualizando esse tópico constantemente sempre adicionando funções novas e explicando a utilização delas. Algumas funções que eu coloquei aqui estão presentes na OTAL também, porém algumas eu fiz pequenas correções de forma que essa lib poderia facilmente substituir a OTAL sem grandes problemas (pelo menos se você utilizava apenas as funções básicas da otal)
    Todas as funções que não tem -- nome do autor do lado dela foram feitas por mim, xWhiteWolf ou Night Wolf (NW). O restante delas são créditos dos devidos autores, apenas coloquei pois considero funções vitais no server de cada um. Crie um arquivo em data/lib chamado 075 - White Wolf Functions.lua e coloque o seguinte código dentro:



     
    Agora eu vou explicar oque cada função faz porque de nada adianta lançar uma lib e não explicar oque ela faz não é mesmo? hahaha
    Obs inicial: quando uma função tiver em seus parametros um [] significa que oque está dentro do colchetes não é um parâmetro obrigatório.



    Como usar: doShowTimeByPos(cid, getCreaturePosition(cid), 20, 20)
    Irá fazer uma contagem regressiva na posição que o player se encontra começando de 20 e mandando a mensagem na mesma cor da fala dos monstros.
    Essa função é bem útil em actions/spells para fazer contagem de tempo em runas como a magic wall e ver quanto tempo falta pra magic wall sumir)

     
    Obs: Espero que ajude bastante pessoas a entender sobre funções, eu utilizei cid como o principal uid das funções nos exemplos mas você pode muito bem utilizar outros uids, fica a critério seu.

    Qualquer dúvida comentem abaixo que eu vou tentar ajudar da melhor maneira.
    Ahhh, isso daí foi testado em 8.54 mas deve funcionar em quase todas as versões que tenham as funções básicas do TFS. 

    EDIT: Pessoal, agora é sério, essa lib tem fácil umas 600 linhas, das quais umas 500 eu devo ter codado sozinho (na mão, linha por linha). Eu tive todo o trabalho de testar cada uma delas e oque eu peço é o mínimo de gratidão e respeito. Se eu te ajudei clique em Gostei, se você tiver alguma dúvida eu to me colocando a disposição de responder qualquer coisa relacionada ao tópico, mesmo que você não saiba nem oque é uma lib apenas venha aqui e escreva sua dúvida.

    EDIT 2: Duas novas funções adicionas, espero que gostem!

    EDIT 3: Três novas funções adicionadas juntamente com suas respectivas explicações.
  2. Gostei
    wayout deu reputação a Duduph em [DxP] Exclusivo Poketibia OpenSource+Cliente+Site+DB   
    Exclusivo! PokeTibia DxP OpenSource praticamente completo com sistemas e funções nunca liberados.
     
    ATENÇÃO: Não dou suporte, apenas estou disponibilizando o server para quem quiser continua-lo ou pegar os sistemas. Se alguns grandes aqui do TK quiserem ajudar nos bugs fiquem a vontade, pois este server é praticamente completo, com funções e sistemas nas sources, acho que nunca liberados para o publico.
     Aconselho a trocarem o mapa ou criarem outro por que não testei o mesmo, e não sei se há bugs ou armadilhas.
     
     
     
    • Menu:
    ├ Informações;
    ├ Bugs;
    ├ Prints;
    ├ Download;
    └ Créditos.
     
    • Informações Basicas •
    • Duel System.
    • Nick System.
    • TV System.
    • Autoloot System.
    • Block Respaw System.
    • Mega Evolução Ssystem.
    • Auto Stacking System.
    • Player passa por dentro de outros Players(Não sei o nome deste sistema kk).
    • Ditto Memory System.
    • Player pode usar potions, revive, soltar poke andando sem parar.
    • Limite de efeitos aumentados nas sources até 380(Podendo aumentar muito mais)
    • Transparência.
    • Cliente criptografado(Acompanha OBD único para o cliente).
    • Sistemas básicos como fly, ride, surf, order etc.
    • Held System(Não tem todos, falta fazer alguns, ja tem o x-luck).
    • Fishing trocando o outfit automaticamente.
    • Icone System.
    • Varias Pokeballs novas.
    • Task System.
    • Guild System.
    E muito+, não testei o servidor todo. podem ter sistemas no server que eu esqueci de colocar aqui na lista.
     
     
     
    • Bugs •
    Irei postar os que eu sei, podem haver mais.
    • Gym System não esta funcionando.
     
    Postarei a lista completa de bugs conhecidos e o que ja foi corrigido logo mais.
     
     
    • Prints •
     
    • Mega Evolução

     
    • Ditto Memory.

     
    • TV System.

     
    • Auto Loot System.

     
    • Block Respaw System.

     
    • Irei colocar mais prints em breve(Estou com pouco tempo agora).
     
    • Downloads•
     
     
     
    Alguns antivirus detectam virus, possiveis dlls não reconhecidas, baixem por sua conta em risco, não estou obrigando ninguem a baixar, estou trabalhando no server e nao tive problemas.
    Caso tenham problemas na descompactação dos arquivos utilizem o 7zip, compactador que utilizei.
     
    • Créditos •
    •CipSoft
    •Nintendo
    •TFS Team
    •Dark X Poke
    •PXG
    •Tom Lukz (Smix)
    •Allan Harlen (Kttallan/lordsorte)
    •Eduardo Meskita (FuuinFake)
    •Noninhouh
    •Tony Araujo
    •Taiger/Dudu
    •Drakopoulos
    •Justiceiro751
    •Techrlz
    •RicardoRox
    E a todos que tiveram alguma participação em sistemas, server, site, cliente etc.
     
     
    Mais atualizações em breve!!!
     
  3. Gostei
    wayout deu reputação a Refe em Adicionando Tiles a janela de jogo!   
    Hoje eu vim ensinar como aumenta a "tela" de jogo do OTCLIENT

    (Desculpe o merchant, era a unica imagem que eu tinha salvo)
     
    Testado em : 0.3.6pl1, Pode funcionar em 1.0 com alterações pequenas.
     
     
    Agora ache e troque:
    return ((x >= myPos.x - 8 + offsetz) && (x <= myPos.x + 9 + offsetz) && (y >= myPos.y - 6 + offsetz) && (y <= myPos.gety + 7 + offsetz)); Por:
    return ((x >= myPos.x - Map::maxClientViewportX + offsetz) && (x <= myPos.x + (Map::maxClientViewportX+1) + offsetz) && (y >= myPos.y - Map::maxClientViewportY + offsetz) && (y <= myPos.y + (Map::maxClientViewportY+1) + offsetz)); Agora ache:
    GetMapDescription(pos.x - 8, pos.y - 6, pos.z, 18, 14, msg); E troque por:
    GetMapDescription(pos.x - Map::maxClientViewportX, pos.y - Map::maxClientViewportY, pos.z, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, msg); Agora em
    void ProtocolGame::sendMoveCreature(const Creature* creature, const Tile* newTile, const Position& newPos, uint32_t newStackpos, const Tile* oldTile, const Position& oldPos, uint32_t oldStackpos, bool teleport) Troque:
    A parte que começa em if (oldPos.y > newPos.y) { e Termina em GetMapDescription(newPos.x - 8, newPos.y - 6, newPos.z, 1, 14, msg); } Por:
    if (oldPos.y > newPos.y) { // north, for old x msg->AddByte(0x65); GetMapDescription(oldPos.x - Map::maxClientViewportX, newPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, 1, msg); } else if (oldPos.y < newPos.y) { // south, for old x msg->AddByte(0x67); GetMapDescription(oldPos.x - Map::maxClientViewportX, newPos.y + (Map::maxClientViewportY+1), newPos.z, (Map::maxClientViewportX+1)*2, 1, msg); } if (oldPos.x < newPos.x) { // east, [with new y] msg->AddByte(0x66); GetMapDescription(newPos.x + (Map::maxClientViewportX+1), newPos.y - Map::maxClientViewportY, newPos.z, 1, (Map::maxClientViewportY+1)*2, msg); } else if (oldPos.x > newPos.x) { // west, [with new y] msg->AddByte(0x68); GetMapDescription(newPos.x - Map::maxClientViewportX, newPos.y - Map::maxClientViewportY, newPos.z, 1, (Map::maxClientViewportY+1)*2, msg); Agora ache:
    if (newPos.z == 7) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 5, 18, 14, 3, skip); //(floor 7 and 6 already set) GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 4, 18, 14, 4, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 3, 18, 14, 5, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 2, 18, 14, 6, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 1, 18, 14, 7, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 0, 18, 14, 8, skip);  Depedendo da Source, a parte será assim:
     
    Por:
    if(newPos.z == 7) //going to surface { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 5, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 3, skip); //(floor 7 and 6 already set) GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 4, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 4, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 3, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 5, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 6, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 1, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 7, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 0, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 8, skip); Agora ache:
    else if(newPos.z > 7) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, oldPos.getZ() - 3, 18, 14, 3, skip); Depedendo da source será assim:
     
    Por:
    else if(newPos.z > 7) //underground, going one floor up (still underground) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, oldPos.z - 3, (Map::maxClientViewportX+1), (Map::maxClientViewportY+1)*2, 3, skip); Troque:
    //moving up a floor up makes us out of sync //west msg->AddByte(0x68); GetMapDescription(oldPos.x - 8, oldPos.y - 5, newPos.z, 1, 14, msg); //north msg->AddByte(0x65); GetMapDescription(oldPos.x - 8, oldPos.y - 6, newPos.z, 18, 1, msg); Por:
    //moving up a floor up makes us out of sync //west msg->AddByte(0x68); GetMapDescription(oldPos.x - Map::maxClientViewportX, oldPos.y - (Map::maxClientViewportY-1), newPos.z, 1, (Map::maxClientViewportY+1)*2, msg); //north msg->AddByte(0x65); GetMapDescription(oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, 1, msg); Agora troque:
    if(newPos.z == 8) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z, 18, 14, -1, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 1, 18, 14, -2, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 2, 18, 14, -3, skip); Dependendo da source poderá ser:
     
    Por:
    if(newPos.z == 8) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -1, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 1, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -2, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -3, skip); Agora troque:
    else if(newPos.z > oldPos.z && newPos.z > 8 && newPos.z < 14) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 2, 18, 14, -3, skip); Depedendo da source pode ser:
     
    Por:
    else if(newPos.z > oldPos.z && newPos.z > 8 && newPos.z < 14) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -3, skip); Agora em map.h edite como quiser:
    static const int32_t maxViewportX = 11; //min: maxClientViewportX + 1 static const int32_t maxViewportY = 11; //min value: maxClientViewportY + 1 static const int32_t maxClientViewportX = 8; static const int32_t maxClientViewportY = 6; Observação:
     
     
    Agora em map.cpp do OTCLIENT
    Ache:
    void Map::resetAwareRange() { AwareRange range; range.left = 8; range.top = 6; range.bottom = 7; range.right = 9; setAwareRange(range); } Troque por:
    { AwareRange range; range.left = 8; //Valor que colocou em maxClientViewportX range.top = 6; //Valor que colocou em maxClientViewportY range.bottom = range.top+1; range.right = range.left+1; setAwareRange(range); } Créditos:
    Flatlander  - OTLAND - Criação
    Ceetros - Tradução
     
     
    Agora vamos deixar o OTCLIENT lindão.
     
     
     
     
     
    Troque tudo de modules/game_interface/interface.lua (na pasta do OTCLIENT)
    por:
    http://pastebin.com/tH7qyreW
    (para o tutorial não ficar muito grande botei no pastebin, já que o spoiler tá bugando)
    Creditos dessa parte: 
    Edubart (Criador do OTCLIENT)
    Ceetros
     
    Caso tenha ajudado, dê um rep+
     
  4. Gostei
    wayout deu reputação a Snowsz em [OTC] MOD que deixa o OTC exclusivo para seu servidor.   
    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
  5. Gostei
    wayout deu reputação a deivaoo em [MOD] Elevador System   
    Boa tarde galerinha, beleza?

    Nesses últimos tempos, além da POKEDEX, estive fazendo outro sistema, um de Elevador...

    Não é um sistema de elevador comum, pois fiz um mod no OTClient também...

    Vejam o funcionamento:
    https://www.youtube.com/watch?v=EhkmQIx3HIw

    *Obs.: MOD criado para funcionamento em qualquer derivado de tíbia [adaptado apenas para TFS 0.3.6.
    *Obs².: Esse é apenas um ShowOff do meu sistema, não pretendo postar.
    [Próxima adaptação para TFS 0.4]
  6. Gostei
    wayout deu reputação a Snowsz em [OTC] Manager Window   
    Testado: Otclient 0.6.7, TFS 0.4
    Versão: 1.0
    Descrição: Um mod que adiciona um botão, ao lado esquerdo do seu painel, quando clicar irá aparecer uma janela, com comandos.
    Autor: Snowsz
     
     
    Imagem:



     
     
    Bom, só coloquei os comandos que mais uso, acho que ele seja auto explicativo, mas, vou explicar um pouco...

    Em name coloque o nome do player, marque uma caixinha do que será adicionado, e em count coloque o valor que o player deverá ganhar desse determinado skill, após isso, clique em Addskill.
     
     
    Os dois "X" são para limpar a caixa, assim como o botão, clear, para limpar as caixas dos outros comandos.
    Quando clicar em reload, vai aparecer uma lista de opções, clique na que quiser dar reload.
    No botão commands, quando clicar, irá aparecer a lista de comandos.

    Ele só funciona com players que possuam cargo GM, CM e GOD.

    Coloque isto no seu login.lua(para quem não sabe, no seu servidor não no CLIENT!):

     
    if getPlayerAccess(cid) > 3 then doPlayerSendCancel(cid, "$@$Administrador") doPlayerSendCancel(cid, " ") end Download V2:
    Link: https://www.dropbox.com/s/axmop6e80mvlfi7/managerwindow.rar?dl=0  (coloque o arquivo na pasta mods)
    Scan: https://www.virustotal.com/pt/file/8fbe8b00e272f623bd2ac70c5fa1c39855d5e9c8469efcaae841db2e9eec138a/analysis/1422324181/
     
    Atualizado para versão 2, removido todos os bugs que encontrei e adicionado novos botões, para adicionar mais comandos basta abrir o arquivo lua do mod, procurar por "local uses" e adicionar mais.
    (obs: esses comandos do "uses", não podem precisar de parâmetro, ex: /r 10)
     

    -->Change log v2
    -Retirado alguns bugs
    -Código diminuído e melhor identado
    -Adicionado novas funcionalidades
    -Adicionado compatibilidade do comando addskill para "skills", como distance, shield e sword, entre o restante.
  7. Gostei
    wayout deu reputação a mixnaruto em alguem re-up ? [8.6] Dragon Ball Verção 1.0 {by jhon992}   
    Eae chara pd deixa ta aki oq vc pressisa 

    client:http://www.mediafire.com/download/0k8c7g1xvahc3h7

    Server:http://www.mediafire.com/?5eh76oi1ye28jdy

    Creditos

    A mim por postar
     oiuhygwueuho por reupa client
    jhon993
    e outros

    Ajudei oq custa da um Rep
  8. Gostei
    wayout deu reputação a OhGod em [C++] Compilando Um Otserv No Windowns   
    Olá Pessoal mais uma vez eu aqui ! para mostrar como combila um otserver no WINDOWNS veja abaixo no tutorial feito por mim e pelo GM Bekman :

    Boa galera andei olhando e vi alguns tópicos até meio parecidos com o que estou fazendo agora, mais, eu não acho eles completos por tanto aqui vamos nois.

    1° Vamos fazer todos os downloads necessários.
    Vamos usar um source TFS pra versão de Tibia 8.60

    - Source
    - Stians Dev-Cpp <> 32bits
    - Stians Dev-Cpp <> 64bits 

    2° Abra o Dev-cpp:


    3° Clique em Tools > Check For Updates/Packages:


    4° Clique em Check For Updates and Upstairs select devpacks.org:


    5° Seleciona OpenSSL 0.9.8a e clique em Dowload:



    6° Em seguida irá aparecer automaticamente um processo de instalação:



    Agora seu Dev-cpp está no ponto pra compilar.

    7° Use ctrl + o pra abri o .dev:


    8° Ele vai estar dentro da pasta da sua source:




    9° Então depois que abrir todos os arquivos:


    10° Use alt + p logo após aparecerá uma janela ae clique em parameters e adicione, {-D__CONSOLE__} e depois OK:


    11° Agora é so compilar ctrl + f9:


    12º O seu executavél vai está na pasta da sua source:




    Pronto galera compilação concluida.

    Creditos:
    nwtr
    Nando Web
    Natan Beckman
    OhGod
    Obrigado Até a Promxima


    @Edited

Informação Importante

Confirmação de Termo