Natürlich macht es das.
Ich sagte Deklarations Länge, schau auf mein Beispiel.
Und dabei ist es unerheblich ob da noch n index zwischen ist oder nicht.
Aber ist auch egal, er hat sich ja eh für format entschieden.
Natürlich macht es das.
Ich sagte Deklarations Länge, schau auf mein Beispiel.
Und dabei ist es unerheblich ob da noch n index zwischen ist oder nicht.
Aber ist auch egal, er hat sich ja eh für format entschieden.
Ist wieder nicht das gleiche. In deinem Beispiel hat das Array keinen Index für die playerid.
Das macht keinen Unterschied. Geht trotzdem, deshalb.
Es kommt nur auf die Deklarations Größe an.
Nicht in dem Fall. Probiere es aus bevor du etwas behauptest.
Ja ich weiß ja nicht mal genau, was er machen will, das hat er ja nicht gesagt, aber prinzipiell kann man das direkt zuweisen.
enum pInfo
{
pFunktionName[MAX_PLAYER_NAME]
};
new Spieler[pInfo], b[MAX_PLAYER_NAME] = "Hallo";
Spieler[pFunktionName]=b;
Ist ja kein Problem.
Das geht nur, wenn deine direkte Zuweisung exakt die Länge MAX_PLAYER_NAME-1 (wegen EOS) hat.
Nein, das geht solange das Array das du zuweisen willst kleiner ist, als das wo es rein soll.
auf einen bestimmten string setzen (den ich noch nicht habe)
Du bekommst doch einen Fehler, zeig uns doch einfach mal die Zeile, wie du es bis jetzt machst.
und das new PlayerInfo würde ich gern noch sehen
zu:
Das mit dem strcat ist ein richtig schlechter Ratschlag, denn sobald das 2x aufgerufen werden sollte...hat der das 2x da drinnen stehen.
und format ist ultra lahm, wieso nicht einfach durch eine direkte Zuweisung lösen.
Nur in den seltensten Fällen ist format nötig.
(16929) : error 047: array sizes do not match, or destination array is too smal
enum pInfo
{ // so sieht der anfang vom enum aus
pFunktionName[MAX_PLAYER_NAME] ( IM ENUM)
Habs schon mit n paar größen probiert (512 z.B)
Bitte unterlasse Vollzitate, das ist unnötig.
Desweiteren, zeig doch mal ganz genau wie du die Variable von dem enum deklariert hast und dann wie du den string deklariert hast, den du zuweisen willst und dann wie du es zuweist ![]()
Gib doch einfach ein wenig von deinem Code preis...oder sollen wir das alles erraten?! ![]()
Wie setzte ich einen string auf ein Enum?
So bspw:
PlayerInfo[playerid][pFunktionName] = "fname";
Das kannst du genau so machen...
Falls es nicht geht...zeige uns Code und erkläre was du vor hast ![]()
Kann mir jemand erklären weshalb, wieso oder warum ?
Das liegt daran, dass pPlayer immer 0 ist, sobald GetPlayerName aufgerufen wird, da du das vor dem sscanf aufrufst und erst ab dem sscanf aber pPlayer einen Wert zugewiesen bekommt ![]()
Die Lösung, einfach GetPlayerName unter das sscanf packen ![]()
sa-mp.com ist leider down
Dafür gibts doch n Web-Archiv ![]()
https://web.archive.org/web/20…ki.sa-mp.com:80/wiki/Keys
Ist ja nicht so, dass es uns an Speicherplatz mangelt ![]()
wie ich sehe liegt an der streamer
Richtig, also füge das streamer Plugin ein.
Desweiteren stimmt das MySQL Plugin nicht mit deiner MySQL Include überein, das auch mal checken ![]()
Das kann so nicht direkt zugewiesen werden.Mache es so:
strcat(PlayerInfo[pID][pReason], reason, 40);
Das stimmt nicht, hier könnte es jetzt zu einem Fehler kommen.
Wie hast du denn im enum pReason definiert?
Es müsste eigentlich mit pReason[40] im enum stehen, dann kannst du es auch direkt zuweisen.
Wenn aber nur Beispielsweise pReason da steht, kommt genau der Fehler, den du jetzt auch hast. Da hilft dir auch kein strcat, dann ist zwar der Fehler weg, aber es wird halt nur der erste Buchstabe vom Wort in die Variable gepackt...
und das bringt dir halt auch wenig ![]()
Wieso hast du es nicht so gemacht, wie ich es gezeigt hatte?
kommt eine Fehlermeldung, dass der Befehl nicht existiert.
Lade sowas am Besten auf ein leeres Skript.
Ansonsten könnten da die CMD-Prozessoren sich gegenseitig in den Weg kommen ![]()
Wenn es notwendig ist, dass es auf dem main Skript lädt, dann kommste nicht drum herum, als dir anzuschauen, wer was wo blockiert ![]()
Wäre es bei meiner anderen Methode zwar auch nicht, aber dann schreib es so:
PS: Jetzt solltest du es außerhalb von einer Funktion schreiben, ansonsten würde es immer und immer wieder aufgerufen werden:
Aber dein Code funktioniert nicht
Doch er funktioniert aber player ist nicht definiert.
setInterval((player) => mp.trigger('playerAutoSave', player), 8000, HIERMUSS_PLAYERID_REIN);
Da muss halt eine Spielerid rein.
Das heißt du kannst Beispielsweise setInterval unter OnPlayerConnect (bzw dem GTA V äquivalent) packen und dann für den Spieler laufen lassen und unter OnPlayerDisconnect clearInterval nutzen um den Timer wieder zu löschen.
Oder du loopst durch alle Spieler.
Weiß ja nicht genau, was du vor hast ![]()
Natürlich kannst du aber das nicht irgendwo random hinpacken, da dann player nicht definiert ist.
Nein...
Also schau mal, du lässt das so:
mp.events.add("playerAutoSave", (player) => {
player.loggedInAs = "";
gm.mysql.handle.query("UPDATE `account` SET money = ?, posX = ?, posY = ?, posZ = ? WHERE `username` = ?", [player.money, player.position.x, player.position.y, player.position.z, player.name], function(err,res){
if(!err){
console.log(`Account saved: ${player.name}`)
} else (
console.log("ERROR: " + err)
)
});
});
Und dann machst du sowas:
setInterval((player) => mp.trigger('playerAutoSave', player), 8000, player);
Du musst das ja dann für den Spieler aufrufen.
Hab aber noch nie was für GTA V programmiert, ist jetzt reine Code-Logik.
Jetzt addest du alle 8 Sekunden das Event "playerQuit".
Das willst du ja nicht, du willst ja den Spieler speichern oder?
Die Lambda Notation bringt dich glaube ich etwas durcheinander.
Aber (player) => ist eigentlich nichts anderes als:
function (player) {
Und nur die, willst du im Interval glaube ich aufrufen.
Wie hast es denn eingebaut? ![]()
Brauche dann den Waffennamen von der ID 24 (ist die Deagle)
Bittschön: [wiki]GetWeaponName[/wiki]
Die Funktion heißt: https://www.w3schools.com/jsref/met_win_setinterval.asp
Ja, die gibt es auch bei Server-seitigem JS
Hab's geschafft
Okay, jup aber dort wird kein Query angezeigt, das bedeutet es wird keins verschickt...
Setz mal ein print über das Query und schau, ob das ausgeführt wird.
Oder sollte das query jetzt schon ausgeführt werden oder hast du mir nur den Log nach dem Server Start gegeben?! ![]()