Beiträge von tonyalva

    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

    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,


    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 :P


    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

    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.. :P


    Grüße,
    tony