Ir para conteúdo

Jackson Zani

Campones
  • Total de itens

    84
  • Registro em

  • Última visita

Tudo que Jackson Zani postou

  1. Se deu um monte de erro, pode ser que o seu dev-c++ esteja desconfigurado. Porque esse code pega em qualquer versão. Abraços!
  2. Isso mesmo cara! Simples hehehe, estala tudo certinho, que vai pegar de certeza brother! Abraços!
  3. Tutorial Olá membros do Xtibia, muitas pessoas anda pergunta, "Como eu faço para configurar meu Dev-c++"? Aonda eu baixo esse programa?, Porque da aquele error chamado -llua ?, Aonde eu baixo as packs? Como eu baixo as sources da svn? intão decedi fazer um tutorial explicando direitinho, passo a passo! Compilando: Primeiramente você deve fazer o download do Dev-c++(recomendado) ou qualquer otro compilador. Link:http://prdownloads.sourceforge.net/dev-cpp...9.9.2_setup.exe Logo em seguida você deve baixar as Packs, para poder compilar sem errors. São 6 packs ao total para você compilar, decedi bota-las numa pasta zip, para facilitar Obs: está incluido a pack de Mysql ou seja, se você quiser editar ou mecher em uma source sql, você é obrigado a estalar está pack, para que não ocorra nenhum erro. Link:http://rapidshare.com/files/39684876/Packs...ev-c__.zip.html Após baixa-las, estale as mesmas. Esses são todos os programas que você precisa para compilar um OTserv. Baixando Sources direto da SVN: Você precisa do programa TortoiseSVN-1.4.3, para baixa-lo: Link:http://sourceforge.net/project/downloading...use_mirror=ufpr Ele vem em versão inglês, mas se você quiser a versão português deve baixar essa outra pack: Link:http://sourceforge.net/project/downloading...use_mirror=ufpr Agora, estale os 2 e logo em seguida, você pode criar uma pasta com o nome de SVN, abra ela, nela você deve aperta com o botão direito e ir na Opção SVN Checkout... ou em portugues SVN Obter..., vai abrir uma janela, nela você deve botar em URL of repository: https://opentibia.svn.sourceforge.net/svnro...a/otserv/trunk/ , e de ok. Espere alguns minutos e você terá todas as sources atualizadas direto do site da svn. Trocando o nome da Versão: Essa é outra pergunta que fazem muito, em qualquer list ou aqui mesmo no xtibialist o nome da Versão fica como Evolutions 7.92 e eu mudo no config.lua mais não adianta, como eu faço para mudar? Simples, basta você ir nas sources do evolutions(recomendo) ou qualquer uma, ir em status.cpp ache essas linhas: #define STATUS_SERVER_VERSION "0.7.8" #define STATUS_SERVER_NAME "Evolutions" #define STATUS_CLIENT_VERISON "7.92" Basta você mudar para o nome que quiser, a versão que quiser, que vai aparecer direitinho lá Qualquer dúvida, comente aqui, que se eu souber, responderei. Abraços Créditos: Jackson Zani
  4. Esse code é muito bom :b ainda mais que ele usou a opção sendTextWindow Para você poder ver todos os Lugares, que gravou em uma tabela Abraços JV.
  5. Não é muito útil não, Já existe o comando /kick, por isso tu não nunca viu esse script, e kikar um player durante o battle não é legal :B Abraços
  6. Isso ai é inovador ;b Quando eu te dei a idéia, não sabia que tu ia fazer Ta muito bom!, não testei ainda, Mas vou testar! Abraços Nostradamus!
  7. Parabéns a eles Raphael lion concerteza ajudará muito, ótima escolha! Abraços!
  8. Bom, primeiramente isso não é bug hehehe, é porque eu não botei um if(container) ou seja, daqui alguns dias irei fazer um novo com a nova CLASS, esse code ai é muito velho hehehe, e já arrumarei esse problema. Abraços!
  9. Bom, esse é um ótimo editor de Access direto pelo Jogo. É um exelente programador brasileiro que fez. The Chaos. Lembrando só pessoa com acesso pode editar essa lista. ou seja ( Gods, Gms ) No final de commandos.cpp bool Commands::commandsXmlEditor(Creature* creature, const std::string& cmd, const std::string& param) { Player* player = creature->getPlayer(); if(!player) return false; Item* book = Item::CreateItem(2597); std::stringstream tds; for(CommandMap::iterator it = commandMap.begin(); it != commandMap.end(); ++it){ tds << it->second->name << "= "<<it->second->accesslevel<<";"<<std::endl; } book->setText(tds.str().c_str()); player->sendTextWindow(book,65535, true); player->eCommands = true; return false; } void Commands::playerEditCommands(Player* player, Item* item, const std::string& text) { if(!player) return; player->eCommands = false; std::string tmp = text, command; std::string datadir = g_config.getString(ConfigManager::DATA_DIRECTORY); std::string filename = datadir + "commands.xml"; std::stringstream sb; xmlNodePtr nn, sn, pn, root; xmlDocPtr doc = xmlNewDoc((const xmlChar*)"1.0"); doc->children = xmlNewDocNode(doc, NULL, (const xmlChar*)"commands", NULL); root = doc->children; while(tmp.size() > 1){ pn = xmlNewNode(NULL,(const xmlChar*)"command"); std::string::size_type pos = tmp.find('=', 0); sb.str(""); sb << tmp.substr(0, pos).c_str(); tmp.erase(0, pos+2); xmlSetProp(pn, (const xmlChar*)"cmd", (const xmlChar*)sb.str().c_str()); pos = tmp.find(';', 0); sb.str(""); sb << tmp.substr(0, pos).c_str(); tmp.erase(0, pos+2); xmlSetProp(pn, (const xmlChar*)"access", (const xmlChar*)sb.str().c_str()); xmlAddChild(root, pn); } xmlSaveFormatFileEnc(filename.c_str(), doc, "UTF-8", 1); this->reload(); return; } Depois dê {"/raid",&Commands::forceRaid}, Adicione: {"/cmdeditor", &Commands::commandsXmlEditor}, Agora ache: std::string key = defined_commands[i].name; Em baixo adicione: cmd->name = key; Em Commands.h abaixo de: static ReturnValue placeSummon(Creature* creature, const std::string& name); Adicione: void playerEditCommands(Player* player, Item* item, const std::string& text); Depois dê: bool forceRaid(Creature* creature, const std::string& cmd, const std::string& param); Adicione: bool commandsXmlEditor(Creature* creature, const std::string& cmd, const std::string& param); Agora na função struct Command{ Depois dê: bool loaded; Adicione: std::string name; Ok, agora em Protocol.cpp aonde fica os #include adicione #include "commands.h" extern Commands commands; Ache a função void Protocol79::ParseTextWindow(NetworkMessage& msg) { Depois dê std::string new_text = msg.GetString(); Adicione if(player->eCommands){ commands.playerEditCommands(player, readItem, new_text); return; } Em player.h depois dê uint32_t maxDepotLimit; Adicione: bool eCommands; Pronto. Agora você tem que dar Rebuild all, para reparar as suas sources. Obs: Cuidado com esse code, você só pode mudar os números, nunca mude o nome do comando. Créditos: The Chaos Tradução: Jackson Zani Abraços.
  10. Creio que pular uma linha, não seja nada organizado ;b Vai ficar que nem o comando /getonline dai, hehehe. Vai do gosto da pessoa. Abraços!
  11. É números hehehe Parabéns mais uma vez, sempre se superando hehe Abraços!
  12. Concerteza será um ótimo mapa Conde! Estou ancioso para entrar nele e explorar mais e mais. Abraços!
  13. @Topic Para pegar na versão do Evolutions, como lá só tem getPlayerGuid(só aparece a id) e não getGuidByName(aparece ambos, id, name) Você deve ir em Ioplayersql.cpp Adicionar lá: bool IOPlayerSQL::getGuidByName(uint32_t &guid, std::string& name) { GuidCacheMap::iterator it = guidCacheMap.find(name); if(it != guidCacheMap.end()){ name = it->first; guid = it->second; return true; } Database* mysql = Database::instance(); DBQuery query; DBResult result; if(!mysql->connect()) return false; query << "SELECT name,id FROM players WHERE name='" << Database::escapeString(name) << "'"; if(!mysql->storeQuery(query, result) || result.getNumRows() != 1) return false; name = result.getDataString("name"); guid = result.getDataInt("id"); guidCacheMap[name] = guid; return true; } Depois em Ioplayersql.h adicionar: virtual bool getGuidByName(uint32_t& guid, std::string& name); E agora em ioplayer.cpp adicione: bool IOPlayer::getGuidByName(long unsigned int&, std::string&) { return false; } Em ioplayer.h adicione: virtual bool getGuidByName(long unsigned int&, std::string&); E pronto ;D
  14. Hehehe, tem uma screnn ali no topic! O_O E você verá os players online asim: Ta ae, Abraços.
  15. Fiz uma pequena modificação e achei interessante compartilhar com vocês membros do Xtibia. ;D! É o comando normal do !online, mas invês de ser MSG_STATUS_CONSOLE_BLUE eu coloquei sendTextWindow Vamos lá. Em game.cpp no final add: void Game::sendWindow(const std::string& text) { for(AutoList<Creature>::listiterator it = listCreature.list.begin(); it != listCreature.list.end(); ++it){ Player* player = dynamic_cast<Player*>((*it).second); if (player){ player->sendTextWindow(4990, text); } } } Em game.h abaix de: void changeLight(const Creature* creature); Adicione: void sendWindow(const std::string& text); Agora em commands.cpp troque todo o comando: bool Commands::whoIsOnline(Creature* creature, const std::string &cmd, const std::string &param) Por esse: bool Commands::whoIsOnline(Creature* creature, const std::string &cmd, const std::string &param) { if(Player* player = creature->getPlayer()){ AutoList<Player>::listiterator iter = Player::listPlayer.list.begin(); std::string info = "Players online: " + (*iter).second->getName(); ++iter; while(iter != Player::listPlayer.list.end()){ if((*iter).second->getAccessLevel() < ACCESS_PROTECT){ info += ", "; info += (*iter).second->getName(); } ++iter; } player->sendTextWindow(1949, info.c_str()); } return true; } Agora dê Rebuild All. Ctrl+f11 E você verá os players online asim: Qualquer dúvida, ou dicas. Poste aqui. Abraços!
  16. Sim, não é que deixa mais leve, deixa pesado pra abrir o server, intão ele demora, mais isso nao danifica dentro do jogo, eu arrumarei os beds, é que eu tinha postado os mais atualizados mais tiraram hehehe.. eu posto denovo amanha. Abraços!
  17. Não afeta nada, muito pelo contrário melhora tudo os tiles, ou pisos como você deseja chamar, Ele randomiza, invês de ficar igual, mas se seu mapa for maior de 30mb ele vai demorar pra abrir só. Tem programa que faiz isso hehe. Abraços ^^
  18. Fico muito legal hehehe Achei bastante completo Abraçoss!
  19. Não recomendo usar isso para mapas grandes(acima de 30mb), recomando usar programas. porque dependendo o tamanho do mapa demora + para abrir o servidor, porque irá randomizar todos os tiles, mais como tem pessoas que gostam de randomizar pelo servidor aqui vai o code: Em game.cpp adicione no final short Game::checkItemGroundType(uint16_t itemid) { if(itemid >= 4608 && itemid <= 4625 || itemid >= 4664 && itemid <= 4666 || itemid == 4820) return GROUND_WATER; else if(itemid >= 708 && itemid <= 711) return GROUND_TAR; else if(itemid >= 4691 && itemid <= 4712 || itemid >= 4749 && itemid <= 4755 || itemid == 4758) return GROUND_SWAMP; else if(itemid >= 598 && itemid <= 601) return GROUND_LAVA; else return 0; } short Game::checkItemGroundTypeRandomizer(uint16_t itemid) { if(itemid >= 4608 && itemid <= 4625 || itemid >= 4664 && itemid <= 4666) return GROUND_WATER; else if(itemid >= 708 && itemid <= 711) return GROUND_TAR; else if(itemid >= 4691 && itemid <= 4712 || itemid >= 4749 && itemid <= 4755 || itemid == 4758) return GROUND_SWAMP; else if(itemid >= 598 && itemid <= 601) return GROUND_LAVA; else if(itemid >= 4405 && itemid <= 4438) return GROUND_MOUNTAIN1; else if(itemid >= 4439 && itemid <= 4455) return GROUND_MOUNTAIN2; else if(itemid == 4566 || itemid >= 4570 && itemid <= 4579 || itemid == 4595) return GROUND_ROCKS; else if(itemid >= 4526 && itemid <= 4541 || itemid >= 4567 && itemid <= 4569 || itemid == 4756) return GROUND_GRASS; else if(itemid >= 5405 && itemid <= 5410) return GROUND_UNDERWATER; else return 0; } Em game.h abaixo de: void changeLight(const Creature* creature); Adicione: short checkItemGroundType(uint16_t itemid); short checkItemGroundTypeRandomizer(uint16_t itemid); Vá para const79.h, abaixo de: enum SquareColor_t { SQ_COLOR_NONE = 256, SQ_COLOR_BLACK = 0, }; Adicione: enum GroundType_t { GROUND_WATER = 1, GROUND_LAVA = 2, GROUND_SWAMP = 3, GROUND_TAR = 4, GROUND_MOUNTAIN1 = 5, GROUND_MOUNTAIN2 = 6, GROUND_ROCKS = 7, GROUND_GRASS = 8, GROUND_UNDERWATER = 9, }; Agora em iomapotbm.cpp abaixo de: case OTBM_ATTR_ITEM: { Item* item = Item::CreateItem(propStream); if(!item){ map->setLastError(LOADMAPERROR_FAILEDTOCREATEITEM, nodeTile); return false; } Adicione: if(g_config.getString(ConfigManager::RANDOMIZE_GROUND) == "yes" && g_game.checkItemGroundTypeRandomizer(item->getID()) != 0 && item->getActionId() == 0 && item->getUniqueId() == 0){ randomizeGround(item); } No final de iomapotbm.cpp adicione: void IOMapOTBM::randomizeGround(Item* item) { uint16_t percent = 1; GroundType_t type; switch(g_game.checkItemGroundTypeRandomizer(item->getID())){ case GROUND_WATER: if(g_config.getNumber(ConfigManager::WATER_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::WATER_PERCENT); else percent = 0; type = GROUND_WATER; break; case GROUND_LAVA: if(g_config.getNumber(ConfigManager::LAVA_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::LAVA_PERCENT); else percent = 0; type = GROUND_LAVA; break; case GROUND_SWAMP: if(g_config.getNumber(ConfigManager::SWAMP_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::SWAMP_PERCENT); else percent = 0; type = GROUND_SWAMP; break; case GROUND_TAR: if(g_config.getNumber(ConfigManager::TAR_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::TAR_PERCENT); else percent = 0; type = GROUND_TAR; break; case GROUND_MOUNTAIN1: if(g_config.getNumber(ConfigManager::MOUNTAIN_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::MOUNTAIN_PERCENT); else percent = 0; type = GROUND_MOUNTAIN1; break; case GROUND_MOUNTAIN2: if(g_config.getNumber(ConfigManager::MOUNTAIN_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::MOUNTAIN_PERCENT); else percent = 0; type = GROUND_MOUNTAIN2; break; case GROUND_ROCKS: if(g_config.getNumber(ConfigManager::ROCKS_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::ROCKS_PERCENT); else percent = 0; type = GROUND_ROCKS; break; case GROUND_GRASS: if(g_config.getNumber(ConfigManager::GRASS_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::GRASS_PERCENT); else percent = 0; type = GROUND_GRASS; break; case GROUND_UNDERWATER: if(g_config.getNumber(ConfigManager::UNDERWATER_PERCENT) > 0) percent = 100/g_config.getNumber(ConfigManager::UNDERWATER_PERCENT); else percent = 0; type = GROUND_UNDERWATER; break; } if(percent == 0) return; int x = random_range(1,percent); short y = 0; int toID = 0; if(x == 1){ if(type == GROUND_WATER){ y = random_range(1,21); if(y >= 1 && y <= 18) toID = 4607+y; else if(y >= 19 && y <= 21) toID = 4645+y; } else if(type == GROUND_LAVA){ y = random_range(1,4); toID = 597+y; } else if(type == GROUND_SWAMP){ y = random_range(1,30); if(y >= 1 && y <= 22) toID = 4690+y; else if(y >= 23 && y <= 29) toID = 4726+y; else if(y == 30) toID = 4758; } else if(type == GROUND_TAR){ y = random_range(1,4); toID = 707+y; } else if(type == GROUND_MOUNTAIN1){ y = random_range(1,34); toID = 4404+y; } else if(type == GROUND_MOUNTAIN2){ y = random_range(1,17); toID = 4438+y; } else if(type == GROUND_ROCKS){ y = random_range(1,12); if(y == 1) toID = 4566; else if(y >= 2 && y <= 11) toID = 4568+y; else if(y == 12) toID = 4595; } else if(type == GROUND_GRASS){ y = random_range(1,20); if(y >= 1 && y <= 16) toID = 4525+y; else if(y >= 17 && y <= 19) toID = 4550+y; else if(y == 20) toID = 4756; } else if(type == GROUND_UNDERWATER){ y = random_range(1,6); toID = 5404+y; } item->setID(toID); } } Em iomapotbm.h, abaixo de: virtual bool loadHouses(Map* map); Adicione: void randomizeGround(Item* item); Agora em item.cpp abaixo de: else if(_type == ITEM_DUSTBIN){ newItem = new TrashHolder(_type /*, NM_ME_PUFF*/); } Adicione: else if(g_game.checkItemGroundType(_type) != 0){ MagicEffectClasses effect_type; switch(g_game.checkItemGroundType(_type)){ case GROUND_TAR: effect_type = NM_ME_PUFF; break; case GROUND_WATER: effect_type = NM_ME_LOSE_ENERGY; break; case GROUND_SWAMP: effect_type = NM_ME_POISON_RINGS; break; case GROUND_LAVA: effect_type = NM_ME_HITBY_FIRE; break; } newItem = new TrashHolder(_type, effect_type); } Agora em tile.cpp abaixo de: else if(iiType.isTar()) continue; Adicione: else if(g_game.checkItemGroundType(iitem->getID()) != 0) continue; Agora em configmanager.cpp adicione m_confString[RANDOMIZE_GROUND] = getGlobalString(L, "randomize_ground", "no"); m_confInteger[WATER_PERCENT] = getGlobalNumber(L, "water_percent", 10); m_confInteger[LAVA_PERCENT] = getGlobalNumber(L, "lava_percent", 10); m_confInteger[SWAMP_PERCENT] = getGlobalNumber(L, "swamp_percent", 10); m_confInteger[TAR_PERCENT] = getGlobalNumber(L, "tar_percent", 10); m_confInteger[MOUNTAIN_PERCENT] = getGlobalNumber(L, "mountain_percent", 10); m_confInteger[ROCKS_PERCENT] = getGlobalNumber(L, "rocks_percent", 10); m_confInteger[GRASS_PERCENT] = getGlobalNumber(L, "grass_percent", 10); Em configmanager.h adicione nos strings RANDOMIZE_GROUND, Agora nos integer adicione WATER_PERCENT, LAVA_PERCENT, SWAMP_PERCENT, TAR_PERCENT, MOUNTAIN_PERCENT, ROCKS_PERCENT, GRASS_PERCENT, UNDERWATER_PERCENT, Pronto de rebuild all, ctrl+f11 e adicione isso no config.lua: -------------------------------------------------------------------- ---------- Randomize Ground Configs ------------ -------------------------------------------------------------------- -- Randomize Ground? (yes/no) randomize_ground = "no" -- Water Percent water_percent = 70 -- Lava Percent lava_percent = 10 -- Swamp Percent swamp_percent = 50 -- Tar Percent tar_percent = 10 -- Mountain Percent mountain_percent = 50 -- Rocks Percent rocks_percent = 60 -- Grass Percent grass_percent = 80 -- Underwater Ground Percent underwater_percent = 70 Espero ter ajudado, qualquer dúvida só perguntar. Abraços.
  20. Bom, esse é code de um amigo meu, todos já devem ter visto essa função, porém ele não tem nas versões , ele é conheçido bastante no Tibia global. Em game.cpp abaixo de: maxPlayers = g_config.getNumber(ConfigManager::MAX_PLAYERS); adicione: recordPlayer = 0; loadRecord(); Agora na função: bool Game::placeCreature(const Position& pos, Creature* creature, bool forced /*= false*/) abaixo de: if(Player* player = creature->getPlayer()) { adicione: checkRecord(); No final de game.cpp, adicione: void Game::loadRecord() { FILE* file = fopen("record.log", "r"); if(file != NULL) { fscanf(file, "online_players=%d", &recordPlayer); fclose(file); } } void Game::checkRecord() { if(getPlayersOnline() > recordPlayer) { char msg[64], log[32]; sprintf(msg, "New record: %d players are logged in.", getPlayersOnline()); for(AutoList<Player>::listiterator it = Player::listPlayer.list.begin(); it != Player::listPlayer.list.end(); ++it){ (*it).second->sendTextMessage(MSG_EVENT_ADVANCE, msg); } recordPlayer = getPlayersOnline(); // save record FILE* file = fopen("record.log", "w+"); sprintf(log, "online_players=%d", getPlayersOnline()); fputs(log, file); fclose(file); } } Agora em game.h abaixo de: class Game { public: Game(); ~Game(); adicione: uint16_t recordPlayer; void checkRecord(); void loadRecord();
  21. Olá de novo, venho trazer outro comando simples para vocês, Esse comando ele escolhe uma looktype. Em commands.cpp em baixo de: {"/kick",&Commands::kickPlayer}, Adicione: {"/newtype", &Commands::newType}, No final de commands.cpp adicione: bool Commands::newType(Creature* creature, const std::string& cmd, const std::string& param) { Player* player = creature->getPlayer(); int32_t lookType = atoi(param.c_str()); if(player) { if(lookType < 0 || lookType == 1 || lookType == 135 || lookType > 160 && lookType < 192 || lookType > 247) player->sendTextMessage(MSG_STATUS_SMALL, "Essa looktype não existe."); else game->internalCreatureChangeOutfit(creature, (const Outfit_t&)lookType); } } Agora em commands.h em baixo de: bool kickPlayer(Creature* creature, const std::string& cmd, const std::string& param); Adicione: bool newType(Creature* creature, const std::string& cmd, const std::string& param); Agora basta dar Rebuild(Ctrl+f11). Agora em commands.xml, dentro da sua pasta data, Adicione: <command cmd="/newtype" access="3" /> Lembrando que você pode mudar o access ;}. Agora a lista feita pelo neverland, editar por min. está faltando algumas LOOKTYPES 7.6 1 --BUGGED 2 orc warlord 3 war wolf 4 orc raider 5 orc 6 orc shaman 7 orc warrior 8 orc berserker 9 necromancer 10 yellow butterfly 11 Water Elemental 12 não lembro o nome :D criatura marina. 13 Black sheep 14 White sheep 15 troll 16 bear 17 beholder 18 ghoul 19 slime 20 Quara Predator 21 rat 22 cyclops 23 minotaur mage 24 minotaur archer 25 minotaur 26 rotworm 27 wolf 28 snake 29 minotaur guard 30 spider 31 deer 32 dog 33 skeleton 34 dragon 35 demon 36 poison spider 37 demon skeleton 38 giant spider 39 dragon lord 40 fire devil 41 lion 42 polar bear 43 scorpion 44 wasp 45 bug 46 Quara Constrictor Scout 47 Quara Hydromancer Scout 48 ghost 49 fire elemental 50 orc spearman 51 green djinn 52 winter wolf 53 frost troll 54 witch 55 behemoth 56 cave rat 57 monk 58 priestress 59 orc leader 60 pig 61 goblin 62 elf 63 elf arcanist 64 elf scout 65 mummy 66 dwarf geomancer 67 stone golem 68 vampire 69 dwarf 70 dwarf guard 71 dwarf soldier 72 Quara Mantassin Scout 73 hero 74 rabbit 75 gamemaster 76 swamp troll 77 Quara Pincher Scout 78 banshee 79 ancient scarab 80 blue djinn 81 cobra 82 larva 83 scarab 84 omruc 85 morguthis 86 thalas 87 diptrah 88 ashmunrah 89 bossmummy 90 vashresamun 91 rahemos 92 mimic 93 não sei 94 hyena 95 gargoyle 96 pirata 97 + um pirate 98 otro;x 99 lich 100 crypt shambler 101 bone beast 102 deathslicer 103 efreet 104 marid 105 badger 106 skunk 107 demon 108 elder beholder 109 gazer 110 Yeti 111 Chicken 112 Crab 113 Lizard Templar 114 Lizard Sentinel 115 Lizard Snakechamber 116 Kongra 117 Merklin 118 Sibang 119 Crocodile 120 Carniphila 121 Hydra 122 Bat 123 Panda 124 Centipede 125 Tiger 126 to 142 - Outfits 143 --BUGGED 144 Customizable Elf Outfit 145 não sei 160 Customizable Dwarf Outfit 161 to 200 - --BUGGED 201 demon 202 Minotaur Guard 203 Elf Arcanist 204 dragon lord 205 stone golem 206 Monk 207 Minotaur Guard 208 giant spider 209 Necromancer 210 elder beholder 211 Elephant 212 Flamingo 213 Butterfly 214 Dworc Voodoomaster 215 Dworc Fleshhunter 216 Dworc Venomsniper 217 Parrot 218 Terror Bird 219 Tarantula 220 serpent spawn 221 Spit Nettle 222 não sei 225 Monk Está faltando alguns, como as criaturas novas. é só você tentar 226 em diante que vai saber. :x Abraços.
  22. Hmm, este code não funciona na nova SVN Porque agora estão usando outro tipo de class QTreeNode, dai tenho que aprimorar hehehe Tem um code do novo /clean no otfans. feito pelo Xidaozu e pelo Jiddo, mas lembrando que esse code não pegará com o novo /clean, a não ser que tu pode esse code na versão 0.7.8 do xidaozu, lá ainda está com svn velha, (class velha). mas já já tem a nova versão 0.7.9 Abraços
  23. Bom não precisa ser necessariamente em baixo de access, Basta colocar ali no meio na ordem, que você não terá problemas hehehe. Cuide com o flood.. abraços. Desculpa, não ter lido antes! Quem saiba heim? Abraços JV.
  24. @Conde Tinha conde, como eu falei do fundo do baú hahaha! Abraços
  25. Bom, otro code do fundo do baú ! Esse code funciona da seguinte maneira, ao invês de o GM ficar fazendo toda hora, "Utani gran hur" para andar rápido, decidir arrumar direitinho e tirar os bugs deste code, Basta você usar /gmspeed e o número que ficará com a mesma speed até você logar. A speed vai de 99 até 9999 Em commands.cpp Em baixo de {"/info",&Commands::getInfo}, Adicione: {"/gmspeed",&Commands::GMspeedChanger}, No final de commands.cpp adicione: bool Commands::GMspeedChanger(Creature* creature, const std::string &cmd, const std::string &param){ int a; Player* player = creature->getPlayer(); std::string gambiarra = param.c_str(); std::stringstream baseSpeedValue; std::string aimeudeus; for(a=0; a<param.length(); ++a){ if(!isdigit(param[a])){ aimeudeus = param; aimeudeus.erase(a,1-param.length()); gambiarra.erase(0,1+a); break; } else aimeudeus = param.c_str(); } int newspeed = atoi(aimeudeus.c_str()); if(newspeed > 9999 || newspeed <= 99){ player->sendTextMessage(MSG_STATUS_CONSOLE_BLUE,"Sorry but the speed must be more than 99 and less than 9999."); return false; } if(Player* toChange = game->getPlayerByName(gambiarra)){ toChange->baseSpeed = newspeed; toChange->sendChangeSpeed(creature, creature->getSpeed()); baseSpeedValue << "GM "<<player->getName()<< " changed your speed to: "<<toChange->baseSpeed<<"."<<std::endl; toChange->sendTextMessage(MSG_STATUS_CONSOLE_BLUE,baseSpeedValue.str().c_str()); player->sendTextMessage(MSG_STATUS_CONSOLE_BLUE,"Done."); return true; } else{ player->baseSpeed = newspeed; player->sendChangeSpeed(creature, creature->getSpeed()); baseSpeedValue << "You changed your speed to: "<<player->baseSpeed<<"."<<std::endl; player->sendTextMessage(MSG_STATUS_CONSOLE_BLUE,baseSpeedValue.str().c_str()); return true; } return false; } Em commands.h depois de: bool getInfo(Creature* creature, const std::string& cmd, const std::string& param); Adicione: bool GMspeedChanger(Creature* creature, const std::string &cmd, const std::string &param); Depois disso dê Ctrl+f11 para dar rebuild. (recomendo usar isso a qualquer code adicionado.) Pronto, agora basta você ir na pasta commands.xml do seu OTserv. E adicionar lá <command cmd="/gmspeed" access="3" /> thankz Obs: Feita na versão nova SVN e testada na versão evolutions 0.7.8 também. Comentem
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...