?? char.c.bak
字號:
int str=ch.data[CHAR_STR];
int tough=ch.data[CHAR_TOUGH];
ch.data[CHAR_INITDATA] = 2*100*100*100*100 /*+ hp*100*100*100*/
+ mp*100*100 + str* 100 + tough;
}
charaindex = CHAR_initCharOneArray( &ch );
if( charaindex == -1 ) {
lssproto_CreateNewChar_send( clifd ,FAILED, "");
CONNECT_setState( clifd, NOTLOGIN );
return;
}
/*#ifdef _NEW_TESTSERVER //伊甸測試伺服
{
int petTemp[]={ 2258, 1610, 353, 2474, -1}; //朱雀、
int petNum=0;
int k=0;
int i=0,j=0;
#ifdef _75_TEST
if( CHAR_getInt( charaindex, CHAR_LASTTALKELDER) == 1 )//瑪麗娜絲
petTemp[4] = 2;//凱比
else if( CHAR_getInt( charaindex, CHAR_LASTTALKELDER) == 2 )//加加
petTemp[4] = 3;//克克爾
else if( CHAR_getInt( charaindex, CHAR_LASTTALKELDER) == 3 )//卡魯它那
petTemp[4] = 4;//威伯
else
petTemp[4] = 1;//烏力
#else
j=2;
for( i=0; i< arraysizeof(ridePetTable) ; i++ ){
if( CHAR_getInt( charaindex, CHAR_BASEBASEIMAGENUMBER) == ridePetTable[i].charNo ){
petTemp[j]= ridePetTable[i].petId;
j++;
if( j >= arraysizeof( petTemp) )
break;
}
}
#endif
j=0;
for( petNum=0; petNum<arraysizeof( petTemp); petNum++) {
enemyarray = ENEMY_getEnemyArrayFromId( petTemp[ petNum]); //白虎
petindex = ENEMY_createPetFromEnemyIndex( charaindex, enemyarray);
if( petindex == -1 ) {
continue;
}
add_pet[j]=petindex;
j++;
for( k = 1; k < 140; k ++ ){ //升級
CHAR_PetLevelUp( petindex );
CHAR_PetAddVariableAi( petindex, AI_FIX_PETLEVELUP );
CHAR_setInt( petindex, CHAR_LV, CHAR_getInt( petindex, CHAR_LV) +1 );
}
CHAR_complianceParameter( petindex );
CHAR_setInt( petindex , CHAR_HP , CHAR_getWorkInt( petindex , CHAR_WORKMAXHP ) );
#ifdef _75_TEST
CHAR_setInt( petindex , CHAR_TRANSMIGRATION , 1 );
#endif
}
// CHAR_setInt( charaindex, CHAR_FLOOR, 130);
// CHAR_setInt( charaindex, CHAR_X, 20);
// CHAR_setInt( charaindex, CHAR_Y, 55);
}
#else
#ifdef _DELBORNPLACE //Syu ADD 6.0 統(tǒng)一出生於新手村
if( getMuseum() ) {
if ( BornPet > 3 ) BornPet = 3;
if ( BornPet < 0 ) BornPet = 0;
enemyarray = ENEMY_getEnemyArrayFromId( BornPet + 2076);
}
else {
enemyarray = ENEMY_getEnemyArrayFromId( hometown + 1);
}
#else
enemyarray = ENEMY_getEnemyArrayFromId( hometown + 1);
#endif
petindex = ENEMY_createPetFromEnemyIndex( charaindex, enemyarray);
if( !CHAR_CHECKINDEX( petindex )){
CHAR_endCharOneArray( charaindex);
lssproto_CreateNewChar_send( clifd ,FAILED, "");
CONNECT_setState( clifd, NOTLOGIN );
return;
}
CHAR_setMaxExpFromLevel( petindex, 1);
#endif*/
#ifdef _NEW_PLAYER_CF //新手出生配置
int petTemp[]={ 2258, 1610, 353, 2474, -1}; //朱雀、
int petNum=0;
int k=0;
int i=0,j=0;
int mylevel,level;
if(getNewplayergivepet(0)==-1){
if( CHAR_getInt( charaindex, CHAR_LASTTALKELDER) == 1 )//瑪麗娜絲
setNewplayergivepet(0,2);
else if( CHAR_getInt( charaindex, CHAR_LASTTALKELDER) == 2 )//加加
setNewplayergivepet(0,3);
else if( CHAR_getInt( charaindex, CHAR_LASTTALKELDER) == 3 )//卡魯它那
setNewplayergivepet(0,4);
else
setNewplayergivepet(0,1);
}
for( petNum=0; petNum<5; petNum++) {
if(getNewplayergivepet(petNum)==-1)continue;
enemyarray = ENEMY_getEnemyArrayFromId( getNewplayergivepet(petNum)); //白虎
petindex = ENEMY_createPetFromEnemyIndex( charaindex, enemyarray);
if( petindex == -1 ) {
continue;
}
add_pet[j]=petindex;
mylevel = CHAR_getInt( petindex, CHAR_LV);
level = getNewplayerpetlv()-mylevel;
if(level<1)level=1;
for( k = 1; k < level; k ++ ){ //升級
CHAR_PetLevelUp( petindex );
CHAR_PetAddVariableAi( petindex, AI_FIX_PETLEVELUP );
CHAR_setInt( petindex, CHAR_LV, CHAR_getInt( petindex, CHAR_LV) +1 );
}
CHAR_complianceParameter( petindex );
CHAR_setInt( petindex , CHAR_HP , CHAR_getWorkInt( petindex , CHAR_WORKMAXHP ) );
}
#endif
#ifdef _HELP_NEWHAND
CHAR_loginAddItemForNew(charaindex);
#endif
#if 1
if( CHAR_makeDBKey( charaindex, szKey, sizeof( szKey ) ) != FALSE ){
int dp;
char info[512];
snprintf( info, sizeof( info),
"%d,%d,%d,%d,%d,%d",
CHAR_getInt( charaindex, CHAR_LV),
CHAR_getInt( charaindex, CHAR_DUELBATTLECOUNT),
CHAR_getInt( charaindex, CHAR_DUELWINCOUNT),
CHAR_getInt( charaindex, CHAR_DUELLOSECOUNT),
CHAR_getInt( charaindex, CHAR_DUELSTWINCOUNT),
CHAR_getInt( charaindex, CHAR_DUELMAXSTWINCOUNT));
dp = CHAR_getInt( charaindex, CHAR_DUELPOINT );
saacproto_DBUpdateEntryInt_send(
acfd,
DB_DUELPOINT,
szKey,
(max(dp,0)),
info,
CONNECT_getFdid(clifd ),0 );
}
#endif
chwk = CHAR_getCharPointer( charaindex);
#ifdef _AUTO_ADDADDRESS
{
int playernum = CHAR_getPlayerMaxNum();
int i, k, oldnum=0, newnum=0;
i = charaindex;
for( k=0 ; k< playernum ; k++ ){
char token[256];
if( ++i >= playernum ) i = 0;
if( i < 0 ) i =0;
if( !CHAR_getCharUse(i) ) continue;
if( charaindex == i ) continue;
if( !CHAR_getFlg( i, CHAR_ISTRADECARD) ) continue;
if( oldnum < 3 && CHAR_getInt( i, CHAR_LV) > 100 ){
if( ADDRESSBOOK_AutoaddAddressBook( charaindex, i) == TRUE ){
sprintf( token, "新手-%s 加入石器,并與你交換名片。", CHAR_getUseName( charaindex));
CHAR_talkToCli( i, -1, token, CHAR_COLORYELLOW);
oldnum++;
}
}else if( newnum < 5 && CHAR_getInt( i, CHAR_LV) < 30 ){
if( ADDRESSBOOK_AutoaddAddressBook( charaindex, i) == TRUE ){
sprintf( token, "新手-%s 加入石器,并與你交換名片。", CHAR_getUseName( charaindex));
CHAR_talkToCli( i, -1, token, CHAR_COLORYELLOW);
newnum++;
}
}
if( newnum >= 5 && oldnum >= 3 )
break;
}
}
#endif
#ifdef _NEW_PLAYER_CF //新手出生配置
CHAR_charSaveFromConnectAndChar( clifd,chwk ,FALSE );
CHAR_endCharData(&ch);
CHAR_endCharOneArray( charaindex);
{
int k=0;
for( k=0;k<arraysizeof( add_pet); k++) {
CHAR_endCharOneArray( add_pet[k]);
}
}
CONNECT_setState( clifd, WHILECREATE );
#endif
/*#ifdef _NEW_TESTSERVER //伊甸測試伺服
{
#ifdef _75_TEST
int event_end[] = { 4, 81, 48, 49, 50, 51, 52, 63, 69, 70, 71, 72, 81, 88, 89, 109, 110, 111, 112, 113, 114, 115, 116, 118, 122, 127, 131, 136, 158, 159, 174, 102};
int event_now[] = { 71};
int i;
for( i=0; i < arraysizeof( event_end); i++) {
NPC_EventSetFlg( charaindex, event_end[i]);
}
for( i=0; i < arraysizeof( event_now); i++) {
NPC_NowEventSetFlg( charaindex, event_now[i]);
}
#else
int event_end[] = { 4, 69, 70, 71, 72, 81, 48, 49, 50, 51, 52};
int event_now[] = { 71};
int i;
for( i=0; i < arraysizeof( event_end); i++) {
NPC_EventSetFlg( charaindex, event_end[i]);
}
for( i=0; i < arraysizeof( event_now); i++) {
NPC_NowEventSetFlg( charaindex, event_now[i]);
}
#endif
//7.0測試機(jī)不設(shè)出生點(diǎn)
if( CHAR_getInt( charaindex, CHAR_LASTTALKELDER) == 35 ) {
CHAR_setInt( charaindex, CHAR_FLOOR, 7407);
CHAR_setInt( charaindex, CHAR_X, 27);
CHAR_setInt( charaindex, CHAR_Y, 6);
}else {
CHAR_setInt( charaindex, CHAR_LASTTALKELDER, 36);
CHAR_setInt( charaindex, CHAR_FLOOR, 7305);
CHAR_setInt( charaindex, CHAR_X, 21);
CHAR_setInt( charaindex, CHAR_Y, 10);
}
}
CHAR_charSaveFromConnectAndChar( clifd,chwk ,FALSE );
CHAR_endCharData(&ch);
CHAR_endCharOneArray( charaindex);
{
int k=0;
for( k=0;k<arraysizeof( add_pet); k++) {
CHAR_endCharOneArray( add_pet[k]);
}
}
CONNECT_setState( clifd, WHILECREATE );
#else
CHAR_charSaveFromConnectAndChar( clifd,chwk ,FALSE );
CHAR_endCharData(&ch);
CHAR_endCharOneArray( charaindex);
CHAR_endCharOneArray( petindex);
CONNECT_setState( clifd, WHILECREATE );
#endif*/
}
static void CHAR_setCharFuncTable( Char *ch)
{
int i;
char *tmp[CHAR_FUNCTABLENUM] = {
"", /* CHAR_INITFUNC */
"core_PreWalk", /* CHAR_WALKPREFUNC */
"core_PostWalk", /* CHAR_WALKPOSTFUNC */
"", /* CHAR_PREOVERFUNC */
"", /* CHAR_PREOVERFUNC */
"core_PlayerWatch", /* CHAR_WATCHFUNC */
"core_Loop", /* CHAR_LOOPFUNC */
"core_Dying", /* CHAR_DYINGFUNC */
"core_PlayerTalked",/* CHAR_TALKEDFUNC */
"", /* CHAR_PREATTACKEDFUNC */
"", /* CHAR_POSTATTACKEDFUNC */
"", /* CHAR_OFFFUNC */
"", /* CHAR_LOOKEDFUNC */
"", /* CHAR_ITEMPUTFUNC */
"", /* CHAR_SPECIALTALKEDFUNC */
"", /* CHAR_WINDOWTALKEDFUNC */
#ifdef _USER_CHARLOOPS
"", // CHAR_LOOPFUNCTEMP1,
"", // CHAR_LOOPFUNCTEMP2,
"", //CHAR_BATTLEPROPERTY,
#endif
};
for( i = 0; i < CHAR_FUNCTABLENUM; i ++ ) {
strcpysafe( ch->charfunctable[i].string,
sizeof( ch->charfunctable[i]),
tmp[i]);
}
}
void CHAR_loginAddItem( int charaindex )
{
/*
int emptyindex, itemindex, id;
int itemID[10]={ 20128, 20130, 20171, 20176, 20296,
20287, 20288, 20289, 20290, 20291};
{
int trn_num=0;
trn_num=CHAR_getInt(charaindex,CHAR_TRANSMIGRATION);
CHAR_setInt( charaindex, CHAR_MAXPOOLITEMHAVELIMIT, 10 + (trn_num * 4) ) ;
CHAR_setInt( charaindex, CHAR_MAXPOOLPETHAVELIMIT , 5 + (trn_num * 2) );
}
while( 1){
emptyindex = CHAR_findEmptyItemBox( charaindex );
if( emptyindex == -1 ) break;
id = rand()%10;
itemindex = ITEM_makeItemAndRegist( itemID[id] );
if( !ITEM_CHECKINDEX( itemindex) ) break;
CHAR_setItemIndex( charaindex, emptyindex, itemindex);
ITEM_setWorkInt( itemindex, ITEM_WORKCHARAINDEX, charaindex);
ITEM_setWorkInt( itemindex, ITEM_WORKOBJINDEX, -1);
//andy_log
print("@:%d.", emptyindex);
}
while( 1){
emptyindex = CHAR_findEmptyPoolItemBox( charaindex );
if( emptyindex == -1 ) break;
id = rand()%10;
itemindex = ITEM_makeItemAndRegist( itemID[id] );
if( !ITEM_CHECKINDEX( itemindex) ) break;
CHAR_setPoolItemIndex( charaindex, emptyindex, itemindex);
ITEM_setWorkInt( itemindex, ITEM_WORKCHARAINDEX, charaindex);
ITEM_setWorkInt( itemindex, ITEM_WORKOBJINDEX, -1);
//andy_log
print("&:%d.", emptyindex);
}
*/
}
void CHAR_loginCheckUserItem( int charaindex)
{
typedef void (*ATTACHFUNC)(int,int);
int i, itemindex;
for( i=0; i<CHAR_STARTITEMARRAY; i++){ //檢查裝備中道具
int ti;
itemindex = CHAR_getItemIndex( charaindex , i );
if( !ITEM_CHECKINDEX( itemindex)){
continue;
}
ITEM_reChangeItemName( itemindex);
#ifdef _ITEM_PILENUMS
ITEM_reChangeItemToPile( itemindex);
#endif
ITEM_setItemUniCode( itemindex);
#ifdef _ANGEL_SUMMON
if( ITEM_getInt( itemindex, ITEM_ID) == ANGELITEM
|| ITEM_getInt( itemindex, ITEM_ID) == HEROITEM ) {
int mindex, mission;
// 檢查信物所有人是否任務(wù)中
mindex = checkIfAngelByName( ITEM_getChar( itemindex, ITEM_ANGELINFO));
mission = atoi( ITEM_getChar( itemindex, ITEM_ANGELMISSION));
if( mindex < 0 || mission != missiontable[mindex].mission ) {
CHAR_setItemIndex( charaindex, i, -1 );
ITEM_endExistItemsOne( itemindex);
CHAR_sendItemDataOne( charaindex, i);
continue;
}
if( ITEM_getInt( itemindex, ITEM_ID) == ANGELITEM ) {
char nameinfo[128];
getMissionNameInfo( charaindex, nameinfo);
// 檢查使者信物裝備中
if( !strcmp( ITEM_getChar( itemindex, ITEM_ANGELINFO), nameinfo) ) {
//CHAR_setWorkInt( charaindex, CHAR_WORKANGELMODE, TRUE);
CHAR_sendAngelMark( CHAR_getWorkInt( charaindex, CHAR_WORKOBJINDEX), 1);
}
}
}
#endif
#ifdef _CHECK_ITEM_MODIFY
ITEM_checkItemModify( charaindex, itemindex);
#endif
//Change fix 2004/07/05
//與人物職業(yè)不合的道具拿下//////////////////
if( ITEM_getInt( charaindex, ITEM_NEEDPROFESSION) != 0 ){
if( CHAR_getInt( charaindex, PROFESSION_CLASS ) != ITEM_getInt( itemindex, ITEM_NEEDPROFESSION)
&& ITEM_getInt( itemindex, ITEM_NEEDPROFESSION) > 0 ){
if( (ti = CHAR_findEmptyItemBox( charaindex )) != -1 ){
CHAR_setItemIndex( charaindex , i, -1);
CHAR_setItemIndex( charaindex , ti, itemindex);
}
continue;
}
}
////////////////////////////////////////////
if( (i == ITEM_getEquipPlace( charaindex, itemindex )) ||
i == CHAR_DECORATION1 || i == CHAR_DECORATION2 ){
char category[256];
ATTACHFUNC atf;
atf=(ATTACHFUNC)ITEM_getFunctionPointer(itemindex,ITEM_ATTACHFUNC);
if( atf ) atf( charaindex, itemindex );
if( ITEM_canuseMagic( itemindex)) {
snprintf( category, sizeof( category), "J%d",i);
CHAR_sendStatusString( charaindex, category );
}
}else{
if( (ti = CHAR_findEmptyItemBox( charaindex )) == -1 ) continue;
CHAR_setItemIndex( charaindex , i, -1);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -