📄 npc_transmigration.c
字号:
num = CHAR_getInt(toindex, CHAR_TRANSMIGRATION); // 前面已加1,故0转1时为1 tmp = (float)para / 100;#ifdef _TRANS_6 if (num == 6) tmp = 620; // 六转生时旧点数不计#endif ans =(float)tmp/12 + (float)(quest / 4) +( (float)(level- num * 85) /4); return (int)ans;}//*******************************************************//*******************************************************float Rounding(float work,int num){ float p; if(num <0 ) return work; num--; p = (float)pow(10,num); return ( (work * p + 0.5) /p);}//*******************************************************//////*******************************************************BOOL NPC_TransmigrationStatus(int meindex, int toindex,int work[10]){ int vital, str, tgh, dex; int quest , level ,equ; int t_quest, t_level; int total,ans; float tmp,lvup; vital = CHAR_getInt(toindex,CHAR_VITAL); str = CHAR_getInt(toindex,CHAR_STR); tgh = CHAR_getInt(toindex,CHAR_TOUGH); dex = CHAR_getInt(toindex,CHAR_DEX); //弁巨旦玄白仿弘毛民尼永弁 quest = NPC_TransmigrationQuestCheck( toindex); //伊矛伙 level = CHAR_getInt(toindex,CHAR_LV); work[0] = level; work[1] = quest; equ = CHAR_getInt(toindex, CHAR_TRANSEQUATION); t_quest = (float)(( equ >> 16 ) & 0xFFFF); t_level = (float)(( equ >> 0 ) & 0xFFFF); if( level > 130 ) level = 130; t_quest = t_quest + quest; t_level = t_level + level; CHAR_setInt(toindex, CHAR_TRANSEQUATION, ( t_quest << 16 )+( t_level << 0 ) ); total = vital + str + tgh + dex; ans = NPC_TransCalculation(toindex, total); work[2] = vital; tmp = (float)vital/total * ans; work[3] = Rounding(tmp,1) * 100; work[4] = str; tmp = (float)str/total * ans; work[5] = Rounding(tmp,1) * 100; work[6] = tgh; tmp = (float)tgh/total * ans; work[7] = Rounding(tmp,1) * 100; work[8] = dex; tmp = (float)dex/total * ans; work[9] = Rounding(tmp,1) * 100; //vital本永玄 if(work[3] < 0) work[3] = 0; CHAR_setInt(toindex, CHAR_VITAL, work[3]); //str本永玄 if(work[5] < 0) work[5] = 0; CHAR_setInt(toindex, CHAR_STR, work[5]); //tghr本永玄 if(work[7] < 0) work[7] = 0; CHAR_setInt(toindex, CHAR_TOUGH, work[7]); //dex本永玄 if(work[9] < 0) work[9] = 0; CHAR_setInt(toindex, CHAR_DEX, work[9]); lvup = CHAR_getInt(toindex, CHAR_SKILLUPPOINT );/*#ifdef _TRANS_6 if( CHAR_getInt(toindex, CHAR_TRANSMIGRATION) == 6) lvup = 620;#endif*/ lvup = lvup / 12; lvup = Rounding(lvup, 1); if(lvup < 0) lvup = 0; CHAR_setInt(toindex, CHAR_SKILLUPPOINT, (int)lvup); /* 旦平伙失永皿匹五凶日仇木毛霜月 */ if( CHAR_getInt( toindex,CHAR_SKILLUPPOINT ) >=1 ) CHAR_Skillupsend(toindex); return TRUE;}/*---------------------------- * 矢永玄毛馨笛允月 ------------------------------*/BOOL NPC_TransmigrationAddPet(int meindex, int talker, int petid){ int ret; char msgbuf[64]; int enemynum; int i,j; int petindex; int petindex2; for( i = 0 ;i < CHAR_MAXPETHAVE ; i++) { petindex = CHAR_getCharPet( talker, i); if( petindex == -1 ) break; } if(i == CHAR_MAXPETHAVE) return FALSE; enemynum = ENEMY_getEnemyNum(); for( i = 0; i < enemynum; i ++ ) { if( ENEMY_getInt( i, ENEMY_ID) == petid) { break; } } if( i == enemynum ) return FALSE; ret = ENEMY_createPetFromEnemyIndex( talker, i); for( i = 0; i < CHAR_MAXPETHAVE; i ++ ){ if( CHAR_getCharPet( talker, i ) == ret )break; } if( i == CHAR_MAXPETHAVE ) i = 0; if( CHAR_CHECKINDEX( ret ) == TRUE ){ CHAR_setMaxExpFromLevel( ret, CHAR_getInt( ret, CHAR_LV )); } petindex2 = CHAR_getCharPet(talker, i); if( !CHAR_CHECKINDEX( petindex2) ) return FALSE; snprintf( msgbuf,sizeof( msgbuf), "拿到%s。", CHAR_getChar(petindex2,CHAR_NAME)); CHAR_talkToCli( talker, -1, msgbuf, CHAR_COLORWHITE); for(j = 0; j < CHAR_MAXPETHAVE; j++){ petindex = CHAR_getCharPet(talker, j); if( !CHAR_CHECKINDEX( petindex) ) continue; CHAR_complianceParameter( petindex ); snprintf( msgbuf, sizeof( msgbuf ), "K%d", j ); CHAR_sendStatusString( talker, msgbuf ); snprintf( msgbuf, sizeof( msgbuf ), "W%d", j ); CHAR_sendStatusString( talker, msgbuf ); } LogPet( CHAR_getChar( talker, CHAR_NAME ), /* 平乓仿 */ CHAR_getChar( talker, CHAR_CDKEY ), CHAR_getChar( petindex2, CHAR_NAME), CHAR_getInt( petindex2, CHAR_LV), "TenseiGet", CHAR_getInt( talker,CHAR_FLOOR), CHAR_getInt( talker,CHAR_X ), CHAR_getInt( talker,CHAR_Y ), CHAR_getChar( petindex2, CHAR_UNIQUECODE) // shan 2001/12/14 ); return TRUE;}int NPC_TransmigrationFlg_CLS(int meindex, int toindex){#ifdef _PET_TRANS int endevflg[]={69,70,71,72,109,118,122,131,127,158,159,-1}; int nowevflg[]={69,70,71,72,-1};#endif#ifdef _TRANS_6 int flg[6] = {48,49,50,51,52,179};#else int flg[5] = {48,49,50,51,52};#endif int num= CHAR_getInt(toindex ,CHAR_TRANSMIGRATION); int i;#ifdef _PET_TRANS i=0; while(endevflg[i] != -1 ) { if( NPC_EventCheckFlg( toindex, endevflg[i] ) == FALSE ) { endevflg[i] = 0; } i++; } i=0; while( nowevflg[i] != -1 ) { if( NPC_NowEventCheckFlg( toindex, nowevflg[i] ) == FALSE ) { nowevflg[i] = 0; } i++; }#endif CHAR_setInt(toindex,CHAR_ENDEVENT,0); CHAR_setInt(toindex,CHAR_ENDEVENT2,0); CHAR_setInt(toindex,CHAR_ENDEVENT3,0);#ifdef _NEWEVENT CHAR_setInt(toindex,CHAR_ENDEVENT4,0); CHAR_setInt(toindex,CHAR_ENDEVENT5,0); CHAR_setInt(toindex,CHAR_ENDEVENT6,0);#endif CHAR_setInt(toindex,CHAR_NOWEVENT,0); CHAR_setInt(toindex,CHAR_NOWEVENT2,0); CHAR_setInt(toindex,CHAR_NOWEVENT3,0);#ifdef _NEWEVENT CHAR_setInt(toindex,CHAR_NOWEVENT4,0); CHAR_setInt(toindex,CHAR_NOWEVENT5,0); CHAR_setInt(toindex,CHAR_NOWEVENT6,0);#endif#ifdef _PET_TRANS i=0; while( endevflg[i] != -1 ) { if( endevflg[i] > 0 ) { // shan Begin //NPC_EventSetFlg( toindex, endevflg[i]); s_eventsetend(toindex, endevflg[i]); // End } i++; } i=0; while( nowevflg[i] != -1 ) { if( nowevflg[i] > 0 ) { NPC_NowEventSetFlg( toindex, nowevflg[i]); } i++; }#endif for(i = 0 ;i < num ;i++) { NPC_EventSetFlg(toindex, flg[i]); // CoolFish: Family Adv 2001/8/4 AddFMAdv(toindex, flg[i]); }#ifdef _TRANS_6 if( num == 6 ){ NPC_EventSetFlg(toindex, 63); //不给玩家解英雄的祝福 NPC_EventSetFlg(toindex, 136);//不给玩家解泪之石 NPC_EventSetFlg(toindex, 175);//雷尔任务 NPC_EventSetFlg(toindex, 176);//雷尔任务 }#endif return 1;}//******************************************************************//矢永玄毛壅允//******************************************************************BOOL NPC_TransmigrationDelPetDel(int meindex,int talker,int petsel){ int petindex; int fd = getfdFromCharaIndex( talker ); char msgbuf[64]; char szPet[128]; int defpet; petindex = CHAR_getCharPet( talker, petsel); if( !CHAR_CHECKINDEX(petindex) ) return FALSE; if( CHAR_getWorkInt( CONNECT_getCharaindex( fd), CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) return FALSE; /*--公及矢永玄互田玄伙井升丹井及民尼永弁--*/ defpet = CHAR_getInt( talker, CHAR_DEFAULTPET); if(defpet == petsel){ CHAR_setInt( talker, CHAR_DEFAULTPET, -1); lssproto_KS_send( fd, -1, TRUE); } snprintf( msgbuf,sizeof( msgbuf), "交出%s。", CHAR_getChar( petindex, CHAR_NAME)); CHAR_talkToCli( talker, -1, msgbuf, CHAR_COLORWHITE); LogPet( CHAR_getChar( talker, CHAR_NAME ), /* 平乓仿抩 */ CHAR_getChar( talker, CHAR_CDKEY ), CHAR_getChar( petindex, CHAR_NAME), CHAR_getInt( petindex, CHAR_LV), "TenseiDel", CHAR_getInt( talker,CHAR_FLOOR), CHAR_getInt( talker,CHAR_X ), CHAR_getInt( talker,CHAR_Y ), CHAR_getChar( petindex, CHAR_UNIQUECODE) // shan 2001/12/14 ); CHAR_setCharPet( talker, petsel, -1); CHAR_endCharOneArray( petindex ); snprintf( szPet, sizeof( szPet ), "K%d", petsel); CHAR_sendStatusString( talker, szPet ); return TRUE;}//***********************************************************//***********************************************************BOOL NPC_TransmigrationDelPet(int meindex, int talker){ int petsel; int petindex; int num; int j, k;// int petid[4] = {1, 2, 3, 4}; //矢永玄及 毛隙烂 int petid[4] = {693, 694, 695, 696}; //矢永玄及 毛隙烂// int petidfinal[4] = {11, 12, 13, 14}; //矢永玄及 毛隙烂 int petidfinal[4] = {693, 694, 695, 696}; //矢永玄及 毛隙烂 int petwork[4] ={ -1, -1, -1, -1}; num = CHAR_getInt(talker, CHAR_TRANSMIGRATION); num--; if(num < 4 ){ //隙烂矢永玄毛手匀化中月井矢永玄民尼永弁 for(petsel=0 ; petsel < CHAR_MAXPETHAVE ; petsel++){ petindex = CHAR_getCharPet( talker, petsel); if( petindex == -1 ) continue; if(CHAR_getInt( petindex, CHAR_PETID) != petid[num]) continue; break; } if(petsel == CHAR_MAXPETHAVE) return FALSE; if(NPC_TransmigrationDelPetDel(meindex, talker, petsel) == FALSE) return FALSE; }#ifdef _TRANS_6 else if( num == 4 )#else else#endif { for(j = 0; j < 4; j++){ //隙烂矢永玄毛手匀化中月井矢永玄民尼永弁 for(petsel=0 ; petsel < CHAR_MAXPETHAVE ; petsel++){ petindex = CHAR_getCharPet( talker, petsel); if( petindex == -1 ) continue; if(CHAR_getInt( petindex, CHAR_PETID) != petidfinal[j]) continue; petwork[j] = petsel; break; } } for(k=0; k < 4 ;k++) { if(petwork[k] == -1) return FALSE; } for(k = 0 ; k < 4 ;k++){ if(NPC_TransmigrationDelPetDel(meindex, talker, petwork[k]) == FALSE) return FALSE; } }#ifdef _TRANS_6 else{ /*int lasttalkelder = 2;//乌力 if( CHAR_getInt( talker, CHAR_LASTTALKELDER) == 1 )//玛丽娜丝 lasttalkelder = 112;//凯比 else if( CHAR_getInt( talker, CHAR_LASTTALKELDER) == 2 )//加加 lasttalkelder = 102;//克克尔 else if( CHAR_getInt( talker, CHAR_LASTTALKELDER) == 3 )//卡鲁它那 lasttalkelder = 34;//威伯 */ //隙烂矢永玄毛手匀化中月井矢永玄民尼永弁 for(petsel=0 ; petsel < CHAR_MAXPETHAVE ; petsel++){ int petid; petindex = CHAR_getCharPet( talker, petsel); if( petindex == -1 ) continue; if(CHAR_getInt( petindex, CHAR_TRANSMIGRATION) != 2) continue; petid=CHAR_getInt( petindex, CHAR_PETID ); if (petid == 2) break; if (petid == 112) break; if (petid == 102) break; if (petid == 34) break; } if(petsel == CHAR_MAXPETHAVE) return FALSE; if(NPC_TransmigrationDelPetDel(meindex, talker, petsel) == FALSE) return FALSE; }#endif return TRUE;}#ifdef _PET_TRANSvoid NPC_PetTransMan_selectWindow(int meindex,int toindex,int num,int select){ char token[1024],buf[1024],buf1[256];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -