2 void sv_notice_join_think()
5 float argc = tokenizebyseparator(autocvar_sv_join_notices, "|");
9 for(i = argc - 1; i >= 0; --i)
10 sv_notice_to(self.owner, argv(i), autocvar_sv_join_notices_time, FALSE);
17 // to-do: make sv_join_notices support per-entry times
18 if(!autocvar_sv_join_notices || autocvar_sv_join_notices == "")
23 n.think = sv_notice_join_think;
24 n.nextthink = time + 1;
27 void sv_notice_to(entity _to, string _notice, float _howlong, float _modal)
30 WriteByte(MSG_ONE, SVC_TEMPENTITY);
31 WriteByte(MSG_ONE, TE_CSQC_SVNOTICE);
32 WriteString(MSG_ONE, _notice);
33 WriteLong(MSG_ONE, _howlong);
34 WriteByte(MSG_ONE, _modal);
37 void sv_notice_toall(string _notice, float _howlong, float _modal)
40 FOR_EACH_REALCLIENT(_head)
41 sv_notice_to(_head, _notice, _howlong, _modal);
57 _notice.classname = "sv_notice";
58 _notice.netname = strzone(ReadString());
59 _notice.alpha = ReadLong() + time;
60 _notice.skin = ReadByte();
69 _notes = findchain(classname, "sv_notice");
77 v2_x = vid_conwidth - (2 * M1);
78 v2_y = vid_conheight - (2 * M1);
80 drawfill(v1, v2, '0 0 0', 0.5, DRAWFLAG_NORMAL);
81 v1 = '1 1 0' * (M1 + M2);
82 v2_x = vid_conwidth - (2 * (M1 + M2));
83 v2_y = vid_conheight - (2 * (M1 + M2));
84 drawfill(v1, v2, '0.5 0.5 0.5', 0.5, DRAWFLAG_NORMAL);
87 #define OUT(s,z) drawcolorcodedstring(v3, s, '1 1 0' * z, 1, DRAWFLAG_NORMAL); v3_y += z + 4
89 OUT(_("^1Server notices:"), 32);
91 //drawcolorcodedstring(v1 + '5 5 0', "^1Server notices:", '32 32 0', 1, DRAWFLAG_NORMAL);
95 _notice = sprintf(_("^7%s (^3%d sec left)"), _notes.netname , rint(_notes.alpha - time));
101 if(_notes.alpha <= time)
103 _notes.think = SUB_Remove;
104 _notes.nextthink = time;
107 _notes = _notes.chain;