Ir para conteúdo

s0beit

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    s0beit deu reputação a Nolangg em Setas do Cast [OTX 2.x]   
    E aí guys, venho a um tempo vendo as datapacks que lançam diariamente e resolvi postar o sistema de setas no cast (não sei se alguém já postou algo relativo o_o) 

    para fazer esse sistema eu estou usando a última versão do OTX do github...  LINK PARA BAIXAR (otx do mattyx)
     
    maioria das pessoas já sabem o que é esse sistema, mas pra quem não sabe, é a possibilidade de alternar o cast apertando CTRL + QUALQUER ARROW, mesmo que já tenha em vários servers, algums ainda não tem então toma aí.
     
     
    em
    protocolgame.cpp
     
    procure por 
     
    void ProtocolGame::spectate(const std::string& name, const std::string& password) dentro das chaves após 
     
    player->client->addSpectator(this);  
    coloque:
     
    std::ostringstream ss; std::string value = "-1"; player->getStorage("broadcast_start", value); time_t ctime = time(NULL); uint32_t total = ctime - std::stoi(value); uint32_t hours, minutes, seconds; minutes = total / 60; seconds = total % 60; hours = minutes / 60; minutes = minutes % 60; ss << "Players watching " << player->getName() << ": " << (player->client->list().size()) << "\nBroadcast time: "; if (hours > 0) { ss << hours << " hour(s)"; } if (minutes > 0) { ss << minutes << " minute(s)"; } if (seconds > 0) { ss << seconds << " second(s)"; } ss << "\nYou can Switch channels by using CTRL + arrow keys!"; std::string msg = ss.str(); this->m_lastSwitch = time(NULL); this->sendTextMessage(MSG_INFO_DESCR, msg);  
    no final desse escopo após a }, adicione:
     
    void ProtocolGame::spectatorTurn(uint8_t direction) { std::vector<Player*> candidates; int index = 0; for (AutoList<Player>::iterator it = Player::autoList.begin(); it != Player::autoList.end(); ++it) { if (!it->second->client->isBroadcasting()) { continue; } if (it->second->client->getPassword() != "") { continue; } if (it->second->client->banned(getIP())) { continue; } if (it->second == player) { index = candidates.size(); } candidates.push_back(it->second); } if (candidates.size() < 2) { return; } if (direction == 0 || direction == 1) { direction = uint8_t(1); } if (direction == 2 || direction == 3) { direction = uint8_t(-1); } if (index == 0 && direction == -1) { direction = uint8_t(0); } Player* _player = candidates[(index + direction) % candidates.size()]; if (!_player || player == _player) { return; } if (!_player || _player->isRemoved() || !_player->client->getOwner()) { return; } if ((time(NULL) - this->m_lastSwitch) < 1) { return; } this->m_lastSwitch = time (NULL); player->client->removeSpectator(this); player->unRef(); player = _player; player->addRef(); knownCreatureSet.clear(); player->sendCreatureAppear(player, this); player->sendContainers(this); if (PrivateChatChannel * channel = g_chat.getPrivateChannel(player)) chat(channel->getId()); player->client->addSpectator(this); }  
     
    agora em:
     
    void ProtocolGame::parsePacket(NetworkMessage &msg)  
    procure por:
     
    case 0xA1: parseCancelTarget(msg); break;  
    tenha certeza de estar dentro do escopo:
     
    if(m_spectator) { switch(recvbyte) {  
     
    então abaixo de "case 0xA1: parseCancelTarget(msg); break;" coloque:
     
     
    // Ctrl + Arrow case 0x6F: case 0x70: case 0x71: case 0x72: Dispatcher::getInstance().addTask( createTask(boost::bind(&ProtocolGame::spectatorTurn, this, recvbyte - 0x6F))); break;  
    feito, mas agora precisamos adicionar algumas coisas em
     
    protocolgame.h
     
    procure por:
     
    void chat(uint16_t channelId);  
    adicione abaixo:
     
    void spectatorTurn(uint8_t direction);  
     
    agora, lá no final do arquivo, procure por:
     
    Player* player;  
    coloque abaixo:
     
    time_t m_lastSwitch;  
    agora só compilar e testar
     
    apenas umas imagem mostrando que deu certo abaixo...
     
    caso der algum tipo de erro, fico a disposição para ajudar
     
    Opcional:
     
    mensagem MOTD (mensagem do dia) modificada igual abaixo:
     

     
     
     
    2: 
     
    informações de level / specs ativos na janela de login igual a imagem abaixo:


     
     
     
     
    é isso.

    quem fez esse sistema eu não sei, apenas peguei de uma source que tinha e coloquei explicado aqui, então de créditos eu coloco 1% eu @stackcheese por ter explicado como por hihi

     
  2. Gostei
    s0beit deu reputação a Nolangg em Setas do Cast [OTX 2.x]   
    para adicionar o look vá em

    spectators.cpp
    adicione a função void:
     
    void Spectators::sendLook(ProtocolGame* client, const Position& pos, uint16_t spriteId, int16_t stackpos) { if (!owner) return; SpectatorList::iterator sit = spectators.find(client); if (sit == spectators.end()) return; Thing* thing = g_game.internalGetThing(client->player, pos, stackpos, spriteId, STACKPOS_LOOK); if (!thing) { return; } Position thingPos = pos; if (pos.x == 0xFFFF) thingPos = thing->getPosition(); Position playerPos = client->player->getPosition(); int32_t lookDistance = -1; if (thing != client->player) { lookDistance = std::max(std::abs(playerPos.x - thingPos.x), std::abs(playerPos.y - thingPos.y)); if (playerPos.z != thingPos.z) lookDistance += 15; } std::ostringstream ss; ss << "You see " << thing->getDescription(lookDistance); if (Item * item = thing->getItem()) { if (client->player->hasCustomFlag(PlayerCustomFlag_CanSeeItemDetails)) { ss << "."; const ItemType& it = Item::items[item->getID()]; if (it.transformEquipTo) ss << std::endl << "TransformTo: [" << it.transformEquipTo << "] (onEquip)."; else if (it.transformDeEquipTo) ss << std::endl << "TransformTo: [" << it.transformDeEquipTo << "] (onDeEquip)."; if (it.transformUseTo) ss << std::endl << "TransformTo: [" << it.transformUseTo << "] (onUse)."; if (it.decayTo != -1) ss << std::endl << "DecayTo: [" << it.decayTo << "]."; } } client->sendTextMessage(MSG_INFO_DESCR, ss.str()); return; }  
    em spectators.h
    adicione nas funções public:
     
    void sendLook(ProtocolGame* client, const Position& pos, uint16_t spriteId, int16_t stackpos);   
    assim já deve dar certo ?

     
  3. Curtir
    s0beit deu reputação a Nandozeraah em [MAPA] Continente Free (Thais, Venore, Carlin, Kazz) - [8.60]   
    E ai galera, recentemente eu estava precisando de um mapa clean (sem áreas obsoletas) e com cidades que fornecessem um bom pvp. 
    Logo lembrei do mapa das cidades free do Tibia e não conseguia encontrar então eu mesmo recortei de um servidor global e colei neste arquivo.
     
    As posições das cidades foram preservadas (igual ao global).
    O que contém:
    Thais (Fibula , Mintwalin). Venore (Poi, Orc Fortress). Ab'dendriel (Hellgate) Carlin (Banshee Quest, Demona, Ice Isles)... Kazordoon. Rookgaard Island of Destiny Respawns Originais (Opcional, você decide se faz o download do arquivo XML ao final do post). Houses (Opcional, você decide se faz o download do arquivo XML ao final do post).  
    Abaixo vocês podem ver o minimap:
     
    SCAN
    SCAN DO ARQUIVO AQUI (CLIQUE).
     
    DOWNLOAD (MANTER OS 3 ARQUIVOS NA MESMA PASTA ?)
    Download do MAPA aqui:
    Continente Free-spawn.xml
    Continente Free-house.xml
     
    OBS: coloquei o arquivo .otbm no MediaFire pois era muito grande para anexar ao post.
     
     
     
     
     
     
  4. Curtir
    s0beit recebeu reputação de IGlobal em TFS vs OTX   
    depende da versão, se for 8.60 recomendo usar OTX por ser atualizado e mts bugs fixado, agora se for 10.xx acho que não tem muita diferença entre os 2.
  5. Gostei
    s0beit recebeu reputação de kauan16 em Venore enforced   
    Cidade de venore editada para servidores de war/enforced
    Screenshot http://i.imgur.com/sBLdWhg.jpg
    Scan: https://www.virustotal.com/pt/file/d353342246cac61c8822049f16268db4f84b678765473c127d72e1e685cee5e7/analysis/1470193890/
    Download: http://www.mediafire.com/download/v1sin2k26r02biu/Venore.rar
    Créditos: Johnao & carlos369
  6. Gostei
    s0beit deu reputação a tev em Player virando staff com apenas um comando   
    Introdução: O player usa apenas um comando e vira um membro da staff, seja ele GOD, GM ou Tutor.
     
    \data\talkactions
    <talkaction words="!virargod" script="virargod.lua" /> \data\talkactions\scripts, cria o arquivo virargod.lua
    function onSay(cid, words) doPlayerSetGroupId(cid, 6) doRemoveCreature(cid) return true end No caso o "6" representa o ID de GOD. 
    Créditos: tev 
  7. Gostei
    s0beit deu reputação a L3K0T em Fazer Player passar por dentro do outro (PVP)   
    Bom esse sistema tem a função de fazer o player passar por cima do outro sem uso de FLAG com PK ou mundo tipo PVP. É um sistema que pode ser usado tanto pra TIBIA ou DERIVADOS tfs 0.3.6... achei muito interessante esse system então trouxe para cá  espero que curtem muito.
     
    procure em player.cpp isso:
     
     
    troque para isso:
     
     
    pronto agora é só salvar ctrl+s, compilar e ó não esqueça de apagar tudo da pasta obj para que tudo ocorra como no tutorial.
     

     
    Créditos: BlackTibia.
     
  8. Gostei
    s0beit deu reputação a roriscrave em preciso adicionar tabela em script!   
    function isInteger(n) return math.floor(n) == n and true or false end function onAdvance(cid, skill, oldLevel, newLevel) if isInteger(newLevel/100) then broadcastMessage("O jogador "..getCreatureName(cid).." atingiu o level "..newLevel..".") elseif isInteger(newLevel/150) then broadcastMessage("O jogador "..getCreatureName(cid).." atingiu o level "..newLevel..".") elseif isInteger(newLevel/200) then broadcastMessage("O jogador "..getCreatureName(cid).." atingiu o level "..newLevel..".") elseif isInteger(newLevel/300) then broadcastMessage("O jogador "..getCreatureName(cid).." atingiu o level "..newLevel..".") end return true end  
  9. Gostei
    s0beit deu reputação a Fir3element em [8.60] The Forgotten Server 0.4 By Fir3Element (SQL and MYSQL)   
    Reporte qualquer bug encontrado.
     
    - Mudanças:
    * opcode adicionado
    * Monstros andando em cima de corpos
    * War system arrumado
    * Anti-divulgação melhorado
    * Cast system arrumado
    * Crash bugs arrumados
    * Adicionado exhaust ao comprar/vender items
    * Account manager com opção para cidades
    * /ghost stacking arrumado
    * !disband arrumado
    * Erros no linux arrumado
    * Aleta som arrumado
    * Bug nos rings arrumado
    * Adicionado suporte para Visual Studio
    * Remover battle ao entrar em PZ
    * Não pode jogar lixo em casas
    * Salt removido
     
    - Downloads:
    * Distro (x32): https://github.com/Fir3element/binaries/raw/master/x32-windows.zip
    * Distro (x64): https://github.com/Fir3element/binaries/raw/master/x64-windows.zip
    * Requisitos: Microsoft Visual C++ Redistributable Package
    * Source + datapack: https://github.com/Fir3element/3777/archive/refs/heads/main.zip
     
    - Scans:
    * Distro (x32): https://virustotal.com/pt/file/6683a91273b848a39ac21288da9d3abde341436744d6846e35a477c8e7c8f5f7/analysis/1480675335/
    * Distro (x64): https://virustotal.com/pt/file/21028857bb1124f19e0353e7f5775c8f66afc4f87f29df9cf4ab8ca1a046b816/analysis/1480675394/
    * Source + datapack: https://virustotal.com/pt/file/3761b48ee19f3f540d4c4a48c35c73c89a85615876307073494b1dcfed464d36/analysis/1480675473/
  10. Gostei
    s0beit deu reputação a marcplay em [PEDIDO] Contagem de Frags no Look   
    Aí galera, eu nem sei mexer com OtServers, mas eu comecei a mexer ontem e vim procurar sobre Fraglook... Mas eu faço programação, então isso ajudou a conseguir resolver! Então lá vai o código:
    function getPlayerFrags(cid) local time = os.time() local times = {today = (time - 86400), week = (time - (7 * 86400))} local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(result:getID() ~= -1) then repeat local content = {date = result:getDataInt("date")} if(content.date > times.today) then table.insert(contents.day, content) elseif(content.date > times.week) then table.insert(contents.week, content) else table.insert(contents.month, content) end until not result:next() result:free() end local size = { day = table.maxn(contents.day), week = table.maxn(contents.week), month = table.maxn(contents.month) } return size.day + size.week + size.month end function onLogin(cid) registerCreatureEvent(cid, "fraglook") return true end function onLook(cid, thing, position, lookDistance) if isPlayer(thing.uid) and thing.uid ~= cid then doPlayerSetSpecialDescription(thing.uid,' [Frags: '..getPlayerFrags(thing.uid)..']') return true elseif thing.uid == cid then doPlayerSetSpecialDescription(cid,' [Frags: '..getPlayerFrags(cid)..']') local string = 'You see yourself.' if getPlayerFlagValue(cid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then string = string..' You are '.. getPlayerGroupName(cid) ..'.' elseif getPlayerVocation(cid) ~= 0 then string = string..' You are '.. getPlayerVocationName(cid) ..'.' else string = string..' You have no vocation.' end if getPlayerNameByGUID(getPlayerPartner(cid), false, false) ~= nil then string = string..' You are '.. (getPlayerSex(cid) == 0 and 'wife' or 'husband') ..' of '.. getPlayerNameByGUID(getPlayerPartner(cid)) ..'.' end if getPlayerGuildId(cid) > 0 then string = string..' You are ' .. (getPlayerGuildRank(cid) == '' and 'a member' or getPlayerGuildRank(cid)) ..' of the '.. getPlayerGuildName(cid) string = getPlayerGuildNick(cid) ~= '' and string..' ('.. getPlayerGuildNick(cid) ..').' or string..'.' end if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then string = string..'nHealth: ['.. getCreatureHealth(cid) ..' / '.. getCreatureMaxHealth(cid) ..'], Mana: ['.. getCreatureMana(cid) ..' / '.. getCreatureMaxMana(cid) ..'].' string = string..'nIP: '.. doConvertIntegerToIp(getPlayerIp(cid)) ..'.' end if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then string = string..'nPosition: [X:'.. position.x..'] [Y:'.. position.y..'] [Z:'.. position.z..'].' end string = string..getPlayerSpecialDescription(cid)..'' doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string) return false end return true end
  11. Gostei
    s0beit deu reputação a Natanael Beckman em DEV C++ Compilando TFS no Windows   
    DEV C++,  aprenda a compila uma source TFS!
     
    Downloads(Baixe de acordo as configurações do seu windows):
    DEV C++ CONFIGURADO PARA 32BITS
    DEV C++ CONFIGURADO PARA 64BITS
    REV 3884 TFS 0.4
     
    Certo, feitos os downloads, extrai DEV C++ no Disco C e REV 3884 em Documentos.
    ======================================
    Abra o DEV C++:
    ======================================

    ======================================
    Abra a Source:
    ======================================

    ======================================
    Localize a pasta da Source e abra o arquivo TheForgottenServer.dev, Documentos> trunk.r3884> dev-cpp> TheForgottenServer.dev:
    ======================================

    =============================================================

    ======================================
    Aguarde carregar todos os arquivos:
    ======================================

    ======================================
    Vamos adicionar o parâmetro -D__CONSOLE__ no teclado digita ALT + P, clique em parameters e adicione o parâmetro... Feito? clique em OK:
    ======================================

    ======================================
    Vamos compilar Source, no teclado digite CTRL+F9 e aguarde finalizar o processo:
    ======================================

    ======================================
    Se der tudo certo em Log vai estar como mostra a imagem abaixo:
    ======================================

    ======================================
    Verifique na pasta Documentos> trunk.r3884> dev-cpp você vai encontrar o arquivo TheForgottenServer.exe e pronto meu parabéns você compilou!
    ======================================

    ===========================================
    Só isso galera tutorial rápido resumido e útil!
    Créditos Natanael Beckman!    
    ===========================================     
     
    Caso você adquira uma source com apenas os arquivos .cpp e .h e não sabe como compilar o projeto, abaixo vamos explicar:
    Na pasta onde está localizado os arquivos .cpp e .h crie uma pasta chamada dev-cpp, e dentro dela adicione uma imagem icone.
     

     
    Abra o DEV-C++, clique em  File> New> Project:
     

     
    Logo em seguida selecione Empty Project, em name terá o nome Project1 altere utilize o nome quer quiser, após isso clique em OK e em seguida selecione a pasta dev-cpp que criamos:
     

     
    Agora selecione a opção Win32GUI caso use source OTX ou TFS selecione Win32Console ao lado << Browse selecione a imagem do icone que está na pasta Dev-Cpp.
     

     
    No mesmo menu na aba Parameters em C++ compiler adicione os seguintes parâmetros:
    -D__ENABLE_SERVER_DIAGNOSTIC__ -D__ROOT_PERMISSION__ -D__GROUND_CACHE__ -D__USE_SQLITE__ -D__USE_MYSQL__ -D__CONSOLE__ -D__WAR_SYSTEM__ E em Linker adicione as seguintes libs:
    -lboost_filesystem -lboost_thread -lboost_system -lboost_regex -lsqlite3 -lwsock32 -llua5.1 -lws2_32 -leay32 -lmysql -lxml2 -lgmp -lz -s   No mesmo Menu na aba Build Option escreva na segunda coluna horizontal escreva Obj e dê OK.     Na lateral terá o nome do seu projeto o meu no caso é The Forgotten Server, clique com o botão direito do mouse em cima do nome e clique na opção Add Project:      Selecione na pasta da sua source todos os arquivos .cpp e .h após isso salva o projeto e já pode compilar CTRL+F9:         OpenSSL 0.9.8   1º baixe http://devpaks.org/details.php?devpak=73 2° abra Dev-Cpp > Tools > Packager Manager > Install > Seleciona o arquivo baixado e instala, fecha abre e testa!
      Clica aqui \/
  12. Gostei
    s0beit deu reputação a tev em Mostrar a quantidade que morreu e que matou ao dar look no player   
    TESTADO EM TFS 0.4 E 0.6, PEÇO PARA QUE TESTEM EM OUTRAS VERSÕES, POR FAVOR.
     
    Prévia;

     
    Crie um arquivo KillsandDeath.lua
    function onLook(cid, thing, position, lookDistance) function getDeathsAndKills(cid, type) -- by vodka local query,d = db.getResult("SELECT `player_id` FROM "..(tostring(type) == "kill" and "`player_killers`" or "`player_deaths`").." WHERE `player_id` = "..getPlayerGUID(cid)),0 if (query:getID() ~= -1) then  repeat d = d+1 until not query:next() query:free() end return d  end if isPlayer(thing.uid) then doPlayerSetSpecialDescription(thing.uid, "\n"..(getPlayerSex(thing.uid) == 0 and "She" or "He").." has Killed: ["..getDeathsAndKills(thing.uid, "kill").."] Players.\n"..(getPlayerSex(thing.uid) == 0 and "She" or "He").." has Died: ["..getDeathsAndKills(thing.uid, "death").."] Times") end return true end No creaturescript.xml, coloque:
    <event type="look" name="showKD" event="script" value="KillsandDeath.lua"/> Em creaturescript/script/login.lua, coloque:
    registerCreatureEvent(cid, "showKD") Script disponibilizado por Critico.
    Tópico organizado por mim.
     
    Abraços!
     
  13. Gostei
    s0beit deu reputação a tev em Mensagem no Broadcast quando player atinge Level x   
    Introdução: Aparecer uma mensagem no Broadcast quando player atingisse x level.
    Créditos: LuckOake
     
    Crie um arquivo chamado broadcastlevel.lua em creaturescripts\scripts
    function isInteger(n) return math.floor(n) == n and true or false end function onAdvance(cid, skill, oldLevel, newLevel) if isInteger(newLevel/100) then broadcastMessage("O jogador "..getCreatureName(cid).." atingiu o level "..newLevel..".") end return true end login.lua (antes do último return true):
    registerCreatureEvent(cid, "BroadcastLevel") creaturescripts.xml:
    <event type="advance" name="BroadcastLevel" script="broadcastlevel.lua"/> Abraços! 
  14. Gostei
    s0beit recebeu reputação de gmdouglas em PROBLEMA NAS VOCAÇÕES   
    cara druid tem o poder de cura melhor do que sorcerer, e sorcerer bate mais nas magias do que druid...
    esta certo essa configuração, e isso deve ser mudado na source do ot
  15. Gostei
    s0beit deu reputação a Bruno Carvalho em Delay   
    Nós migramos recentemente eu também notei um delay maior, tentarei averiguar o problema...
     
    Hoje eu atualizei o fórum para a versão mais recente, houve alguma melhora no problema?
  16. Gostei
    s0beit recebeu reputação de kadon em BAIAKNEW+SOURCE//BASE DO BAIAKNEW (8.60)   
    OT BOM VLW VOU USAR OS SISTEMAS
    e kadon é só vc criar mano ou pega de outro ot e coloca
     
  17. Gostei
    s0beit deu reputação a Chriistian em Ebaiak - Retro Server   
    Olá galera do Tibia King, hoje venho apresentar meu projeto, venho trabalhando nele a pouco tempo então ainda falta algumas coisinhas para se fazer, mais podem ter certeza que sairá do papel e ficara online para todos jogarem ! Bom todo mundo que joga Otserver sempre jogou o mapa Yurots Baiak, então decidi fazer um remake no mapa do mesmo, deixando o mais bonito e jogável para todos com grandes sistemas, quests etc...
     
    Veja algumas imagens e sistemas abaixo:
     

     

     

     

     

     

     

     

     

     

     

     

     

     
     
     Contamos com sistemas como:
    - War System (100%) - Task System (99%) - BattleField Event (100%) - War of Emperium. (100%) - Cast System (100%) - Quests (80%) - Castle 24Hrs (100%) Deixe sua sugestao para nosso servidor, o que você gostaria de ver nele, o que acha que deveria mudar e os pontos mais importantes de um Mapa Baiak Yurots que você acha e gostaria de ver em nosso servidor !
     
    Att,
    Equipe Etibia.

Informação Importante

Confirmação de Termo