Вот кусочек кода, который мне кажется если слегка изменить
то спектаторы наконец смогут говорить !!! Фитча удобная... Сам я пока че-то не допираю че тут надо менять мб у когото есть какие-то идеи ?
то что надо прорубить это if (ismultip=2) and (OPT_NETSPECTATOR)
тут и так понятно, но что еще ?
Code
if (copy(s,0,1) = '\') or (copy(s,0,4) = 'say ') then begin
if ismultip = 0 then exit;
if (ismultip=2) and (OPT_NETSPECTATOR) then begin
addmessage('Spectators can''t chat.');
exit;
end;
if length(s) > $FF then s := copy(s, 1, $FF);
if (copy(s,1,1) = '\') then st := copy(ss,2,Length(ss));
if (copy(s,1,4) = 'say ') then st := copy(ss,5,Length(ss)-4);
kk := 0;
for i := 0 to 7 do if players[i] <> nil then if players[i].netobject = false then begin // find first active uzer.
ass := MSG_DISABLE;
MSG_DISABLE := false;
addmessage(players[i].netname+'^7^n: ^5'+ st);
MSG_DISABLE := ass;
kk := 1;
break;
end;
if not OPT_SV_DEDICATED then
if BD_Avail then DLL_ChatReceived(players[i].dxid, st);
if MATCH_DRECORD then begin
DData.type0 := DDEMO_CHATMESSAGE;
DData.gametic := gametic;
DData.gametime := gametime;
DemoStream.Write( DData, Sizeof(DData));
DNETCHATMessage.DXID := 0;
if kk = 1 then DNETCHATMessage.DXID := players[i].DXID;
DNETCHATMessage.messagelenght := length(st);
DemoStream.Write( DNETCHATMessage, Sizeof(DNETCHATMessage));
StrLCopy(Buff, pchar(st), length(st));
DemoStream.Write(buff, length(st));
end;
chatP := @buf;
addbyte(chatP, MMP_CHATMESSAGE);
if kk = 0 then begin // players wan not found.. it is dedicated.
addword(chatP, 0);//dedicated
addmessage('^%Dedicated^7: ^5'+ st);
end else
addword(chatP, players[i].dxid);
AddString(chatP,st);
msgsize := Length(st)+4;
if ismultip=1 then
mainform.BNETSendData2All (buf, MsgSize, 1) else
mainform.BNETSendData2HOST (buf, MsgSize, 1);
playsound(SND_talk,0,0);
exit;
end;