Ein bisschen Eigeninitiative muss man schon selbst ergreifen, die Suchfunktion gibt es übrigens nicht umsonst.
Grüße,
tony
Ein bisschen Eigeninitiative muss man schon selbst ergreifen, die Suchfunktion gibt es übrigens nicht umsonst.
Grüße,
tony
Hey,
sicher, dass du das Filterscript "base" nicht aktiviert hast?
Ansonsten kannst du den Befehl nur als RCON-Admin verwenden.
Grüße,
tony
Die Warnung sagt doch schon alles, du musst auch noch einen Wert returnen.
Die Nachricht geht allerdings jetzt immer noch nicht an alle Beamten, wenn du nicht weißt wie, dann schaue dir diesen Eintrag mal genauer an (http://wiki.sa-mp.com/wiki/For#for)
Grüße,
tony
SetPlayerWantedLevel(playerid,wert des Parameters)
Damit sparst du dir die ganzen Zeilen..
Du kannst die Nachrichten nicht so an das ganze Team versenden lassen.
SendClientMessage(gTeam(2),COLOR_ORANGE,string);
Du musst immer noch alle Spieler mit einer Schleife durchgehen und wenn sie Team-ID X haben, die Nachricht versenden.
Grüße,
tony
Hast du dir meinen Post überhaubt angeschaut?
Wenn nicht, würde ich dies nachholen und mal diesen Lösungsweg versuchen.
Du musst die Spieler immer noch mit einer Schleife durchgehen und ggf. die Nachricht versenden..
Grüße,
tonyalva
Hey,
if(sscanf(params,"usi",pID,wanteds,grund))return SendClientMessage(playerid,COLOR_LIGHTGREEN,"INFO: /su [ID][WANTEDs(1-6)] [GRUND]");
Das hier kann erstmal so nicht klappen, der Grund ist kein Integer, da hast du was vertauscht.
if(wanteds == 1){
SetPlayerWantedLevel(playerid,1)}
else if(wanteds == 2){
SetPlayerWantedLevel(playerid,2)}
else if(wanteds == 3){
SetPlayerWantedLevel(playerid,3)}
else if(wanteds == 4){
SetPlayerWantedLevel(playerid,4)}
else if(wanteds == 5){
SetPlayerWantedLevel(playerid,5)}
else if(wanteds == 6){
SetPlayerWantedLevel(playerid,6)}
Wieso nicht kürzer? Setze das WantedLevel gleich auf den Parameter, der angegeben wurde.
Zum Hauptproblem:
Du musst die Nachricht erstmal an "pID" schicken und dann mit einer Schleife alle Spieler abfragen, die in Team X sind.
An diese sendest du dann ebenfalls die Nachricht.
Grüße,
tonyalva
Das geht mit Hilfe der Player-States, hier der Eintrag im Wiki: (http://wiki.sa-mp.com/wiki/Playerstates)
Grüße,
tonyalva
Hey,
ich versuche nun mal, das ganze genau zu erklären, erstmal ein Eintrag.
In diesem siehst du die Funktion der einzelnen Platzhalter. (http://wiki.sa-mp.com/wiki/Format)
format(string,sizeof(string),"You set'ed %s adminlevel to %i.",name,rank);
Hier ist der 1. Platzhalter ein string, also eine Zeichenkette, der Name des Spielers ist ebenfalls eine.
Der Rank ist ein Integer, also eine Zahl, soweit so gut.
format(string2,sizeof(string2),"Your adminlevel got set'ed to %i from %s.",name,rank);
In diesem Beispiel ist es genau umgekehrt.
Hier soll der Name in ein Integer gewandelt werden, also ein Zahlenwert.
Da es allerdings eine Zeichenkette ist, klappt dies natürlich nicht.
Du musst nun also die Platzhalter verändern.
Grüße,
tony
Ich denke, dieser Eintrag könnte dir helfen (http://wiki.sa-mp.com/wiki/Control_Structures).
Du musst prüfen, ob deine Variable, die das Team bestimmt, 0 entspricht
Mit so einem Code geht es natürlich auch:
!IsPlayerInTeam(playerid,10)
Du gehst nun aber alle Team-IDs nacheinander durch, dann fragst du halt ab, ob die Team-ID des Spielers nicht 0 entspricht.
Grüße,
tonyalva
Hey,
das tut es, schaue dir allerdings mal die Reihenfolge deiner Platzhalter in deinem Beispiel an.
Grüße,
tonyalva
Hey,
wie wäre es mit "GetPlayerName"?
Und wenn du weißt, dass "pID" nicht definiert wurde, wieso tust du das dann nicht?
Außerdem musst du nicht soviele Strings erstellen, du kannst sie mehrfach verwenden und die Nachricht nur einmal am Ende ausgeben.
Grüße,
tonyalva
Hey,
schau dir die Grundlagen nocheinmal an:
format(string2,sizeof(string2),"Your adminlevel got set'ed to %i from %s.",name,rank);
Rank ist keine Zeichenkette, ein Name auch kein Integer.
Strings können übrigens mehrfach verwendet werden.
Grüße,
tonyalva
Der Spielername ist 24 Zeichen lang, aber ich bin Schreibfaul, daher will ich eine ID und keinen Spielernamen verwenden.
Das mit dem Pfad weiss ich, aber wie soll ich dem Script sagen das die ID 21 (Beispielsweise) nicht ICH bin, sondern jemand anderes und diese ID 21 eine Spielerdatei hat und in dieser Datei halt eine Variable "level" ist mit einem Wert, verstehst du?
Dazu habe ich ja eine Lösung beschrieben.
Mit dieser kannst du dann auch einen Account offline bearbeiten.
Du musst halt nur den ganzen Namen und nicht nur einen Teil / eine ID angeben.
//Edit: Achte darauf, dass du keine doppelten Posts abgibst, bearbeite lieber deinen ersten, damit du keine Verwarnung erhälst
Grüße,
tony
Hey,
im englischen Forum wurde glaube ich einmal ein "Ingame TextDraw Creator" released.
Mit diesem kannst du einen TextDraw an eine beliebige Position ingame anpassen, dieser lässt sich halt komplett bearbeiten.
So kannst du eine Position leicht rausfinden.
Du müsstest halt mal im englischen Forum suchen oder eine Suchmaschine bemühen
Grüße,
tony
Hey,
achso meinst du das:
Nun dann musst du mit Sscanf einen string, statt einen Spielernamen angeben, also:
if(sscanf(params,"s[21]i",name,alevel)) return SendClientMessage(playerid,COLOR_YELLOW,"Benutze: /setlevel [Spieler (exakte Rechtschreibung)] [User-Level]");
21 ist glaube ich standartmäßig MAX_PLAYER_NAME.
Dann erstellst du den Pfad so:
format(save, sizeof(save), "/Spieler/%s.ini", name);
Wenn dieser Pfad nicht existiert, lässt du halt eine Fehlmeldung ausgeben.
Grüße,
tony
Hey,
joa, du erstellst halt ein TextDraw, und lässt es für Admins anzeigen.
Wenn ein Spieler nun das Support-System nutzt, liest du den Namen aus und aktualisierst das TextDraw dann mithilfe von TextDrawSetString.
Damit sich die Änderung allerdings sichtbar macht, musst du glaube ich das TextDraw anschließend neu anzeigen lassen.
Grüße,
tonyalva
Hey,
das musst du genau so machen, wie du einen Integer sonst auch mit dini speicherst?
Beim ausloggen eines Spielers speicherst du seine Werte ja bestimmt auch..
Stichwort: dini_IntSet.
Hier ist übrigens ein Tutorial zum System Dini.
[ SCRIPTING ] Dateiensystem dini - Dateien erstellen, löschen, speichern, laden
Grüße,
tonyalva
Hey,
klar geht das, wieso nicht?
Zum Updaten des TextDraws kannst du dann: TextDrawSetString (http://wiki.sa-mp.com/wiki/TextDrawSetString) benutzen.
Grüße,
tonyalva
Du könntest es entweder in deiner Enum-Struktur ausweiten oder mit PVar´s arbeiten.
SetPVarInt(pID,"IsCalledBy",playerid);
Beim connecten musst du dann halt -1 zuweisen.
//Edit: Zu langsam..
Grüße,
tony
Ach klar,
da hätte ich auch selbst drauf kommen können, manchmal übersieht man halt die einfachsten Dinge..
Vielen Dank an dich, Trooper, habs nun.
Grüße,
tony