/blitzer geht nicht wie gewollt

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
  • Hey mein Blitzer befehl Geht nicht aber Warum ?
    Wenn ich /blitzer aufstellen mache soll eigentlich das kommen


    Code
    SendStrukturMessage(playerid, MSG_BENUTZUNG, "/blitzer Aufstellen [Geschwindigkeit] [Spieler ID]");
    				SendStrukturMessage(playerid, MSG_BENUTZUNG, "Info: Die Messposition des Blitzers ist die Position der Spieler ID!");


    Aber es kommt immer wieder

    Code
    SendStrukturMessage(playerid, MSG_BENUTZUNG, "/blitzer [Aktion]");
                SendStrukturMessage(playerid, MSG_BENUTZUNG, "Verfügbare Aktionen: Aufstellen, Entfernen, EntfernAll, Check, Zählen");


  • Ich denke das muss so:


    Code
    if(sscanf(params, "s[52]", lAction))
    {
    	SendStrukturMessage(playerid, MSG_BENUTZUNG, "/blitzer [Aktion]");
            SendStrukturMessage(playerid, MSG_BENUTZUNG, "Verfügbare Aktionen: Aufstellen, Entfernen, EntfernAll, Check, Zählen");
    	return 1;
    }
  • Hey danke das Funktioniert schonmal.
    Aber ich habe noch ein problem
    wenn ich /blitzer aufstellen 50 7 mache passiert nichts ? es kommt Bloß wieder die Nachricht


    SendStrukturMessage(playerid, MSG_BENUTZUNG, "/blitzer [Aktion]");
    SendStrukturMessage(playerid, MSG_BENUTZUNG, "Verfügbare Aktionen: Aufstellen, Entfernen, EntfernAll, Check, Zählen");


  • Mach mal


    if(!strcmp(lAction, "aufstellen", true))


    zu


    if(strcmp(lAction, "aufstellen", true))


    Habe einen Befehl mit genau dem Prinzip, und ohne ! funktioniert es bei mir einwandfrei.

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

  • Das ! ist aber richtig.
    [wiki]strcmp[/wiki]



    Zitat von SA:MP Wiki

    0 if strings match each other on given length;


    Warum es oben nicht funktioniert:
    Wo hast du denn bitte "params" für sscanf her? Sieht so aus, als mischst du OnPlayerCommandText mit dcmd,zcmd,[irgendeinbuchstabe]cmd.

    Einmal editiert, zuletzt von Goldkiller ()

  • Habe es so jetze kann ich 1 Blitzer aufstellen danach wenn ich ein Weiteren aufstellen will kommt
    Es sind keine Blitzer in San Andreas Aufgestellt.



  • Du hast also meinen Beitrag ignoriert. Eventuell erstmal die zwei oben genannten Probleme lösen bevor du es falsch weiter machst :/.


    Es gibt übrigens auch die Möglichkeit hier im Forum, Quellcode mit PAWN Syntax Highlight anzuzeigen. Dafür gibt es das pwn-Tag


    //Edit:
    Soll doch bitte ein Moderator nachschauen, ob ich den 2. Fehler nachträglich hinein editiert habe ... Ich habe lediglich den Code im wiki-Tag geändert.

    Einmal editiert, zuletzt von Goldkiller ()

  • [wiki][/wiki]vorhin war die Seite die du da gezeigt hast Offline und den 2 hast du gerade erst reineditiert.
    Versuche ich nachher wenn ich am Rechner bin.


    Wie meinst du das mit
    Wo hast du denn bitte "params" für sscanf her? Sieht so aus, als mischst du OnPlayerCommandText mit dcmd,zcmd,[irgendeinbuchstabe]cmd.


    @Goldkiller:

  • public OnPlayerCommandText(playerid, cmdtext[])


    OnPlayerCommandText hat keine Params. Schau dir mal irgendwascmd an:



    xcmd:test123(playerid,params[])
    {
    return 1;
    }

    Da hast du die Params. Sscanf kann also nicht wissen, was du mit params meinst, bei deinem Beispiel, weil du ja nur if(!strcmp(cmd, "/blitzer")) bei OnPlayerCommandText stehen hast.

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Gebe die beiden hinteren Parameter als optional im ersten sscanf an, so werden sie gesplitten falls angegeben und die unteren strcmp's funktionieren.
    if(!strcmp(cmd, "/blitzer", true))
    {
    if(!IsPlayerInFraktion(playerid, 5)) return SendStrukturMessage(playerid, MSG_FEHLER, "Du darfst diesen Befehl nicht benutzen!");
    if(PlayerInfo[playerid][pDienst] == 0) return SendStrukturMessage(playerid, MSG_FEHLER, "Du musst im Dienst sein um diesen Befehl zu benutzen!");
    if(PlayerInfo[playerid][pRang] < 4) return SendStrukturMessage(playerid, MSG_FEHLER, "Du benötigst mindestens Rang 4!");
    new lAction[52], lGeschwindigkeit;
    if(sscanf(params, "s[52]I(-1)U(-1)", lAction, lGeschwindigkeit, giveplayerid))
    {
    SendStrukturMessage(playerid, MSG_BENUTZUNG, "/blitzer [Aktion]");
    SendStrukturMessage(playerid, MSG_BENUTZUNG, "Verfügbare Aktionen: Aufstellen, Entfernen, EntfernAll, Check, Zählen");
    return 1;
    }
    if(!strcmp(lAction, "aufstellen", true))
    {
    if(sscanf(params, "s[52]iu", lAction, lGeschwindigkeit, giveplayerid))
    {
    SendStrukturMessage(playerid, MSG_BENUTZUNG, "/blitzer Aufstellen [Geschwindigkeit] [Spieler ID]");
    SendStrukturMessage(playerid, MSG_BENUTZUNG, "Info: Die Messposition des Blitzers ist die Position der Spieler ID!");
    return 1;
    }
    if(IsPlayerInAnyVehicle(playerid)) return SendStrukturMessage(playerid, MSG_FEHLER, "Du kannst in einem Fahrzeug keinen Blitzer aufstellen!");
    if(lGeschwindigkeit < 10 || lGeschwindigkeit > 200) return SendStrukturMessage(playerid, MSG_FEHLER, "Die Geschwindigkeit darf nicht weniger als 10 und nicht mehr als 200 betragen!");
    if(!IsPlayerConnectedEx(giveplayerid) || giveplayerid == INVALID_PLAYER_ID) return SendStrukturMessage(playerid, MSG_FEHLER, "Unbekannte Spieler ID!");
    if(CountBlitzer() >= 10) return SendStrukturMessage(playerid, MSG_FEHLER, "Es sind bereits 10 Blitzer in San Andreas aufgestellt!");
    if(GetPlayerFraktion(giveplayerid) != 5) return SendClientMessage(playerid, COLOR_GRAU, "Dieser Spieler ist nicht im Ordnungsamt!");
    if(playerid == giveplayerid) return SendClientMessage(playerid, COLOR_GRAU, "Du kannst keinen Blitzer mit dir selber aufstellen!");
    if(!ProxDetectorS(30, playerid, giveplayerid)) return SendClientMessage(playerid, COLOR_GRAU, "Dieser Spieler ist zu weit entfernt!");
    CreateBlitzer(playerid, giveplayerid, lGeschwindigkeit);
    }
    else if(!strcmp(lAction, "entfernen", true))
    {


    Beachte, dass es !strcmp heißen muss.

  • da ist der ganze befehl

  • Habe es jetze so aber wenn ich /blitzer aufstellen 50 8 mache wird einer Erstellt und aber wenn ich /blitzer entfernen mache kommt diese MSG ?


    Code
    SendStrukturMessage(playerid, MSG_BENUTZUNG, "/blitzer Aufstellen [Geschwindigkeit] [Spieler ID]");
    				SendStrukturMessage(playerid, MSG_BENUTZUNG, "Info: Die Messposition des Blitzers ist die Position der Spieler ID!");


    und soblad ich ein Blitzer aufgestellt habe und /blitzer aufstellen eingebe kommt


    Code
    SendStrukturMessage(playerid, MSG_FEHLER, "Es ist kein Blitzer in San Andreas aufgebaut!");



  • Habe es nun so
    Wenn ich /blitzer entfernen eingebe dann kommt es ist kein Blitzer in San Andreas Aufgebaut



    Code
    stock CountBlitzer()
    {
       	new anzahl = 0;
    	for(new i = 0; i < sizeof(BlitzerInfo); i++)
    	{
    		if(BlitzerInfo[i][bDatabaseID] >= 1) anzahl ++;
      	}
       	return anzahl;
    }
  • Hey habe das Problem dass wenn ich ein Blitzer lösche bleibt in ein Dialog immernoch 2 Stehen aber wieso ?
    Ich mache /zählen -> 2 Blitzer
    Ich Lösche ein Blitzer -> Eigentlich ein Blitzer
    Ich mache wieder /zählen es werden immernoch 2 Angezeigt