Das bewirkt, dass alle Werte von tv (also für alle Spieler) zum Server-Start auf -1 sind.
Das ist so wie:
new var = -1;
Nur eben für ein Array.
Das bewirkt, dass alle Werte von tv (also für alle Spieler) zum Server-Start auf -1 sind.
Das ist so wie:
new var = -1;
Nur eben für ein Array.
Ist es dort auch sinnvoll, dann extra Variablen für MAX_PLAYERS zu erstellen?
Ja.
Beim Disconnect oder beim Connect, das ist egal. Ich mache es immer beim Connect, das bleibt dir aber überlassen wie du das machst. Spielt absolut keine Rolle in welchem von beiden du das machst.
Gibts da dann Alternativen?
Ein Array, das ist wesentlich besser.
Unter den Includes:
new bool:spielerTankt[MAX_PLAYERS];
Beim Start des Tankens:
spielerTankt[playerid] = true;
Beim Beenden des Tankens:
spielerTankt[playerid] = false;
Bei OnPlayerConnect:
spielerTankt[playerid] = false;
Die Abfrage:
if(spielerTankt[playerid])
{
//Spieler tankt
}
else
{
//Spieler tankt nicht
}
Sagen wir mal so: Toll ist es nicht.
Hier die ausführliche Erklärung dazu: http://forum.sa-mp.com/showthread.php?t=571043
Die .pwn Datei muss kompiliert werden. (pawno öffnen und "compile" drücken)
Das kommt stark darauf an wie der Rest des Gamemodes aufgebaut ist und was du mit den Fahrzeugen alles machst.
Generell reicht es, wenn du
vehId = i;
machst.
Dann hast du in dem Array auf jeden Fall alle Daten aus der Datenbank drin stehen.
Heißt deine .pwn Datei im Gamemodes Ordner "Real-Shit.pwn"? Wenn nicht, ändere das.
Außerdem ändere das "Plugins:" zu "plugins".
Poste einfach mal deine server.cfg.
Es kann sein, dass sich die Dialog IDs mit denen deines Gamemodes überschneiden. Daher empfehlen alle Ersteller der Editoren es nur auf einem leeren Gamemode zu verwenden.
Also ist der timer immer nur zuständig für die oberen sachen oder.
Nein, der Timer führt das aus, was im public von dem Timer steht, also das hier:
forward UnfreezeMe(playerid);
public UnfreezeMe(playerid)
{
TogglePlayerControllable(playerid,true);
return 1;
}
Sprich er ent-freezt den Spieler.
Bei OnPlayerSpawn:
public OnPlayerSpawn(playerid)
{
TogglePlayerControllable(playerid,false);
SetTimerEx("UnfreezeMe", 1000, false, "d", playerid);
//ab hier deine Fraktions-Abfragen
return 1;
}
Ganz unten im Gamemode:
forward UnfreezeMe(playerid);
public UnfreezeMe(playerid)
{
TogglePlayerControllable(playerid,true);
return 1;
}
stock WantedLoad(playerid)
{
new query[128];
GetPlayerName(playerid,query,MAX_PLAYER_NAME);
format(query,128,"SELECT `WANTED` FROM `USERS` WHERE `Name` = '%s'",query);
new DBResult:result = db_query(Database, query);
new str[5];
if(db_num_rows(result)) db_get_field(result, 0, str, sizeof(str));
AktuellWantedLevel[playerid] = strval(str);
GetPlayerName(playerid,query,MAX_PLAYER_NAME);
printf("playerid: %d / Wanted: %d / name: %d", playerid, AktuellWantedLevel[playerid], query);
return 1;
}
Was sagt der Print?
=> Bist du dir auch sicher, falls da dein Name steht, dass du es nirgends auf 0 setzt? Schaue das mal nach.
Such in dem Link den ich dir gegeben habe nach "pickup", da gibt es ein paar. Musst halt probieren welche dir am besten gefällt.
Du kannst für sowas auch diesen Editor verwenden: http://forum.sa-mp.com/showthread.php?t=240497
SetPlayerAttachedObject hat die Scale Parameter, damit kannst du es kleiner machen.
Schau in dem Code nach der aufgerufen wird, wenn du dich neu verbindest, da es ja dort geht. Das Interior wird es wahrscheinlich nicht sein, das würdest du sofort sehen (alles wäre schwarz).
Die virtuelle Welt oder das Laden der Fahrzeuge wird das Problem sein.
Möglicherweise bist du nicht in der richtigen virtuellen Welt, oder nicht im richtigen Interior?
Oder du rufst den Code zum laden der Fahrzeuge nach dem Tutorial (bzw. davor?) nicht auf.
Einfach ausprobieren. Wenn es nicht klappt, poste den Code, dann liegt es möglicherweise daran.
Allgemeine Probleme, dass die Funktion vereinzelt nicht funktioniert, wären mir zumindest nicht bekannt. ![]()