Es werden noch anders wo im Script entsprechende Dinge mit 0 initialisiert.
Hältst den Mythos vom ID 0 Bug ja richtig am Leben, Ehrenmann ![]()
Es werden noch anders wo im Script entsprechende Dinge mit 0 initialisiert.
Hältst den Mythos vom ID 0 Bug ja richtig am Leben, Ehrenmann ![]()
Hier sehen wir nun das Problem ![]()
FahrzeugInfo[i][fBesitzerID] wird wohl Standard mäßig bei dir mit 0 initialisiert.
Da aber der Spieler auch die ID 0 trägt, sieht das für den Server so aus, als ob die Fahrzeuge alle dem Spieler gehören und somit werden sie alle gespeichert und zerstört hahaha xD
3 Möglichkeiten das zu lösen:
PS: Dein Tipp habe ich grad ausprobiert, hat sich leider nicht getan.
Doch in deinem Server Log sollten so um die 300 Zeilen ausgegeben worden sein, das wäre nett, wenn du das mal zeigen könntest ![]()
Die einzige Funktion die dort halt Autos löscht ist halt die Fahrschule mehr nicht.
Also in SavePrivatCar und DestroyVars etc, steht nirgends DestroyVehicle?
es geht darum das meine Fahrzeuge vom Server verschwinden soweit jemand Disconnected.
Deine privaten Farhzeuge, alle neuen Fahrzeuge oder generell alle Fahrzeuge?
Geh mal alle Funktionen durch (die da unter OnPlayerDisconnect aufgerufen werden) und zeig uns die Ausschnitte wo DestroyVehicle verwendet wird ![]()
Hatte diesen Fehler auch mal (mit einem Samsung).
Das klingt jetzt zwar wie eine Troll Antwort, aber versuch mal vorsichtig das Handy an eine Kante zu schlagen, so dass der an/aus Knopf getroffen wird.
Manchmal verklemmt der so und startet deshalb immer wieder neu, bei mir hat das no joke geholfen gehabt hahaha xD
Kannst es mal mit dem Driver Booster: https://www.iobit.com/de/driver-booster.php
versuchen.
(Solltest du aber nicht deinstallieren, falls es nicht klappt, damit du das wieder rückgängig machen kannst
)
Könntest noch versuchen es so zu machen:
UpdateStreamer(forplayerid, STREAMER_TYPE_3D_TEXT_LABEL);
Und eventuell in der Funktion bei der InRange abfrage, das von 50.0 auf 100.0 zu setzen ![]()
So ist das richtig korrekt oder soll ich den vorher updaten lassen?
Sollte, probiers halt einfach mal aus ![]()
Nutze keinen globalen Dialog-String.
Das nicht gut.
ocmd:gebieteinfo(playerid)
{
if(!IsGang(Spieler[playerid][pFraktion]))return SendClientMessage(playerid, COLOR_WHITE, ERROR_FRAKTION);
new const type[][] = {"Geld","Materialien"}, v[][] = {"$]","]"};
new string[64*sizeof(GangFight)];
for(new i; i<sizeof(GangFight); i++)
{
format(string,sizeof(string),"%sGebiet: %s, Besitzer: %s, Belohnung: %s [%d%s\n",
string,GangFight[i][warZoneName],
GetFraktionName(GangFight[i][warOwner]),
type[GangFight[i][warBelohnungType]],
GangFight[i][warBelohnungVar],
v[GangFight[i][warBelohnungType]);
}
ShowPlayerDialog(playerid, DIALOG_4ALL_SONSTIGES, DIALOG_STYLE_MSGBOX, ""#SERVER_FARBE""SERVER_HOST" {FFFFFF}| GANGFIGHT", string, "OK","");
return 1;
}
Alles anzeigen
muss ich bei OnPlayerStreamIn erst die Position auslesen also so:
Da musst du gar nix machen.
Da wo du das Label setzt, einfach die Funktion aufrufen:
UpdateStreamer(playerid, STREAMER_TYPE_3D_TEXT_LABEL);
//Und dann die Funktion:
stock UpdateStreamer(playerid, _type)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
for(new i=GetPlayerPoolSize(); i!=-1; i--)
{
if(IsPlayerConnected(i) && !IsPlayerNPC(i) && IsPlayerInRangeOfPoint(i,50.0,x,y,z))
{
Streamer_UpdateEx(i, x,y,z, .type = _type, .freezeplayer=0)
}
}
}
Alles anzeigen
So sollte das klappen.
Natürlich musst du für alle den Streamer Updaten, die sich da in der Nähe befinden.
-> Wen ich den Spieler Wanteds gebe ist es schlau mit ein Timer OnPlayerStreamIn Updaten zu lassen? Weil wen ich jemand Wanteds gebe bekommt er nicht sofort den Label sondern erst wen ich weiter weg war...
Du nutzt wahrscheinlich n Streamer für das Label...
Kannst manuell einfach 1x für die Spieler updaten: https://github.com/samp-incogn…(Updates)#Streamer_Update
Dann brauchst du keinen Timer und es sollte sofort zu sehen sein ![]()
Was soll der Code denn da genau bezwecken?
if(hitid != playerid)return 1;
Das hier z.B. macht keinen Sinn, mach das mal raus.
In diesem Fall kan hitid niemals playerid sein ![]()
Spieler[playerid][pTot] == 0
Ist diese Variable denn 0?
Tausch mal Zeile 31 und 32 ![]()
Da musst du die Funktion zeigen .... und nicht den DIalog
Wäre ich gemein, würde ich sagen, bleib du mal lieber im Smalltalk ![]()
![]()
Erstmal musst du bedenken, dass der eingegebene Text immer ein String ist. Du kannst ihn jedoch umwandeln und überprüfen, ob das Ergebnis eine Zahl ist.
Technisch gesehen hast du recht, gerade weil der Pin mit 0 starten kann, sollte er als String gehandhabt werden.
Allerdings wird er hier als Zahl verwendet, somit kannst du kein strcmp nutzen.
if(dialogid == DIALOG_BANKPIN)
{
if(!response) return 1;
if(!inputtext[0]) return SendClientMessage(playerid,COLOR_RED,"Du musst etwas eingeben!");
new Pin = PlayerInfo[playerid][Bankpin];
if(!Pin) return SendClientMessage(playerid,COLOR_RED,"Noch keine Pin vorhanden!");
if(Pin != strval(inputtext)) return SendClientMessage(playerid,COLOR_RED,"Falsche Pin!");
ShowPlayerDialog(playerid,87,DIALOG_STYLE_LIST,"Bank","Einzahlen\nAbheben\nKontostand\nÜberweisung\nHandyguthaben aufladen\nBankpin beantragen","Absenden", "Abbrechen");
SendClientMessage(playerid,COLOR_GREEN,"Erfolgreich");
return 1;
}
Alles anzeigen
So kannst du das als Integer nutzen, macht halt aber nur Sinn, wenn du beim Erstellen der Pin verhinderst, dass sie mit 0 startet.
Ansonsten, wie einen String behandeln und strcmp zum Vergleichen nutzen ![]()
Hey,
Mal eine Kurze Frage, wen ich den Spieler den Wanteds Cleare mit dem Grund Angriff z.b geht der Label weg gebe ich ihm neue Wanteds kriegt er den alten Wanted Grund warum?
Wie sieht denn der Befehl dazu aus, wo du den Wanted-Grund setzt? ![]()
Ich wollte fragen ob man den Chat solange ein Ladescreen kommt ausblenden kann.
Einfach leere Chat-Messages spammen ![]()
Genauso die Lebensanzeige ausblenden kann.
TextDraw, SpectateModus (https://wiki.sa-mp.com/wiki/TogglePlayerSpectating) oder DrunkLevel (https://wiki.sa-mp.com/wiki/SetPlayerDrunkLevel) sind hier die Lösung ![]()