Moin!
Ersteinmal zu deinem Problem mit der Speicherung des Fahrzeugs:
Du solltest die Datenbank ID des Users an Stelle des Benuternamens speichern. Der Grund hierfür ist, dass der Name variabel sein kann - bestimmt planst du irgendwann auch mal den Namen irgendwie ändern zu können. Wäre das der Fall, würde ein Spieler durch Namensänderung sämtliche Fahrzeuge verlieren und das wäre definitiv nicht in deinem Interesse.
Der Fehler "local variable xyz shadows a variable at a preceding level" kommt daher, dass du eine Variable global definierst, die aber z.B. in Callback oder Funktionen als Parameter bereits existiert.
Zum Beispiel, du erstellst ein Enumerator und speicherst die playerid als eine Variable. Da sollte man genau den Fehler auch kriegen.
Melde dich einfach wieder hier im Thread, falls du noch Fragen hast oder Hilfe benötigst.