📄 复件 char.c
字号:
switch( OBJECT_getType(objindex) ){ case OBJTYPE_CHARA: for( i=0; i<optlen ; i++ ) { watchopt[i] = opt[i]; } watchoptlen = optlen; dir = CHAR_getInt(index,CHAR_DIR); break; case OBJTYPE_ITEM: for( i=0; i<optlen ; i++ ) { watchopt[i] = opt[i]; } watchoptlen = optlen; dir = 0; break; case OBJTYPE_GOLD: watchopt[0] = index; watchoptlen = 1; dir = 0; break; default: return; } x = OBJECT_getX(objindex); y = OBJECT_getY(objindex); floor = OBJECT_getFloor(objindex); for( i=x-CHAR_DEFAULTSEESIZ/2 ; i<=x+CHAR_DEFAULTSEESIZ/2 ; i++ ){ for( j=y-CHAR_DEFAULTSEESIZ/2 ; j<=y+CHAR_DEFAULTSEESIZ/2 ; j ++ ){ OBJECT object; for( object = MAP_getTopObj(floor,i,j) ; object ; object = NEXT_OBJECT(object) ) { int receiveobjindex = GET_OBJINDEX(object); int recvindex = OBJECT_getIndex( receiveobjindex); WATCHF watchfunc=NULL; switch( OBJECT_getType(receiveobjindex) ){ case OBJTYPE_CHARA: /* 愤坌丐化匹反霜耨仄卅中白仿弘互 匀化中月凛 仃月 */ if( index == recvindex && myflg == FALSE ) { break; } /* watch 奶矛件玄毛粟仇允井升丹井职卞民尼永弁允月 */ if( !CHAR_sendWatchEvent_sendCheck( objindex, index, recvindex , chac )) { break; } watchfunc =(WATCHF)CHAR_getFunctionPointer( OBJECT_getIndex(receiveobjindex), CHAR_WATCHFUNC); break; case OBJTYPE_ITEM: watchfunc = (WATCHF)ITEM_getFunctionPointer( OBJECT_getIndex(receiveobjindex), ITEM_WATCHFUNC); break; case OBJTYPE_NOUSE: case OBJTYPE_GOLD:#ifdef _DEL_DROP_GOLD GOLD_DeleteTimeCheckOne( receiveobjindex);#endif default: break; } if( watchfunc == NULL )continue; watchfunc( receiveobjindex, objindex, chac, x, y, dir, watchopt, watchoptlen ); } } }}/*====================旦平伙====================*//*------------------------------------------------------------ * 旦平伙失永皿匹五月方皿夫玄戊伙毛仄扎屯月[ * 娄醒 * charaindex int 平乓仿奶件犯永弁旦 * 忒曰袄 * 岳 TRUE(1) * 撩 ( 端卞霜日卅井匀凶日巨仿□手殖引木月) FALSE(0) ------------------------------------------------------------*/BOOL CHAR_Skillupsend(int charaindex ){#if 1 // 旦玄□件巨奶斥迕卞 凳仄凶手及 int point; int fd; if( !CHAR_CHECKINDEX(charaindex) )return FALSE; // 中仁勾禾奶件玄失永皿匹五月井 point = CHAR_getInt( charaindex, CHAR_SKILLUPPOINT ); fd = getfdFromCharaIndex(charaindex); lssproto_SKUP_send(fd, point ); return TRUE;#else char sendbuf[128]; // 仇切日反LS2凛及手及 if(SKILL_getUpableSkillID(charaindex,sendbuf,sizeof(sendbuf))){ int fd; fd = getfdFromCharaIndex(charaindex); if( fd != -1 && sendbuf[0] != '\0' ){ lssproto_SKUP_send(fd,sendbuf); return TRUE; } }#endif return FALSE;}/*------------------------------------------------------------ * 旦平伙失永皿允月 * 娄醒 * charaindex int 平乓仿奶件犯永弁旦 * skillid int 旦平伙ID * 忒曰袄 * 卅仄 ------------------------------------------------------------*/void CHAR_SkillUp( int charaindex, int skillid ){ if( !CHAR_CHECKINDEX(charaindex) )return; /*韶氏匹中凶日匹五卅中 */ if( CHAR_getFlg(charaindex,CHAR_ISDIE) )return; { int SkUpTbl[] = { CHAR_VITAL, CHAR_STR, CHAR_TOUGH, CHAR_DEX }; int SendTbl[] = { CHAR_P_STRING_VITAL|CHAR_P_STRING_MAXHP|CHAR_P_STRING_DEF, CHAR_P_STRING_STR|CHAR_P_STRING_MAXHP|CHAR_P_STRING_ATK, CHAR_P_STRING_TOUGH|CHAR_P_STRING_MAXHP|CHAR_P_STRING_DEF, CHAR_P_STRING_DEX|CHAR_P_STRING_MAXHP|CHAR_P_STRING_ATK|CHAR_P_STRING_QUICK }; int cnt; // 区民尼永弁 if( skillid < 0 || skillid >= 4 ){ return; } // 引分由仿丢□正失永皿匹五月井" cnt = CHAR_getInt(charaindex,CHAR_SKILLUPPOINT); if( cnt <= 0 )return; CHAR_setInt( charaindex,CHAR_SKILLUPPOINT,cnt-1); CHAR_setInt( charaindex, SkUpTbl[skillid], CHAR_getInt( charaindex, SkUpTbl[skillid] ) + 1*100 ); CHAR_complianceParameter(charaindex); CHAR_send_P_StatusString( charaindex, SendTbl[skillid]); } CHAR_PartyUpdate( charaindex, CHAR_N_STRING_MAXHP );}INLINE void CHAR_getDXDY( int dir , int* dx, int* dy ){ static POINT CHAR_dxdy[8]= { { 0,-1}, /* */ { 1,-1}, /* */ { 1, 0}, /* */ { 1, 1}, /* */ { 0, 1}, /* */ {-1, 1}, /* */ {-1, 0}, /* */ {-1,-1}, /* */ }; VALIDATEDIR(dir); if( dx )*dx = CHAR_dxdy[dir].x; if( dy )*dy = CHAR_dxdy[dir].y;}INLINE int CHAR_getDX( int dir ){ int tmp; CHAR_getDXDY( dir,&tmp,NULL); return tmp;}INLINE int CHAR_getDY( int dir ){ int tmp; CHAR_getDXDY( dir,NULL,&tmp); return tmp;}/*------------------------------------------------------------ * 元穴旦及平乓仿弁正□毛 月[ * 娄醒 * objbuf int* object 匹及 index 毛医 允月 * 田永白央 * siz int objbuf 及 扔奶术 * ff int 白夫失 * fx int x * fy int y * 忒曰袄 * 窒蜊平乓仿互中月井[ ------------------------------------------------------------*/int CHAR_getSameCoordinateObjects(int* objbuf, int siz,int ff, int fx, int fy){ OBJECT object; int findobjnum=0; for( object = MAP_getTopObj(ff,fx,fy) ; object ; object = NEXT_OBJECT(object ) ){ int objindex = GET_OBJINDEX(object); if( siz <= findobjnum )break; if( OBJECT_getType(objindex) != OBJTYPE_NOUSE ) objbuf[findobjnum++] = objindex; } return findobjnum;}/*====================平乓仿及树 毛 月烟及楮醒====================*//*左皿扑亦件犯□正及 侬 毛忡绣允月楮醒*/static char CHAR_optiondataString[STRINGBUFSIZ];/*------------------------------------------------------------ * 左皿扑亦件迕及 侬 毛综月[ * level, showstring , 熔及醒 , 飓 寞} 窒荚夫弘奶件仄凶井[ * 弁仿旦[ * 娄醒 * ch Char* 平乓仿犯□正 * 忒曰袄 * char* static 卅 毛忒允及匹戚荚及裟太请仄及凛卞反 互 * 凳今木化中月[娄醒毛公及引引忡绣仄卅中仪[ ------------------------------------------------------------*/char* CHAR_makeOptionString( Char* ch ){ char escapeshowstring[256]; char *showstr = MAP_getfloorShowstring(ch->data[CHAR_FLOOR]); if( ! showstr ){ CHAR_optiondataString[0] = '\0'; return CHAR_optiondataString; } else {#if 0 /* 动票反LS2酷 匹丐月 */ snprintf( CHAR_optiondataString, sizeof( CHAR_optiondataString ), "%d|%s|1|%d|%d", ch->data[CHAR_LV], makeEscapeString( showstr , escapeshowstring,sizeof(escapeshowstring) ), ch->data[CHAR_BASEIMAGENUMBER], ch->data[CHAR_LOGINCOUNT]);#endif /* 动票反StoneAge 酷 匹丐月[ dataplace|faceimg|level|hp|str|def|dex|charm|dp|earth|water|fire|wind|login|Name|Place 午卅月[ */ { snprintf( CHAR_optiondataString, sizeof( CHAR_optiondataString ), "%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%s|%s", ch->data[CHAR_DATAPLACENUMBER], ch->data[CHAR_FACEIMAGENUMBER], ch->data[CHAR_LV], ch->workint[CHAR_WORKMAXHP], ch->workint[CHAR_WORKATTACKPOWER], ch->workint[CHAR_WORKDEFENCEPOWER], ch->workint[CHAR_WORKQUICK], ch->workint[CHAR_WORKFIXCHARM], ch->data[CHAR_DUELPOINT], /* dp, FIXME */ ch->workint[CHAR_WORKFIXEARTHAT], ch->workint[CHAR_WORKFIXWATERAT], ch->workint[CHAR_WORKFIXFIREAT], ch->workint[CHAR_WORKFIXWINDAT], ch->data[CHAR_LOGINCOUNT], ch->string[CHAR_NAME].string, makeEscapeString( showstr , escapeshowstring, sizeof(escapeshowstring) ) ); } } return CHAR_optiondataString;}static char CHAR_statusSendBuffer[STRINGBUFSIZ];char* CHAR_makeStatusString( int index, char* category ){ char c = tolower( category[0] ); int strlength=0; if( !CHAR_CHECKINDEX( index ) ) return "\0"; if( category == "\0" ){ CHAR_statusSendBuffer[0] = '\0'; return CHAR_statusSendBuffer; } switch( c ){ case 'p': { int i; int getCharDataArray[]= { CHAR_NAME, CHAR_OWNTITLE, //CHAR_FMNAME, }; int exp = CHAR_getInt(index,CHAR_EXP ); int maxexp = CHAR_GetLevelExp( index, CHAR_getInt( index, CHAR_LV ) + 1); int attr[4]; for( i = 0; i < 4; i ++ ) { attr[i] = CHAR_getWorkInt( index, CHAR_WORKFIXEARTHAT + i); if( attr[i] < 0 ) attr[i] = 0; } snprintf(CHAR_statusSendBuffer,sizeof(CHAR_statusSendBuffer), "P1|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|", CHAR_getInt(index,CHAR_HP), CHAR_getWorkInt(index,CHAR_WORKMAXHP), CHAR_getInt(index,CHAR_MP), CHAR_getWorkInt(index,CHAR_WORKMAXMP), CHAR_getInt(index,CHAR_VITAL)/100, CHAR_getInt(index,CHAR_STR)/100, CHAR_getInt(index,CHAR_TOUGH)/100, CHAR_getInt(index,CHAR_DEX)/100, exp, maxexp, CHAR_getInt(index,CHAR_LV), CHAR_getWorkInt(index,CHAR_WORKATTACKPOWER), CHAR_getWorkInt(index,CHAR_WORKDEFENCEPOWER), CHAR_getWorkInt( index, CHAR_WORKQUICK), CHAR_getWorkInt( index, CHAR_WORKFIXCHARM), CHAR_getWorkInt( index, CHAR_WORKFIXLUCK), attr[0], attr[1], attr[2], attr[3], CHAR_getInt(index,CHAR_GOLD), CHAR_getInt(index,CHAR_INDEXOFEQTITLE), CHAR_getInt(index,CHAR_DUELPOINT), CHAR_getInt( index, CHAR_TRANSMIGRATION), CHAR_getInt(index,CHAR_RIDEPET), CHAR_getInt(index,CHAR_LEARNRIDE), CHAR_getInt(index,CHAR_BASEBASEIMAGENUMBER) ); strlength = strlen( CHAR_statusSendBuffer ); for( i = 0 ; i < arraysizeof( getCharDataArray ) ; i ++ ){ char token[256]; char escapebuffer[128]; snprintf( token, sizeof( token ), "%s" STATUSSENDDELIMITER, makeEscapeString( CHAR_getChar(index, getCharDataArray[i]), escapebuffer,sizeof(escapebuffer) )); strcpysafe( CHAR_statusSendBuffer + strlength, sizeof( CHAR_statusSendBuffer ) - strlength, token ); strlength += strlen( token ); if( strlength >= sizeof( CHAR_statusSendBuffer ) ) return CHAR_statusSendBuffer; } return CHAR_statusSendBuffer; break; } case 'f': { int big4fm =0; switch( CHAR_getWorkInt( index, CHAR_WORKFMFLOOR) ) { case 1041: big4fm = 1; break; case 2031: big4fm = 2; break; case 3031: big4fm = 3; break; case 4031: big4fm = 4; break; default: big4fm = 0; } #ifdef _FIX_FMNAME_RULE // WON ADD 家族未成立,不显示名称 if( CHAR_getWorkInt(index, CHAR_WORKFMSETUPFLAG)==1 ){ snprintf( CHAR_statusSendBuffer, sizeof( CHAR_statusSendBuffer ), "F%s|%d|%d|%d|%d", "(待审)", CHAR_getInt( index, CHAR_FMLEADERFLAG), CHAR_getWorkInt( index, CHAR_WORKFMCHANNEL), CHAR_getInt( index, CHAR_FMSPRITE), big4fm ); }else#endif snprintf( CHAR_statusSendBuffer, sizeof( CHAR_statusSendBuffer ), "F%s|%d|%d|%d|%d", CHAR_getChar( index, CHAR_FMNAME), CHAR_getInt( index, CHAR_FMLEADERFLAG), CHAR_getWorkInt( index, CHAR_WORKFMCHANNEL), CHAR_getInt( index, CHAR_FMSPRITE), big4fm ); return CHAR_statusSendBuffer; break; } case 'c': { int floor,xsiz,ysiz; floor = CHAR_getInt(index,CHAR_FLOOR); xsiz = MAP_getfloorX(floor); ysiz = MAP_getfloorY(floor); snprintf( CHAR_statusSendBuffer, sizeof( CHAR_statusSendBuffer ), "C%d|%d|%d|%d|%d", CHAR_getInt(index,CHAR_FLOOR), xsiz, ysiz, CHAR_getInt(index,CHAR_X), CHAR_getInt(index,CHAR_Y) ); return CHAR_statusSendBuffer; break; } case 'i': { int i; CHAR_statusSendBuf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -