vadim20201
Дебютант
Привет форумчане, можете помочь?
У меня проблема, когда я пишу в чат сообщение пишется, но если рядом кто-то его видит то пишется оно 2 раза.
То есть если я стою и рядом 5 человек то оно пишется аж 5 раз в чат.
Прошу помогите, я ошибок не нашёл.
Вот всё что имеем:
public OnPlayerText(playerid, text[])
stock ProxDetectorChat(Float:radi, playerid, text[],col1,col2,col3,col4,col5)
У меня проблема, когда я пишу в чат сообщение пишется, но если рядом кто-то его видит то пишется оно 2 раза.
То есть если я стою и рядом 5 человек то оно пишется аж 5 раз в чат.
Прошу помогите, я ошибок не нашёл.
Вот всё что имеем:
public OnPlayerText(playerid, text[])
PHP:
if(strlen(text) < 93 && player_info[playerid][pCall] == false)
{
// if(GetPVarInt(playerid, "MASKON") == 1) ProetectorChat(25.0, playerid, text, 0xF5F5F5FF, 0xF5F5F5FF, 0xF5F5F5FF, 0xE6E6E6FF,0xB8B8B8FF);
ProetectorChat(25.0, playerid, text, 0xFFFFFFFF, 0xFFFFFFFF, 0xF5F5F5FF, 0xE6E6E6FF,0xB8B8B8FF);
if(Tazer[playerid] == true) ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
if(player_info[playerid][pEat] >= 1 || PlayerStartJob[playerid] == true) ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
{
ApplyAnimation(playerid, "PED", "IDLE_chat", 4.1, 0, 1, 1, 1, 1);
SetTimerEx("animchat", 3200, 0, "i", playerid);
SetPlayerChatBubble(playerid, text, 0x00ccffFF, 15, 7000);
anti_cheat[playerid][pFlood] = true;
}
}
PHP:
stock ProetectorChat(Float:radi, playerid, text[],col1,col2,col3,col4,col5)
{
if(IsPlayerConnected(playerid))
{
new mssg[128];
new Float:posx;new Float:posy;new Float:posz;new Float:oldposx;new Float:oldposy;new Float:oldposz;new Float:tempposx;new Float:tempposy;new Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
new pColor = GetPlayerColor(playerid) >>> 8;
foreach(new i: Player)
{
if(IsPlayerConnected(i))
{
if(player_info[i][pChat] == 3) continue;
if(GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(i))
{
//
switch(player_info[i][pChat])
{
case 1:
{
switch(player_info[i][pIDS])
{
case 1:
{
format(mssg, sizeof(mssg), "{%06x}%s(%d):{FFFFFF} %s", pColor, player_info[playerid][pName], playerid, text);
}
case 2:
{
format(mssg, sizeof(mssg), "{%06x}%s:{FFFFFF} %s", pColor, player_info[playerid][pName], text);
}
}
if(player_info[i][pNickCs] == 2)
{
format(mssg, sizeof(mssg), "%s", text);
}
}
case 2:
{
switch(player_info[i][pIDS])
{
case 1:
{
format(mssg, sizeof(mssg), " - %s {%06x}(%s)[%d]", text, pColor, player_info[playerid][pName], playerid);
}
case 2:
{
format(mssg, sizeof(mssg), " - %s {%06x}(%s)", text, pColor, player_info[playerid][pName]);
}
}
if(player_info[i][pNickCs] == 2)
{
format(mssg, sizeof(mssg), "%s", text);
}
}
case 3:
{
}
}
//
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))) SCM(i, col1, mssg);
else if(((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8))) SCM(i, col2, mssg);
else if(((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4))) SCM(i, col3, mssg);
else if(((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2))) SCM(i, col4, mssg);
else if(((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))) SCM(i, col5, mssg);
}
}
}
}
return 1;
}
Последнее редактирование модератором:
