Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

Nadawanie flag


Roberrt
 Udostępnij

Rekomendowane odpowiedzi

Cześć, aktualnie tworzę mój sklepsms z dociskiem na automatyczny i mam drobny drobniutki problemik.

Ponieważ sklep musi być 'automatyczny'  czyli samemu sprawdzać rodzaj usługi itp to najpierw selectuje czy jest steamid jeżeli jest to pobiera serviceid usługi i w tabeli services sprawdza czy istnieje taka usługa i dodaję flagi i tu zaczyna się robić problem.

Podczas gdy gracz łączy się z serwerem i jest w momencie OnClientPutInServer to wywołuję tą funkcję i wywala serwer.

W logach jest że serwer nagle stracił połączenie z DB ("lost connection to MySQL server during query")

Kodzik na nadawanie:

public void GiveFlag(int client)
{
	char Error[256];
	
	if (IsClientInGame(client))
	{
		char SID[64];
		char Query[256];
		
		GetClientAuthId(client, AuthId_Steam2, SID, sizeof(SID));
		if (!g_bPolaczono || !DB)
		{
			ConnectSQL();
			GiveFlag(client);
		}
		else
		{
			Format(Query, sizeof(Query), "SELECT `serviceid` FROM `sklepsms_user_services` WHERE `serverid`='%i' OR `serverid`='-1' AND `steamid`='%s'", ServerID, SID);
			Handle QueryDB = SQL_Query(DB, Query);
			
			if (QueryDB != INVALID_HANDLE)
			{
				while (SQL_FetchRow(QueryDB))
				{
					char Flags[64];
					int Service = SQL_FetchInt(QueryDB, 0);
					Format(Query, sizeof(Query), "SELECT `flags` FROM `sklepsms_services` WHERE `serviceid`='%i'", Service);
					QueryDB = SQL_Query(DB, Query);
					if (QueryDB != INVALID_HANDLE)
					{
						if (SQL_FetchRow(QueryDB))
						{
							SQL_FetchString(QueryDB, 0, Flags, sizeof(Flags));
							int FlagsInt = ReadFlagString(Flags);
							SetUserFlagBits(client, FlagsInt);
						}
						else
						{
							SQL_GetError(DB, Error, sizeof(Error));
							LogError("[ GiveFlag#1 ] %s", Error);
						}
					}
					else
					{
						SQL_GetError(DB, Error, sizeof(Error));
						LogError("[ GiveFlag#2 ] %s", Error);
					}
				}
				/*		else
				{
					SQL_GetError(DB, Error, sizeof(Error));
					LogError("[ GiveFlag#3 ] %s", Error);
				}
		*/
			}
			else
			{
				SQL_GetError(DB, Error, sizeof(Error));
				LogError("[ GiveFlag#4 ] %s", Error);
			}
		}
	}
}

A i jak popatrzycie do kodu to przy GiveFlag#4 wywala ten błąd. (Czyli przy 1 zapytaniu).

Z góry dzięki :3

Edytowane przez GoldeneK
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
 Udostępnij

×
×
  • Dodaj nową pozycję...