Ir para conteúdo

Featured Replies

Postado

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 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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo