Hallo Brotfische,
Wie erstelle ich Fraktionen.
Es sollen 6 Ränge geben.
Für jede Fraktion ihre eigene Rangnamen.
LG
Hallo Brotfische,
Wie erstelle ich Fraktionen.
Es sollen 6 Ränge geben.
Für jede Fraktion ihre eigene Rangnamen.
LG
Da gibt es verschiedene Möglichkeiten. Die Kreativität steht dir ganz frei!
Einer der beliebtesten ist jedenfalls, dass du einfach abfragst bei bspw. "SpielerInfo[playerid][pFraktion]" welcher integer zurückgegeben wird.. Wenn 0 zurückgegeben wird, dann ist er ein "Fraktionsloser" und bei 1 bspw. ist er ein Cop usw. .
Den Rank kannst du dann ganz einfach über "SpielerInfo[playerid][pRank]" abfragen.. Allerdings musst du auch schon selber die Variablen definieren, denn Zugriff auf dein Script hat nicht jeder hier.
Liebe Grüße,
- Nynja
Ich will wissen wie ich zum Beispiel die Fraktion 1 SAPD erstelle also den Namen und die Rang Namen
Dazu muss man ja erstmal wissen wie du speicherst.
Wie da oben schon erwähnt kannst dj das mit Spielerinfo Bsp machen.
Erstmal musst du bei deinem Save &load stock
Fraktion,member und Rang speichern. In deiner Datenbank musst du die jeweiligen Spalten mit int erstellen. Dann halt die Befehle, wenn ich zuhause bin helf ich dir falls noch nicht geholfen wurde.
Mfg
Alles anzeigenDazu muss man ja erstmal wissen wie du speicherst.
Wie da oben schon erwähnt kannst dj das mit Spielerinfo Bsp machen.
Erstmal musst du bei deinem Save &load stock
Fraktion,member und Rang speichern. In deiner Datenbank musst du die jeweiligen Spalten mit int erstellen. Dann halt die Befehle, wenn ich zuhause bin helf ich dir falls noch nicht geholfen wurde.
Mfg
Es wird schon in der Datenbank gespeichert und geladen.
Wie erstelle ich die Frak Namen? Und RangNamen für die Fraktionen?
Wenn du das Speichern und Laden hast istja schonmal gut.
Die Rangnamen sowie Fraktionen erstellst du folgender maßen:
Wenn mann z.b im Fraktionschat schreiben möchte ( z.b. mit /f ) dann steht ja normalerweise zuerst der Rangname, SpielerName sowie der Text ( Praktikant GamerKing: Text )
Bei /f machst du einfach eine abfrage ob der spieler in einer Fraktion ist. Wenn ja fragst du ab welcher Rang er ist.
Wenn rang eins, erstellst du ein format. Wenn z.b. Leader schriebst dus genauso.
Hier mal ein Beispiel, wie ich es gemacht hab:
new team = Spieler[playerid][Team];
new rank = Spieler[playerid][Rank];
if(team == 13)
{
if(rank == 0){ rtext ="Neuling"; }
else if(rank == 1){ rtext ="Eingewiesener"; }
else if(rank == 2){ rtext ="Eventveranstalter"; }
else if(rank == 3){ rtext ="Fahrer"; }
else if(rank == 4){ rtext ="Finanzminister"; }
else if(rank == 5){ rtext ="Vice-Präsident"; }
else if(rank == 6){ rtext ="Präsident"; }
format(string, sizeof(string), "** %s %s: %s **", rtext, SpielerName(playerid), result);
SendFamilyMessage(13, GANGCHAT, string);
}
Hoffe kann dir helfen :p
Ja wie ich die Fraktion erstelle also den namen
Hast du denn die Fraktionen und die Ränge bereits erstellt (nicht mit Namen, aber mit IDs, also Zahlen)?
Du sagst ja, du speicherst und lädst es schon, also gehe ich mal von ja aus. Poste dann bitte mal den Code, mit dem du das machst.
Nein Habe ich nicht. Ich habe ledelig in mein Mysql Fraktion und Rang eingetranegn
Es wird schon in der Datenbank gespeichert und geladen.
Also hast du noch gar nichts, außer die Datenbankstruktur? Wenn ja, poste die bitte (Screenshot). Wenn nein, poste alles was du bis jetzt zu deinen Fraktionen hast.
Ok, das passt.
Poste bitte den Code mit dem du deine Spielerdaten (Geld, Level, ...) lädst und speicherst.
stock LoadAccount(playerid)
{
SpielerInfo[playerid][pEingeloggt] = true;
SpielerInfo[playerid][pGeld] = cache_get_field_content_int(0, "Geld", Handle), GivePlayerMoney(playerid, SpielerInfo[playerid][pGeld]);
SpielerInfo[playerid][pLevel] = cache_get_field_content_int(0, "Level", Handle), SetPlayerScore(playerid, SpielerInfo[playerid][pLevel]);
SpielerInfo[playerid][pALevel] = cache_get_field_content_int(0, "ALevel", Handle);
SpielerInfo[playerid][pFraktion] = cache_get_field_content_int(0, "Fraktion", Handle);
SpielerInfo[playerid][pFRang] = cache_get_field_content_int(0, "FRang", Handle);
return 1;
}
stock SpielerSpeichern(playerid)
{
if(SpielerInfo[playerid][pEingeloggt] == false)return 1;
mysql_escape_string(Spielername(playerid), Spielername(playerid));
format(query, sizeof(query), "UPDATE user SET Geld='%i',Level='%i', ALevel='%i', Fraktion='%i', FRang='%i' WHERE username='%s'", GetPlayerMoney(playerid), GetPlayerScore(playerid), SpielerInfo[playerid][pALevel], SpielerInfo[playerid][pFraktion], SpielerInfo[playerid][pFRang],Spielername(playerid));
mysql_tquery(Handle, query);
return 1;
}
Alles anzeigen
+Mein Level wird von InGame nicht Geschpeichert
Also hast du es doch schon...
Nutze diese Funktionen:
stock GetFraktionsName(fid)
{
new name[32];
switch(fid)
{
case 0: name = "Zivilist";
case 1: name = "LSPD";
case 2: name = "Grove";
//...
default: name = "Unbekannt";
}
return name;
}
Sowie:
stock GetRangName(fid, rang)
{
new name[32];
switch(fid)
{
case 0:
{
switch(rang)
{
case 0: name = "Anfänger";
case 1: name = "Pro";
//...
default: name = "Kein Rang";
}
}
case 1:
{
switch(rang)
{
case 0: name = "Streife";
case 1: name = "Officer";
//...
default: name = "Kein Rang";
}
}
//...
default: name = "Kein Rang";
}
return name;
}
Verwenden kannst du es dann so:
new string[145];
format(string, sizeof(string), "Ich bin in Fraktion %s und habe den Rang %s.", GetFraktionsName(SpielerInfo[playerid][pFraktion]), GetRangName(SpielerInfo[playerid][pFraktion],SpielerInfo[playerid][pFRang]));
SendClientMessage(playerid, 0xFF0000FF, string);
Alternativ kann man es über ein Array machen, aber ich denke für den Anfang ist das hier übersichtlicher und für dich leichter zu verstehen.
Wie muss ich jetzt den MakeLeader befehl machen?
Muss ich dem umbauen
Wegen meinem Code nicht, nein. Der ist so konzipiert, dass du ihn nur einfügen musst.
Zitat+Mein Level wird von InGame nicht Geschpeichert
Welches der Level? Und wie vergibst du das Level?
Wegen meinem Code nicht, nein. Der ist so konzipiert, dass du ihn nur einfügen musst.
Welches der Level? Und wie vergibst du das Level?
Hier ist der des wo man Level 1 bekommt.
Es wird aber nicht in der Daten Bank eingeschrieben
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new query[256], key[50];
if(dialogid == DIALOG_REGISTER)
{
if(!response)
{
return Kick(playerid);
}
if(strlen(inputtext) < 4)return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Anmeldung", "Es wurde kein Account unter diesem namen gefunden!", "Anmelden", "Abbrechen");
format(key, 50, "%s", inputtext);
printf("key=%s",key);
mysql_escape_string(Spielername(playerid), Spielername(playerid)), mysql_escape_string(key, key);
format(query, sizeof(query), "INSERT INTO user (username, password) VALUES ('%s','%s')", Spielername(playerid), key);
mysql_function_query(Handle,query,false,"","");
printf("query=%s",query);
SendClientMessage(playerid, COLOR_HELLRED, "Dein Account wurde in der Datenbank erstellt.");
SetPlayerScore(playerid, 1);
}
Alles anzeigen
Wenn du es direkt drin haben willst, dann schreibe das Query so:
format(query, sizeof(query), "INSERT INTO user (username, password, Level) VALUES ('%s','%s', '1')", Spielername(playerid), key);