Kleines Problem beim 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
  • Hallo,
    und zwar habe ich ein Handysystem geschrieben, welches auch wunderbar funktioniert.
    Wenn jemand mit jemandem telefoniert soll dort stehen [Handy] Name sagt: Test.
    Grundsätzlich funktioniert es auch. Aber aus irgendeinem Grund bekommt man danach noch eine Nachricht mit Name: Text.


    Hier mal mein Public OnPlayerText bei dem das Problem auftritt:
    public OnPlayerText(playerid, text[])
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    new string[128],User[MAX_PLAYER_NAME];
    GetPlayerName(playerid,User,sizeof(User));
    if(playercall[playerid] == 1)
    {
    format(string,sizeof(string),"[Handy] %s sagt: %s",User,text);
    SendClientMessage(gespraechsteilnehmer[playerid],COLOR_CHAT,string);
    SendClientMessage(playerid,COLOR_CHAT,string);
    for(new i =0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(!IsPlayerInRangeOfPoint(i, 20, x, y, z)) continue;
    if(playerid == i)continue;
    SendClientMessage(i, COLOR_CHAT,string);
    }
    return 1;
    }
    format(string,sizeof(string),"%s sagt: %s",User,text);
    for(new i =0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(!IsPlayerInRangeOfPoint(i, 20, x, y, z)) continue;
    SendClientMessage(i, COLOR_CHAT,string);
    return 1;
    }
    return 0;
    }



    Hab echt keinen Plan woran es liegt :/


    /edit Formatierung bearbeitet

    • Offizieller Beitrag

    Oh ich sehe grad den Fehler, schau mal du hast 2 Schleifen, in denen genau das selbe steht. Beim Handysystem brauchst du aber auch theoretisch keine Schleife, da du ja die anrufer playerid in 'gespraechsteilnehmer' abgespeichert hast, somit löscht du die erste Schleife einfach.


  • Die Schleife ,die du entfernt hast habe ich gemacht ,damit Spieler die in der Nähe von dem telefonierenden sind auch sehen können was er schreibt.
    Ist ja in RL auch so, dass man das hören kann was jemand am Telefon sagt ,wenn man neben ihm steht.


    Ich probier gleich trotzdem mal ob es mit deiner Lösung funktioniert.
    Melde mich dann wieder

    • Offizieller Beitrag

    Achso, also so?


  • Hab es jetzt.
    Man sollte sich das Wiki richtig durchlesen ,dann enstehen solche Fehler auch nicht^^
    Durch das return 1; hat er die Standart-Formatierung benutzt.


    https://wiki.sa-mp.com/wiki/OnPlayerText


    return 0; // ignore the default text and send the custom one


    Mein Code sieht jetzt so aus:
    public OnPlayerText(playerid, text[])
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    new string[128],User[MAX_PLAYER_NAME];
    GetPlayerName(playerid,User,sizeof(User));
    if(playercall[playerid] == 1)
    {
    format(string,sizeof(string),"[Handy] %s sagt: %s",User,text);
    SendClientMessage(gespraechsteilnehmer[playerid],COLOR_CHAT,string);
    SendClientMessage(playerid,COLOR_CHAT,string);
    for(new i =0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(!IsPlayerInRangeOfPoint(i, 20, x, y, z)) continue;
    if(playerid == i)continue;
    if(gespraechsteilnehmer[playerid] == i)continue;
    SendClientMessage(i, COLOR_CHAT,string);
    }
    }
    else
    {
    format(string,sizeof(string),"%s sagt: %s",User,text);
    for(new i =0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(!IsPlayerInRangeOfPoint(i, 20, x, y, z)) continue;
    SendClientMessage(i, COLOR_CHAT,string);
    }
    }
    return 0;
    }


    Funktioniert auch alles einwandfrei.
    Danke trotzdem für die Hilfe.