Gov/goverment erstellen [Problem]

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
  • Sehr geehrte Community ich bin noch in der Anfangsphase des Scriptens, nun würde ich gerne eure Hilfe in Anspruch nehmen, ob Ihr mir bei meinem Befehl weiter helfen könnt. Immoment kam ich soweit, das ich überprüft habe ob der Spieler eingeloggt ist und ob er in einer Fraktion ist. Nun weiß ich leider nicht mehr weiter und würde mich dankbar zeigen, wenn mir einer oder mehere Personen nun helfen könnten und mir zeigen könnten wie ich jetzt weiter vorgehen muss. Wäre nett wenn mir einer eine etwas detalierte Anleitung schreiben könnte.


    Vielen Dank im Vorraus


    Styler_1


    ocmd:gov(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    if(IstSpielerInFrak(playerid,0))return SendClientMessage(playerid,ROT," Du bist in keiner Fraktion.");
    {


    }
    }
    return 1;
    }

  • Hi


    2 Hinweise und ein Tipp:


    • IsPlayerConnected(playerid) bringt bei einem Befehl garnichts, denn wenn ich nicht auf dem Server bin, kann ich keinen Befehl eingeben
    • Ich weiss nicht woher ihr diese schlimme Schreibweise habt, aber ihr könnt es auch so schreiben:

    ocmd:gov(playerid,params[])
    {
    if(IstSpielerInFrak(playerid,0))return SendClientMessage(playerid,ROT," Du bist in keiner Fraktion.");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    }
    }
    return 1;
    }


    {} stellen eigentlich ein Scopebereich dar.


    Nun zu deiner Frage. /gov enthält ja als Parameter einen String. Diesen musst Du jetzt aber auslesen, sprich benutzbar machen. Ich verwende dafür das Plugin sscanf (in der Version 2.6). Bekommste hier:


    http://forum.sa-mp.com/showthread.php?t=120356


    Danach kannste so an den Eingabetext kommen:


    ocmd:gov(playerid,params[])
    {
    new string[128];
    if(sscanf(params, "s[128]", string)) return SendClientMessage(playerid, COLOR_XYZ, "Verwendung: /gov [Text]");
    SendClientMessageToAll(COLOR_XYZ, string);
    return 1;
    }


    Edit: Fehler

  • Dann ergibt der CMD ja keinen Sinn, weil Government auf Deutsch Regierung heißt ;)
    Ausserdem kann das so nicht funzen:
    ocmd:gov(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    if(IstSpielerInFrak(playerid,0))return SendClientMessage(playerid,ROT," Du bist in keiner Fraktion.");
    else{


    }
    }
    return 1;
    }


  • ocmd:gov(playerid,params[])
    {
    new string[128]; //Ggf. ändern
    new text[128];
    if(sscanf,params,"u",text)return SendClientMessage(playerid, FARBE,"TEXT");
    format(string,sizeof(string),"Staatsbeamter: %s: %s",SpielerName(playerid),text); //Ggf. Abfrage ändern (Name etc.)
    if(IsPlayerConnected(playerid))
    {
    if(!IstSpielerInFrak(playerid,0))return SendClientMessage(playerid,ROT," Du bist in keiner Fraktion.");
    {
    SendClientMessageToAll(FARBE,string);
    }
    }
    return 1;

    So ungefähr sollte es gehen, ungetestet, mit sscanf Abfrage musst du mal gucken^^


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • ocmd:gov(playerid, params[])
    {
    if(!IstSpielerInFrak(playerid, 0)) return SendClientMessage(playerid, COLOR_WHITE, "Du bist in keiner Fraktion!");
    new gov[256], rankname, ranknamestr[64];
    if(sscanf(params, "s", gov)) return SendClientMessage(playerid, COLOR_WHITE, "Benutze: /gov [Nachricht]");
    if(Spieler[playerid][Rank] <= 2) return SendClientMessage(playerid, COLOR_WHITE, "Du brauchst Rank 3 um das zu tun!");
    switch(rankname){ case 1: { ranknamestr = "Rankname1"; } case 2: { ranknamestr = "Rankename2"; } }
    format(gov, sizeof(gov), "[Regierungs-Nachrichten] %s %s: %s", ranknamestr, SpielerName(playerid), gov);
    SendClientMessageToAll(COLOR_BLUE, gov);
    return 1;
    }


    Anpassen, Ungetestet

  • Vielen Dank, ja ich benutze sscanf und mir ist auch eben in der Zeit eingefallen, dass ich einen String benutzen muss. Ich bedanke mich aber trotzdem für eure Anleitungen und Hilfen

    Einmal editiert, zuletzt von Styler_1 ()

  • Ich verweise hierrauf: http://wiki.sa-mp.com/wiki/Limits --> Text I/O


    Die Chatbox fasst maximal 128 Chars (Char im Sinne von Zeichen, nicht als Datentypgrösse(in Bytes)). Sprich dein Array mit 256 Chars ist total überdimensioniert ;)