]TB[ (/help-) Abfragen richtig scripten || inkl. Zusatzabfrage.

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
  • Kurzes How To- Tutorial.

    Methode 1


    Unsere Basis:
    if(strcmp(cmd, "/help", true) == 0 || strcmp(cmd, "/cmd", true) == 0)
    {
    if(IsPlayerConnected(playerid)) // Wir schauen ob der Spieler auf dem Server ist.
    {
    SendClientMessage(playerid, Your Color :D,"|___________[ Befehlsübersicht / Hilfe ]_________|"); // Antwort wenn er eingeloggt ist.
    SendClientMessage(playerid, Your Color :D,"/report, /buy, /sell, und so weiter");
    }
    return 1;
    }


    So nun möchtet ihr ja z.B. das die Commands der Polizei da stehen. So das aber nur Mitglieder der Polizei dies auch lesen können wenn sie /help eintippen.
    Für die erste Fraktion die ihr auswählt (NUR FÜR DIE ERSTE)

    Was wir einfügen:

    if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1)) // Abfrage ob die Person die den Befehl eingegeben hat, Mitglied oder Leader der Fraktion 1 ist. Ist sie dies, erhält er die jeweilige ANtwort
    {
    SendClientMessage(playerid,Your Color :D,"*** LSPD *** /deinebefehle hier!");
    }


    Dies sieht dann für das erste so aus:


    if(strcmp(cmd, "/help", true) == 0 || strcmp(cmd, "/cmd", true) == 0)
    {
    if(IsPlayerConnected(playerid)) // Wir schauen ob der Spieler auch eingeloggt ist.
    {
    SendClientMessage(playerid, Your Color :D,"|___________[ Befehlsübersicht / Hilfe ]_________|"); // Antwort wenn er eingeloggt ist.
    SendClientMessage(playerid, Your Color :D,"/report, /buy, /sell, und so weiter");
    if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1)) { // Abfrage ob die Person die den Befehl eingegeben hat, Mitglied oder Leader der Fraktion 1 ist. Ist sie dies, erhält er die jeweilige ANtwort
    SendClientMessage(playerid,Your Color :D,"*** LSPD *** /deinebefehle hier!"); } // Die Antwort.
    return 1;
    }


    Nun sehen alle Polizisten deine Befehle wenn sie /help eingeben.
    Damit noch weitere Personen aus ihre Commands sehen können, fügt ihr dies ein:else if(PlayerInfo[playerid][pJob] == 2) {
    SendClientMessage(playerid,COLOR_GRAD5,"*** Person die die JobID 2 haben sehen nun da shier. ***"); }
    Nun sieht ein Polizist (FraktionID: 1) der von Beruf (JobID2) hat die beiden Abfragen. Zusammen:


    if(strcmp(cmd, "/help", true) == 0 || strcmp(cmd, "/cmd", true) == 0)
    {
    if(IsPlayerConnected(playerid)) // Wir schauen ob der Spieler auch eingeloggt ist.
    {
    SendClientMessage(playerid, Your Color :D,"|___________[ Befehlsübersicht / Hilfe ]_________|"); // Antwort wenn er eingeloggt ist.
    SendClientMessage(playerid, Your Color :D,"/report, /buy, /sell, und so weiter");
    if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1)) { // Abfrage ob die Person die den Befehl eingegeben hat, Mitglied oder Leader der Fraktion 1 ist. Ist sie dies, erhält er die jeweilige ANtwort
    SendClientMessage(playerid,Your Color :D,"*** LSPD *** /deinebefehle hier!"); } / Die Antwort.
    else if(PlayerInfo[playerid][pJob] == 2) { // Abfrage ob die Person ID 2 als Beruf hat.
    SendClientMessage(playerid,COLOR_GRAD5,"*** Person die die JobID 2 haben sehen nun da shier. ***"); } // Die Antwort.
    return 1;
    }




    Methode 2

    [Fortgeschrittene Methode :D]


    if(strcmp(cmd, "/help", true) == 0 || strcmp(cmd, "/cmd", true) == 0)
    {
    if(IsPlayerConnected(playerid)) // Wir schauen ob der Spieler auch eingeloggt ist.
    {
    SendClientMessage(playerid, Your Color :D,"|___________[ Befehlsübersicht / Hilfe ]_________|"); // Antwort wenn er eingeloggt ist.
    SendClientMessage(playerid, Your Color :D,"/report, /buy, /sell, und so weiter");
    if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1)) { // Abfrage ob die Person die den Befehl eingegeben hat, Mitglied oder Leader der Fraktion 1 ist. Ist sie dies, erhält er die jeweilige ANtwort
    SendClientMessage(playerid,Your Color :D,"*** LSPD *** /deinebefehle hier!"); // Die Antwort.
    // ================[ Hier kommt der neue Teil ]===============
    ShowPlayerFractionCommands(playerid); // Abfrage nach: ShowPlayerFractionCommands.


    }
    return 1;
    }


    Nun was ist das ShowPlayer ... ?
    Ich baut sozusagen an einer anderen stelle ein Code ein der später abgefragt wird. So kann man das ganze etwas übersichtlicher gestalten. Ich hab dies z.B. dafür verwendet um die Fraktionscommands getrennt zu halten.
    Wie mach ich das?


    ►Installation:

    • Wir fügen erstellen folgenden Forward:
      forward ShowPlayerFractionCommands(playerid);
    • Wir fügen dies in eine billige Abfrage hinzu. So wie bei uns oben beim /help Befehl.
      ShowPlayerFractionCommands(playerid);
    • Wir schreiben ganz unten im Gamemode folgendes hin:
      public ShowPlayerFractionCommands(playerid)
      {
      if(PlayerInfo[playerid][pMember] > 0 || PlayerInfo[playerid][pLeader] > 0) // Sinnlose Abfrage theoretisch. Aber ich bin sie mal für die ein, die sie vllt. brauchen.
      {
      SendClientMessage(playerid,YOUR COLOR,"*** TEXT die ›› JEDER ‹‹ sieht!");
      }
      if(PlayerInfo[playerid][pMember] == 21 || PlayerInfo[playerid][pLeader] == 21)
      {
      SendClientMessage(playerid,YOUR COLOR,"*** TEXT denn ›› JEDER ‹‹ sehen soll der in der Fraktion mit der ID 21 ist!");
      }
      if(PlayerInfo[playerid][pAdmin] >= 4 || PlayerInfo[playerid][pAdmin] >= 4) // Nun sehen das alle Personen ab dem Adminrang 4.
      {
      SendClientMessage(playerid,YOUR COLOR,"*** /adminhelp, /aw, /aduty ...");
      }
      return 1;
      }


    Ich hoff es hat jeder verstanden. Bei Fragen steh ich gerne zur Verfügung. Mein erstes Thema hier. :love:


    Grüße JackBauer. 8)
    und nicht vergessen: We aRe oNe - TechnoBase.FM!

  • if(IsPlayerConnected(playerid)) // Wir schauen ob der Spieler auch eingeloggt ist
    schon falsch X(
    das überprüft ob der spieler auf dem server ist was wiederum unlogisch ist da wenn der spieler nicht da ist den command nicht benutzen kann

  • Was du meinst ist in nem GF vllt so üblich aber nicht in allen Scripten... (Zumal IsPlayerConnected dafür auch noch die flasche Definition ist)
    Erübrigt sich nicht, nimm das raus das ist sinnfrei...
    Außerdem würde ich den Code mal einrücken (Quellcode ansicht , dort kannste TAB's aus Pawno etc. kopieren und einfügen)