Wie kann man Booleans abspeichern ( Dini )?
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
-
-
dini_IntSet(pfad, "BoolWert", bVar);
Wenn das nicht geht, dann so:
dini_IntSet(pfad, "BoolWert", _:bVar);
Wobei bVar deine Boolean'sche Variable ist.Aber es sollte beides gehen.
-
Unter meinem PlayerInfo Enum.
bool:pLeaderUnter meinem stock SavePlayerAccount. ( Davor )
dini_IntSet(spName,"Leader",pInfo[playerid][pLeader]);Jetzt habe ich es so gemacht. ( Danach )
dini_IntSet(spName,"Leader",_:pInfo[playerid][pLeader]);
Dies funktioniert nicht.Und diese Variante auch nicht, habe die ja zuvor benutzt.
dini_IntSet(pfad, "BoolWert", bVar);Die Error Message
C:\Users\----\----\-----\gamemodes\denamed.pwn(2420) : warning 213: tag mismatch
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase1 Warning.
-
Nimm einfach die Funktion dini_BoolSet und dini_Bool

-
So erstmal danke Jeffry und Mencent.
Aber jetzt bei LoadPlayerAccount bekomme ich ein tag mismatch
Weiß nicht wo der Fehler ist.
pInfo[playerid][pLeader] = dini_Bool(spName,"Leader");Lösung:
pInfo[playerid][pLeader] = bool:dini_Bool(spName,"Leader"); -
@Mencent: malE:
dini_Int und dini_Bool sind genau gleich, es spielt keine Rolle welches man verwendet. Daher muss man (siehe Lösung) auch dini_Bool mit bool: casten.
stock dini_IntSet(filename[],key[],value) {
new valuestring[MAX_STRING];
format(valuestring,sizeof(valuestring),"%d",value);
return dini_Set(filename,key,valuestring);
}stock dini_Int(filename[],key[]) {
return strval(dini_Get(filename,key));
}stock dini_BoolSet(filename[],key[],value) {
new valuestring[MAX_STRING];
format(valuestring,sizeof(valuestring),"%d",value);
return dini_Set(filename,key,valuestring);
}stock dini_Bool(filename[],key[]) {
return strval(dini_Get(filename,key));
}Quelle: dini.inc
Eigentlich müsste dini_Bool so aussehen:
forward bool:dini_Bool(filename[],key[]);
stock bool:dini_Bool(filename[],key[]) {
return bool:strval(dini_Get(filename,key));
}Das könntest du in der dini.inc ändern, dann sparst du dir das casten im eigentlichen Code, da das unschön ist.
-
Ok danke Jeffry für die Info.
Am stock dini_BoolSet muss man nichts ändern in der dini.inc.
-
Am stock dini_BoolSet muss man nichts ändern in der dini.inc.
Müssen nicht, aber es wäre sinnvoll das zu ändern, dann kannst du nämlich
pInfo[playerid][pLeader] = dini_Bool(spName,"Leader");
nutzen, ohne den Cast.
-
Hab ich schon parallel gemacht als ich die Dini.inc geändert hab.
-
Wie lässt man am besten einen Vehicle Teleporter detecten?
-
Wie lässt man am besten einen Vehicle Teleporter detecten?
-
Clans werden nicht geladen.
forward LoadClans();
public LoadClans()
{
new string[128];
for(new i = 0; i < MAX_CLANS; i++)
{
format(string, sizeof(string),"SELECT * FROM `Clans` WHERE `ID` = '%d'", i);
mysql_query(dbhandle,string);
mysql_store_result();
if(mysql_num_rows() != 0)
{
mysql_fetch_row(string);
Clan[i][cID] = cache_get_field_content_int(0,"ID",dbhandle);
cache_get_field_content(0, "name", Clan[i][cName], dbhandle, 32);
cache_get_field_content(0, "Leader", Clan[i][cLeader], dbhandle, 32);
Clan[i][cMitglieder] = cache_get_field_content_int(0,"Mitglieder",dbhandle);
Clan[i][cLevel] = cache_get_field_content_int(0,"level",dbhandle);
Clan[i][cGeld] = cache_get_field_content_int(0,"geld",dbhandle);
Clan[i][cEXP] = cache_get_field_content_int(0,"EXP",dbhandle);
Clan[i][cSiege] = cache_get_field_content_int(0,"Siege",dbhandle);
Clan[i][cNiederlagen] = cache_get_field_content_int(0,"Niederlagen",dbhandle);
Clan[i][cUnentschieden] = cache_get_field_content_int(0,"Unentschieden",dbhandle);
}
mysql_free_result();
printf("Clan ID: %i | Name: %s | Leader: %s | Mitglieder: %i | Level: %i | Geld: %i | EXP: %i | S: %i N: %i U: %i", Clan[i][cID], Clan[i][cName], Clan[i][cLeader], Clan[i][cMitglieder], Clan[i][cLevel],Clan[i][cGeld],
Clan[i][cEXP],Clan[i][cSiege],Clan[i][cNiederlagen],Clan[i][cUnentschieden]);
}
return 1;
}Gibt mir 50 mal (MAX_CLANS) aus:
Connection etc ist hergestellt. SQL Version R34
-
Beitrag von AirM4X ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
Wenn man mit den Cache-Funktionen schon arbeitet, dann sollte man es komplett machen, sonst bringt es keinen Vorteil.
Nutze für das Query: http://wiki.sa-mp.com/wiki/MySQL/R33#mysql_pqueryOnGameModeInit:
mysql_pquery(dbhandle, "SELET * FROM Clans;", "LoadClans", "");Ganz unten im Code:
forward LoadClans();
public LoadClans()
{
new rows = cache_num_rows();
for(new i;i<rows;i++)
{
Clan[i][cID] = cache_get_field_content_int(i,"ID",dbhandle);
cache_get_field_content(i,"name",Clan[i][cName],dbhandle,32);
cache_get_field_content(i,"Leader",Clan[i][cLeader],dbhandle,32);
Clan[i][cMitglieder] = cache_get_field_content_int(i,"Mitglieder",dbhandle);
Clan[i][cLevel] = cache_get_field_content_int(i,"level",dbhandle);
Clan[i][cGeld] = cache_get_field_content_int(i,"geld",dbhandle);
Clan[i][cEXP] = cache_get_field_content_int(i,"EXP",dbhandle);
Clan[i][cSiege] = cache_get_field_content_int(i,"Siege",dbhandle);
Clan[i][cNiederlagen] = cache_get_field_content_int(i,"Niederlagen",dbhandle);
Clan[i][cUnentschieden] = cache_get_field_content_int(i,"Unentschieden",dbhandle);
printf("Clan ID: %i | Name: %s | Leader: %s | Mitglieder: %i | Level: %i | Geld: %i | EXP: %i | S: %i N: %i U: %i",Clan[i][cID], Clan[i][cName], Clan[i][cLeader], Clan[i][cMitglieder], Clan[i][cLevel],Clan[i][cGeld],
Clan[i][cEXP],Clan[i][cSiege],Clan[i][cNiederlagen],Clan[i][cUnentschieden]);
}
return 1;
}@Mencent: Dein Code würde nicht funktionieren, da du in der Schleife das Result frei gibst, somit würde es maximal einen Clan laden.
-
Moin
Ich hänge momentan an dem Problem, dass ich ein Array mit einem enum definiert habe, dieses aber dennoch über die entsprechende Arraystelle aufrufen möchte. Nutze ich einen normalen Aufruf bekomme ich ein Warning "warning 213: tag mismatch"Aufruf: FrakSettings[frak][6]
enum FrakOption
{
fName,
fKasse,
fMats,
fDrugs,
fMotd[128],
fRang1[24],
fRang2[24],
fRang3[24],
fRang4[24],
fRang5[24],
fRang6[24]
}
new FrakSettings[sizeof(Fraks)][FrakOption]; -
Was hast du denn vor zu machen?
PS: Damit nicht alles in einer Zeile steht, nutze den Reiter "Quellcode" über der Schriftart.
-
Ich habe vor die einzelnen Rangname auszulesen aus dem entsprechenden Array. Da ich aber über einen Dialog gehe wäre es mir etwas zu umständlich das ganze in ohne ende if Abfragen für jedes listitem zu hängen, daher suche ich nach einer besseren Lösung
Edit: In diese Richtung hatte ich dabei gedacht
new rank = listitem+5;
FrakSettings[frak][rank] -
Da müsstest du ein neues Array nur für die Namen anlegen, da in PAWN nur 3 Dimensionen im Array gehen.
new FrakRangName[MAX_FRAKS][6][24];
Dann kannst du es so auslesen:
FrakRangName[frakid][listitem] -
Dankeschön für die schnelle Hilfe. Hat alles funktioniert

-
Wie müsste der Code aussehen wenn man möchte das ein Leader einer Fraktion in seinem Fraktions Chat mit Farbcodes agieren kann?
Mit normalen Farbcodes einfach funktion im formatierten Chat gehts es ja nicht -
