Tudo que Tryller postou
-
Crystal Server, está de volta!
Crystal Server está de volta Não esqueçam de visitar https://github.com/jprzimba/crystalserver
-
[13.40] Crystal Server 4.0 | Mapa Global
tem o link lá no repositorio do github
-
[13.40] Crystal Server 4.0 | Mapa Global
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
-
[13.40] Crystal Server 4.0 | Mapa Global
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.
-
Adicionando Surprise Bags no Drop de Monstros
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
-
Adicionando Surprise Bags no Drop de Monstros
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
-
Crystal Server, está de volta!
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.
-
Ot tavando (Journal)
Provavelmente alguma ação de algum player ou quest está causando isso, tem que ver no console do server se aparece algum erro
-
Erro ao terminar de compilar source 0.3.6
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
- [Crack] RedBot Pro {10.80}
-
Bugs/Erros no TK? Poste aqui!
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/
- Dicer Script
- Dicer Script
- Qual bot você acha que tem mais chances de ser detectado?
-
[OpenTibia] Crystal Server voltou!
Valeu pela força Bruno espero contar com ajuda de vocês pessoal.
-
Siga Crystal Server no GitHub
Siga Crystal Server no GitHub, este é baseado em TFS 0.3. Mas, devido à minha falta de tempo vou precisar de sua ajuda para manter atualizado. Se você usar o TFS 0,3 / 0,4, você pode continuar usando o Crystal Server. Mas, como eu disse acima, eu preciso de sua ajuda. Para mover o servidor para Crystal Server só use o meu Changelog ver alterações feitas.
-
Rodando OT em servidor Linux [+duvida]
Se for para aconpanhar versão atual do Tibia a fonte principal ta aqui https://github.com/otland/forgottenserver/
-
Alguem copila?
Voce precisa das libraries corretas e msvc12 Creio que TFS ainda não disponibilizou as libraries
-
Ajuda site wodbo
Se não me engano esse acc maker é o Nicaw da pra tirar isso no arquivo navigation.xml eu ahco confere lá
-
Alguem copila?
TFS 1.0 precisa de window 7 ou superior Só consigo ocmpilar em linux pois uso win xp
-
Quem poderá me ajudar...
Baixou o cliente novo ou o velho? ;0 Isso ai so vai encontrar no velho ;x
-
[Resolvido] .;Gostaria de modificar estas configuraçães .;
Pic editor server para Eitar o Tibia.pic ou PO.pic qualquer coisacom pi.c Acho que aqui no forum deve ter esse programa deve bastar apenas você procura
-
PokemonApi v1.1
Funções para fazer o que player se mover precisa da packet.dll que se encontra na pasta da source na versão atual.
-
[Resolvido] .;Gostaria de modificar estas configuraçães .;
Use um Pic Editor para isto
-
OpenTibia, será o fim?
Fire... é sim suporta multi core tranquilo Sammy Sinceramente n entendi o video