Könnte man nicht besser das UsePlayerpedAnims(); für diesen Spieler ausschalten? Geht das?
Wenn man es jedoch bereits ausgeschalten hat, wird dies einem wenig bringen.
Könnte man nicht besser das UsePlayerpedAnims(); für diesen Spieler ausschalten? Geht das?
Wenn man es jedoch bereits ausgeschalten hat, wird dies einem wenig bringen.
Nein, gibt es nicht.
Man könnte es jedoch selbst basteln. SetPlayerVelocity() könnte den Spieler langsamer machen, man könnte ihn beim Verwenden der Sprung-Taste den Sprung verwehren etc. Ebenfalls kann man Waffen einfach von ihm nehmen, wenn er versucht welche zu verwenden.
Das kommt auf deinen Drive-In an - wie ist dieser denn realisiert. Man könnte sich aber sicherlich mit GetVehicleVelocity() versuchen.
Warum bildest du aus ID extra einen String str?
Ich verstehe dein Problem zwar nicht, jedoch würde ich wie folgt vorgehen:
Desweiteren werde ich mir mal das Tutorial von Cambell anschauen, da es mir auf den ersten Blick ziemlich gut gefallen hat.
Um sich den Sachverhalt über Threads klar zu machen wird dir das Tutorial nutzen, jedoch würde ich nicht mehr MySQL R6 verwenden, sondern R7 von BlueG, da es keine unthreaded Queries mehr unterstützt und mit Cachefunktionen viel schneller ist.
Sobald die Taste gedrückt wird testest du, ob der Spieler sich in einem Auto befindet. Falls ja, dann setzt du die entsprechende Beschleunigung in X-, Y- bzw. Z-Richtung. Um in die richtige Richtung zu beschleunigen, kann man sich ebenfalls GetVehicleVelocity() noch herbeiziehen.
Verwende einen extra Thread für deine Queries, dann wird es den eigentlichen Scriptablauf nicht stören = keine Lags, keine Abstürtze durch Warten auf Antwort von MySQL.
Es ist exakt so wie das Codebeispiel oben. Nur das ich mich mit dem Integer und dem String vertan habe wie Cambell schon sagte.
Nun gut, wenn das obere Beispiel schonmal nicht funktioniern kann, dann zeige doch einfach mal einen Ausschnitt von deinem Quellcode, welcher den Fehler tatsächlich im Spiel verursacht.
i ist in diesem Fall ein Integer. Es ist jedoch ein String gefragt. Mich wundert es, dass du diesen Command im Spiel überhaupt ausführen kannst. Ich würde hier ein Tag Mismatch erwarten.
Ebenfalls ist es doch egal, was für eine Zahl in der for-Schleife steht. MAX_VEHICLES ist genau wie MAX_PLAYERS eine Zahl, die mit einem Namen vordefiniert wurde alias #define. Hier wird der Fehler nicht zustande kommen.
Du hast ja auch ein Kommentar-Zeichen vor format() stehen. Dann kannst du ja garnicht MySQL sagen, was getan werden soll. Ebenfalls solltest du MySQL R7 verwenden - das ist aktueller und besser.
Was hat das mit der Frage zu tun, wie man Daten abspeichert? Aus der Fragestellung kommt allerdings auch nicht dir Frage heraus. Falls du möchtest, dass man eine Fahrerliste erstellt, dann musst du einfach die Fahrernamen unter OnPlayerStateChange() zwischenspeichern und später entsprechend ausgeben. Falls du eine Rennliste machen möchtest, wer gerade an welcher Position ist, dann wird das schon schwerer.
ZitatEine Datei für jede FahruegId erstellen
Das ist wohl die schlechteste Variante, um das Vorhaben umzusetzen.
Hier wird nichts gespeichert.
Es gibt die Slots 0 - 12. Also kann man wie folgt vorgehen:
new weapon, ammo;
GetPlayerWeaponData(playerid, 0, weapon, ammo);
// Do smth. with weapon & ammo.
GetPlayerWeaponData(playerid, 1, weapon, ammo);
// Do smth. with weapon & ammo.
GetPlayerWeaponData(playerid, 2, weapon, ammo);
// Do smth. with weapon & ammo.
GetPlayerWeaponData(playerid, 3, weapon, ammo);
// Do smth. with weapon & ammo.
GetPlayerWeaponData(playerid, 4, weapon, ammo);
// Do smth. with weapon & ammo.
GetPlayerWeaponData(playerid, 5, weapon, ammo);
// Do smth. with weapon & ammo.
GetPlayerWeaponData(playerid, 6, weapon, ammo);
// Do smth. with weapon & ammo.
GetPlayerWeaponData(playerid, 7, weapon, ammo);
// Do smth. with weapon & ammo.
GetPlayerWeaponData(playerid, 8, weapon, ammo);
// Do smth. with weapon & ammo.
GetPlayerWeaponData(playerid, 9, weapon, ammo);
// Do smth. with weapon & ammo.
GetPlayerWeaponData(playerid, 10, weapon, ammo);
// Do smth. with weapon & ammo.
GetPlayerWeaponData(playerid, 11, weapon, ammo);
// Do smth. with weapon & ammo.
GetPlayerWeaponData(playerid, 12, weapon, ammo);
// Do smth. with weapon & ammo.
... oder man macht das ganze in einer Schleife:
new weapon, ammo;
for(new i = 0; i < 13; i++) {
GetPlayerWeaponData(playerid, i, weapon, ammo);
// Do smth. with weapon & ammo!
}
GetPlayerWeaponData().
Warum so umständlich?
#include <a_samp>
#define FRAKTIONEN 2
new FraktionsInfo[FRAKTIONEN][] = {
"Los Santos Police Department", "Los Santos Fire Department"
};
new RankInfo[FRAKTIONEN][8][30] = {
{"Officer 1", "Officer 2", "Officer 3", "Officer 4", "Officer 5", "Officer 6", "Officer 7", "Officer 8"},
{"Firefighter 1", "Firefighter 2", "Firefighter 3", "Firefighter 4", "Firefighter 5", "Firefighter 6", "Firefighter 7", "Firefighter 8"}
};
main() {
new pFraktion = 2,
pRank = 3;
printf("Fraktion: %s | Rank: %s", FraktionsInfo[pFraktion - 1], RankInfo[pFraktion - 1][pRank - 1]);
}
Erstelle doch einfach einen Array mit den Fraktionsnamen bzw. Ranknamen und gebe sie aus? Index entspricht Rank - 1 bzw. Fraktion - 1 - fertig.