Ich hab überall "Leer" eingetragen und es geht trotzdem nicht mit meiner Funktion. Muss wohl woanders dran liegen. Findest du denn einen anderen Fehler in meiner Funktion?
Beiträge von Keine_Person
-
-
Wird leider nichts im Dialog angezeigt. Hab ich da den Fehler oder muss ich woanders suchen?
enum Account_Daten
{
bool:PasswortVergeben,
bool:CharacterFrei[3],
CharacterName1[MAX_PLAYER_NAME],
CharacterName2[MAX_PLAYER_NAME],
CharacterName3[MAX_PLAYER_NAME],
RpPoints[MAX_PLAYERS],
pMoney[MAX_PLAYERS]
};format(Info[playerid][CharacterName1],MAX_PLAYER_NAME,dini_Get(file, "CharacterName1"));
format(Info[playerid][CharacterName2],MAX_PLAYER_NAME,dini_Get(file, "CharacterName2"));
format(Info[playerid][CharacterName3],MAX_PLAYER_NAME,dini_Get(file, "CharacterName3"));
format(string,sizeof(string),"%s\n%s\n%s",Info[playerid][CharacterName1],Info[playerid][CharacterName2],Info[playerid][CharacterName3]);
ShowPlayerDialog(playerid,DIALOG_LOGIN_2,DIALOG_STYLE_LIST,"Charaktere:",string,"Login","Abbrechen"); -
CON_CLOSE ist ganz unten im Code drin. Speichern tu ich als .inc
-
Irgendwie werde ich immer vom Server gekickt (an dieser Stelle) obwohl ich im Ordner Accounts eine Inc Datei mit dem Namen erstellt habe den ich nutze.
public OnPlayerConnect(playerid)
{
new file[128];
GetPlayerName(playerid,p_name[playerid],MAX_PLAYER_NAME);
SpawnStep[playerid] = 0;
Spawn(playerid);
format(file,sizeof(file),"/Accounts/%s.inc",GetName(playerid));
if(dini_Exists(file))
{
//Abfrage ob Account ein Passwort hat
Info[playerid][PasswortVergeben] = dini_Bool(file,"Password Given");
if(Info[playerid][PasswortVergeben] == false)
{
ShowPlayerDialog(playerid,DIALOG_REGISTER_1,DIALOG_STYLE_INPUT,"Registration","Gib nun bitte dein Passwort ein.","Registrieren","Abbrechen");
}
else
{
ShowPlayerDialog(playerid,DIALOG_LOGIN_1,DIALOG_STYLE_INPUT,"Login","Gib nun bitte dein Passwort ein.","Einloggen","Abbrechen");
}
}
else
{
new string[128];
format(string,sizeof(string),"%s dont exist and left the server!",file);
print(string);
CON_CLOSE;
}
return 1;
}#define CON_CLOSE SCM(playerid,rot,"Du hast den Vorgang abgebrochen"),Kick(playerid)
Der Print kommt aber keine Nachricht auf dem Server... -
Wie sieht es aus wenn gar nichts in der inc steht? Wird das dann einfach weiter durchlaufen und den Wert auf 0.00 lassen/setzen?
-
Ach so meinst du das, ja stimmt das ergibt Sinn. Ich werde mal schauen wie lange das dauert und ob es so klappt. Danke dir.
Ach und schreibt er auch 0 rein wenn es gar nicht existiert?
-
"Diese Abfragen kannst du dir sparen, da du dadurch den Wert im schlechtesten Fall doppelt ausliest"
Hat sich so angehört als würde es nicht klappen. Aber wieso wird der Wert 2 mal ausgelesen?
-
Kannst du mir erklären wieso das nicht klappt? Laut Gescripteten Code müsste es ja funktionieren oder nicht?
-
Geht das irgendwie noch schneller zu speichern oder zu laden ohne das Dini Land zu verlassen? Und würde das zu lange dauern wenn man ein flüssiges Spiel liefern will?
for(new i = 0; i<100; i++)
{
if(Inventar[playerid][pCannabis][i] > 0.00){format(string,sizeof(string),"Cannabis Qualität: %d%:",i);dini_FloatSet(file,string,Inventar[playerid][pCannabis][i]);}
if(Inventar[playerid][pCrystalMeth][i] > 0.00){format(string,sizeof(string),"Crystal Qualität: %d%:",i);dini_FloatSet(file,string,Inventar[playerid][pCrystalMeth][i]);}
if(Inventar[playerid][pHeroin][i] > 0.00){format(string,sizeof(string),"Heroin Qualität: %d%:",i);dini_FloatSet(file,string,Inventar[playerid][pHeroin][i]);}
if(Inventar[playerid][pCocaine][i] > 0.00){format(string,sizeof(string),"Kokain Qualität: %d%",i);dini_FloatSet(file,string,Inventar[playerid][pCocaine][i]);}
}for(new i = 0; i<100; i++)
{
format(string,sizeof(string),"Cannabis Qualität: %d%:",i);
if(dini_Float(file,string) > 0.00){Inventar[playerid][pCannabis][i] = dini_Float(file,string);}
format(string,sizeof(string),"Crystal Qualität: %d%:",i);
if(dini_Float(file,string) > 0.00){Inventar[playerid][pCrystalMeth][i] = dini_Float(file,string);}
format(string,sizeof(string),"Heroin Qualität: %d%:",i);
if(dini_Float(file,string) > 0.00){Inventar[playerid][pHeroin][i] = dini_Float(file,string);}
format(string,sizeof(string),"Kokain Qualität: %d%:",i);
if(dini_Float(file,string) > 0.00){Inventar[playerid][pCocaine][i] = dini_Float(file,string);}
} -
Würde ja nicht dazu kommen das jemand 100 Drogen bei sich hat. Es wäre immer nur eine kleine Menge im Umlauf. Aber was genau funktioniert denn da jetzt nicht? Oder funkt es aber frisst es einfach zu viel?
Hab den Fehler jetzt auch gesehen. Ich speicher wirklich nur das i ab
Ist jetzt umgeschrieben. Und meine Frage wär halt ob das zu belastend so ist von der Perfomance her und ob es schneller geht mit Dini.
-
Die Droge kann 100 Qualitätsstufen haben die ich mit "i" Abfrage und wenn eine der Qualitätsstufen vorhanden ist soll diese gespeichert werden. Und bei der Speicherung speichert er doch den Wert oder nicht?
-
Die Speicherung egal über welchen Weg. Gedacht hätte ich an eine schnellere Abfrage?
-
Code
for(new i = 0; i<100; i++) { if(Inventar[playerid][pCannabis][i] > 0.00){format(string,sizeof(string),"Cannabis %f %d%:",Inventar[playerid][pCannabis][i],i);dini_FloatSet(file,string,Inventar[playerid][pCannabis][i]);} if(Inventar[playerid][pCrystalMeth][i] > 0.00){format(string,sizeof(string),"Crystal %f %d%:",Inventar[playerid][pCannabis][i],i);dini_FloatSet(file,string,Inventar[playerid][pCrystalMeth][i]);} if(Inventar[playerid][pHeroin][i] > 0.00){format(string,sizeof(string),"Heroin %f %d%:",Inventar[playerid][pCannabis][i],i);dini_FloatSet(file,string,Inventar[playerid][pHeroin][i]);} if(Inventar[playerid][pCocaine][i] > 0.00){format(string,sizeof(string),"Kokain %f %d%",Inventar[playerid][pCannabis][i],i);dini_FloatSet(file,string,Inventar[playerid][pCocaine][i]);} }
Geht das auch schneller
Edit: Eine AQbfrage vergessen sorry
-
Ich wollte halt wissen ob es klappt und ob ich einen String nutzen kann der in mehrere unterteilt ist falls 128 überschritten wurde.
-
Ich möchte ein INventarsystem per Listen Dialog entwerfen bei dem nur das Inventar angezeigt wird das man auch besitzt. Ist das mit einem Dialog machbar oder nur über selbstgeschriebene Textdraws?
Bisher hab ich das über einen String gedacht den ich per Abfrage erweitere, aber kann man dann auch 2 Strings in ein Dialog machen oder musss ich da eine Funktion nutzen mit der man eine zweite Seite haben kann oder so?
So hab ich mir das gedacht:
-
Und was passiert wenn ich den Timer halbiere? Eine Stunde ist dann eine halbe oder was? (Doppelt so schnell)#
Ah ne jetzt hab ich es. Wird dann nur 2x die Stunde aktualisiert richtig?
-
Vor und Nachteile?
-
Ich wollte einmal wissen welche Commands man nutzen sollte und wenn eindeutig ocmd dann wo ich dies herbekomme. Der Link hier im Forum ist zu alt.
-
Wie kann man die jetzt noch doppelt so schnell machen?
-
Code
forward Float:GetPos(playerid); stock Float:GetPos(playerid) { new Float:x,y,z; GetPlayerPos(playerid, x,y,z); return x,y,z; }
Bei OnPlayerTakeDamage:
C:\Program Files\Grand Theft Auto San Andreas\gamemodes\ganmore.pwn(306) : warning 202: number of arguments does not match definition
C:\Program Files\Grand Theft Auto San Andreas\gamemodes\ganmore.pwn(306) : warning 202: number of arguments does not match definition
C:\Program Files\Grand Theft Auto San Andreas\gamemodes\ganmore.pwn(484) : warning 213: tag mismatch
C:\Program Files\Grand Theft Auto San Andreas\gamemodes\ganmore.pwn(484) : warning 213: tag mismatch
C:\Program Files\Grand Theft Auto San Andreas\gamemodes\ganmore.pwn(485) : warning 213: tag mismatch