Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Anty-bot na Masiyah


lemo220

Rekomendowane odpowiedzi

Opublikowano

Witam, gram na serwerze Masiyah.se i potrzebuje pomocy z tamtejszym Anty Bot systemem. Rozni sie on tym od innych, ze zadna z trzech wyswietlanych informacji nie jest mozliwa do wykrycia przez ElfBota.

Zacytuje tekst z pewnego forum co sie wyswietla:

"A single chat message appears in Oranage Text, and continually spams the same message. (elfbot cannot detect Oranage Text messages sent in Default Chat).
A Magic_Text appears above your character with the math question. (Elfbot cannot detect Magic_text).
Several (8) Magic_Effects appear around your character. (In the shape of a Magic Forceforce). [Elfbot cannot detect Magic_Effects]."

 

Tutaj wstawiam screena

https://s10.postimg.org/belrgy3op/asdasd.png

 

Jesli nie w Elfie to moze w jakims innym bocie? Probowalem BlackDProxy lecz tez nie widzi tej wiadomosci. Myslalem tez nad przerobieniem jakos klienta aby wyswietlal ten tekst jako normalny kolor ale nie wiem czy to mozliwe. Ma ktos jakies pomysly?

Opublikowano

funkcja użyta w tym przypadku to 

doCreatureSay

używana do "krzyków" potworów.

 

Jeśli zajrzymy do source ( dla przykładu 0.3.6 Tibia 854) możemy znaleźć tą funkcję:

 

 

void ProtocolGame::AddCreatureSpeak(NetworkMessage_ptr msg, const Creature* creature, SpeakClasses type,
	std::string text, uint16_t channelId, uint32_t time/*= 0*/, Position* pos/* = NULL*/)
{
	msg->AddByte(0xAA);
	if(creature)
	{
		const Player* speaker = creature->getPlayer();
		if(speaker)
		{
			msg->AddU32(++g_chat.statement);
			g_chat.statementMap[g_chat.statement] = text;
		}
		else
			msg->AddU32(0x00);

		if(creature->getSpeakType() != SPEAK_CLASS_NONE)
			type = creature->getSpeakType();

		switch(type)
		{
			case SPEAK_CHANNEL_RA:
				msg->AddString("");
				break;
			case SPEAK_RVR_ANSWER:
				msg->AddString("Gamemaster");
				break;
			default:
				msg->AddString(!creature->getHideName() ? creature->getName() : "");
				break;
		}

		if(speaker && type != SPEAK_RVR_ANSWER && !speaker->isAccountManager()
			&& !speaker->hasCustomFlag(PlayerCustomFlag_HideLevel))
			msg->AddU16(speaker->getPlayerInfo(PLAYERINFO_LEVEL));
		else
			msg->AddU16(0x00);

	}
	else
	{
		msg->AddU32(0x00);
		msg->AddString("");
		msg->AddU16(0x00);
	}

	msg->AddByte(type);
	switch(type)
	{
		case SPEAK_SAY:
		case SPEAK_WHISPER:
		case SPEAK_YELL:
		case SPEAK_MONSTER_SAY:
		case SPEAK_MONSTER_YELL:
		case SPEAK_PRIVATE_NP:
		{
			if(pos)
				msg->AddPosition(*pos);
			else if(creature)
				msg->AddPosition(creature->getPosition());
			else
				msg->AddPosition(Position(0,0,7));

			break;
		}

		case SPEAK_CHANNEL_Y:
		case SPEAK_CHANNEL_RN:
		case SPEAK_CHANNEL_RA:
		case SPEAK_CHANNEL_O:
		case SPEAK_CHANNEL_W:
			msg->AddU16(channelId);
			break;

		case SPEAK_RVR_CHANNEL:
		{
			msg->AddU32(uint32_t(OTSYS_TIME() / 1000 & 0xFFFFFFFF) - time);
			break;
		}

		default:
			break;
	}

	msg->AddString(text);
}

 

 

Pozostaje nam ją przeanalizować i napisać odpowiedni program który zinjectujemy w naszego clienta. Program ten musi wyłapywać pakiety tej funkcji, wtedy będziemy w stanie odczytać te "znaki".

 

Podsumowując: trzeba znać dobrze c++ i inżynierie wsteczną aby coś takiego napisać więc nie sądzę, że to ogarniesz / dostaniesz.

Opublikowano

Najprostsza funkcja na lastmsg wykrywa krzyki potworow (przed chwila sprawdzone na Masiyah).

auto 500 if [$lastmsg.content ? '!'] say 'lol'
Opublikowano

No to nie wiem o co chodzi, tutaj w kazdym razie wykrywa krzyk potworow. Ktos jeszcze ma jakies pomysly jak to zrobic?

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...