[Handysystem] Befehle

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
  • Tag,


    ich versuche seit Tagen ein handysystem zu bauen...Aber leider scheiter ich.
    Wenn man bei mir im 24/7 Shop geht und ein Handy kauft hat man eine Telefonnummer, nun meine Frage:


    Wie kann ich einen Befehl wie zum beispiel /call machen ?
    Ich weiss das ich dafür ne if Abfrage brauch aber wie sieht sie aus??


    lg

  • Nein es ist ein 100% Selfmade


    Und ich muss ja schauen ob jemand mit Dieser Nummer online ist und an die playerid mit der Nummer per SendClientMessage und string den Text schicken..


    Aber wie ??
    So mein ich das.
    Sorry wenn ich mich nichr richtig ausgedrückt habe

  • Ich habe ja
    enum SInfo
    {
    Adminlevel,
    Harndrang,
    Durst,
    Hunger,
    Energie,
    bool:Logged,
    Text:T_Status,
    Bank,
    eingeloggt,
    Nummer,
    Parkhaus,
    CarLic,
    BikeLic,
    FlyLic,
    BoatLic,
    Navi,
    Waffenschein
    }
    new SpielerInfo[MAX_PLAYERS][SInfo];


    Und Nummer ist halt die Handynummer die wenn man im 24/7 Shop ein handy kauft automatisch mit einer Zufallszahl bestückt wird...
    Könntest du mir evt mit paar Beispielen zeigen, wie ich das mache ?


    lg

  • Die Zufallszahlen hab ich doch schon :D
    Ich will gerne wissen wie ich jetzt den Befehl /call machen kann!

  • Dann formulier das bitte besser.


    Naja, zuerst würde ich mir mal das ansehen: http://wiki.sa-mp.com/wiki/Dcmd.
    Damit bekommst du die Nummer, die der Spieler nach "/call" eingeben hat.
    Also bspw. "/call 1555". Dann bekommst du 1555.
    Jetzt gehst du mit einer FOR-Schleife alle Spieler am Server durch, und fragst ab, welcher Spieler diese Nummer hat (Mit der enum-Variable).
    Und dann sendest du mit der "SendClientMessage" Funktion die Nachricht an die Spieler ID, der diese Nummer hat.


    Wenn du diese Schritte befolgst, bekommst du dein Call-System locker hin.
    C&P-Code gebe ich dir nicht.

  • Will auch kein C&P - bin nicht so einer Selfmade ist immernoch besser ;) -


    Aber was ist bitte eine For-Schleife ?
    Hab noch nie was davon gehört :(

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich versteh das iwie nicht...ist ähnlich wie bei strtok wie es im Wiki erklärt wird


    aber ich hab bzw will ocmd :)

  • Warum ihr immer mit den Basics kommt -.-'


    1. Ich kann die Basics sonst wäre ich nicht so weit mit meinem Script und es ist alles Selfmade..


    2. Nix gegen das Forum oder an die User, Aber warum könnt ihr einen nichtmal normal Helfen :(
    Sowas ist Schade

  • Nein, sowas ist schade, weil jeder mal klein angefangen hat..


    Und wenn man die Basics beheerscht kann man auch nicht alles -.-'
    So wie die For-Schleife im Wiki erklärt ist, kenne ich nur für strcmp...

  • Dein 1. Satz ergibt keinen Sinn.


    Okay, also ich erkläre dir die FOR-Schleife mal ganz genau:

    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    printf("%d", i);
    }


    Zuerst initialisierst du die Laufvariable "i".
    Diese erhört sich bei jedem Durchgang um 1.
    MAX_PLAYERS ist die aktuelle Anzahl der Spieler auf deinem Server.
    i++ heißt, das die Laufvariable "i" um 1 erhöht wird.
    Das was in den Klammern steht wird bei jedem Durchgang durchgeführt.
    Das Script führt den Bereich in den Klammern jetzt so oft aus, soviel Spieler du am Server hast.
    Jetzt musst du nur noch in den Klammern mit der Enum-Spieler-Variable überprüfen, welche Nummer zu welcher Spieler ID gehört, da du die ID brauchst um dem Spieler mit "SendClientMessage" eine Nachricht zu senden.


    Hoffentlich hast du dies verstanden.

  • nya ein bisschen xD
    Aber wie suche ich nach der Variable der, den Spieler eingegeben hat...also zum beispiel Nummer 52675

  • Hier SMS:
    if(strcmp(cmd, "/sms", true) == 0)
    {
    if (Spieler[playerid][Handy] < 1)
    {
    SendClientMessage(playerid, Weiß, "Sie besitzen noch kein Handy.");
    return 1;
    }
    if(Telefonstatus[giveplayerid] > 0)
    {
    SendClientMessage(playerid, Weiß, "Dieser Spieler hat sein Handy Ausgeschalten.");
    return 1;
    }
    if(Spieler[playerid][Muted] == 1)
    {
    SendClientMessage(playerid, Gelb, "Da sie von einem Admin Gemutet wurden können sie nicht schreiben.");
    return 1;
    }
    if(Spieler[playerid][Guthaben] < 1){
    return SendClientMessage(playerid,Rot,"Sie haben nicht genug Guthaben auf ihrem Handy.");}
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, Weiß, "Benutze: /sms [ID] [SMS-Text]");
    return 1;
    }
    giveplayerid = strval(tmp);
    if (IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[256];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, Weiß, "Benutze: /sms [ID] [SMS-Text]");
    return 1;
    }
    format(string, sizeof(string), "SMS: %s Absender: %s (ID:%d)",(result),sendername,giveplayerid);
    SendClientMessage(giveplayerid, Gelb, string);
    format(string, sizeof(string), "Sms an(ID:%d) Text:(%s)",giveplayerid, (result));
    SendClientMessage(playerid, Grün, string);
    GameTextForPlayer(playerid, "SMS versaendet -1$ Guthaben", 1000, 1);
    Spieler[playerid][Guthaben] -= 1;
    return 1;
    }
    }
    }
    Das ist nen /sms und nun schau wie du Call machst da das nun leichter fallen dürfte wenn du was als Forlage hast.


    Mfg

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen