-Upd configure.in / configure

--add --enable-warn=extra to show -Wconversion issues
--move -Wno-switch from prod only to all case 
-Update packet_db thx (TTest)
--fix index typo for itemlistwindowselected(all),cashshopbuy(2010-11-24 => v26-30, 2012-04-10 => v30-34) bugreport:7723
-Add utils::date2version (lookup a version with a date for later usage)
-Fix missing revert part in mmo_send_char bugreport:7734
-Merge little herc change:
--fix possible mapcrash in SCB_MATK with SC_RECOGNIZEDSPELL and change status->matk_min calculation order to speed up thing
--add OFFICIAL_WALKPATH exception for BL_NPC

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17367 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
glighta 2013-06-15 15:53:15 +00:00
parent 9288d3e20b
commit 50ded53db6
8 changed files with 186 additions and 84 deletions

41
configure vendored
View File

@ -1,5 +1,5 @@
#! /bin/sh #! /bin/sh
# From configure.in Revision: 17181 . # From configure.in Revision: 17342 .
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69. # Generated by GNU Autoconf 2.69.
# #
@ -1325,7 +1325,7 @@ Optional Features:
--enable-debug[=ARG] Compiles extra debug code. (disabled by default) --enable-debug[=ARG] Compiles extra debug code. (disabled by default)
(available options: yes, no, gdb) (available options: yes, no, gdb)
--enable-warn[=ARG] Compiles with warnings. (disabled by default) --enable-warn[=ARG] Compiles with warnings. (disabled by default)
(available options: yes, no) (available options: yes, no, extra)
--enable-buildbot[=ARG] (available options: yes, no) --enable-buildbot[=ARG] (available options: yes, no)
--enable-rdtsc Uses rdtsc as timing source (disabled by default) --enable-rdtsc Uses rdtsc as timing source (disabled by default)
Enable it when you've timing issues. (For example: Enable it when you've timing issues. (For example:
@ -3479,6 +3479,7 @@ if test "${enable_warn+set}" = set; then :
case $enableval in case $enableval in
"no");; "no");;
"yes");; "yes");;
"extra");;
*) as_fn_error $? "invalid argument --enable-warn=$enableval... stopping" "$LINENO" 5;; *) as_fn_error $? "invalid argument --enable-warn=$enableval... stopping" "$LINENO" 5;;
esac esac
@ -4958,17 +4959,17 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"; then : if ac_fn_c_try_compile "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; } $as_echo "yes" >&6; }
PROD_WARN="$PROD_WARN -Wno-switch"
else else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; } $as_echo "no" >&6; }
CFLAGS="$OLD_CFLAGS"
fi fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
CFLAGS="$OLD_CFLAGS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -fPIC" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -fPIC" >&5
$as_echo_n "checking whether $CC supports -fPIC... " >&6; } $as_echo_n "checking whether $CC supports -fPIC... " >&6; }
@ -5020,6 +5021,31 @@ $as_echo "no" >&6; }
fi fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#
# check if support conversion check
#
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wconversion" >&5
$as_echo_n "checking whether $CC supports -Wconversion... " >&6; }
OLD_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Wconversion"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int foo;
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
EXTRA_WARN="-Wconversion"
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
CFLAGS="$OLD_CFLAGS"
############################################################################### ###############################################################################
# Check for libraries and header files. # Check for libraries and header files.
@ -5177,6 +5203,9 @@ case $enable_warn in
"yes") "yes")
CFLAGS="$CFLAGS" CFLAGS="$CFLAGS"
;; ;;
"extra")
CFLAGS="$CFLAGS $EXTRA_WARN"
;;
esac esac
# #
@ -6119,8 +6148,8 @@ else
$as_echo "no" >&6; } $as_echo "no" >&6; }
fi fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: PROD_WARN= $PROD_WARN" >&5 #AC_MSG_NOTICE([PROD_WARN= $PROD_WARN])
$as_echo "$as_me: PROD_WARN= $PROD_WARN" >&6;} #AC_MSG_NOTICE([EXTRA_WARN= $EXTRA_WARN])
{ $as_echo "$as_me:${as_lineno-$LINENO}: Configure finish, CFLAG= $CFLAGS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: Configure finish, CFLAG= $CFLAGS" >&5
$as_echo "$as_me: Configure finish, CFLAG= $CFLAGS" >&6;} $as_echo "$as_me: Configure finish, CFLAG= $CFLAGS" >&6;}
############################################################################### ###############################################################################

View File

@ -85,7 +85,7 @@ AC_ARG_ENABLE(
[--enable-warn@<:@=ARG@:>@], [--enable-warn@<:@=ARG@:>@],
[ [
Compiles with warnings. (disabled by default) Compiles with warnings. (disabled by default)
(available options: yes, no) (available options: yes, no, extra)
] ]
), ),
[ [
@ -93,6 +93,7 @@ AC_ARG_ENABLE(
case $enableval in case $enableval in
"no");; "no");;
"yes");; "yes");;
"extra");;
*) AC_MSG_ERROR([[invalid argument --enable-warn=$enableval... stopping]]);; *) AC_MSG_ERROR([[invalid argument --enable-warn=$enableval... stopping]]);;
esac esac
], ],
@ -120,7 +121,7 @@ AC_ARG_ENABLE(
) )
# #
# RDTSC as Tick Source # RDTSC as Tick Source
# #
AC_ARG_ENABLE( AC_ARG_ENABLE(
[rdtsc], [rdtsc],
@ -131,7 +132,7 @@ AC_ARG_ENABLE(
Enable it when you've timing issues. Enable it when you've timing issues.
(For example: in conjunction with XEN or Other Virtualization mechanisms) (For example: in conjunction with XEN or Other Virtualization mechanisms)
Note: Note:
Please ensure that you've disabled dynamic CPU-Frequencys, such as power saving options. Please ensure that you've disabled dynamic CPU-Frequencys, such as power saving options.
(On the most modern Dedicated Servers cpufreq is preconfigured, see your distribution's manual (On the most modern Dedicated Servers cpufreq is preconfigured, see your distribution's manual
@ -223,9 +224,9 @@ AC_ARG_WITH(
), ),
[ [
if test "$withval" == "no"; then if test "$withval" == "no"; then
CFLAGS="$CFLAGS -DMAXCONN=16384" CFLAGS="$CFLAGS -DMAXCONN=16384"
else else
if ! test "$withval" -ge 0 -o "$withval" -lt 0 2>&- ; then if ! test "$withval" -ge 0 -o "$withval" -lt 0 2>&- ; then
AC_MSG_ERROR([Invalid argument --with-maxconn=$withval ... stopping]) AC_MSG_ERROR([Invalid argument --with-maxconn=$withval ... stopping])
else else
@ -389,7 +390,7 @@ if test "$enable_64bit" = "no" ; then
fi fi
# #
# check if we're producing 32bit code - so well produce binarys for at least i686 (speedup: cmovs, and cmpchg8 support) # check if we're producing 32bit code - so well produce binarys for at least i686 (speedup: cmovs, and cmpchg8 support)
# #
AC_MSG_CHECKING([whether $CC produces 32bit code]) AC_MSG_CHECKING([whether $CC produces 32bit code])
@ -414,10 +415,10 @@ AC_RUN_IFELSE(
) )
# #
# Check if CC supports __thread attribute (Thread Local Storage) # Check if CC supports __thread attribute (Thread Local Storage)
# (Usually our OSX friends 're lacking support of it in older llvm versions ..) # (Usually our OSX friends 're lacking support of it in older llvm versions ..)
# #
AC_MSG_CHECKING([whether $CC supports __thread specifier (TLS)]) AC_MSG_CHECKING([whether $CC supports __thread specifier (TLS)])
AC_RUN_IFELSE( AC_RUN_IFELSE(
[ [
@ -425,7 +426,7 @@ AC_RUN_IFELSE(
int main(int argc, char **argv){ int main(int argc, char **argv){
g_Test = 0; g_Test = 0;
return g_Test; return g_Test;
} }
], ],
[ [
@ -509,7 +510,7 @@ AC_COMPILE_IFELSE(
) )
], ],
[ [
AC_MSG_RESULT([no]) AC_MSG_RESULT([no])
] ]
) )
CFLAGS="$OLD_CFLAGS" CFLAGS="$OLD_CFLAGS"
@ -521,13 +522,13 @@ CFLAGS="$CFLAGS -Wno-switch"
AC_COMPILE_IFELSE( AC_COMPILE_IFELSE(
[int foo;], [int foo;],
[ AC_MSG_RESULT([yes]) [ AC_MSG_RESULT([yes])
PROD_WARN="$PROD_WARN -Wno-switch"
], ],
[ [
AC_MSG_RESULT([no]) AC_MSG_RESULT([no])
CFLAGS="$OLD_CFLAGS"
] ]
) )
CFLAGS="$OLD_CFLAGS"
AC_MSG_CHECKING([whether $CC supports -fPIC]) AC_MSG_CHECKING([whether $CC supports -fPIC])
OLD_CFLAGS="$CFLAGS" OLD_CFLAGS="$CFLAGS"
@ -561,6 +562,22 @@ AC_COMPILE_IFELSE(
] ]
) )
#
# check if support conversion check
#
AC_MSG_CHECKING([whether $CC supports -Wconversion])
OLD_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Wconversion"
AC_COMPILE_IFELSE(
[int foo;],
[
AC_MSG_RESULT([yes])
EXTRA_WARN="-Wconversion"
],
[AC_MSG_RESULT([no])]
)
CFLAGS="$OLD_CFLAGS"
############################################################################### ###############################################################################
# Check for libraries and header files. # Check for libraries and header files.
@ -648,7 +665,10 @@ case $enable_warn in
"yes") "yes")
CFLAGS="$CFLAGS" CFLAGS="$CFLAGS"
;; ;;
esac "extra")
CFLAGS="$CFLAGS $EXTRA_WARN"
;;
esac
# #
# Buildbot # Buildbot
@ -727,7 +747,7 @@ if test "$ac_cv_search_clock_gettime" != "no" ; then
#include <sys/time.h> #include <sys/time.h>
#include <time.h> #include <time.h>
#include <unistd.h> #include <unistd.h>
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
struct timespec tval; struct timespec tval;
@ -807,7 +827,7 @@ AC_SUBST([MYSQL_LIBS])
# #
# PCRE library (optional) # PCRE library (optional)
# #
PCRE_LIBS="" PCRE_LIBS=""
PCRE_CFLAGS="" PCRE_CFLAGS=""
@ -815,7 +835,7 @@ if test "$want_pcre" = "no" ; then
AC_MSG_NOTICE([ignoring PCRE (optional)]) AC_MSG_NOTICE([ignoring PCRE (optional)])
else else
host_os="`uname`" host_os="`uname`"
if test "$host_os" = "FreeBSD" ; then if test "$host_os" = "FreeBSD" ; then
if test -z "$PCRE_HOME" ; then PCRE_HOME="/usr/local"; fi if test -z "$PCRE_HOME" ; then PCRE_HOME="/usr/local"; fi
fi fi
if test -z "$PCRE_HOME" ; then if test -z "$PCRE_HOME" ; then
@ -895,7 +915,8 @@ else
AC_MSG_RESULT([no]) AC_MSG_RESULT([no])
fi fi
AC_MSG_NOTICE([PROD_WARN= $PROD_WARN]) #AC_MSG_NOTICE([PROD_WARN= $PROD_WARN])
#AC_MSG_NOTICE([EXTRA_WARN= $EXTRA_WARN])
AC_MSG_NOTICE([Configure finish, CFLAG= $CFLAGS]) AC_MSG_NOTICE([Configure finish, CFLAG= $CFLAGS])
############################################################################### ###############################################################################
AC_OUTPUT AC_OUTPUT

View File

@ -1416,7 +1416,7 @@ packet_ver: 25
//2009-08-18aRagexeRE //2009-08-18aRagexeRE
0x07e3,6 0x07e3,6
0x07e4,-1,itemlistwindowselected,2:4:8 0x07e4,-1,itemlistwindowselected,2:4:8:12
0x07e6,8 0x07e6,8
//2009-08-25aRagexeRE //2009-08-25aRagexeRE
@ -1612,7 +1612,7 @@ packet_ver: 25
//2010-11-24aRagexeRE //2010-11-24aRagexeRE
packet_ver: 26 packet_ver: 26
0x0288,-1,cashshopbuy,2:4:8:10 0x0288,-1,cashshopbuy,2:4:6:10
0x0436,19,wanttoconnection,2:6:10:14:18 0x0436,19,wanttoconnection,2:6:10:14:18
0x035f,5,walktoxy,2 0x035f,5,walktoxy,2
0x0360,6,ticksend,2 0x0360,6,ticksend,2
@ -1658,7 +1658,7 @@ packet_ver: 28
0x083c,19,wanttoconnection,2:6:10:14:18 0x083c,19,wanttoconnection,2:6:10:14:18
0x08aa,7,actionrequest,2:6 0x08aa,7,actionrequest,2:6
0x02c4,10,useskilltoid,2:4:6 0x02c4,10,useskilltoid,2:4:6
0x0811,-1,itemlistwindowselected,2:4:8 0x0811,-1,itemlistwindowselected,2:4:8:12
0x890,8 0x890,8
0x08a5,18,bookingregreq,2:4:6 0x08a5,18,bookingregreq,2:4:6
0x0835,-1,reqopenbuyingstore,2:4:8:9:89 0x0835,-1,reqopenbuyingstore,2:4:8:9:89
@ -1689,7 +1689,7 @@ packet_ver:29
0x0929,26,partyinvite2,2 0x0929,26,partyinvite2,2
0x0885,7,actionrequest,2:6 0x0885,7,actionrequest,2:6
0x0889,10,useskilltoid,2:4:6 0x0889,10,useskilltoid,2:4:6
0x0870,-1,itemlistwindowselected,2:4:8 0x0870,-1,itemlistwindowselected,2:4:8:12
//0x0926,18,bookingregreq,2:4:6 //0x0926,18,bookingregreq,2:4:6
0x0815,-1,reqopenbuyingstore,2:4:8:9:89 0x0815,-1,reqopenbuyingstore,2:4:8:9:89
0x0817,2,reqclosebuyingstore,0 0x0817,2,reqclosebuyingstore,0
@ -1707,13 +1707,13 @@ packet_ver: 30
0x089c,26,friendslistadd,2 0x089c,26,friendslistadd,2
0x0885,5,hommenu,2:4 0x0885,5,hommenu,2:4
0x0961,36,storagepassword,2:4:20 0x0961,36,storagepassword,2:4:20
0x0288,-1,cashshopbuy,2:4:8:10 0x0288,-1,cashshopbuy,2:4:6:10
0x091c,26,partyinvite2,2 0x091c,26,partyinvite2,2
0x094b,19,wanttoconnection,2:6:10:14:18 0x094b,19,wanttoconnection,2:6:10:14:18
0x0369,7,actionrequest,2:6 0x0369,7,actionrequest,2:6
0x083c,10,useskilltoid,2:4:6 0x083c,10,useskilltoid,2:4:6
0x0439,8,useitem,2:4 0x0439,8,useitem,2:4
0x0945,-1,itemlistwindowselected,2:4:8 0x0945,-1,itemlistwindowselected,2:4:8:12
0x0815,-1,reqopenbuyingstore,2:4:8:9:89 0x0815,-1,reqopenbuyingstore,2:4:8:9:89
0x0817,2,reqclosebuyingstore,0 0x0817,2,reqclosebuyingstore,0
0x0360,6,reqclickbuyingstore,2 0x0360,6,reqclickbuyingstore,2
@ -1769,7 +1769,7 @@ packet_ver:31
0x08A8,36,storagepassword,2:4:20 0x08A8,36,storagepassword,2:4:20
0x0802,26,partyinvite2,2 0x0802,26,partyinvite2,2
0x022D,19,wanttoconnection,2:6:10:14:18 0x022D,19,wanttoconnection,2:6:10:14:18
0x0281,-1,itemlistwindowselected,2:4:8 0x0281,-1,itemlistwindowselected,2:4:8:12
0x035F,6,ticksend,2 0x035F,6,ticksend,2
0x0202,5,changedir,2:4 0x0202,5,changedir,2:4
0x07E4,6,takeitem,2 0x07E4,6,takeitem,2
@ -1808,7 +1808,7 @@ packet_ver: 33
packet_ver: 34 packet_ver: 34
0x014f,6,guildrequestinfo,2 0x014f,6,guildrequestinfo,2
0x01fd,15,repairitem,2:4:6:7:9:11:13 0x01fd,15,repairitem,2:4:6:7:9:11:13
//0x0281,-1,itemlistwindowselected,2:4:8 //0x0281,-1,itemlistwindowselected,2:4:8:12
0x035f,6,reqclickbuyingstore,2 0x035f,6,reqclickbuyingstore,2
0x0363,6,ticksend,2 0x0363,6,ticksend,2
0x0365,12,searchstoreinfolistitemclick,2:6:10 0x0365,12,searchstoreinfolistitemclick,2:6:10
@ -1821,7 +1821,7 @@ packet_ver: 34
0x084b,19 //fallitem4 0x084b,19 //fallitem4
0x085a,90,useskilltoposinfo,2:4:6:8:10 0x085a,90,useskilltoposinfo,2:4:6:8:10
0x085d,18,bookingregreq,2:4:6 0x085d,18,bookingregreq,2:4:6
0x0868,-1,itemlistwindowselected,2:4:8 0x0868,-1,itemlistwindowselected,2:4:8:12
0x086d,26,partyinvite2,2 0x086d,26,partyinvite2,2
0x086f,26,friendslistadd,2 0x086f,26,friendslistadd,2
0x0874,8,movefromkafra,2:4 0x0874,8,movefromkafra,2:4
@ -1891,7 +1891,7 @@ packet_ver: 35
0x0815,-1,reqopenbuyingstore,2:4:8:9:89 0x0815,-1,reqopenbuyingstore,2:4:8:9:89
0x092D,18,bookingregreq,2:4:6 0x092D,18,bookingregreq,2:4:6
//0x08AA,8 CZ_JOIN_BATTLE_FIELD //0x08AA,8 CZ_JOIN_BATTLE_FIELD
0x0963,-1,itemlistwindowselected,2:4:8 0x0963,-1,itemlistwindowselected,2:4:8:12
0x0943,19,wanttoconnection,2:6:10:14:18 0x0943,19,wanttoconnection,2:6:10:14:18
0x0947,26,partyinvite2,2 0x0947,26,partyinvite2,2
//0x0862,4 CZ_GANGSI_RANK //0x0862,4 CZ_GANGSI_RANK
@ -1923,7 +1923,7 @@ packet_ver: 36
0x0874,-1,reqopenbuyingstore,2:4:8:9:89 0x0874,-1,reqopenbuyingstore,2:4:8:9:89
0x089B,18,bookingregreq,2:4:6 0x089B,18,bookingregreq,2:4:6
//0x0965,8 CZ_JOIN_BATTLE_FIELD //0x0965,8 CZ_JOIN_BATTLE_FIELD
0x086A,-1,itemlistwindowselected,2:4:8 0x086A,-1,itemlistwindowselected,2:4:8:12
0x08A9,19,wanttoconnection,2:6:10:14:18 0x08A9,19,wanttoconnection,2:6:10:14:18
0x0950,26,partyinvite2,2 0x0950,26,partyinvite2,2
//0x08AC,4 CZ_GANGSI_RANK //0x08AC,4 CZ_GANGSI_RANK
@ -1955,7 +1955,7 @@ packet_ver: 37
0x0869,-1,reqopenbuyingstore,2:4:8:9:89 0x0869,-1,reqopenbuyingstore,2:4:8:9:89
0x0874,41,bookingregreq,2,4:6 0x0874,41,bookingregreq,2,4:6
// 0x088E,8); // CZ_JOIN_BATTLE_FIELD // 0x088E,8); // CZ_JOIN_BATTLE_FIELD
0x0958,-1,itemlistwindowselected,2:4:8 0x0958,-1,itemlistwindowselected,2:4:8:12
0x0919,19,wanttoconnection,2:6:10:14:18 0x0919,19,wanttoconnection,2:6:10:14:18
0x08A8,26,partyinvite2,2 0x08A8,26,partyinvite2,2
// 0x0888,4); // CZ_GANGSI_RANK // 0x0888,4); // CZ_GANGSI_RANK
@ -1987,7 +1987,7 @@ packet_ver: 38
0x0815,-1,reqopenbuyingstore,2:4:8:9:89 0x0815,-1,reqopenbuyingstore,2:4:8:9:89
0x0365,41,bookingregreq,2:4:6 0x0365,41,bookingregreq,2:4:6
// 0x0363,8 // CZ_JOIN_BATTLE_FIELD // 0x0363,8 // CZ_JOIN_BATTLE_FIELD
0x0281,-1,itemlistwindowselected,2:4:8 0x0281,-1,itemlistwindowselected,2:4:8:12
0x022D,19,wanttoconnection,2:6:10:14:18 0x022D,19,wanttoconnection,2:6:10:14:18
0x0802,26,partyinvite2,2 0x0802,26,partyinvite2,2
// 0x0436,4 // CZ_GANGSI_RANK // 0x0436,4 // CZ_GANGSI_RANK
@ -2019,7 +2019,7 @@ packet_ver: 39
0x0815,-1,reqopenbuyingstore,2:4:8:9:89 0x0815,-1,reqopenbuyingstore,2:4:8:9:89
0x0365,18,bookingregreq,2:4:6 0x0365,18,bookingregreq,2:4:6
// 0x0363,8 CZ_JOIN_BATTLE_FIELD // 0x0363,8 CZ_JOIN_BATTLE_FIELD
0x0281,-1,itemlistwindowselected,2:4:8 0x0281,-1,itemlistwindowselected,2:4:8:12
0x0919,19,wanttoconnection,2:6:10:14:18 0x0919,19,wanttoconnection,2:6:10:14:18
0x0802,26,partyinvite2,2 0x0802,26,partyinvite2,2
// 0x0436,4 CZ_GANGSI_RANK // 0x0436,4 CZ_GANGSI_RANK

View File

@ -1960,19 +1960,24 @@ void char_parse_req_charlist(int fd, struct char_session_data* sd){
//---------------------------------------- //----------------------------------------
int mmo_char_send006b(int fd, struct char_session_data* sd){ int mmo_char_send006b(int fd, struct char_session_data* sd){
int j, offset = 0; int j, offset = 0;
if(sd->version > 25) //20100413 //bool newvers = (sd->version >= date2version(20100413) );
#if PACKETVER >= 20100413
//if(newvers) //20100413
offset += 3; offset += 3;
#endif
if (save_log) if (save_log)
ShowInfo("Loading Char Data ("CL_BOLD"%d"CL_RESET")\n",sd->account_id); ShowInfo("Loading Char Data ("CL_BOLD"%d"CL_RESET")\n",sd->account_id);
j = 24 + offset; // offset j = 24 + offset; // offset
WFIFOHEAD(fd,j + MAX_CHARS*MAX_CHAR_BUF); WFIFOHEAD(fd,j + MAX_CHARS*MAX_CHAR_BUF);
WFIFOW(fd,0) = 0x6b; WFIFOW(fd,0) = 0x6b;
if(sd->version > 25){ //20100413 #if PACKETVER >= 20100413
// if(newvers){ //20100413
WFIFOB(fd,4) = MAX_CHARS; // Max slots. WFIFOB(fd,4) = MAX_CHARS; // Max slots.
WFIFOB(fd,5) = sd->char_slots; // Available slots. (PremiumStartSlot) WFIFOB(fd,5) = sd->char_slots; // Available slots. (PremiumStartSlot)
WFIFOB(fd,6) = MAX_CHARS; // Premium slots. (Any existent chars past sd->char_slots but within MAX_CHARS will show a 'Premium Service' in red) WFIFOB(fd,6) = MAX_CHARS; // Premium slots. (Any existent chars past sd->char_slots but within MAX_CHARS will show a 'Premium Service' in red)
} // }
#endif
memset(WFIFOP(fd,4 + offset), 0, 20); // unknown bytes memset(WFIFOP(fd,4 + offset), 0, 20); // unknown bytes
j+=mmo_chars_fromsql(sd, WFIFOP(fd,j)); j+=mmo_chars_fromsql(sd, WFIFOP(fd,j));
WFIFOW(fd,2) = j; // packet len WFIFOW(fd,2) = j; // packet len
@ -2000,12 +2005,14 @@ void mmo_char_send082d(int fd, struct char_session_data* sd) {
} }
void mmo_char_send(int fd, struct char_session_data* sd){ void mmo_char_send(int fd, struct char_session_data* sd){
ShowInfo("sd->version = %d\n",sd->version); //ShowInfo("sd->version = %d\n",sd->version);
#if PACKETVER >= 20130000 #if PACKETVER >= 20130000
//if(sd->version > date2version(20130000) ){
mmo_char_send082d(fd,sd); mmo_char_send082d(fd,sd);
char_charlist_notify(fd,sd); char_charlist_notify(fd,sd);
char_block_character(fd,sd); char_block_character(fd,sd);
#endif #endif
//}
//@FIXME dump from kro doesn't show 6b transmission //@FIXME dump from kro doesn't show 6b transmission
mmo_char_send006b(fd,sd); mmo_char_send006b(fd,sd);
} }

View File

@ -109,16 +109,16 @@ void findfile(const char *p, const char *pat, void (func)(const char*))
WIN32_FIND_DATAA FindFileData; WIN32_FIND_DATAA FindFileData;
HANDLE hFind; HANDLE hFind;
char tmppath[MAX_PATH+1]; char tmppath[MAX_PATH+1];
const char *path = (p ==NULL)? "." : p; const char *path = (p ==NULL)? "." : p;
const char *pattern = (pat==NULL)? "" : pat; const char *pattern = (pat==NULL)? "" : pat;
checkpath(tmppath,path); checkpath(tmppath,path);
if( PATHSEP != tmppath[strlen(tmppath)-1]) if( PATHSEP != tmppath[strlen(tmppath)-1])
strcat(tmppath, "\\*"); strcat(tmppath, "\\*");
else else
strcat(tmppath, "*"); strcat(tmppath, "*");
hFind = FindFirstFileA(tmppath, &FindFileData); hFind = FindFirstFileA(tmppath, &FindFileData);
if (hFind != INVALID_HANDLE_VALUE) if (hFind != INVALID_HANDLE_VALUE)
{ {
@ -259,6 +259,46 @@ uint32 MakeDWord(uint16 word0, uint16 word1)
( (uint32)(word1 << 0x10) ); ( (uint32)(word1 << 0x10) );
} }
int date2version(int date){
if(date < 20040906) return 5;
else if(date < 20040920) return 10;
else if(date < 20041005) return 11;
else if(date < 20041025) return 12;
else if(date < 20041129) return 13;
else if(date < 20050110) return 14;
else if(date < 20050509) return 15;
else if(date < 20050628) return 16;
else if(date < 20050718) return 17;
else if(date < 20050719) return 18;
else if(date < 20060327) return 19;
else if(date < 20070108) return 20;
else if(date < 20070212) return 21;
//wtf @FIXME
else if(date < 20080910) return 22;
else if(date < 20080827) return 23;
else if(date < 20080910) return 24;
//unable to solve from date
else if(date < 20101124) return 25;
else if(date < 20111005) return 26;
else if(date < 20111102) return 27;
else if(date < 20120307) return 28;
else if(date < 20120410) return 29;
else if(date < 20120418) return 30;
else if(date < 20120618) return 31;
else if(date < 20120702) return 32;
else if(date < 20130320) return 33;
else if(date < 20130515) return 34;
else if(date < 20130522) return 35;
else if(date < 20130529) return 36;
else if(date < 20130605) return 37;
else if(date < 20130612) return 38;
else if(date >= 20130612) return 39;
// else if(date < 20040920) return 40;
// else if(date < 20040920) return 41;
// else if(date < 20040920) return 42;
// else if(date < 20040920) return 43;
else return 30; //default
}
/// calculates the value of A / B, in percent (rounded down) /// calculates the value of A / B, in percent (rounded down)
unsigned int get_percentage(const unsigned int A, const unsigned int B) unsigned int get_percentage(const unsigned int A, const unsigned int B)

View File

@ -29,4 +29,6 @@ extern uint16 GetWord(uint32 val, int idx);
extern uint16 MakeWord(uint8 byte0, uint8 byte1); extern uint16 MakeWord(uint8 byte0, uint8 byte1);
extern uint32 MakeDWord(uint16 word0, uint16 word1); extern uint32 MakeDWord(uint16 word0, uint16 word1);
int date2version(int date);
#endif /* _UTILS_H_ */ #endif /* _UTILS_H_ */

View File

@ -3950,8 +3950,8 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
status->matk_max += sd->bonus.ematk; status->matk_max += sd->bonus.ematk;
status->matk_min += sd->bonus.ematk; status->matk_min += sd->bonus.ematk;
} }
status->matk_min = status_calc_ematk(bl, sc, status->matk_min); status->matk_min = status_calc_ematk(bl, sc, status->matk_min);
status->matk_max = status_calc_ematk(bl, sc, status->matk_max); status->matk_max = status_calc_ematk(bl, sc, status->matk_max);
//This is the only portion in MATK that varies depending on the weapon level and refinement rate. //This is the only portion in MATK that varies depending on the weapon level and refinement rate.
if( status->rhw.matk > 0 ){ if( status->rhw.matk > 0 ){
int wMatk = status->rhw.matk; int wMatk = status->rhw.matk;
@ -3961,17 +3961,19 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
} }
} }
#endif #endif
if (bl->type&BL_PC && sd->matk_rate != 100) { if (bl->type&BL_PC && sd->matk_rate != 100) {
status->matk_max = status->matk_max * sd->matk_rate/100; status->matk_max = status->matk_max * sd->matk_rate/100;
status->matk_min = status->matk_min * sd->matk_rate/100; status->matk_min = status->matk_min * sd->matk_rate/100;
} }
status->matk_min = status_calc_matk(bl, sc, status->matk_min);
status->matk_max = status_calc_matk(bl, sc, status->matk_max); status->matk_max = status_calc_matk(bl, sc, status->matk_max);
if ((bl->type&BL_HOM && battle_config.hom_setting&0x20) //Hom Min Matk is always the same as Max Matk if ((bl->type&BL_HOM && battle_config.hom_setting&0x20) //Hom Min Matk is always the same as Max Matk
|| sc->data[SC_RECOGNIZEDSPELL]) || (sc && sc->data[SC_RECOGNIZEDSPELL]))
status->matk_min = status->matk_max; status->matk_min = status->matk_max;
else
status->matk_min = status_calc_matk(bl, sc, status->matk_min);
#ifdef RENEWAL #ifdef RENEWAL
if( sd && sd->right_weapon.overrefine > 0){ if( sd && sd->right_weapon.overrefine > 0){
@ -4741,37 +4743,37 @@ static unsigned short status_calc_matk(struct block_list *bl, struct status_chan
return cap_value(matk,0,USHRT_MAX); return cap_value(matk,0,USHRT_MAX);
#ifndef RENEWAL #ifndef RENEWAL
// take note fixed value first before % modifiers // take note fixed value first before % modifiers
if (sc->data[SC_MATKPOTION]) if (sc->data[SC_MATKPOTION])
matk += sc->data[SC_MATKPOTION]->val1; matk += sc->data[SC_MATKPOTION]->val1;
if (sc->data[SC_MATKFOOD]) if (sc->data[SC_MATKFOOD])
matk += sc->data[SC_MATKFOOD]->val1; matk += sc->data[SC_MATKFOOD]->val1;
if (sc->data[SC_MANA_PLUS]) if (sc->data[SC_MANA_PLUS])
matk += sc->data[SC_MANA_PLUS]->val1; matk += sc->data[SC_MANA_PLUS]->val1;
if (sc->data[SC_AQUAPLAY_OPTION]) if (sc->data[SC_AQUAPLAY_OPTION])
matk += sc->data[SC_AQUAPLAY_OPTION]->val2; matk += sc->data[SC_AQUAPLAY_OPTION]->val2;
if (sc->data[SC_CHILLY_AIR_OPTION]) if (sc->data[SC_CHILLY_AIR_OPTION])
matk += sc->data[SC_CHILLY_AIR_OPTION]->val2; matk += sc->data[SC_CHILLY_AIR_OPTION]->val2;
if (sc->data[SC_WATER_BARRIER]) if (sc->data[SC_WATER_BARRIER])
matk -= sc->data[SC_WATER_BARRIER]->val3; matk -= sc->data[SC_WATER_BARRIER]->val3;
if (sc->data[SC_FIRE_INSIGNIA] && sc->data[SC_FIRE_INSIGNIA]->val1 == 3) if (sc->data[SC_FIRE_INSIGNIA] && sc->data[SC_FIRE_INSIGNIA]->val1 == 3)
matk += 50; matk += 50;
if (sc->data[SC_ODINS_POWER]) if (sc->data[SC_ODINS_POWER])
matk += 40 + 30 * sc->data[SC_ODINS_POWER]->val1; //70 lvl1, 100lvl2 matk += 40 + 30 * sc->data[SC_ODINS_POWER]->val1; //70 lvl1, 100lvl2
if (sc->data[SC_IZAYOI]) if (sc->data[SC_IZAYOI])
matk += 50 * sc->data[SC_IZAYOI]->val1; matk += 50 * sc->data[SC_IZAYOI]->val1;
#endif #endif
if (sc->data[SC_MAGICPOWER] && sc->data[SC_MAGICPOWER]->val4) if (sc->data[SC_MAGICPOWER] && sc->data[SC_MAGICPOWER]->val4)
matk += matk * sc->data[SC_MAGICPOWER]->val3/100; matk += matk * sc->data[SC_MAGICPOWER]->val3/100;
if (sc->data[SC_MINDBREAKER]) if (sc->data[SC_MINDBREAKER])
matk += matk * sc->data[SC_MINDBREAKER]->val2/100; matk += matk * sc->data[SC_MINDBREAKER]->val2/100;
if (sc->data[SC_INCMATKRATE]) if (sc->data[SC_INCMATKRATE])
matk += matk * sc->data[SC_INCMATKRATE]->val1/100; matk += matk * sc->data[SC_INCMATKRATE]->val1/100;
if (sc->data[SC_MOONLITSERENADE]) if (sc->data[SC_MOONLITSERENADE])
matk += matk * sc->data[SC_MOONLITSERENADE]->val2/100; matk += matk * sc->data[SC_MOONLITSERENADE]->val2/100;
if (sc->data[SC_MELODYOFSINK]) if (sc->data[SC_MELODYOFSINK])
matk += matk * sc->data[SC_MELODYOFSINK]->val3/100; matk += matk * sc->data[SC_MELODYOFSINK]->val3/100;
if (sc->data[SC_BEYONDOFWARCRY]) if (sc->data[SC_BEYONDOFWARCRY])
matk -= matk * sc->data[SC_BEYONDOFWARCRY]->val3/100; matk -= matk * sc->data[SC_BEYONDOFWARCRY]->val3/100;
if( sc->data[SC_ZANGETSU] ) if( sc->data[SC_ZANGETSU] )
matk += matk * sc->data[SC_ZANGETSU]->val2 / 100; matk += matk * sc->data[SC_ZANGETSU]->val2 / 100;

View File

@ -384,8 +384,9 @@ int unit_walktoxy( struct block_list *bl, short x, short y, int flag)
path_search(&wpd, bl->m, bl->x, bl->y, x, y, flag&1, CELL_CHKNOPASS); // Count walk path cells path_search(&wpd, bl->m, bl->x, bl->y, x, y, flag&1, CELL_CHKNOPASS); // Count walk path cells
#ifdef OFFICIAL_WALKPATH #ifdef OFFICIAL_WALKPATH
if( !path_search_long(NULL, bl->m, bl->x, bl->y, x, y, CELL_CHKNOPASS) // Check if there is an obstacle between if( !path_search_long(NULL, bl->m, bl->x, bl->y, x, y, CELL_CHKNOPASS) // Check if there is an obstacle between
&& wpd.path_len > 14 ) // Official number of walkable cells is 14 if and only if there is an obstacle between. [malufett] && wpd.path_len > 14 // Official number of walkable cells is 14 if and only if there is an obstacle between. [malufett]
return 0; && (bl->type != BL_NPC) ) // If type is a NPC, please disregard.
return 0;
#endif #endif
if( (battle_config.max_walk_path < wpd.path_len) && (bl->type != BL_NPC) ) if( (battle_config.max_walk_path < wpd.path_len) && (bl->type != BL_NPC) )
return 0; return 0;