danke aber was ist fexist genau?wozu dient es?
Dateiensystem dini - Dateien erstellen, löschen, speichern, laden
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
fexits = File Exist = Datei Existiert
fragt ab ob die Datei schon existiert oder nicht
-
Allerdings sollte man lieber djson nutzen, da es mit SQL cahced.
Man kann soviel an seinem Code optimieren wie man will, aber Dateizugriffe sind das langsamste was es gibt.
Meist reicht es schon, wenn man nur selten das Dateisystem bemüht, um sein Script um bis zu 70% schneller zu machen.
Der andere Optimierkram ist eher nebensächlich. (Den unterschied wird kein User merken) -
trotz des fexist funktioniert es immernoch nicht.
Habe keine Veränderung vorgenommen. die passenden includes hab ich auch. komisch
So hier mal mein komplettes gescriptetes
public OnPlayerConnect(playerid)
{
new Cname[MAX_PLAYER_NAME], string[56];SendClientMessage(playerid, Orange, "~~Willkommen auf meinem Server~~");
GetPlayerName(playerid,Cname,16);
new filename[56];
format(filename, sizeof(filename), "%s.ini", Cname);if(dini_Exists(filename)) //existierender Spieler
{
format(string, sizeof(string), "Hallo %s!Willkommen zurück!", Cname);
SendClientMessage(playerid, gruen, string);
new loginmoney = dini_Int(filename, "Geld");GivePlayerMoney(playerid,loginmoney);
}
else //Neuer Spieler
{
format(string, sizeof(string), "Hallo %s!Du scheinst neu zu sein!", Cname);
SendClientMessage(playerid, falschrot, string);format(string, sizeof(string), "%s.ini", Cname);
dini_Create(string);
dini_Set(string,"Geld", "0");
GivePlayerMoney(playerid,1500);}
return 1;
}public OnPlayerDisconnect(playerid, reason)
{
new Spielername[MAX_PLAYER_NAME], string[56];
new Geld = GetPlayerMoney(playerid);format(string, sizeof(string), "%s.ini", Spielername);
if(!fexist(string))dini_Create(string);
dini_IntSet( string, "Geld", Geld);
return 1;
}Nebenbei:
Ich würde mich sehr freuen, wenn jemand ein ausführliches Tutorial für Parameter ohne dcmd hcanf oder wie die ganzen includes auch alle heißen. Ich komm mit dem Tut über dcmd nicht klar und möchte erstmal probieren(und ich denke ich spreche auch für viele andere Neueinsteiger) mich mit der normalen Version zurecht zu finden. Besonders schwer fällt mir das verstehen von dem Scripten der Cmds mit 2 Parametern. Wäre super, wenn mir da jemand hilft.
Aber das ist auch nur nebensache. Das obere ist für mich erstmal wichtiger -
Ich bin mir nicht sicher ob es funktioniert und ich habs auch nicht getestet aber vielleicht gehts ja:
public OnPlayerDisconnect(playerid, reason)
{
new Spielername[MAX_PLAYER_NAME], string[56];
new Geld = GetPlayerMoney(playerid);GetPlayerName(playerid,Spieldername,sizeof(Spielername));
format(string,sizeof(string),"/%s.ini",Spielername);
if(!dini_Exists(string))
{
dini_Create(string);
dini_Set(string, "Geld", Geld);
}
else
{
dini_Set(string, "Geld", Geld);
}
return 1;
} -
Geht danke
-
Hallo,
wie kann ich es einstellen, dass der Wert sich beispielsweise durch einen Timer erhöht?
Also dass ein Timer nach einer bestimmten Zeit ein Public aufruft, welches
dini_IntSet(save, "Zeit", +1);
bewirkt. Mit dem +1 bekomme ich ein Error, wie erstelle ich es richtig?Mit freundlichen Grüßen
Padarom -
new gTemp = dini_Int(save, "Zeit");
gTemp ++;
dini_IntSet(save, "Zeit", gTemp); -
Sprich bei dini kann ich irgendein Wert in einer Datei abfragen ohne eine While schleife?
Man kann auch irgendein ein Wert einfach ersetzen mit einem anderen ohne die anderen nochmals abspeichern zu lassen?
Ich meine wenn man bsp ein Wert nur ändern wollte bei F-Dateisystem musste man ja komplett alles abfragen und dann erneut draufspielen um ein Wert bsp zu ändern, bzw halt alles neu draufspeichern lassen.
Lieg ich da richtig? Oder ist das genauso hier?
-
So Leute =) hab mal wieder nen Problem
Ich nutze dcmd und dini. Das compilen funzt, nur speichert er das Passwort nicht. der Rest funktioniert. Muss ich hier sscanf nutzen oder warum geht das nicht^^
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(register,8,cmdtext);
return 0;
}dcmd_register(playerid,params[]) {
new filename[20];
new Spielername[MAX_PLAYER_NAME];GetPlayerName(playerid,Spielername,sizeof(Spielername));
format(filename, sizeof(filename), "%s.ini", Spielername);new Registriert = dini_Int(filename, "registriert");
if(Registriert == 0)
{
if(!strlen(params)) {
return SendClientMessage(playerid,falschrot,"Bitte gib /register [Passwort]ein.");
}
new Passwort=strval(params);
new PWstring[20];
format(PWstring, sizeof(PWstring), "%s", Passwort);
dini_Set(filename, "Passwort", PWstring);
dini_IntSet(filename, "registriert", 1);
SpawnPlayer(playerid);return 1;
}
else return 0;
}Würde mich über Hilfe freuen
-
Ist es auch möglich einfach nru so etwas in einer Datei zu schreiben ?
ich würde gerne eine Art notizbuch machen in dem sollte es etwa so aussehen :ZitatSpieler1: Autos explodieren immer ohne grund (22:01)
Spieler1: Autos gehen immer noch ohne Grund kaputt -.- (23:45)
Spieler2: Spieler1 Mobbt mich immer
Spieler1: ist gar nicht wahrund so weiter
-
Klar, Würdest du dir das Tutorial durchlesen und etwas logisch denken.
Dann würde bei rauskommen,
per befehl z.b. /report [Grund]
Könntest du den Grund speichern. -
ja so könnte ich das auch nur ich hätte die Zeit gerne hinten...
Momentan schaffe ich es so :
ZitatSpieler1=Blablalbalblbalablablabl (22:45)
wenn spieler1 aber wieder etwas schreibt und ich mit Dini_set es speicher wird das erste überschrieben
-
Also ich habe in meinem Server ein Arbeitsamt => Man muss als Job Busfahrer auswählen um Busse fahren zu können...
Jetzt möchte ich das folgende Variable auch beim Ausloggen gespeichert wird:new busfahrer[MAX_PLAYERS];
Also 1 für "ist Busfahrer"
und 0 für "ist kein Busfahrer"Könnte mir jemand sagen wie man das speichert...
Mfg Peter_Party -
Wie kann man machen das die Account Daten zwischendrin und bei einem GMX gespeichert werden?
-
Also meine Variante funktioniert nicht richtig.
Ich wollte das anstatt "forums" ein immer wechselner betrag da hinkommt. Also wenn man ein befehle benutzt das es gleich aktualisiert wird und der neue Wert eingetragen wirddini_Set(filename[], key[], value[])
Speichert eine String unter key in eine Datei
dini_Set("/folder/file.ini", "samp", "forums");
// In "file.ini" im Ordner "folder" stände jetzt:
// "samp=forums" -
also ich will ein tüv system machen und will das der einen namen eingeben muss und es dann so geschpeichert wird: LS-der name-01 dann immer +1 dazu
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext,"/tüv",true)==0)
{if(dtc_PlayerCar[CarModel] > 0)
{
ShowPlayerDialog(playerid,0,DIALOG_STYLE_LIST,"TÜV","Bitte gebe den Namen für das Kennzeichen ein:","Ok","Abbrechen");
new name[128];
GetPlayerName(playerid,name,sizeof(name));
format(name,sizeof(name),"kennzeichen_%s",name);
dini_Set("/Autos/.ini", "kennzeichen_%s","text");
}
}
}Also er soll es halt in der datei speichern damit er es später laden kann
-
Hey,
das Tutorial ist einfach nur der Hammer :), habe jetzt aber ein problem das Dini keine datei erstellen will.
An was könnte das liegen?MfG: Apoolecu
-
Rechte?
-
Ordner existiert nicht?
-