Rss Feed
Tweeter button
Facebook button
Technorati button
Reddit button
Myspace button
Linkedin button
Webonews button
Delicious button
Digg button
Flickr button
Stumbleupon button
Newsvine button
Youtube button
RSS
 

Jak pozwolić graczowi wybrać ID

18 mar

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.

 
 

Tags: , , , , ,

Zobacz także:

Leave a Reply

You must be logged in to post a comment.

 
This site employs the Wavatars plugin by Shamus Young.