/anrufen, /abnehmen, /auflegen

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
  • Hallo,
    ist dies ersteinmal überhaupt richtig?

    dcmd_anrufen(playerid,params[])
    {
    if(sscanf(params,"n",handynummer)) return SendClientMessage(playerid,Farberot,"/anrufen [Handynummer]");
    new str1[128],str2[128],anrufer[MAX_PLAYER_NAME],angerufener[MAX_PLAYER_NAME];
    format(str1,sizeof(str1),"*Riiing, Riiing* %s ruft dich an!",anrufer);
    SendClientMessage(pID,Handyfarbe,str1);
    format(str2,sizeof(str2),"*Düüüüt, Düüüüt* Du rufst %s an ...",anrufender);
    SendClientMessage(playerid,Handyfarbe,str2);
    PlayerInfo[playerid][ruftan] = 1;
    PlayerInfo[pID][wirdangerufen] = 1;
    }


    Wie sähe nun das /abnehmen aus?
    Eine Abfrage ob pID, bei /abnehmen dann playerid, angerufen wird, dann geht er ran ...
    Dann mach ich strings, damit der angerufene auch das des Anrufers lesen kann, mit ProxDetector.
    Aber kann mir das einer mal zeigen, wie das ganze ausschaut?

  • Zum das nur die pID abnehmen kann....


    if(pID == playerid) return SendClientMessage(playerid,weiß,"Dich hat keiner Angerufen");

    | Green Day - Nickelback - Rise Against - 3 Doors Down | \m/


  • Hallo,


    ich zeige dir mal wie man ein Handy System bastelt.
    Dieses ist zwar ungestestet sollte aber funktionieren.


    Zu PlayerInfo(pInfo) fügst du folgenes hinzu:


    [pwn]
    pHandy,
    pCalling,
    pHCash,
    pCallPlayerid,
    pHandyNr,



    Dies fügst du zu deinen Variabeln hinzu:



    new HandyTimer[MAX_PLAYERS];




    Diese Funktion benutzt du um den Spieler ein Handy mit einer Handy Nr zu geben:



    stock GivePlayerHandy(playerid)
    {
    new rand = 1000 + random(9999);
    PlayerInfo[playerid][pHandy] = 1;
    PlayerInfo[playerid][pHandyNr] = rand;
    return true;
    }


    Diese Abfrage benutzt du um abzufragen ob der Spieler ein Handy besitzt:



    if(PlayerInfo[playerid][pHandy] == 1)
    /*
    1 = Besitzt Handy
    0 = Besitzt kein Handy
    */


    Nun zu den Befehlen um den Spieler anzurufen, anzunehmen und um aufzulegen



    new String[128];
    if(strcmp(cmd, "/call", true) == 0)
    {
    if(PlayerInfo[playerid][pHandy] == 0)return SendClientMessage(playerid, Handyfarbe, "Info: Du besitzt kein Handy");
    if(PlayerInfo[playerid][pHCash] < 15)return SendClientMessage(playerid, Handyfarbe, "Info: Du besitzt kein Geld du benötigst mindestens: 15$ um diesen Anruf ausführen zu können.");


    tmp = strtok(cmdtext, idx);
    if(!tmp[0])return SendClientMessage(playerid, Handyfarbe, "Verwendung: /call [HandyNr]");
    new Nr = strval(tmp);

    for(new i = 0; i < MAX_PLAYERS; i ++)
    {
    if(!IsPlayerConnected(i))continue;

    if(PlayerInfo[i][pHandyNr] == Nr)
    {
    PlayerInfo[playerid][pCalling] = 1;
    PlayerInfo[i][pCalling] = 2;

    PlayerTimer[playerid] = SetTimerEx("Calling", 8000, false, "i", playerid);

    new pName[2][24];
    GetPlayerName(playerid, pName[0], 24);
    GetPlayerName(i, pName[1], 24);

    format(String, 128, "Info: %s ruft dich an...", pName[0]);
    SendClientMessage(i, Handyfarbe, String);
    format(String, 128, "Info: Du rufst %s an...", pName[1]);
    SendClientMessage(i, Handyfarbe, String);
    return true;
    }
    }
    SendClientMessage(playerid, Handyfarbe, "Info: Diese HandyNummer ist nicht vergeben.");
    return true;
    }
    if(strcmp(cmd, "/pickup", true) == 0)
    {
    if(PlayerInfo[playerid][pHandy] == 0)return SendClientMessage(playerid, Handyfarbe, "Info: Du besitzt kein Handy");
    if(PlayerInfo[playerid][pCalling] != 2)return SendClientMessage(playerid, Handyfarbe, "Dich ruft keiner an.");


    PlayerInfo[playerid][pCalling] = 3;
    PlayerInfo[PlayerInfo[playerid][pCallPlayerid]][pCalling] = 3;
    KillTimer(PlayerTimer[PlayerInfo[playerid][pCallPlayerid]]);
    PlayerTimer[PlayerInfo[playerid][pCallPlayerid]] = SetTimerEx("Calling", 60000, false, "i", PlayerInfo[playerid][pCallPlayerid]);
    SendClientMessage(playerid, Handyfarbe, "Du hast den Anruf angenommen.");
    SendClientMessage(PlayerInfo[pCallPlayerid], Handyfarbe, "Der Anruf wurde angenommen.");
    return true;
    }
    if(strcmp(cmd, "/hangup", true) == 0)
    {
    if(PlayerInfo[playerid][pHandy] == 0)return SendClientMessage(playerid, Handyfarbe, "Info: Du besitzt kein Handy");
    if(PlayerInfo[playerid][pCalling] != 3)return SendClientMessage(playerid, Handyfarbe, "Du Telefonierst mit keinem.");


    PlayerInfo[playerid][pCalling] = 0;
    PlayerInfo[PlayerInfo[playerid][pCallPlayerid]][pCalling] = 0;
    KillTimer(PlayerTimer[PlayerInfo[playerid][pCallPlayerid]]);
    KillTimer(PlayerTimer[playerid]);

    SendClientMessage(playerid, Handyfarbe, "Info: Du hast aufgelegt.");
    SendClientMessage(PlayerInfo[playerid][pCallPlayerid], Handyfarbe, "Die Gegenseite hat aufgelegt.");
    return true;
    }



    Dieses Callback fügst du mit in deinem Script ein:



    forward Calling(playerid);
    public Calling(playerid);
    {
    if(PlayerInfo[playerid][pCalling] == 1)
    {
    SendClientMessage(playerid, Handyfarbe, "Info: Der angerufene Antwortet nicht.");
    PlayerInfo[playerid][pCalling] = 0;
    return true;
    }
    if(PlayerInfo[playerid][pCalling] == 3)
    {
    PlayerInfo[playerid][pHCash] -= 15;
    if(PlayerInfo[playerid][pHCash] < 15)
    {
    SendClientMessage(playerid, Handyfarbe, "Dein Guthaben ist aufgebraucht.");
    SendClientMessage(PlayerInfo[playerid][pCallPlayerid], Handyfarbe, "Der Spieler legt auf.");


    PlayerInfo[playerid][pCalling] = 0;
    PlayerInfo[PlayerInfo[playerid][pCallPlayerid]][pCalling] = 0;
    }
    return true;
    }
    return true;
    }




    Unter OnPlayerText fügst du folgenes ein:

    new String[128];
    if(PlayerInfo[playerid][pCalling] == 3)
    {
    format(String, 128, "%s(Handy): %s", pName, text);
    SendClientMessage(PlayerInfo[playerid][pCallPlayerid], Handyfarbe, String);
    return 0;
    }



    MFG RFT (Wie gesagt es ist ungetestet und schnell geschrieben)


    //Edit: Ohh du benutzt ja dcmd muss ich dann in dcmd umschreiben wenn ich wieder da bin.

    RFT

  • Über den Commands



    new tmp[128];


    Die strtok Funktion ganz nach unten ins Script:



    stock strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }

    RFT

  • Danke dir. :o
    Soweit keine Errors, eher Warns in dem public "Calling" :o

    public Calling(playerid);
    {
    if(Player[playerid][pCalling] == 1)//1351
    {
    SendClientMessage(playerid, Handyfarbe, "Info: Der angerufene Antwortet nicht.");
    Player[playerid][pCalling] = 0;
    return true;//1355
    }

    if(Player[playerid][pCalling] == 3)//hier
    {
    Player[playerid][pHCash] -= 15;
    if(Player[playerid][pHCash] < 15)//hier
    {
    SendClientMessage(playerid, Handyfarbe, "Dein Guthaben ist aufgebraucht.");
    SendClientMessage(Player[playerid][pCallPlayerid], Handyfarbe, "Der Spieler legt auf.");


    Player[playerid][pCalling] = 0;
    Player[Player[playerid][pCallPlayerid]][pCalling] = 0;
    }
    return true;//hier...
    }

    return true;//hier
    }



    C:\Dokumente und Einstellungen\Peter Pan\Desktop\dmserver\gamemodes\selfi.pwn(1351) : error 010: invalid function or declaration
    C:\Dokumente und Einstellungen\Peter Pan\Desktop\dmserver\gamemodes\selfi.pwn(1355) : error 010: invalid function or declaration
    C:\Dokumente und Einstellungen\Peter Pan\Desktop\dmserver\gamemodes\selfi.pwn(1358) : error 010: invalid function or declaration
    C:\Dokumente und Einstellungen\Peter Pan\Desktop\dmserver\gamemodes\selfi.pwn(1361) : error 010: invalid function or declaration
    C:\Dokumente und Einstellungen\Peter Pan\Desktop\dmserver\gamemodes\selfi.pwn(1366) : error 010: invalid function or declaration
    C:\Dokumente und Einstellungen\Peter Pan\Desktop\dmserver\gamemodes\selfi.pwn(1369) : error 010: invalid function or declaration
    C:\Dokumente und Einstellungen\Peter Pan\Desktop\dmserver\gamemodes\selfi.pwn(1372) : error 010: invalid function or declaration