new File:user= fopen(acc,io_read); //Userdatei wird im Lese-Modus geöffnet
new buff[128];
new File:temp = fopen("acc_temp.txt",io_write);
while(fread(user,buff)) //Geht die Datei Zeile für Zeile durch
{
if(strfind(buff,"Bank=") != -1)continue; //Falls die Zeile gefunden wurde, die überschrieben werden soll wird sie nicht gespeichert
fwrite(temp,buff); //alle anderen werden gespeichert
}
fclose(user);
user = fopen(acc,io_write); //Diesmal wird die datei im Schreib-Modus geöffnet
while(fread(temp,buff))
{
fwrite(user,buff); //Alle Zeilen aus der Temp-Datei werden in die Userdatei geschrieben
}
fwrite(user,"Bank=5000"); // -> Bank wird mit dem neuen Wert gespeichert
fclose(user);
fclose(temp);
so oder so ähnlich müsste es funktionieren
Beiträge von Haxler
-
-
oder einfach
format(str,sizeof(str),"Zeile1\
\nZeile2\
\nZeile3"); -
Haste alles an der richigen Stelle im Script?
Wenn du die Filterscript-Abfrage nicht entfernt hast und das Script als Gamemode verwendest, dann musste darauf achten, dass die Variablen außerhalb dieser Abfrage erstellt werden.
#if defined FILTERSCRIPT
// Hier darfs nicht stehen
#endif
am Besten die Abfrage komplett entfernen -
Ich finds schade dass die Leute hier nur bewerten und sich den Code nichtmal anschauen ;D
Spätestens bei zwei Spielern wirst du merken, dass das ganze System nicht funktioniert.
Der Timer wird sobald ein Spieler connected für Spieler 0 gestartet, und nie beendet. (SetTimerEx benutzen)
Der Kick-Timer kann auch nicht korrekt beendet werden, da der Wert in der Variable "kicker" dauernd überschrieben wird. -
Verwenden die Häuser alle das gleiche Interior? Wenn ja solltest du abfragen ob der Spieler auch in der richtigen Virtual World ist.
HouseInfo[i][hWorld] ist eigentlich unnötig, da jedes Haus eine eigene ID hat könntest du auch diese als VirtualWorld verwenden:
SetPlayerVirtualWorld(playerid,i);
beim Verlassen:
if(IsPlayerInRangeOfPoint(playerid, 3.0, HouseInfo[i][hExitx], HouseInfo[i][hExity], HouseInfo[i][hExitz]) && GetPlayerVirtualWorld(playerid) == i) -
Zu 1. :
Die Häuser werden aber schon davor geladen oder? Wenn ja: Debug mal Zeile für Zeile und lass dir den PropertyString ausgeben.Zu 2.:
Wenn schon beim Laden die Koordinaten nicht richtig geladen werden, dann funktioniert die IsPlayerInRangeOfPoint-Abfrage auch nicht richtig.
Debug einfach mal die komplette Lade-Funktion. -
Zitat
format(query,sizeof(query),"SELECT * FROM cars WHERE %i", bedienung)
mach daraus mal %s -
Zitat
new server_names[MAX_SERVER_NAMES][] = {
{"[CL] | CityLife |"},
{"[CL] | Unser Forum: |"},
{"[CL] | http://www.CityLife.de.to |"},
};
Fehler ist rot markiert... -
Zitat
Diese 3 hat mich verwirrt. Sie ist ja im Grunde die DialogID.
Nein ist sie nicht. Wieso heißt das Define wohl DIALOG_STYLE? Man achte auf das STYLE. Dialog Style 3 ist nunmal der verschlüsselte Input-Dialog... -
Deine Abfragen sind falsch.
Aus if(asdf)if(asdf)if(asdf) musst du z.b.
if( (asdf) || (asdf) || (asdf))
machen -
Mit GetVehicleVelocity & SetVehicleVelocity geht das.
-
deine Hexcodes sehen so aus:
0xRRGGBBAA
r = rot, g = grün, b = blau, a = alpha^^
im Dialog kannste keine Transparenz verwenden (AA) und die 0x davor musste wegmachen. Bleibt also nurnoch RRGGBB -
{RRGGBB}
also bei dir:
{FF1A00} -
GetVehicleHealth(i, damage);
durch
GetVehicleHealth(vehicleid, damage); ersetzen -
format(string3, sizeof(string3), "%d", floatround(floatdiv(damage,10.0)));
versuchs mal so -
Du speicherst per GetVehicleHealth den Zustand in der Variable damage. Damit kannst du doch ganz normal weiter arbeiten.
Übrigens ist damage ein Float deshalb musst du %f zum ausgeben verwenden.GetVehicleHealth(i, damage);
format(str,siezof(str),"Health: %f",damage); -
Versuchs mit floatdiv
edit:
außerdem: damage = GetVehicleHealth(i, damage); ist immernoch falsch. Machs so: GetVehicleHealth(i, damage); -
\ ist falsch, deshalb oben auch rot markiert. Du solltest / verwenden
-
Zitat
damage = GetVehicleHealth(i)\10;
-
Mach aus if(chigate1 == 1) das: if(chigate1 == 0)
edit: sry verlesen, der Code von xuNNy ist falsch.