Example #1
0
// =================================================================================
// Init
// =================================================================================
void GameMemory::Init()
{
#ifndef GTA_LUA_TEST_EXE
	// Module
	GameModule = GetModuleHandle("GTA5.exe");
	if (GameModule == NULL)
	{
		printf("GameMemory::Init GTA5.exe module not found!");
		return;
	}

	// Base
	Base = (DWORD64) GameModule;
	//printf("[GameMemory] Game Base: %p\n", Base);

	// Size
	Size = Memory::GetModuleSize(GameModule);
	//printf("[GameMemory] Game Size: %p\n", Size);

	// Content
	ScriptEngineInitialized = false;

	// Version
	FetchVersion();

	// Version Check
	printf("===================================================================\n");
	printf("Game Version: %s ", Version);
	if (strcmp(Version, "1.0.350.1") == 0 ||
		strcmp(Version, "1.0.350.2") == 0 ||
		strcmp(Version, "1.0.372.1") == 0 ||
		strcmp(Version, "1.0.372.2") == 0 ||
		strcmp(Version, "1.0.393.2") == 0 ||
		strcmp(Version, "1.0.393.4") == 0 ||
		strcmp(Version, "1.0.440.2") == 0 ||
		strcmp(Version, "1.0.463.1") == 0 ||
		strcmp(Version, "1.0.505.2") == 0 ||
		strcmp(Version, "1.0.573.1") == 0 ||
		strcmp(Version, "1.0.617.1") == 0 ||
		strcmp(Version, "1.0.678.1") == 0)
		printf("(Supported)\n");
	else
	{
		if (strcmp(Version, "1.0.335.1") == 0)
			printf("(Unsupported)\nThis version is no longer supported! Use GTALua 1.0.0!\n");
		else
			printf("\nThis version may not be supported!\n");
	}
	printf("===================================================================\n");

	// Init Hook
	InstallInitHooks();
#else
	printf("[GameMemory] Disabled\n");
#endif
}
Example #2
0
// =================================================================================
// Init
// =================================================================================
void GameMemory::Init()
{
#ifndef VIC_TEST_EXE
	// Module
	GameModule = GetModuleHandle("GTA5.exe");
	if (GameModule == NULL)
	{
		printf("GameMemory::Init GTA5.exe module not found!");
		return;
	}

	// Base
	Base = (DWORD64) GameModule;
	//printf("[GameMemory] Game Base: %p\n", Base);

	// Size
	Size = Memory::GetModuleSize(GameModule);
	//printf("[GameMemory] Game Size: %p\n", Size);

	// Version
	FetchVersion();

	// Version Check
	/*printf("===================================================================\n");
	printf("Game Version: %s ", Version);
	if(strcmp(Version, "1.0.350.1") == 0 || strcmp(Version, "1.0.350.2") == 0)
		printf("(Supported)\n");
	else
	{
		if (strcmp(Version, "1.0.335.1") == 0)
			printf("(Unsupported)\nThis version is no longer supported! Try GTALua 1.0.0!\n");
		else
			printf("\nThis version may not be supported!\n");
	}
	printf("===================================================================\n");*/
#else
	printf("[GameMemory] Disabled\n");
#endif
}
Example #3
0
	void EntryBase::SetStatus (const EntryStatus& status, const QString& variant, const QXmppPresence& presence)
	{
		const bool existed = CurrentStatus_.contains (variant);
		const bool wasOffline = existed ?
				CurrentStatus_ [variant].State_ == SOffline :
				false;

		if (existed &&
				status == CurrentStatus_ [variant] &&
				presence.priority () == Variant2ClientInfo_.value (variant).value ("priority"))
			return;

		CurrentStatus_ [variant] = status;

		const QStringList& vars = Variants ();
		if ((!existed || wasOffline) && !vars.isEmpty ())
		{
			const QString& highest = vars.first ();
			if (Location_.contains (QString ()))
				Location_ [highest] = Location_.take (QString ());
			if (Variant2ClientInfo_.contains (QString ()))
			{
				const auto& info = Variant2ClientInfo_ [QString ()];
				QStringList toCopy;
				toCopy << "user_tune" << "user_mood" << "user_activity";
				Q_FOREACH (const QString& key, toCopy)
					if (info.contains (key))
						Variant2ClientInfo_ [highest] [key] = info [key];
			}
		}

		if ((!existed || wasOffline) &&
				status.State_ != SOffline)
		{
			auto conn = Account_->GetClientConnection ();
			if (conn->GetInfoReqPolicyManager ()->IsRequestAllowed (InfoRequest::Version, this) &&
					!variant.isEmpty ())
				conn->FetchVersion (GetJID () + '/' + variant);
		}

		if (status.State_ != SOffline)
		{
			if (const int p = presence.priority ())
				Variant2ClientInfo_ [variant] ["priority"] = p;
		}
		else
		{
			Variant2Version_.remove (variant);
			Variant2ClientInfo_.remove (variant);
		}

		emit statusChanged (status, variant);

		if (!existed ||
				(existed && status.State_ == SOffline) ||
				wasOffline)
			emit availableVariantsChanged (vars);

		GlooxMessage *message = 0;
		if (GetEntryType () == ETPrivateChat)
			message = new GlooxMessage (IMessage::MTStatusMessage,
					IMessage::DIn,
					qobject_cast<RoomCLEntry*> (GetParentCLEntry ())->
							GetRoomHandler ()->GetRoomJID (),
					GetEntryName (),
					Account_->GetClientConnection ().get ());
		else
			message = new GlooxMessage (IMessage::MTStatusMessage,
				IMessage::DIn,
				GetJID (),
				variant,
				Account_->GetClientConnection ().get ());
		message->SetMessageSubType (IMessage::MSTParticipantStatusChange);

		GlooxProtocol *proto = qobject_cast<GlooxProtocol*> (Account_->GetParentProtocol ());
		IProxyObject *proxy = qobject_cast<IProxyObject*> (proto->GetProxyObject ());
		const QString& state = proxy->StateToString (status.State_);

		const QString& nick = GetEntryName () + '/' + variant;
		message->setProperty ("Azoth/Nick", nick);
		message->setProperty ("Azoth/TargetState", state);
		message->setProperty ("Azoth/StatusText", status.StatusString_);

		QString msg = tr ("%1 is now %2 (%3)")
				.arg (nick)
				.arg (state)
				.arg (status.StatusString_);
		message->SetBody (msg);
		HandleMessage (message);
	}
Example #4
0
	void EntryBase::SetStatus (const EntryStatus& status, const QString& variant, const QXmppPresence& presence)
	{
		const bool existed = CurrentStatus_.contains (variant);
		const bool wasOffline = existed ?
				CurrentStatus_ [variant].State_ == SOffline :
				false;

		if (existed &&
				status == CurrentStatus_ [variant] &&
				presence.priority () == Variant2ClientInfo_.value (variant).value ("priority"))
			return;

		CurrentStatus_ [variant] = status;

		const QStringList& vars = Variants ();
		if ((!existed || wasOffline) && !vars.isEmpty ())
		{
			const QString& highest = vars.first ();
			if (Location_.contains ({}))
				Location_ [highest] = Location_.take ({});
			if (Variant2Audio_.contains ({}))
				Variant2Audio_ [highest] = Variant2Audio_.take ({});
			if (Variant2Mood_.contains ({}))
				Variant2Mood_ [highest] = Variant2Mood_.take ({});
			if (Variant2Activity_.contains ({}))
				Variant2Activity_ [highest] = Variant2Activity_.take ({});
		}

		if ((!existed || wasOffline) &&
				status.State_ != SOffline)
		{
			auto conn = Account_->GetClientConnection ();
			if (conn->GetInfoReqPolicyManager ()->IsRequestAllowed (InfoRequest::Version, this))
			{
				if (!variant.isEmpty ())
					conn->FetchVersion (GetJID () + '/' + variant);
				else
					conn->FetchVersion (GetJID ());
			}
		}

		if (status.State_ != SOffline)
		{
			if (const int p = presence.priority ())
				Variant2ClientInfo_ [variant] ["priority"] = p;
		}
		else
		{
			Variant2Version_.remove (variant);
			Variant2ClientInfo_.remove (variant);
			Variant2VerString_.remove (variant);
			Variant2Identities_.remove (variant);

			Variant2Audio_.remove (variant);
			Variant2Mood_.remove (variant);
			Variant2Activity_.remove (variant);

			Variant2SecsDiff_.remove (variant);
		}

		emit statusChanged (status, variant);

		if (!existed ||
				status.State_ == SOffline ||
				wasOffline)
			emit availableVariantsChanged (vars);

		GlooxMessage *message = 0;
		if (GetEntryType () == EntryType::PrivateChat)
			message = new GlooxMessage (IMessage::Type::StatusMessage,
					IMessage::Direction::In,
					qobject_cast<RoomCLEntry*> (GetParentCLEntryObject ())->
							GetRoomHandler ()->GetRoomJID (),
					GetEntryName (),
					Account_->GetClientConnection ().get ());
		else
			message = new GlooxMessage (IMessage::Type::StatusMessage,
				IMessage::Direction::In,
				GetJID (),
				variant,
				Account_->GetClientConnection ().get ());
		message->SetMessageSubType (IMessage::SubType::ParticipantStatusChange);

		const auto proxy = Account_->GetParentProtocol ()->GetProxyObject ();
		const auto& state = proxy->StateToString (status.State_);

		const auto& nick = GetEntryName () + '/' + variant;
		message->setProperty ("Azoth/Nick", nick);
		message->setProperty ("Azoth/TargetState", state);
		message->setProperty ("Azoth/StatusText", status.StatusString_);

		const auto& msg = tr ("%1 is now %2 (%3)")
				.arg (nick)
				.arg (state)
				.arg (status.StatusString_);
		message->SetBody (msg);
		HandleMessage (message);
	}