" bzw war der letzte Schultag!"
Du musst es richtig formulieren, da bei diesen Kürzel sich ergibt, dass du allgemein den Bildungsweg meinst.
" bzw war der letzte Schultag!"
Du musst es richtig formulieren, da bei diesen Kürzel sich ergibt, dass du allgemein den Bildungsweg meinst.
Ich versuche jetzt SRWare Iron.
In meinen Augen viel angenehmer als Firefox, aber
die Entscheidung mache ich erst später.
Von mir aus auch, alles Gute, Sebi und die Anderen.
new Adminlevel = mysql_GetInt("accounts","Adminlevel","Name", SpielerInfo[i][pAdmin]);
Wird niemals klappen.
1. Es können mehr Admins auf diese falsche Weise dasselbe Level haben
2. Solltest du wieder den Spielernamen da reinbauen.
ZitatAlles werde ich immer mit PVar's Schreiben.
Damit zeigst du, dass du noch ziemlich am Anfang bist, denn normale Variablen sind viel schneller zu verarbeiten, als diese PVars.
PVars sollte man nur nutzen, wenn man diese für bestimmte Zeit braucht, und nicht für die ganze Sitzung.
new Adminlevel = mysql_GetInt("accounts","Adminlevel","Name", SpielerInfo[i][pAdmin]);
Muss mein dummen Code wieder anschauen.
SetTimer wieder rein.
Mach new Text:Clock global und
erstelle den TD unter OnGameModeInit.
In der Funktion dann nur noch den Text ändern
TextDrawSetString(Clock, string);
public OnPlayerRequestClass(playerid, classid)
{
SetSpawnInfo(playerid,0,spawnskins[random(sizeof(spawnskins))],1106.6761,-1796.3093,16.5938,90.5308,0,0,0,0,0,0);
SpawnPlayer(playerid);
return 1;
}
Du kannst wissen, welche Daten verarbeitet werden. Damit kannst du überprüfen, ob eine Funktion oder Anweisung falsch funktioniert.
Der Timer multipliziert sich bei mehreren Usern.
Mach doch einfach ein Debug (printf("Wert von xyz = %d", adminlevel);
Du musst es ja selbstverständlich an dein Script anpassen.
TextDrawShowForAll(Clock);
SetTimer("clock",1000,0);
return 1;
}
zu
TextDrawShowForAll(Clock);
return 1;
}
Mach mal die Zeile mit SetPlayerSkin raus.
Du bräuchtest den Skin zu speichern und dann beim Connect herauslesen und beim Spawn setzen.
Du solltest jedoch bei einer solchen "SynchronTabelle" bei "Value" ein String verwenden, da nicht jede Synchronisation nur Zahlen verwenden
[table=3]
[*]id
[*]type
[*]data
[*]1
[*]Adminlevel
[*][Tag]Spieler|6
[/table]
"data" Format: Spielername | Wert
Ich hab den jeweiligen Code im oberen Beitrag eingefügt.
Ein Extra Parameter für die Autos speichern und diesen beim Starten einlesen bzw. für eine Fahrzeuggruppe.
Ein 5-Minuten-Takt-Timer unter OnGameModeInit.
In der Funktion vom Timer eine Schleife erstellen für alle Spieler.
Wenn sich der Admin-Level in der Datenbank verändert hat, also nur ein höheres Level,
dann sollte dies übernommen werden und eine Nachricht muss erscheinen.
public OnGameModeInit()
{
SetTimer("DatenbankRefresh", 1*60000, true);
}
#define timer%0(%1) forward%0(%1); public%0(%1)
timer DatenBankRefresh()
{
for(new playerid; playerid < MAX_PLAYERS; playerid++)
{
if(PlayerData[playerid][pAdmin] > 0 && PlayerData[playerid][pLoggedIn])
{
new plrnme[20];
GetPlayerName(playerid, plrnme, sizeof plrnme);
new adminlevel = getInt("user", "adminlevel", "name", plrnme);
if(PlayerData[playerid][pAdmin] < adminlevel)
PlayerData[playerid][pAdmin] = adminlevel;
continue;
}
}
return 1;
}