Hallo liebe community wie oben schon gesagt wird der ingame chat nicht mir sondern den anderen angezeigt und umgekehrt kann mir jmd helfen?
Danke im voraus!
public OnPlayerText(playerid, text[])
{
new string[128];
format(string,128,"%s sagt: %s",PlayerName(playerid),text);
for(new i = 0;i<MAX_PLAYERS;i ++)
{
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
if(IsPlayerInRangeOfPoint(i,20.0,X,Y,Z))
{
SendClientMessage(i,0xFFFFFFFF,string);
return 0;
}
}
return 1;
}
Chat wird nur für andere Player angezeigt
- [AS]MaSSiv
- Geschlossen
- Erledigt
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
-
-
Die einfachste Lösung wäre doch einfach noch ein SendClientMessage(playerid ...) zu machen.
Ich verstehe gerade auch nicht, wieso es dir nicht angezeigt wird. o.o
-
Also wenn du was schreibst, wird es jedem außer dir angezeigt, und wenn andere was schreiben, wird es euch allen, außer ihm selbst angezeigt?
-
Also wenn z.B einer was im Chat schreib kann nur er das lesen ich nicht wenn zb wir reloggen kann ich was schreiben dann sieht der andere das net,halt immer umgekehrt nach relog.
lg
-
Vermutlich der ID 0 Bug oder musst du mal Googln da steht was im Englischem BF
-
Entweder so:
public OnPlayerText(playerid, text[])
{
new string[128];
format(string,128,"%s sagt: %s",PlayerName(playerid),text);
for(new i = 0;i<MAX_PLAYERS;i ++)
{
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
if(IsPlayerInRangeOfPoint(i,20.0,X,Y,Z))
{
SendClientMessage(i,0xFFFFFFFF,string);
SendClientMessage(playerid,0xFFFFFFFF,string);
return 0;
}
}
return 1;
}oder du verwendest folgendes:
Das hier unter OnPlayerText
if (realchat)
{
for(new i = 0; i < GetMaxPlayers(); i++)
{
format(string, sizeof(string), "%s sagt: %s", SpielerName(playerid), text);
ProxDetector(20.0, playerid, string,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
return 0;
}
return false;
}oben zu den new's
new realchat = 1;und ganz unten:
forward ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5);
public ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
{
if(IsPlayerConnected(playerid))
{
new Float:posx, Float:posy, Float:posz;
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
GetPlayerPos(i, posx, posy, posz);
tempposx = (oldposx -posx);
tempposy = (oldposy -posy);
tempposz = (oldposz -posz);
if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
{
SendClientMessage(i, col1, string);
}
else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
{
SendClientMessage(i, col2, string);
}
else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
{
SendClientMessage(i, col3, string);
}
else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
{
SendClientMessage(i, col4, string);
}
else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
SendClientMessage(i, col5, string);
}
}
}
}
return true;
}Solltest du die Farben nicht Definiert haben:
ganz oben bei den Defines
#define COLOR_FADE1 0xE6E6E6E6
#define COLOR_FADE2 0xC8C8C8C8
#define COLOR_FADE3 0xAAAAAAAA
#define COLOR_FADE4 0x8C8C8C8C
#define COLOR_FADE5 0x6E6E6E6EAchso und dann noch SpielerName:
stock SpielerName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return name;
} -
wenn ich z.B das hier mache bekomt der,der was geschreiben hat 2 mal die message und ich wiedermal nicht
public OnPlayerText(playerid, text[])
{
new string[128];
format(string,128,"%s sagt: %s",PlayerName(playerid),text);
for(new i = 0;i<MAX_PLAYERS;i ++)
{
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
if(IsPlayerInRangeOfPoint(i,20.0,X,Y,Z))
{
SendClientMessage(i,0xFFFFFFFF,string);
SendClientMessage(playerid,0xFFFFFFFF,string);
return 0;
}
}
return 1;
} -
Kann es vielleicht daran liegen, dass du
i ++
statt
i++
schreibst?
Weiß es gerade nicht. :bGruß,
Neo. -
wenn ich z.B das hier mache bekomt der,der was geschreiben hat 2 mal die message und ich wiedermal nicht
public OnPlayerText(playerid, text[])
{
new string[128];
format(string,128,"%s sagt: %s",PlayerName(playerid),text);
for(new i = 0;i<MAX_PLAYERS;i ++)
{
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
if(IsPlayerInRangeOfPoint(i,20.0,X,Y,Z))
{
SendClientMessage(i,0xFFFFFFFF,string);
SendClientMessage(playerid,0xFFFFFFFF,string);
return 0;
}
}
return 1;
}
Hm, versucht mal die zweite Methode, ist ja alles bei was du brauchst.
Wenn du hilfe brauchst geb bescheid -
mach das letzte return 1 zu return 0
-
-
Danke an @xXManuelXx hat doch mit dem langen code geklappt und danke an die anderen für die hilfe
-Lg
-
breadfish.de
Hat das Thema geschlossen.