Czesc wszystkim, dodaje pewne wydarzenie do mojej gry i mam niesamowity problem,
Uzytkownikow przechowuje w ten sposob
FTUsers[UserID] UserID od 0 do 1500
Co chce ogolnie zrobic?
Dajmy na to ze 300 uzytkownikow spełnia to
Zarejestrował sie, OriginalID == -1 jest domyslna wartoscia i ze jest w grze.(okej to wszystko mi dziala)
if(FTUsers[UserID].OriginalID == -1 && FTUsers[UserID].Registered && IsUserConnected(UserID))
Tylko teraz przechodze dalej FTStats.Count -> ilość zarejestrowanych, dajmy na to ze jest ich dwoch
czyli vector zwraca mi 0, 1, 2 liczac od zera
po losowaniu
random_shuffle(myVector.begin(), myVector.end());
wychodzi 1, 2, 0 (przykład)
i teraz nadchodzi moj problem, nie wiem jak moge ten vector tutaj
Pamietjamy ze jest to w petli for
FTUsers[UserID].originalID = *it; dziala tylko dla jednego
**Chce otrzymac taki wynik **
FTUsers[0].originalID = 1;
FTUsers[1].originalID = 2;
FTUsers[2].originalID = 0;
Dziekuje za jakiekolwiek wskazówki, oczywiscie ilość graczy bedzie siegac az 300-500-1000 userow.
Cały kod
void FT_RandomUserJoin()
{
char message[1024]; memset(message, 0x00, 1024);
vector<int> myVector;
for (int i = 0; i < FTStats.Count; i++) {
myVector.push_back(i);
}
sprintf(message, "People Register: %i ", FTStats.Count);
ConsoleOutput(message);
random_shuffle(myVector.begin(), myVector.end());
//FTStats.Count user of register
for (vector<int>::iterator it = myVector.begin(); it != myVector.end(); ++it)
{
for (int UserID = 0; UserID < MAXUSERS; UserID++) {
if (FTUsers[UserID].OriginalID == -1 && FTUsers[UserID].Registered && IsUserConnected(UserID))
{
char finalstr[1024]; memset(finalstr, 0x00, 1024);
FTUsers[UserID].OriginalID = *it;
sprintf(finalstr, "Random user JOIN Orignal ID: %i U: %i", FTUsers[UserID].OriginalID, UserID);
ConsoleOutput(finalstr, LightCyan);
}
}
}
return;
}