Vielen Lieben Dank
Einen schönen Abend wünsche ich dir noch. Echt super das es so viele hilfsbereite Leute gibt
mfg The.Boonze
Vielen Lieben Dank
Einen schönen Abend wünsche ich dir noch. Echt super das es so viele hilfsbereite Leute gibt
mfg The.Boonze
Vielen dank
Wenn ich nun eine neue Fraktion mit neuen Fraktionen einsetzte muss ich:
new skinChangeTEXT[MAX_FACTIONS][MAX_SKINS*4 + 1] = {
{"188 0"}, //ZiviSkins
{"265 266 267 280 281 282 283 284 288"}, //CopSkins
{"171 172 187 194 240"}, //FahrschulSkins
{"272 273 292 298"} //LosZetasSkins
};
Bei der MAX_SKINS*4 das dann zu MAX_SKINS*5 schreiben oder läuft das alles dynamisch jetzt?
Mfg The.Boonze
PS: Gut geschrieben, musste es ein paar mal lesen und im wiki einige Befehle nachschauen bevor ich es verstanden habe
Hey Jeffry,
vielen lieben Dank schonmal.
Ich werde mich jetzt dran setzten und es mal einsetzten und versuchen es zu verstehen.
Ich melde mich dann nochmal wie weit ich gekommen bin.
Mit freundlichen Grüßen,
The.Boonze
EDIT:
Also alles eingebaut und getest, funktioniert einwandfrei mit einer kleinen Ausnahme jedoch.
In jeder Skinauswahl taucht die SKIN ID 0 auf also der CJ Skin, obwohl er ja nur in der Zivi Fraktion eingebaut ist.
public OnPlayerClickPlayerTextDraw(playerid,PlayerText:playertextid)
{
if(playertextid == SkinMenu[playerid][0]) //Links
{
new fID;
fID=sInfo[playerid][fraktion];
if(GetPVarInt(playerid,"pos")>=0)
{
SetPlayerSkin(playerid,skinChange[fID][GetPVarInt(playerid,"pos")]);
SetPVarInt(playerid,"SkinNew",skinChange[fID][GetPVarInt(playerid,"pos")]);
SetPVarInt(playerid,"pos",GetPVarInt(playerid,"pos")-1);
}
else
{
SetPVarInt(playerid,"pos",sizeSkinChange[fID]);
}
return 1;
}
if(playertextid == SkinMenu[playerid][1]) //Rechts
{
new fID;
fID=sInfo[playerid][fraktion];
if(GetPVarInt(playerid,"pos")<= sizeSkinChange[fID])
{
SetPlayerSkin(playerid,skinChange[fID][GetPVarInt(playerid,"pos")]);
SetPVarInt(playerid,"SkinNew",skinChange[fID][GetPVarInt(playerid,"pos")]);
SetPVarInt(playerid,"pos",GetPVarInt(playerid,"pos")+1);
}
else
{
SetPVarInt(playerid,"pos",0);
}
return 1;
}
}
Meine anderen Fragen stell ich dann danach
Guten Morgen Jeffry,
ich war gestern dann zu müde und bin schlafen gegangen. Kein Problem zwecks der ganzen Umstände war ja auch spät gestern.
Dynamisch wäre meiner Meinung nach besser, weil ich ja sonst nach jedem Einfügen eines neuen Skins die anderen Zeilen auch anpassen müsste.. Und das wollte ich eigentlich verhindern
Kannst du mir vielleicht zeigen wie mein Vorhaben mit einem dynamischen System lösbar wäre?
Mit freundlichen Grüßen,
The.Boonze
new skinChange[][] = {
{188,0}, //ZiviSkins
{265,266,267,280,281,282,283,284,288}, //CopSkins
{171,172,187,194,240}, //FahrschulSkins
{272,273,292,298} //LosZetasSkins
};
public OnPlayerClickPlayerTextDraw(playerid,PlayerText:playertextid)
{
if(playertextid == SkinMenu[playerid][0]) //Links
{
new fID;
fID=sInfo[playerid][fraktion];
if(GetPVarInt(playerid,"pos")>=0)
{
SetPlayerSkin(playerid,skinChange[fID][GetPVarInt(playerid,"pos")]);
SetPVarInt(playerid,"SkinNew",skinChange[fID][GetPVarInt(playerid,"pos")]);
SetPVarInt(playerid,"pos",GetPVarInt(playerid,"pos")-1);
}
else
{
SetPVarInt(playerid,"pos",strlen(skinChange[fID])-1);
}
return 1;
}
if(playertextid == SkinMenu[playerid][1]) //Rechts
{
new fID;
fID=sInfo[playerid][fraktion];
if(GetPVarInt(playerid,"pos")<= strlen(skinChange[fID])-1)
{
SetPlayerSkin(playerid,skinChange[fID][GetPVarInt(playerid,"pos")]);
SetPVarInt(playerid,"SkinNew",skinChange[fID][GetPVarInt(playerid,"pos")]);
SetPVarInt(playerid,"pos",GetPVarInt(playerid,"pos")+1);
}
else
{
SetPVarInt(playerid,"pos",0);
}
return 1;
}
}
Das haut leider so garnicht hin, er schmeißt jetzt egal welche Fraktion alle Skins immer rein. Und auch welche die eigentlich nicht dabei sind
Mit freundlichen Grüßen,
The.Boonze
Super danke wird direkt mal probiert.
Mit freundlichen Grüßen,
The.Boonze
EDIT: Da fällt mir aber ein wie sage ich ihm nun schaue in der Zeile 2 nach wieviel Spalten dort sind? Weil ich ja mit skinChange[fID][] arbeite.
Wenn ich nur
SetPVarInt(playerid,"pos",sizeof(skinChange[]));
schreibe, kommt folgender Fehler,
warning 224: indeterminate array size in "sizeof" expression (symbol "")
Mit freundlichen Grüßen,
The.Boonze
Hallo Jeffry,
korrigier mich bitte wenn ich falsch liege, wenn ich sizeof(skinChange[]) nehme, liest er mir dann nicht nur die zeilen aus? also in diesem fall 3?
Ich möchte ja wissen wieviel in den einzelnen zeilen steht.. und sizeof(skinChange[fID][]) geht nicht..
Mit freundlichen Grüßen,
The.Boonze
Einen wunderschönen guten Abend liebe Breadfish Communtiy,
wir sind grad mal wieder an unserem Selfmade Projekt am werkeln und haben folgendes Problem.
Wir lassen unsere Skinauswahl Ingame über eigene Textdraws laufen und wollen folgendes realisieren.
In einem Array stehen verschiedene Skins für verschiedene Fraktionen:
new skinChange[][] = {
{188,0}, //ZiviSkins
{265,266,267,280,281,282,283,284,288}, //CopSkins
{171,172,187,194,240}, //FahrschulSkins
{272,273,292,298} //LosZetasSkins
};
Jetzt suchen wir eine Möglichkeit abzufragen wieviele Skins denn in der jeweiligen Zeile stehen, um somit wenn er beim letzten Skin angekommen ist ihn wieder zum ersten zu schicken.
Bis jetzt sind wir bis hier her gekommen:
public OnPlayerClickPlayerTextDraw(playerid,PlayerText:playertextid)
{
if(playertextid == SkinMenu[playerid][0]) //Links
{
new fID;
fID=sInfo[playerid][fraktion];
if(GetPVarInt(playerid,"pos")>=0)
{
SetPlayerSkin(playerid,skinChange[fID][GetPVarInt(playerid,"pos")]);
SetPVarInt(playerid,"SkinNew",skinChange[fID][GetPVarInt(playerid,"pos")]);
SetPVarInt(playerid,"pos",GetPVarInt(playerid,"pos")-1);
}
else
{
SetPVarInt(playerid,"pos",sizeof(skinChange[fID][])); <---- Hier liegt unser Fehler
}
}
return 1;
}
Wir möchten ihm also sagen wenn er am Ende des Arrays angekommen ist fange wieder von an.
Hat da vielleicht jemand eine Idee?
Mit freundlichen Grüßen,
The.Boonze
Vielen Vielen Dank,
in diesem kurzen Beispiel auch wie ich es richtig aus der Datenbank lade, habe ich es jetzt verstanden wie ich da vorgehe.
Perfekt gelöst auch die kurze Schleife für die fkasse. Daumen hoch und respekt!
Mfg The.Boonze
Aaaalso auf den ersten Blick bombastisch Also für die Fraktionsid 1 wurde das Geld perfekt angezeigt.
Jedoch bei Fraktion 2 und 3 stehen 0 Dollar statt einem Wert.
Wenn alles klappt kannst du vielleicht noch erklären warum du es so geschrieben hast? Das ich beim nächsten mal vielleicht selber drauf komme und es anwenden kann?!
Mfg The.Boonze
Leider immernoch 0 Dollar wird angezeigt. In jeder der 3 Fraktionen.
mfg The.Boonze
Nein also der Fehler ist nicht mehr vorhanden. Jedoch wird mir kein Geld angezeigt.
Mit freundlichen Grüßen,
The.Boonze
EDIT: Hat dazu vielleicht noch jemand eine Idee?
Okay also nehme ich das loadFrak(); einfach wieder daraus.
Jetzt bin ich aber in der Fraktion LSPD, habe in der Datenbank Geld in die kasse geschrieben.
Wenn ich nun jedoch das ocmd:fkasse ausführe zeigt er mir jedesmal 0 Dollar an. Obwohl ja laut Datenbank etwas drin ist.
Habe ich da im Befehl fkasse etwas falsch gescriptet?
Mit freundlichen Grüßen,
The.Boonze
Muss ich das public loadFrak(); nicht noch irgendwo aufrufen?
//---------------------------------------MySQL Verbinden------------------------
dbhandle = mysql_connect(db_host,db_user,db_db,db_pass);
SetTimer("savePlayer",update_time,true);
mysql_function_query(dbhandle,"SELECT * FROM fraktionen",true,"loadFrak","");
Hier rufe ich das public auf:
ocmd:fkasse(playerid,params[])
{
loadFrak();
new string[128];
switch(sInfo[playerid][fraktion])
{
case 0:
{
SendClientMessage(playerid,grau,"Du bist in keiner Fraktion.");
}
case 1:
{
format(string,sizeof(string),"Du hast %i$ in deiner Fraktionskasse.",fdbInfo[1][fdb_kasse]);
SendClientMessage(playerid,hblau,string);
}
case 2:
{
format(string,sizeof(string),"Du hast %i$ in deiner Fraktionskasse.",fdbInfo[2][fdb_kasse]);
SendClientMessage(playerid,hblau,string);
}
case 3:
{
format(string,sizeof(string),"Du hast %i$ in deiner Fraktionskasse.",fdbInfo[3][fdb_kasse]);
SendClientMessage(playerid,hblau,string);
}
}
return 1;
}
sInfo[playerid][fraktion] gibt dabei aus in welcher Fraktion er ist:
sInfo[playerid][fraktion]=0 --> Zivi
sInfo[playerid][fraktion]=1 --> LSPD
etc.
Mit freundlichen Grüßen,
The.Boonze
Danke erstmal für die schnelle Antwort.
Habe deinen Code so eingefügt, beim compilen kommen keine Fehler.
Wenn ich jedoch das public loadFrak(); aufrufe schmeißt die Datenbank wieder den selben Fehler:
[WARNING] cache_get_data - no active cache
Hier mal ein Auszug der Datenbank, nicht das ich da was vermasselt habe:
Mit freundlichen Grüßen,
The.Boonze
Hey Leute,
es bleibt mir nichts anderes als einfach mal hier zu fragen.
Ich
habe etwas ganz Simples vor, und zwar möchte ich Fraktionen per
Hand/Manuell in der MySQL Datenbank anlegen und diese dann auslesen.
Leider stehe ich auf dem Schlauch und komme nicht weiter.
#define MAX_FRAKTION 20
enum fraktionInfo{
fdb_idf,
fdb_id,
fdb_name,
fdb_kasse,
fdb_bluem,
fdb_meth,
fdb_skasse
}
new fdbInfo[MAX_FRAKTION][fraktionInfo];
forward loadFrak();
public OnGameModeInit()
{
mysql_function_query(dbhandle,"SELECT * FROM fraktionen",true,"loadFrak()","");
loadFrak();
}
loadFrak()
{
new num_rows,num_fields;
cache_get_data(num_rows,num_fields,dbhandle);
if(!num_rows) return 1;
for(new i=0; i<num_rows; i++)
{
fdbInfo[i][fdb_kasse] = cache_get_field_content_int(0,"kasse",dbhandle);
fdbInfo[i][fdb_bluem] = cache_get_field_content_int(0,"bluemagic",dbhandle);
fdbInfo[i][fdb_meth] = cache_get_field_content_int(0,"meth",dbhandle);
fdbInfo[i][fdb_id] = cache_get_field_content_int(0,"id",dbhandle);
fdbInfo[i][fdb_skasse] = cache_get_field_content_int(0,"schwarzkasse",dbhandle);
return 1;
}
return 1;
}
}
Es scheint nicht zu funktionieren, da ich folgenden Fehler bekomme:
[17:40:33] [WARNING] cache_get_data - no active cache
Kann mir vielleicht jemand auf die Sprünge helfen?
Mfg The.Boonze