if(IsPlayerConnected.. 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
  • Hallo zusammen,
    und zwar wollte ich fragen, ob man es irgendwie machen kann, wenn man den Namen vom Spieler in der Datei gespeichert hat, diesen ausliesst und dann im InGame eine Nachricht schicken kann.


    z.B.
    1.Datei -> dortdrin steht: Name=Hans
    2.Im Script wird durch ein Befehl eine Nachricht an den Besitzer dieser Datei gesendet. (Also man macht Ingaamz.B. /test, dann soll er eine Nachricht bekommen, wenn er Online ist.)
    3. Wie Fragt man ab, ob er Online ist?, Man hat ja die playerid nicht...


    MFG

  • ocmd:test(playerid, parmas[])
    {
    new name[MAX_PLAYER_NAME],pid,string[50],string2[50],string3[50];
    GetPlayerName(pid,name,sizeof(pid));
    format(string,sizeof(string),"Benutze den Befehl /test [ID]");
    if(sscanf(params,"d",pid))return SendClientMessage(playerid, RED, string);
    if(IsPlayerConnected(pid))
    {
    format(string2,sizeof(string2),"Ja %s ist Online (ID: %d)",name,pid);
    format(string3,sizeof(string3),"Spieler ist nicht Online");
    SendClientMessage(playerid,BLUE, string2);
    }
    else
    {
    SendClientMessage(playerid,RED, string3);
    }
    return 1;
    }


    Versuchs mal so

  • Dann erstell nach jedem Register eine Datei mit seinen Namen und der Inhalt:


    Text1:
    Text2:
    Text3:
    Text4:



    usw.. Dann wenn er die Nachrichten liest mit zz.B. /showtext werden alle nachrichten angezeigt per SendCleintMessage ..
    Dann werden sie gelöscht, so das neue Nachrichten für andere User da isnd..

  • Du musst eine Schleife durchlaufen lassen und die Namen überprüfen.


    Beispiel:



    if(strcmp("/test", cmdtext, true) == 0)
    {
    new player[] = "Hans";
    new curPlayer[MAX_PLAYER_NAME];

    for(new i = 0; i < GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    GetPlayerName(i, curPlayer, MAX_PLAYER_NAME);
    if(strcmp(player, curPlayer, true) == 0)
    {
    SendClientMessage(playerid, -1, "Ja, er ist online.");
    // Nachricht an ihn senden
    return 1;
    }
    }
    }


    SendClientMessage(playerid, -1, "Nein, er ist offline.");
    return 1;
    }

  • Wenn du sscanf hast, geht das leicht.


    ocmd:id(playerid, params[]) {
    new pID, string[128];
    if (sscanf(params, "u", pID)) return SendClientMessage(playerid, GRAU, "/id [ID/Username]"); // Kannst dort entweder den Spielernamen oder die ID eingeben.
    if (!IsPlayerConnected(pID)) return SendClientMessage(playerid, ROT, "Kein Spieler mit der angegebenen ID oder Usernamen ist online.");
    format(string, sizeof(string), "ID %i - %s", pID, SpielerName(pID));
    return SendClientMessage(playerid, GRAU, string);
    }


    Ganz leichte Abfrage ;)

    Die Macht etwas zu bewirken, ist in Dir. Du musst sie nur rauslassen


    cristiano-ronaldo-525-portugal-euro-2012-banner-wallpaper.jpg