summaryrefslogtreecommitdiff
path: root/src/char
diff options
context:
space:
mode:
Diffstat (limited to 'src/char')
-rw-r--r--src/char/CMakeLists.txt56
-rw-r--r--src/char/char.c42
2 files changed, 55 insertions, 43 deletions
diff --git a/src/char/CMakeLists.txt b/src/char/CMakeLists.txt
index 9e0cbd9f4..fa1c3f366 100644
--- a/src/char/CMakeLists.txt
+++ b/src/char/CMakeLists.txt
@@ -1,33 +1,39 @@
#
+# setup
+#
+set( TXT_CHAR_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "" )
+
+
+#
# char txt
#
-if( HAVE_common_base )
+if( BUILD_TXT_SERVERS )
message( STATUS "Creating target char-server" )
set( TXT_CHAR_HEADERS
- "${CMAKE_CURRENT_SOURCE_DIR}/char.h"
- "${CMAKE_CURRENT_SOURCE_DIR}/int_guild.h"
- "${CMAKE_CURRENT_SOURCE_DIR}/int_homun.h"
- "${CMAKE_CURRENT_SOURCE_DIR}/int_party.h"
- "${CMAKE_CURRENT_SOURCE_DIR}/int_pet.h"
- "${CMAKE_CURRENT_SOURCE_DIR}/int_status.h"
- "${CMAKE_CURRENT_SOURCE_DIR}/int_storage.h"
- "${CMAKE_CURRENT_SOURCE_DIR}/inter.h"
+ "${TXT_CHAR_SOURCE_DIR}/char.h"
+ "${TXT_CHAR_SOURCE_DIR}/int_guild.h"
+ "${TXT_CHAR_SOURCE_DIR}/int_homun.h"
+ "${TXT_CHAR_SOURCE_DIR}/int_party.h"
+ "${TXT_CHAR_SOURCE_DIR}/int_pet.h"
+ "${TXT_CHAR_SOURCE_DIR}/int_status.h"
+ "${TXT_CHAR_SOURCE_DIR}/int_storage.h"
+ "${TXT_CHAR_SOURCE_DIR}/inter.h"
)
set( TXT_CHAR_SOURCES
- "${CMAKE_CURRENT_SOURCE_DIR}/char.c"
- "${CMAKE_CURRENT_SOURCE_DIR}/int_guild.c"
- "${CMAKE_CURRENT_SOURCE_DIR}/int_homun.c"
- "${CMAKE_CURRENT_SOURCE_DIR}/int_party.c"
- "${CMAKE_CURRENT_SOURCE_DIR}/int_pet.c"
- "${CMAKE_CURRENT_SOURCE_DIR}/int_status.c"
- "${CMAKE_CURRENT_SOURCE_DIR}/int_storage.c"
- "${CMAKE_CURRENT_SOURCE_DIR}/inter.c"
+ "${TXT_CHAR_SOURCE_DIR}/char.c"
+ "${TXT_CHAR_SOURCE_DIR}/int_guild.c"
+ "${TXT_CHAR_SOURCE_DIR}/int_homun.c"
+ "${TXT_CHAR_SOURCE_DIR}/int_party.c"
+ "${TXT_CHAR_SOURCE_DIR}/int_pet.c"
+ "${TXT_CHAR_SOURCE_DIR}/int_status.c"
+ "${TXT_CHAR_SOURCE_DIR}/int_storage.c"
+ "${TXT_CHAR_SOURCE_DIR}/inter.c"
)
set( DEPENDENCIES common_base )
set( LIBRARIES ${GLOBAL_LIBRARIES} )
set( INCLUDE_DIRS ${GLOBAL_INCLUDE_DIRS} )
-set( DEFINITIONS ${GLOBAL_DEFINITIONS} TXT_ONLY )
+set( DEFINITIONS "${GLOBAL_DEFINITIONS} -DTXT_ONLY" )
set( SOURCE_FILES ${COMMON_BASE_HEADERS} ${TXT_CHAR_HEADERS} ${TXT_CHAR_SOURCES} )
source_group( common FILES ${COMMON_BASE_HEADERS} )
source_group( char FILES ${TXT_CHAR_HEADERS} ${TXT_CHAR_SOURCES} )
@@ -35,17 +41,13 @@ include_directories( ${INCLUDE_DIRS} )
add_executable( char-server ${SOURCE_FILES} )
add_dependencies( char-server ${DEPENDENCIES} )
target_link_libraries( char-server ${LIBRARIES} ${DEPENDENCIES} )
-set_target_properties( char-server PROPERTIES COMPILE_DEFINITIONS "${DEFINITIONS}" )
-if( WITH_COMPONENT_RUNTIME )
+set_target_properties( char-server PROPERTIES COMPILE_FLAGS "${DEFINITIONS}" )
+if( INSTALL_COMPONENT_RUNTIME )
cpack_add_component( Runtime_charserver_txt DESCRIPTION "char-server (txt version)" DISPLAY_NAME "char-server" GROUP Runtime )
install( TARGETS char-server
DESTINATION "."
COMPONENT Runtime_charserver_txt )
-endif()
+endif( INSTALL_COMPONENT_RUNTIME )
+set( TARGET_LIST ${TARGET_LIST} char-server CACHE INTERNAL "" )
message( STATUS "Creating target char-server - done" )
-set( HAVE_char-server ON CACHE BOOL "char-server target is available" )
-mark_as_advanced( HAVE_char-server )
-else()
-message( STATUS "Skipping target char-server (requires common_base)" )
-unset( HAVE_char-server CACHE )
-endif()
+endif( BUILD_TXT_SERVERS )
diff --git a/src/char/char.c b/src/char/char.c
index 617e3d10c..dfcbc9230 100644
--- a/src/char/char.c
+++ b/src/char/char.c
@@ -436,7 +436,7 @@ int search_character_online(int aid, int cid)
{
//Look for online character.
struct online_char_data* character;
- character = idb_get(online_char_db, aid);
+ character = (struct online_char_data*)idb_get(online_char_db, aid);
if(character &&
character->char_id == cid &&
character->server > -1)
@@ -1804,33 +1804,33 @@ int mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p)
buf = WBUFP(buffer,0);
WBUFL(buf,0) = p->char_id;
- WBUFL(buf,4) = min(p->base_exp, LONG_MAX);
+ WBUFL(buf,4) = min(p->base_exp, INT32_MAX);
WBUFL(buf,8) = p->zeny;
- WBUFL(buf,12) = min(p->job_exp, LONG_MAX);
+ WBUFL(buf,12) = min(p->job_exp, INT32_MAX);
WBUFL(buf,16) = p->job_level;
WBUFL(buf,20) = 0; // probably opt1
WBUFL(buf,24) = 0; // probably opt2
WBUFL(buf,28) = p->option;
WBUFL(buf,32) = p->karma;
WBUFL(buf,36) = p->manner;
- WBUFW(buf,40) = min(p->status_point, SHRT_MAX);
+ WBUFW(buf,40) = min(p->status_point, INT16_MAX);
#if PACKETVER > 20081217
WBUFL(buf,42) = p->hp;
WBUFL(buf,46) = p->max_hp;
offset+=4;
buf = WBUFP(buffer,offset);
#else
- WBUFW(buf,42) = min(p->hp, SHRT_MAX);
- WBUFW(buf,44) = min(p->max_hp, SHRT_MAX);
+ WBUFW(buf,42) = min(p->hp, INT16_MAX);
+ WBUFW(buf,44) = min(p->max_hp, INT16_MAX);
#endif
- WBUFW(buf,46) = min(p->sp, SHRT_MAX);
- WBUFW(buf,48) = min(p->max_sp, SHRT_MAX);
+ WBUFW(buf,46) = min(p->sp, INT16_MAX);
+ WBUFW(buf,48) = min(p->max_sp, INT16_MAX);
WBUFW(buf,50) = DEFAULT_WALK_SPEED; // p->speed;
WBUFW(buf,52) = p->class_;
WBUFW(buf,54) = p->hair;
WBUFW(buf,56) = p->option&0x20 ? 0 : p->weapon; //When the weapon is sent and your option is riding, the client crashes on login!?
WBUFW(buf,58) = p->base_level;
- WBUFW(buf,60) = min(p->skill_point, SHRT_MAX);
+ WBUFW(buf,60) = min(p->skill_point, INT16_MAX);
WBUFW(buf,62) = p->head_bottom;
WBUFW(buf,64) = p->shield;
WBUFW(buf,66) = p->head_top;
@@ -1838,12 +1838,12 @@ int mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p)
WBUFW(buf,70) = p->hair_color;
WBUFW(buf,72) = p->clothes_color;
memcpy(WBUFP(buf,74), p->name, NAME_LENGTH);
- WBUFB(buf,98) = min(p->str, UCHAR_MAX);
- WBUFB(buf,99) = min(p->agi, UCHAR_MAX);
- WBUFB(buf,100) = min(p->vit, UCHAR_MAX);
- WBUFB(buf,101) = min(p->int_, UCHAR_MAX);
- WBUFB(buf,102) = min(p->dex, UCHAR_MAX);
- WBUFB(buf,103) = min(p->luk, UCHAR_MAX);
+ WBUFB(buf,98) = min(p->str, UINT8_MAX);
+ WBUFB(buf,99) = min(p->agi, UINT8_MAX);
+ WBUFB(buf,100) = min(p->vit, UINT8_MAX);
+ WBUFB(buf,101) = min(p->int_, UINT8_MAX);
+ WBUFB(buf,102) = min(p->dex, UINT8_MAX);
+ WBUFB(buf,103) = min(p->luk, UINT8_MAX);
WBUFW(buf,104) = p->slot;
#if PACKETVER >= 20061023
WBUFW(buf,106) = ( p->rename > 0 ) ? 0 : 1;
@@ -2208,7 +2208,7 @@ int parse_fromlogin(int fd)
memcpy(sd->email, RFIFOP(fd,6), 40);
sd->expiration_time = (time_t)RFIFOL(fd,46);
sd->gmlevel = RFIFOB(fd,50);
- safestrncpy(sd->birthdate, RFIFOP(fd,51), sizeof(sd->birthdate));
+ safestrncpy(sd->birthdate, (const char*)RFIFOP(fd,51), sizeof(sd->birthdate));
// continued from char_auth_ok...
if( max_connect_user && count_users() >= max_connect_user && sd->gmlevel < gm_allow_level )
@@ -2223,6 +2223,16 @@ int parse_fromlogin(int fd)
{
// send characters to player
mmo_char_send006b(i, sd);
+#if PACKETVER >= 20110309
+ // PIN code system, disabled
+ WFIFOHEAD(i, 12);
+ WFIFOW(i, 0) = 0x08B9;
+ WFIFOW(i, 2) = 0;
+ WFIFOW(i, 4) = 0;
+ WFIFOL(i, 6) = sd->account_id;
+ WFIFOW(i, 10) = 0;
+ WFIFOSET(i, 12);
+#endif
}
}
RFIFOSKIP(fd,62);