Postado Agosto 13, 2020 4 anos Olá a todxs. Gente, meu servidor estava com um bug no secure mode (mãozinha do pvp): às vezes você morria e precisava abrir e fechar a mão novamente, senão o target falhava. Eu removi algumas linhas no combat.cpp e resolvi o target, mas a SD ainda fica falhando e você precisa abrir e fechar a mão novamente para conseguir jogar a SD ("turn secure mode off if you really want to attack unmarked players")... Então, preciso modificar ou retirar essa função da mãozinha / secure mode, inclusive para o uso de runas. Onde eu mudo isso? Qual servidor ou website você utiliza como base? TFS 0.5 exclusive edition Nota: Encontrei as seguintes linhas em spells.cpp, será que pode ser aqui? Citar Em: bool Spell::checkInstantSpell(Player* player, Creature* creature) Linha 798: if(player->getSecureMode() == SECUREMODE_ON) { player->sendCancelMessage(RET_TURNSECUREMODETOATTACKUNMARKEDPLAYERS); player->sendMagicEffect(player->getPosition(), MAGIC_EFFECT_POFF); return false; } Em: bool Spell::checkRuneSpell(Player* player, const Position& toPos) Linha 941: if(player->getSecureMode() == SECUREMODE_ON) { player->sendCancelMessage(RET_TURNSECUREMODETOATTACKUNMARKEDPLAYERS); player->sendMagicEffect(player->getPosition(), MAGIC_EFFECT_POFF); return false; } Acredito que a solução tbm possa estar em outros arquivos, por exemplo: protocolgame.cpp: Citar void ProtocolGame::parseFightModes(NetworkMessage& msg) { uint8_t rawFightMode = msg.get<char>(); //1 - offensive, 2 - balanced, 3 - defensive uint8_t rawChaseMode = msg.get<char>(); //0 - stand while fightning, 1 - chase opponent uint8_t rawSecureMode = msg.get<char>(); //0 - can't attack unmarked, 1 - can attack unmarked chaseMode_t chaseMode = CHASEMODE_STANDSTILL; if(rawChaseMode == 1) chaseMode = CHASEMODE_FOLLOW; fightMode_t fightMode = FIGHTMODE_ATTACK; if(rawFightMode == 2) fightMode = FIGHTMODE_BALANCED; else if(rawFightMode == 3) fightMode = FIGHTMODE_DEFENSE; secureMode_t secureMode = SECUREMODE_OFF; if(rawSecureMode == 1) secureMode = SECUREMODE_ON; addGameTaskTimed(DISPATCHER_TASK_EXPIRATION, &Game::playerSetFightModes, player->getID(), fightMode, chaseMode, secureMode); } player.cpp: Citar case RET_TURNSECUREMODETOATTACKUNMARKEDPLAYERS: sendCancel("Turn secure mode off if you really want to attack unmarked players."); break; game.cpp: Citar bool Game::playerSetFightModes(uint32_t playerId, fightMode_t fightMode, chaseMode_t chaseMode, secureMode_t secureMode) { Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; player->setFightMode(fightMode); player->setChaseMode(chaseMode); player->setSecureMode(secureMode); player->setLastAttack(OTSYS_TIME()); return true; } Editado Agosto 14, 2020 4 anos por Mecianosz (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.