1 |
#! perl |
2 |
|
3 |
# check client version and string for old clients and possibly issue warnings for them |
4 |
|
5 |
cf::attach_to_players |
6 |
on_login => sub { |
7 |
my ($pl) = @_; |
8 |
|
9 |
my $client = $pl->socket->client; |
10 |
|
11 |
my $is_cf = $client =~ /^(?:GTK|X11) (?:Unix|Win32) Client ([.0-9]+)/ |
12 |
? join "", map chr, split /\./, $1 |
13 |
: undef; |
14 |
|
15 |
my $is_jx = $client =~ /^JCrossclient 1.0 alpha-(\d+)/ |
16 |
? join "", map chr, split /\./, $1 |
17 |
: undef; |
18 |
|
19 |
if ($is_cf) { # && $is_cf lt v1.9.2) { |
20 |
$pl->ob->message ("(enabling workaround for client buffer overflow)", cf::NDI_RED | cf::NDI_UNIQUE); |
21 |
$pl->socket->buggy_mapscroll; |
22 |
} |
23 |
|
24 |
if ($is_jx) { |
25 |
$pl->ob->message ("(enabling buggy map scroll workaround)", cf::NDI_RED | cf::NDI_UNIQUE); |
26 |
$pl->socket->buggy_mapscroll; |
27 |
} |
28 |
|
29 |
if ($is_jx) { |
30 |
$pl->ob->message ("You are using a known to be buggy client (an alpha version, too). " |
31 |
. "If you encounter map freezes or other bugs, consider using a more stable client " |
32 |
. "such as CFPlus or gcfclient or gcfclient2"); |
33 |
} |
34 |
|
35 |
if ($is_cf && $is_cf lt v1.9.1) { |
36 |
$pl->ob->message (<<EOF, cf::NDI_RED | cf::NDI_UNIQUE); |
37 |
|
38 |
*** *** *** *** *** *** *** *** *** *** *** *** *** *** |
39 |
*** *** *** *** *** *** *** *** *** *** *** *** *** *** |
40 |
*** WARNING: Your client is BUGGY |
41 |
*** *** *** *** *** *** *** *** *** *** *** *** *** *** |
42 |
*** *** *** *** *** *** *** *** *** *** *** *** *** *** |
43 |
|
44 |
Your client ($client) is known to be buggy. Upgrading is highly recommended, otherwise you may experience crashes, strange lockups or other problems. |
45 |
|
46 |
EOF |
47 |
} |
48 |
}, |
49 |
; |
50 |
|