Ir para conteúdo

Tryller

Héroi
  • Registro em

  • Última visita

  1. Tryller reagiu a uma resposta no tópico: OTClient 0.6.3 | 7.4 à 10.9 (ATUALIZADO!)
  2. neykos começou a seguir Tryller
  3. Under reagiu a uma resposta no tópico: [13.40] Crystal Server 4.0 | Mapa Global
  4. Tryller respondeu ao post em um tópico de Tryller em Portal
    Crystal Server está de volta Não esqueçam de visitar https://github.com/jprzimba/crystalserver
  5. dimiot reagiu a uma resposta no tópico: [13.40] Crystal Server 4.0 | Mapa Global
  6. tem o link lá no repositorio do github
  7. L3K0T começou a seguir Tryller
  8. L3K0T reagiu a uma resposta no tópico: [13.40] Crystal Server 4.0 | Mapa Global
  9. L3K0T reagiu a uma resposta no tópico: [13.40] Crystal Server 4.0 | Mapa Global
  10. A versão que esta publicada é client 13.40 A versão 14 esta em uma branch que esta sendo desenvolvida Quanto ao site pode usar o myacc
  11. yuraog3 reagiu a uma resposta no tópico: [13.40] Crystal Server 4.0 | Mapa Global
  12. Crystal Server - Changelog Versão 4.0 Olá, pessoal! Temos o prazer de anunciar o lançamento da versão 4.0 do Crystal Server. Confira abaixo as principais novidades, correções de bugs e alterações importantes. GitHub visite o GitHub e colabore com o projeto: GitHub - Crystal Server. Novidades Sistema de Surprise Bags: Agora é possível configurar o sistema de sacolas-surpresa no arquivo data/items/bags.xml. (Tryller, dguprado). Sistema de Cadeia (Chain System): Agora os jogadores podem usar o sistema de cadeia com o comando !chain. Configurável no config.lua com as novas opções para armas como estrela assassina, flechas, bastões e varinhas. (Tryller). Função playerAlwaysLoginMounted: Agora configurável no config.lua, permitindo que o jogador sempre entre montado no servidor. (Tryller). Atualização dos NPCs: O NPC hireling.lua agora vende pacotes de imbuement e compra todos os itens dentro da Loot Pouch. (Tryller). Novo Sistema de Insígnias (Badges): Introduzido um sistema de insígnias para jogadores. (elsongabriel). Aprimoramentos no Imbuement e Augments: Aumentamos a personalização com o sistema de imbuement e a adição de novos augments. (phacUFPE). Título de Personagens na Cyclopedia: Agora você pode configurar títulos para os personagens na Cyclopedia. (Tryller). Atualização de Monstros e NPCs: Melhorias nas atualizações de monstros e NPCs para se aproximarem da experiência de Tibia RL. (Tryller). Sistema de V.I.P. Grupos: Agora você pode configurar grupos V.I.P no servidor. (phacUFPE). Correções de Bugs Sistema de Cadeia Corrigido: Agora o sistema de cadeia funciona corretamente para Mages e Paladins. (Tryller). Lista de V.I.P Corrigida: O sistema de lista de V.I.P agora está funcionando perfeitamente. (Tryller). Correção de Reflexão de Dano: O sistema de reflexão de dano estava com falhas e foi corrigido. (Tryller). Correção no Sistema de Imbuement: O sistema de imbuement agora atualiza corretamente quando o jogador adiciona ou cancela imbuiements enquanto a janela está aberta. (Tryller). Otimização de Código: A função onPlayerSellAllLoot foi otimizada para evitar travamentos longos. (Tryller). Correção de Problemas em Talkactions: O script refill.lua foi corrigido para verificar se o jogador tem capacidade de receber itens. (Tryller). Alterações Importantes Remoção de "useAnyDatapackFolder": A opção foi removida do config.lua e agora é habilitada por padrão. (Tryller). Remoção do Download de Mapas: Não é mais necessário fazer o download do mapa, agora compartilhamos o mapa comprimido em formato .7z. Para extrair o mapa compactado, será necessário baixar e instalar o 7zip. (Tryller). Observação: Para mais detalhes sobre as mudanças e melhorias, confira o histórico de commits ou as notas de lançamento. Fiquem à vontade para deixar suas sugestões e feedbacks! O servidor está cada vez mais forte com as contribuições de todos. Vamos continuar evoluindo juntos! Equipe Crystal Server Links para Download Download do Crystal Server: Clique aqui para baixar o arquivo RAR. Scan de Vírus: Verifique o arquivo no VirusTotal.
  13. L3K0T reagiu a uma resposta no tópico: Adicionando Surprise Bags no Drop de Monstros
  14. Valeu! Andei trabalhando em um servidor 8.60 com algumas coisas e me lembrei que no OT do Zorzin 7.9 tinha algo parecido. Resolvi criar um onde o jogador consiga editar os itens através de um XML
  15. L3K0T reagiu a uma resposta no tópico: Adicionando Surprise Bags no Drop de Monstros
  16. Tutorial: Adicionando Surprise Bags no Drop de Monstros Código foi criado para uma versão 8.60 do Crystal Server. provavelmente funciona em TFS 0.4/0.3 Passo 1: Atualize o configmanager.cpp No arquivo configmanager.cpp, adicione o seguinte código para permitir que a configuração de SURPRISE_BAGS seja ativada/desativada no config.lua: m_confBool[SURPRISE_BAGS] = getGlobalBool("dropSurpriseBagsFromMonsters", false); Passo 2: Atualize o configmanager.h No arquivo configmanager.h, defina a variável SURPRISE_BAGS na parte dos booleans: SURPRISE_BAGS, Passo 3: Modifique o items.cpp No arquivo items.cpp, na função bool Items::reload(), adicione a chamada para a nova função loadSurpriseBags() para carregar as configurações das Surprise Bags. Coloque essa linha de código logo acima da função void Items::parseRandomizationBlock(...): if(!loadSurpriseBags()) return false; Passo 4: Crie a Função loadSurpriseBags Ainda em items.cpp, adicione a implementação da função bool Items::loadSurpriseBags() para carregar as informações das bags a partir do XML: bool Items::loadSurpriseBags() { xmlDocPtr doc = xmlParseFile(getFilePath(FILE_TYPE_OTHER, "items/bags.xml").c_str()); if(!doc) { std::clog << "[Warning - Items::loadBags] Cannot load bags file." << std::endl << getLastXMLError() << std::endl; return false; } xmlNodePtr root = xmlDocGetRootElement(doc); if(xmlStrcmp(root->name,(const xmlChar*)"bags")) { xmlFreeDoc(doc); std::clog << "[Warning - Items::loadBags] Malformed bags file." << std::endl; return false; } std::string strValue; int32_t intValue; for(xmlNodePtr node = root->children; node; node = node->next) { if(xmlStrcmp(node->name, (const xmlChar*)"bag")) continue; uint16_t itemId = 0; std::string itemName; uint32_t chance = 0, minAmount = 1, maxAmount = 1; uint64_t minRange = 0, maxRange = 0; if(readXMLString(node, "name", strValue)) itemName = strValue; if(readXMLInteger(node, "itemid", intValue)) itemId = intValue; if(readXMLInteger(node, "chance", intValue)) chance = intValue; if(readXMLInteger(node, "minAmount", intValue)) minAmount = intValue; if(readXMLInteger(node, "maxAmount", intValue)) maxAmount = intValue; if(readXMLInteger(node, "minRange", intValue)) minRange = intValue; if(readXMLInteger(node, "maxRange", intValue)) maxRange = intValue; setItemBag(itemId, itemName, chance, minAmount, maxAmount, minRange, maxRange); } xmlFreeDoc(doc); return true; } Passo 5: Atualize o items.h Em items.h, defina a estrutura BagItemInfo para armazenar as informações dos itens de bag: struct BagItemInfo { std::string name; uint16_t id; uint32_t chance; uint32_t minAmount; uint32_t maxAmount; uint64_t minRange; uint64_t maxRange; }; Adicione a função loadSurpriseBags() e métodos adicionais para gerenciar as Surprise Bags: bool loadSurpriseBags(); std::vector<const BagItemInfo*> getAllBagItems() const { std::vector<const BagItemInfo*> allBagItems; for(std::map<int32_t, BagItemInfo>::const_iterator it = bagItems.begin(); it != bagItems.end(); ++it) allBagItems.push_back(&(it->second)); return allBagItems; } void setItemBag(uint16_t itemId, const std::string &itemName, uint32_t chance, uint32_t minAmount, uint32_t maxAmount, uint64_t minRange, uint64_t maxRange) { BagItemInfo itemInfo; itemInfo.name = itemName; itemInfo.id = itemId; itemInfo.chance = chance; itemInfo.minAmount = minAmount; itemInfo.maxAmount = maxAmount; itemInfo.minRange = minRange; itemInfo.maxRange = maxRange; bagItems[itemId] = itemInfo; } Adicione o mapa bagItems na classe Items abaixo de RandomizationMap randomizationMap;: std::map<int32_t, BagItemInfo> bagItems; Passo 6: Modifique o otserv.cpp Em otserv.cpp, adicione o carregamento das bags no início da execução, logo acima de std::clog << "Loading groups" << std::endl;: if(g_config.getBool(ConfigManager::SURPRISE_BAGS)) { std::clog << "Loading surprise bags" << std::endl; if(!Item::items.loadSurpriseBags()) { std::clog << "Unable to load surprise bags! Continue? (y/N)" << std::endl; char buffer = OTSYS_getch(); if(buffer != 121 && buffer != 89) startupErrorMessage("Unable to load surprise bags!"); } } Passo 7: Atualize monsters.cpp No arquivo monsters.cpp, na função void MonsterType::dropLoot(Container* corpse), adicione o código para verificar e adicionar as Surprise Bags ao loot. Coloque-o logo após o código abaixo Item* tmpItem = *iit; if(Container* container = tmpItem->getContainer()) { if(createChildLoot(container, *it)) corpse->__internalAddThing(tmpItem); else delete container; } else corpse->__internalAddThing(tmpItem); Adicione if(g_config.getBool(ConfigManager::SURPRISE_BAGS)) { const std::vector<const Items::BagItemInfo*> allBagItems = Item::items.getAllBagItems(); std::vector<const Items::BagItemInfo*> validBagItems; for(std::vector<const Items::BagItemInfo*>::const_iterator it = allBagItems.begin(); it != allBagItems.end(); ++it) { const Items::BagItemInfo* bagItem = *it; if(bagItem->chance > 0) validBagItems.push_back(bagItem); } if(!validBagItems.empty()) { for(std::vector<const Items::BagItemInfo*>::const_iterator it = validBagItems.begin(); it != validBagItems.end(); ++it) { const Items::BagItemInfo* bagItem = *it; uint64_t minChance = bagItem->minRange; uint64_t maxChance = bagItem->maxRange; if(random_range(minChance, maxChance) <= bagItem->chance) { uint16_t chosenBagId = bagItem->id; uint32_t minAmount = bagItem->minAmount; uint32_t maxAmount = bagItem->maxAmount; uint16_t dropAmount = static_cast<uint16_t>(random_range(minAmount, maxAmount, DISTRO_UNIFORM)); if(chosenBagId != 0) { Item* newItem = NULL; if(dropAmount > 1) { newItem = Item::CreateItem(chosenBagId, dropAmount); if(newItem) { if(g_game.internalAddItem(NULL, corpse, newItem) != RET_NOERROR) corpse->__internalAddThing(newItem); } } else { newItem = Item::CreateItem(chosenBagId, 1); if(newItem) { if(g_game.internalAddItem(NULL, corpse, newItem) != RET_NOERROR) corpse->__internalAddThing(newItem); } } } } } } } Passo 8: Atualize o config.lua Por fim, no arquivo config.lua, adicione a configuração que permite ativar ou desativar o drop das Surprise Bags: -- Surprise Bags -- NOTE: Set dropSurpriseBagsFromMonsters to false to disable surprise bag drops from monsters.. dropSurpriseBagsFromMonsters = false Para finalizar va na pasta data/items e crie um arquivo bags.xml e cole isso dentro <?xml version="1.0" encoding="UTF-8"?> <bags> <!-- If chance and maxRange have the same value, the item will always drop. --> <bag name="Blue Surprise Bag" itemid="6570" chance="100" maxRange="10000"/> <bag name="Red Surprise Bag" itemid="6571" chance="100" maxRange="1000"/> </bags> Explicação do Funcionamento O sistema lê as informações de cada itens do arquivo XML bags.xml, que segue a seguinte estrutura acima: Cada <bag> representa uma bag/item que pode ser dropada de monstros com as seguintes propriedades: name: Nome descritivo da bag/item (opcional para identificação). itemid: ID do item representando a bag/item no jogo. chance: Chance de dropar a sacola. Valores mais altos aumentam a chance. maxRange: Define o intervalo máximo de chance. Se chance for igual a maxRange, a sacola sempre será derrubada. Quando menor o a distancia da chance para o range, mais fácil o item dropa. Créditos: Zorzin pela ideia do código na versão 7.9 Tryller: Criação do código do tópico
  17. Furyons reagiu a uma resposta no tópico: Crystal Server, está de volta!
  18. chateadoagr começou a seguir Tryller
  19. Fir3element reagiu a uma resposta no tópico: Crystal Server, está de volta!
  20. Cat reagiu a uma resposta no tópico: Crystal Server, está de volta!
  21. Tryller alterou sua foto pessoal
  22. Tryller postou uma resposta no tópico em Portal
    Crystal Server Olá rapaziada, pra quem não me conhece sou Tryller. Eu desenvolvia por volta de 2010 - 2015 uma distro conhecida como Crystal Server. Utilizando de base o OpenTibia SVN e o The Forgotten Server. Faz um tempo e venho pensando em voltar com a distro do Crystal Server. Hoje o Crystal Server está de volta, com o bom e velho mapa SadSoul.. Mas resolvi vir até aqui para convidar vocês amantes do OpenTibia e do Crystal Server a visitarem nosso repositório no GitHub https://github.com/jprzimba/crystalserver e dar uma conferida de como está indo o andamento do server e quem se sentir a vontade de contribuir fique a vontade, basta criar um pull request que estarei analisando. Agradeço a todos que lerem está matéria, não esqueçam de voltar na enquete. Atenciosamente, Tryller.
  23. Provavelmente alguma ação de algum player ou quest está causando isso, tem que ver no console do server se aparece algum erro
  24. Apenas está faltando Linker para boost Aperta Alt + P Vai em Parameters Depois em Linker e veja se está faltando algumas dessas e adicione -lboost_regex -lboost_system -lboost_thread Boa sorte
  25. Tryller respondeu ao post em um tópico de EdsonJunior em Outros Bots
    Cara eu tirei a tela de login deles. pra abrir direto no bot. se quiser te passo e você atualiza tópico. Eu ia crir um tópico aqui mas vi que ja tinha o seu. Acho bem melhor não ter a tela de login deles pq é muito chata... ahhhh e eu sou BR né....
  26. Tryller respondeu ao post em um tópico de Augusto em Ouvidoria
    Preciso do Tibia 8.6 e quando venho ao site para baixar.. me deparo com isso An Internal Error Has Occurred. Error: An Internal Error Has Occurred. The easiest way to download tibia clients. http://clients.tibiaking.com/
  27. Tryller respondeu ao post em um tópico de EdsonJunior em Xeno Bot
    22:53 You are not allowed to use this script
  28. Todos se vc nao sober utilizar a ferramenta Hj uso Xenobot em 6 account lvl 300+ e nenhuma delas toma delete.
  29. Valeu pela força Bruno espero contar com ajuda de vocês pessoal.

Informação Importante

Confirmação de Termo