Handysystem

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
  • Guten Tag zusammen,
    Ich habe ein Problem mit dem Handysystem, das heißt wenn ich jemanden anrufe und er/sie annimmt sollte im Text
    format(string, sizeof(string), "%s sagt (Handy): %s", SpielerName(playerid), text);


    das auftauchen tut es aber nicht es taucht erst auf, wenn ich Auflege.



    ocmd:annehemen(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    new string[128];
    if(sSpieler[playerid][Handys] == 0)return SendClientMessage(playerid, ROT, "Du hast kein Handy!");
    if(sSpieler[playerid][Akku] == 0)return SendClientMessage(playerid, ROT, "Dein Handy Akku ist leer!");
    if (GetPVarInt(playerid, "Cuffed") == 1)return SendClientMessage(playerid, ROT, "Du kannst dein Handy nicht benutzen, während du Handschellen an hast!");
    if(Aktiv[playerid] == true)
    {
    SendClientMessage(playerid, ROT, "Du telefonierst bereits.");
    return 1;
    }
    if(wirdangerufen[playerid] == -1)
    {
    SendClientMessage(playerid, ROT, "Du wurdest nicht angerufen.");
    return 1;
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(wirdangerufen[playerid] >= 0)
    {
    if(i == Mobile[playerid])
    {
    Anderer[playerid] = wirdangerufen[playerid];
    Anderer[wirdangerufen[playerid]] = playerid;
    wirdangerufen[playerid] = 0;
    Mobile[i] = playerid;
    Aktiv[playerid] = true;
    Aktiv[i] = true;
    DeletePVar(i, "Anrufen");
    DeletePVar(playerid, "Anrufen");
    SendClientMessage(i,GELB, "Dein Anruf wurde angenommen, du kannst jetzt im Chat telefonieren. Tippe /auflegen um aufzulegen!");
    if(sSpieler[i][Vertrag] == 0)
    {
    sSpieler[i][Guthaben] -= 1;
    GameTextForPlayer(i, "~w~Guthaben ~r~-1", 3000, 1);
    }
    if(sSpieler[i][Vertrag] == 1)
    {
    SendClientMessage(playerid,GELB,"Da du einen Vertrag hast wird dir kein Guthaben abgezogen!");
    }
    new uhrname[20];
    if(sSpieler[playerid][Handys] == 5) { format(uhrname, sizeof(uhrname), "iPhone 4"); }
    else if(sSpieler[playerid][Handys] == 4) { format(uhrname, sizeof(uhrname), "iPhone 4S"); }
    else if(sSpieler[playerid][Handys] == 3) { format(uhrname, sizeof(uhrname), "Samsung Galaxy S4"); }
    else if(sSpieler[playerid][Handys] == 2) { format(uhrname, sizeof(uhrname), "Samsung Galaxy S3"); }
    else { format(uhrname,sizeof(uhrname), "iPhone 5"); }
    SetHandy(playerid);
    format(string, sizeof(string), "* %s geht an sein %s.", SpielerName(playerid), uhrname);
    ProxDetector(10.0, playerid, string, LILA,LILA,LILA,LILA,LILA);
    KillTimer(anruftimer[playerid]);
    return 1;


    }
    }
    }
    }
    return 1;
    }
    ocmd:auflegen(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    new caller = Anderer[playerid];
    if(sSpieler[playerid][Handys] == 0)
    {
    SendClientMessage(playerid, ROT, "Du hast kein Handy!");
    return 1;
    }
    if(Aktiv[playerid] == true)
    {
    SendClientMessage(playerid,GELB, "Du hast das Telefonat beendet.");
    Anderer[playerid] = -1;
    wirdangerufen[playerid] = -1;
    Aktiv[playerid] = false;
    ClearHandy(playerid);
    Mobile[playerid] = 255;
    if(caller > 0)
    {
    Mobile[caller] = 255;
    Aktiv[caller] = false;
    Anderer[caller] = -1;
    SendClientMessage(caller,GELB, "Der Gesprächspartner hat das Telefonat beendet.");
    ClearHandy(caller);
    }
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du befindest dich in keinem Telefonat!");
    }
    return 1;
    }


    OnPlayerText

    if(Mobile[playerid] >= 255)
    {
    format(string, sizeof(string), "%s sagt (Handy): %s", SpielerName(playerid), text);
    ProxDetector(8.0, playerid, string,LILA,LILA,LILA,LILA,LILA);
    if(Mobile[Mobile[playerid]] == playerid && IsPlayerConnected(Mobile[playerid]))
    {
    SendClientMessage(Mobile[playerid],GELB,string);
    }
    else
    {
    SendClientMessage(playerid, ROT,"TüT - TüT - Tüt die Leitung ist tod!");
    Mobile[playerid] = 0;
    }
    return 0;
    }


    Das >= habe ich auch schon in != geändert aber dann schreibe ich die ganze Zeit im Handychat. :(


    Ich hoffe jemand kann mir Helfen. Danke im voraus und ich wünsche jeden einen schönen Tag noch.

  • if(Mobile[playerid] != 255)
    Ist richtig.


    Du musst allerdings folgendes zusätzlich ändern:
    Mobile[playerid] = 0;
    zu:
    Mobile[playerid] = 255;


    Und, ganz wichtig, bei OnPlayerConnect bzw. beim Login:
    Mobile[playerid] = 255;
    Sonst ist die Variable initial 0, daher schreibst du dann immer im Handychat.

  • @Jeffry Danke. Ich habe das jetzt so



    if(Mobile[playerid] != 255)
    {
    format(string, sizeof(string), "%s sagt (Handy): %s", SpielerName(playerid), text);
    ProxDetector(8.0, playerid, string,LILA,LILA,LILA,LILA,LILA);
    if(Mobile[Mobile[playerid]] == playerid && IsPlayerConnected(Mobile[playerid]))
    {
    SendClientMessage(Mobile[playerid],GELB,string);
    }
    else
    {
    SendClientMessage(playerid, ROT,"TüT - TüT - Tüt die Leitung ist tod!");
    Mobile[playerid] = 255;
    }
    return 0;
    }


    und bei OnPlayerConnect
    Mobile[playerid] = 255;
    habe ich das.


    Allerdings schreibe ich beim Telefonieren nicht im Handychat, habe ich mich vertippt?

  • Setze vor if(Mobile[playerid] != 255) bitte mal einen print:
    printf("mobile: %d / playerid: %d", Mobile[playerid], playerid);
    Was gibt dieser Print aus, wenn du etwas im Handychat schreiben willst?


    Und bitte nach dem format noch:
    printf("text: %s", string);

  • Ich wurde angerufen.



    ocmd:anrufen(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    new nummer,string[150];
    if(sscanf(params,"d",nummer))return SendClientMessage(playerid, WEIS,"Befehl: /anrufen [Nummer]");
    if(sSpieler[playerid][Handys] == 0)return SendClientMessage(playerid,GRAU,"Du hast kein Handy!");
    if(GetPVarInt(playerid, "HandyStatus") == 0)return SendClientMessage(playerid, ROT, "Dein Handy ist aus bitte schalte es zuerst ein!");
    if(sSpieler[playerid][Akku] == 0)return SendClientMessage(playerid, ROT, "Dein Handy Akku ist leer!");
    if(sSpieler[playerid][Guthaben] <= 0 && sSpieler[playerid][Vertrag] == 0)return SendClientMessage(playerid, ROT, "Du hast kein Guthaben mehr auf deinem Handy!");
    if(GetPVarInt(playerid,"Mute") != 0)return SendClientMessage(playerid,GRAU,"Du kannst nicht Reden!");
    if(GetPVarInt(playerid, "Cuffed") == 1)return SendClientMessage(playerid, ROT, "Du kannst nicht telefonieren während du Handschellen an hast!");
    if(GetPVarInt(playerid, "Anrufen") > 0)return SendClientMessage(playerid, ROT, "Du versuchst gerade schon jemanden anzurufen!");
    if(Aktiv[playerid] == true)return SendClientMessage(playerid,ROT,"Du bist schon am telefonieren!");
    if(nummer == sSpieler[playerid][Handynummer])return SendClientMessage(playerid, ROT, "Du kannst dich nicht selber anrufen!");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(Handy[i][Nummer] == nummer)
    {
    if(sSpieler[i][Handys] == 0)return SendClientMessage(playerid, ROT, "Du kannst den Spieler nicht anrufen er besitzt kein Handy!");
    if(GetPVarInt(i,"Mute") != 0)return SendClientMessage(playerid,GRAU,"Du kannst nicht Reden!");
    if(sSpieler[i][Akku] == 0)return SendClientMessage(playerid, ROT, "Du kannst den Spieler nicht anrufen da sein Handy Akku leer ist!");
    if(GetPVarInt(i, "HandyStatus") == 0)return SendClientMessage(playerid, ROT, "Du kannst den Spieler nicht anrufen da sein Handy aus ist!");
    if(Mobile[i] == 255)
    {
    Mobile[i] = playerid;
    SetPVarInt(playerid, "Anrufen", 1);
    SetTimerEx("Anruf", 22073, false, "d", playerid);
    new uhrname[20];
    if(sSpieler[playerid][Handys] == 5) { format(uhrname, sizeof(uhrname), "iPhone 4"); }
    else if(sSpieler[playerid][Handys] == 4) { format(uhrname, sizeof(uhrname), "iPhone 4S"); }
    else if(sSpieler[playerid][Handys] == 3) { format(uhrname, sizeof(uhrname), "Samsung Galaxy S4"); }
    else if(sSpieler[playerid][Handys] == 2) { format(uhrname, sizeof(uhrname), "Samsung Galaxy S3"); }
    else { format(uhrname,sizeof(uhrname), "iPhone 5"); }
    format(string, sizeof(string), "* %s nimmt sein %s raus.", SpielerName(playerid), uhrname);
    ProxDetector(10.0, playerid, string, LILA,LILA,LILA,LILA,LILA);
    SetPVarInt(playerid, "Anrufen", 1);
    anruftimer[playerid] = SetTimerEx("Anruf", 15737, false, "i", playerid);
    format(string, sizeof(string), "Dein Handy klingelt. Tippe /annehmen. Anrufer: %s", SpielerName(playerid));
    SendClientMessage(i, GELB, string);
    if(sSpieler[playerid][Handys] == 5) { format(uhrname, sizeof(uhrname), "iPhone 4"); }
    else if(sSpieler[playerid][Handys] == 4) { format(uhrname, sizeof(uhrname), "iPhone 4S"); }
    else if(sSpieler[playerid][Handys] == 3) { format(uhrname, sizeof(uhrname), "Samsung Galaxy S4"); }
    else if(sSpieler[playerid][Handys] == 2) { format(uhrname, sizeof(uhrname), "Samsung Galaxy S3"); }
    else { format(uhrname,sizeof(uhrname), "iPhone 5"); }
    format(string, sizeof(string), "* %s's %s klingelt.", SpielerName(i),uhrname);
    ProxDetector(8.0, i, string, LILA,LILA,LILA,LILA,LILA);
    SetHandy(playerid);
    wirdangerufen[i] = playerid;
    }
    else
    {
    SendClientMessage(playerid,GELB,"Tüt - Tüt - Tüt kein Anschluss unter dieser Nummer!");
    ClearHandy(playerid);
    SetPVarInt(playerid, "Anrufen", 0);
    return 1;
    }
    }
    }
    }
    return 1;
    }


  • @Jeffry Jetzt schreibe ich beim Telefonieren im Handychat und wenn ich Auflege schreibe ich wieder im normalen Chat, Danke dir :thumbup: .


    Ich habe noch ein 2 Problem was mit dem Handysystem zu tun hat. Ich habe Telefonzellen verteilt und wenn ich versuche jemanden anzurufen sagt der mir, das der angegebene Spieler kein Handy hat, dabei hat er aber eins.




    if(dialogid == TELEFONZELLE)
    {
    new nummer,string[150];
    new uhrname[20];
    if(response)
    {
    if(sSpieler[playerid][Handynummer] == strval(inputtext))
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(Handy[i][Nummer] == nummer)
    {
    if(sSpieler[i][Handys] == 0)return SendClientMessage(playerid, ROT, "Du kannst den Spieler nicht anrufen er besitzt kein Handy!");
    if(GetPVarInt(i,"Mute") != 0)return SendClientMessage(playerid,GRAU,"Du kannst nicht Reden!");
    if(sSpieler[i][Akku] == 0)return SendClientMessage(playerid, ROT, "Du kannst den Spieler nicht anrufen da sein Handy Akku leer ist!");
    if(GetPVarInt(i, "HandyStatus")== 0)return SendClientMessage(playerid, ROT, "Du kannst den Spieler nicht anrufen da sein Handy aus ist!");
    anruftimer[playerid] = SetTimerEx("Anruf", 15737, false, "i", playerid);
    format(string, sizeof(string), "Dein Handy klingelt. Tippe /annehmen. Anrufer: %s", SpielerName(playerid));
    SendClientMessage(i, GELB, string);
    if(sSpieler[playerid][Handys] == 5) { format(uhrname, sizeof(uhrname), "iPhone 4"); }
    else if(sSpieler[playerid][Handys] == 4) { format(uhrname, sizeof(uhrname), "iPhone 4S"); }
    else if(sSpieler[playerid][Handys] == 3) { format(uhrname, sizeof(uhrname), "Samsung Galaxy S4"); }
    else if(sSpieler[playerid][Handys] == 2) { format(uhrname, sizeof(uhrname), "Samsung Galaxy S3"); }
    else { format(uhrname,sizeof(uhrname), "iPhone 5"); }
    format(string, sizeof(string), "* %s's %s klingelt.", SpielerName(i),uhrname);
    ProxDetector(8.0, i, string, LILA,LILA,LILA,LILA,LILA);
    SetHandy(playerid);
    wirdangerufen[i] = playerid;
    }
    }
    }
    else
    {
    SendClientMessage(playerid,ROT,"Falsche Nummer!");
    ShowPlayerDialog(playerid,TELEFONZELLE,DIALOG_STYLE_INPUT,"Telefonzelle","Gebe die Nummer ein die du Anrufen willst:","Wählen","Abbrechen");
    }
    }
    }


    Das == 0 hatte ich auch schon geändert in < 1 das hatte leider auch nicht funktioniert.


    Ich hoffe du kannst mir auch dabei helfen.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ok Danke für die Erklärung, Ich habe das jetzt so und es passiert aber nichts wenn ich die Nummer eingebe.



    if(dialogid == TELEFONZELLE)
    {
    new nummer,string[150];
    new uhrname[20];
    if(response)
    {
    nummer = strval(inputtext);
    if(sSpieler[playerid][Handynummer] == strval(inputtext))
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(Handy[i][Nummer] == nummer)
    {
    if(sSpieler[i][Handys] == 0)return SendClientMessage(playerid, ROT, "Du kannst den Spieler nicht anrufen er besitzt kein Handy!");
    if(GetPVarInt(i,"Mute") != 0)return SendClientMessage(playerid,GRAU,"Du kannst nicht Reden!");
    if(sSpieler[i][Akku] == 0)return SendClientMessage(playerid, ROT, "Du kannst den Spieler nicht anrufen da sein Handy Akku leer ist!");
    if(GetPVarInt(i, "HandyStatus")== 0)return SendClientMessage(playerid, ROT, "Du kannst den Spieler nicht anrufen da sein Handy aus ist!");
    anruftimer[playerid] = SetTimerEx("Anruf", 15737, false, "i", playerid);
    format(string, sizeof(string), "Dein Handy klingelt. Tippe /annehmen. Anrufer: %s", SpielerName(playerid));
    SendClientMessage(i, GELB, string);
    if(sSpieler[playerid][Handys] == 5) { format(uhrname, sizeof(uhrname), "iPhone 4"); }
    else if(sSpieler[playerid][Handys] == 4) { format(uhrname, sizeof(uhrname), "iPhone 4S"); }
    else if(sSpieler[playerid][Handys] == 3) { format(uhrname, sizeof(uhrname), "Samsung Galaxy S4"); }
    else if(sSpieler[playerid][Handys] == 2) { format(uhrname, sizeof(uhrname), "Samsung Galaxy S3"); }
    else { format(uhrname,sizeof(uhrname), "iPhone 5"); }
    format(string, sizeof(string), "* %s's %s klingelt.", SpielerName(i),uhrname);
    ProxDetector(8.0, i, string, LILA,LILA,LILA,LILA,LILA);
    SetHandy(playerid);
    wirdangerufen[i] = playerid;
    }
    }
    }
    else
    {
    SendClientMessage(playerid,ROT,"Falsche Nummer!");
    ShowPlayerDialog(playerid,TELEFONZELLE,DIALOG_STYLE_INPUT,"Telefonzelle","Gebe die Nummer ein die du Anrufen willst:","Wählen","Abbrechen");
    }
    }
    }

  • Die Abfrage habe ich entfernt allerdings tut sich immer noch nichts. Ich glaube ich bin nicht in der Lage das zum Laufen zu bekommen ;(



    if(dialogid == TELEFONZELLE)
    {
    new nummer,string[150];
    new uhrname[20];
    if(response)
    {
    nummer = strval(inputtext);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(Handy[i][Nummer] == nummer)
    {
    if(sSpieler[i][Handys] == 0)return SendClientMessage(playerid, ROT, "Du kannst den Spieler nicht anrufen er besitzt kein Handy!");
    if(GetPVarInt(i,"Mute") != 0)return SendClientMessage(playerid,GRAU,"Du kannst nicht Reden!");
    if(sSpieler[i][Akku] == 0)return SendClientMessage(playerid, ROT, "Du kannst den Spieler nicht anrufen da sein Handy Akku leer ist!");
    if(GetPVarInt(i, "HandyStatus")== 0)return SendClientMessage(playerid, ROT, "Du kannst den Spieler nicht anrufen da sein Handy aus ist!");
    anruftimer[playerid] = SetTimerEx("Anruf", 15737, false, "i", playerid);
    format(string, sizeof(string), "Dein Handy klingelt. Tippe /annehmen. Anrufer: %s", SpielerName(playerid));
    SendClientMessage(i, GELB, string);
    if(sSpieler[playerid][Handys] == 5) { format(uhrname, sizeof(uhrname), "iPhone 4"); }
    else if(sSpieler[playerid][Handys] == 4) { format(uhrname, sizeof(uhrname), "iPhone 4S"); }
    else if(sSpieler[playerid][Handys] == 3) { format(uhrname, sizeof(uhrname), "Samsung Galaxy S4"); }
    else if(sSpieler[playerid][Handys] == 2) { format(uhrname, sizeof(uhrname), "Samsung Galaxy S3"); }
    else { format(uhrname,sizeof(uhrname), "iPhone 5"); }
    format(string, sizeof(string), "* %s's %s klingelt.", SpielerName(i),uhrname);
    ProxDetector(8.0, i, string, LILA,LILA,LILA,LILA,LILA);
    SetHandy(playerid);
    wirdangerufen[i] = playerid;
    }
    }
    }
    }

  • Beitrag von Fabian_DeSanta ()

    Dieser Beitrag wurde von Eddy aus folgendem Grund gelöscht: Spam ().