Ist es richtig, dass ich den Pvar beim Login auf -1 setze ?
Ja daran liegt es, das ist falsch, mach das weg
Heißt, MAX_CODE_LEN muss auf 5 definiert sein um 4 Slots zu haben.
Nein auf 4..für 4 Slots
Ist es richtig, dass ich den Pvar beim Login auf -1 setze ?
Ja daran liegt es, das ist falsch, mach das weg
Heißt, MAX_CODE_LEN muss auf 5 definiert sein um 4 Slots zu haben.
Nein auf 4..für 4 Slots
Geht nicht. "mp.players is not Iterable"
Ich hab damit noch nie gearbeitet, ist das ein Objekt?
Kannst du mal ein typeof mp.players dir printen lassen und am besten mal ein mp.players?
Würde mich ja mal interessieren
Habe ich was falsch gemacht?
Sicher dass das durch den Code kommt?
Kannst du mehr von dem Log zeigen...?
Heißt es, dass es 4 Zahlen sind oder 3?
3
Slot...0,1,2
Das liegt an der forEach Funktion.
Diese ist quasi abgekapselt.
Das return darin beendet weder die Funktion, noch gibt es irgendwas zurück.
In diesem Fall solltest du eine normale For-Schleife nutzen.
Zum Beispiel:
Mein Aktueller Code ist die ganze Zeit 0 warum
Weiiil du nicht den Code nutzt, den ich gezeigt habe, sondern
pInfo[playerid][pBankcode] verwendest.
Schreib oben in dein Skript:
#define MAX_CODE_LEN 3
//Dann im Enum:
pBankcode[MAX_CODE_LEN]
//Dann in Zeile 10:
if(c < MAX_CODE_LEN-1)
//Und in Zeile 8:
pInfo[playerid][pBankcode][c] = i;
Was hat dies zu sagen? Soll ich für das verstecken der Textdraws es so lassen und für die anderen Funktionen OnPlayerClickPlayerTextDraw benutzen?
Richtig.
Wenn ESC geklickt wird, musst du es unter OnPlayerClickTextDraw lassen.
Alle anderen Abfragen in den anderen Callback.
Also das Hide so lassen, wie du es hattest.
if(PlayerText:playertextid == Text:JamKeyNum[i][playerid])
Hier musst du das so schreiben:
if(playertextid == PlayerText:JamKeyNum[i][playerid])
OnPlayerClickTextDraw
Du prüfst hier OnPlayerClickTextDraw das ist für globale TextDraws.
Du nutzt PlayerTextDraws, also musst du [wiki]OnPlayerClickPlayerTextDraw[/wiki] nutzen
Sind das denn überhaupt TextDraws oder verwendest du PlayerTextDraws?
Ansonsten nutze doch einfach print und debugge.
Schau ob der Callback aufgerufen wird, schau ob clickedid einer JamKeyNum[i][playerid] entspricht...
oder hast du es vielleicht anders deklariert..also JamKeyNum[playerid][i]?
Kenne ja deinen Code leider nicht
Werden die Namen denn ohne die Funktion angezeigt?
Übertragst du denn auch richtig die Namen in diese Variablen?
Danke, jetzt siehts so aus:
Du kannst ja auch nicht diesen String formatieren.
public OnPlayerText(playerid, text[])
{
new string[144+1];
format(string, sizeof(string),"%s %s sagt: %s",RemoveUnderscore(UserAccDaten[playerid][user_acc_RPVorName]), RemoveUnderscore(UserAccDaten[playerid][user_acc_RPNachName]),text);
SendClientMessage(playerid,GRAU,string);
return 0;
}
PS: SendClientMessage sendet nur die Nachricht an dich...entweder SendClientMessageToAll oder SendClientMessageToRange oder so
Einfach nur sowas:
//Variable dient als Test! Muss global sein
new code[MAX_PLAYERS][3]; //3 = Die Länge des Codes
for(new i; i < 9; i++)
{
if(clickedid == Text:JamKeyNum[i][playerid])
{
new c = GetPVarInt(playerid,"c_index"),string[64];
code[playerid][c] = i;
SCME(playerid,-1,"Du hast %d angeklickt!",i);
if(c < sizeof(code[])-1) SetPVarInt(playerid,"c_index",c+1);
else
{
DeletePVar(playerid, "c_index");
SCME(playerid,-1,"Dein Code ist: %d",strval(code[playerid]));
}
break;
}
}
Alles anzeigen
Oder gibt es eine Einfachere Löung dass ich Vor- und Nachname in eins geben kann im nachhinein?
Ein simples format:
format(text, sizeof(text),"%s %s",RemoveUnderscore(UserAccDaten[playerid][user_acc_RPVorName]), RemoveUnderscore(UserAccDaten[playerid][user_acc_RPNachName]));
Warum? Das Fahrzeug spawnt auch bei mir usw.
Du hast zu wenige Parameter angegeben, du hast die ZAngle (Die Richtung in die das Fahrzeug zeigt) vergessen.
CreateVehicle(411,slx,sly,slz,0.0,3,3,-1);
Das Fahrzeug spawnt auch so, weil die 3 als Angle genommen wurde...dadurch wurde aber -1 nur 2. Farbe...und das Auto weiß nun nicht genau, wann es respawnen soll haha xD
Egal wie ich es mache wen ich die Fahrzeuge Abgeschleppt sind sollten die nicht erstellt werden.
Du fragst ja nirgends ab, ob es abgeschleppt wurde oder nicht.
public LoadPlayerVehicles(playerid, slot)
{
new result[25], rows, fields;
cache_get_data(rows, fields);
if(rows)
{
cache_get_field_content(0, "vehBesitzer", result);
format(PrivateVehicle[playerid][slot][vehBesitzer], 25, result);
PrivateVehicle[playerid][slot][modelid] = cache_get_field_content_int(0, "modelid");
PrivateVehicle[playerid][slot][vehPosX] = cache_get_field_content_float(0, "vehPosX");
PrivateVehicle[playerid][slot][vehPosY] = cache_get_field_content_float(0, "vehPosY");
PrivateVehicle[playerid][slot][vehPosZ] = cache_get_field_content_float(0, "vehPosZ");
PrivateVehicle[playerid][slot][vehPosA] = cache_get_field_content_float(0, "vehPosA");
PrivateVehicle[playerid][slot][vehHealth] = cache_get_field_content_float(0, "vehHealth");
PrivateVehicle[playerid][slot][vehColor1] = cache_get_field_content_int(0, "vehColor1");
PrivateVehicle[playerid][slot][vehColor2] = cache_get_field_content_int(0, "vehColor2");
PrivateVehicle[playerid][slot][vehPaintjob] = cache_get_field_content_int(0, "vehPaintjob");
PrivateVehicle[playerid][slot][vehSpoiler] = cache_get_field_content_int(0, "vehSpoiler");
PrivateVehicle[playerid][slot][vehHood] = cache_get_field_content_int(0, "vehHood");
PrivateVehicle[playerid][slot][vehRoof] = cache_get_field_content_int(0, "vehRoof");
PrivateVehicle[playerid][slot][vehSideskirt] = cache_get_field_content_int(0, "vehSideskirt");
PrivateVehicle[playerid][slot][vehLamps] = cache_get_field_content_int(0, "vehLamps");
PrivateVehicle[playerid][slot][vehNitro] = cache_get_field_content_int(0, "vehNitro");
PrivateVehicle[playerid][slot][vehExhaust] = cache_get_field_content_int(0, "vehExhaust");
PrivateVehicle[playerid][slot][vehWheels] = cache_get_field_content_int(0, "vehWheels");
PrivateVehicle[playerid][slot][vehStereo] = cache_get_field_content_int(0, "vehStereo");
PrivateVehicle[playerid][slot][vehHydraulics] = cache_get_field_content_int(0, "vehHydraulics");
PrivateVehicle[playerid][slot][vehFrontBumper] = cache_get_field_content_int(0, "vehFrontBumper");
PrivateVehicle[playerid][slot][vehRearBumper] = cache_get_field_content_int(0, "vehRearBumper");
PrivateVehicle[playerid][slot][vehVentRight] = cache_get_field_content_int(0, "vehVentRight");
PrivateVehicle[playerid][slot][vehVentLeft] = cache_get_field_content_int(0, "vehVentLeft");
PrivateVehicle[playerid][slot][vehPreis] = cache_get_field_content_int(0, "vehPreis");
PrivateVehicle[playerid][slot][vehNeonID] = cache_get_field_content_int(0, "vehNeonID");
cache_get_field_content(0, "vehNumberPlate", PrivateVehicle[playerid][slot][vehNumberPlate], MySqlConnection, 32);
PrivateVehicle[playerid][slot][vehAbgeschleppt] = cache_get_field_content_int(0, "vehAbgeschleppt");
cache_get_field_content(0, "vehAbgeschlepptVon", PrivateVehicle[playerid][slot][vehAbgeschlepptVon], MySqlConnection, 32);
PrivateVehicle[playerid][slot][vehKaution] = cache_get_field_content_int(0, "vehKaution");
PrivateVehicle[playerid][slot][vehMaterialien] = cache_get_field_content_int(0, "vehMaterialien");
PrivateVehicle[playerid][slot][vehDrogen] = cache_get_field_content_int(0, "vehDrogen");
PrivateVehicle[playerid][slot][vehAKRounds] = cache_get_field_content_int(0, "vehAKRounds");
PrivateVehicle[playerid][slot][vehM4Rounds] = cache_get_field_content_int(0, "vehM4Rounds");
PrivateVehicle[playerid][slot][vehSniperRounds] = cache_get_field_content_int(0, "vehSniperRounds");
PrivateVehicle[playerid][slot][vehDeagleRounds] = cache_get_field_content_int(0, "vehDeagleRounds");
PrivateVehicle[playerid][slot][vehMP5Rounds] = cache_get_field_content_int(0, "vehMP5Rounds");
PrivateVehicle[playerid][slot][vehShotgunRounds] = cache_get_field_content_int(0, "vehShotgunRounds");
PrivateVehicle[playerid][slot][vehFahrgestell] = cache_get_field_content_int(0, "vehFahrgestell");
PrivateVehicle[playerid][slot][vehKofferraumC4] = cache_get_field_content_int(0, "vehKofferraumC4");
Vehicle[PrivateVehicle[playerid][slot][vehID]][vehFuel] = cache_get_field_content_float(0, "vehFuel");
Vehicle[PrivateVehicle[playerid][slot][vehID]][vehKMStand] = cache_get_field_content_float(0, "vehKMStand");
PrivateVehicle[playerid][slot][vehInterior] = cache_get_field_content_int(0, "vehInterior");
PrivateVehicle[playerid][slot][vehWorld] = cache_get_field_content_int(0, "vehWorld");
if(!PrivateVehicle[playerid][slot][vehAbgeschleppt])
{
PrivateVehicle[playerid][slot][vehID] = CreateVehicleEx(PrivateVehicle[playerid][slot][modelid], PrivateVehicle[playerid][slot][vehPosX], PrivateVehicle[playerid][slot][vehPosY], PrivateVehicle[playerid][slot][vehPosZ], PrivateVehicle[playerid][slot][vehPosA], PrivateVehicle[playerid][slot][vehColor1], PrivateVehicle[playerid][slot][vehColor2], -1, false, 0);
VehicleTuning(playerid, slot);
}
}
return 1;
}
Alles anzeigen
Und die Virtuelle Welt und das Interior von dem Fahrzeug speichern, ist vllt nicht nötig, aber wenn, dann musst du es auch irgendwo setzen, das tust du nämlich gar nicht
Du solltest vorher richtig lesen.
Hab ich schon verstanden, sollte jetzt nicht angreifend rüberkommen.
https://rage.mp/forums/topic/1120-err_gen_invalid/
https://gtaforums.com/topic/88…alid-when-launching-game/
Die Lösung ist die Selbe, etwas stimmt mit deinem game nicht
hab ich nichts bei Google gefunden
..rly
https://forums.gta5-mods.com/t…nvalid-without-openiv-asi
Hallöle an Alle,
ja, das Thema ist ein alter Schuh, schon aus dem Jahr 2010: https://forum.sa-mp.com/showthread.php?t=172085
Ist mir bewusst, allerdings habe ich gesehen, dass es kein Include gibt für diese Funktion.
Zwar gibt es viele Beispiele, wie es implementiert wurde, aber meistens nicht gut bzw nicht direkt nutzbar.
Der Clue daran ist, dass die Berechnung kontinuierlich stattfinden muss, was bei einer einzelnen Funktion nicht gegeben ist.
Viele updaten das über OnPlayerUpdate, was viel zu übertrieben ist, da das nur jede Sekunde theoretisch geupdatet wird und nicht 1000x in der Sekunde.
Der Punkt ist, da die Timer nicht ganz akkurat laufen in Pawn (ohne Timerfix), muss man den Timer etwas frequentierter ansetzen, aber das ist dennoch wesentlich performanter (also 4x die Sekunde, anstatt über 1000x).
Oftmals wird das auch über PVars gelöst, was in diesem Fall nicht unbedingt eine gute Wahl wäre, da der Wert oft geupdatet wird und immer benötigt wird.
Source-Code: PasteBin
Direkter-Download: MediaFire
Will man die Include in einem Filterscript nutzen, muss man #define FILTERSCRIPT übers Include packen
Die Include macht die Funktion direkt nutzbar, ohne dass man sich um das Updaten sorgen machen muss.
In diesem Sinne, vielleicht hilft es ja dem Ein oder Anderem.
Viel Spaß noch allen beim Skripten und einen schönen Tag!
Check mal crashdetect und pack n print mal rein, ob das aufgerufen wird
Sieht ziemlich cool aus, freut mich, dass ich helfen konnte!