Jak pozwolić graczowi wybrać ID


VN:F [1.9.22_1171]
Ocena: 0.0/10 (0 ocen)

Dodałem dzisiaj w Kronikach Fallathanu opcję, której nie widziałem w żadnej innej grze ;) Polega ona na tym, iż nowy (lub stary) gracz, który się rejestruje w grze, może sobie wybrać ID (oczywiście z tych, które mu gra umożliwia wybrać).

Zaletą takiego rozwiązania jest to, iż nie trzeba się martwić o potworne luki w numeracji, minusem jest to, że nowi gracze wymieszają się ze starymi. Oczywiście jeśli nie zwracamy uwagi na numerki to minus nie będzie dla nas żadnym minusem.

Aby dać graczom możliwość wyboru ID wystarczy prosty skrypt:

// Wybieram wolne ID
$objPl = $db -> EXECUTE("SELECT id FROM players ORDER BY id ASC LIMIT 1000"); // pobieram istniejące id
$i = 0;
$arrList = array();
while (!$objPl -> EOF) // istniejące ID ładuję do ładnie ponumerowanej tablicy
{
$arrList[$i] = $objPl -> fields['id'];
$i = $i + 1;
 
$objPl -> MoveNext();
}
$objPl -> Close();
// sprawdzam pola na których nie ma ID i zapisuje do tablicy
$z = 10; // Wybieram oczywiście id, od którego ma zliczać, ja przyjąłem, że zależy mi na ID większych od 10
$arrId = array();
while ($z < 1000) // Sprawdzamy 1000 pierwszych numerów (można dać inne wartości np. 5000)
{
if (!in_array($z,$arrList)) // jeśli numerka nie ma w tablicy z istniejącymi ID to dopisujemy numerek do tablicy z wolnymi ID
{
$arrId[$z] = $z;
}
 
$z = $z + 1;
}
// wyswietlam wolne ID
$strId = '';
foreach ($arrId as $intId)
{
$strId = $strId . '<option value="'.$intId.'">'.$intId.'</option>';
}
 
print '<select id="ident" name="ident">
'. $strId .'
</select>';

Wrzucamy to do formularza rejestracji, dodajemy odpowiednie pole w tabeli rejestracyjnej (np. nowe_id), dopisujemy też kilka linijek w skrypcie rejestracyjnym i gotowe.

Jeśli są jakieś pytania proszę o komentarze.