/*---------------------------------------- * 平乓仿及璃曰及穴永皿毛允屯化霜月 * 婁醒 * fd int * charaindex int 平乓仿及奶件犯永弁旦 * 忒曰襖 * 岳 TRUE(1) * 撩 FALSE(0) ----------------------------------------*/ BOOL MAP_sendArroundCharNeedFD( int fd,int charaindex ) { char* stringdata; int x=CHAR_getInt(charaindex,CHAR_X); int y=CHAR_getInt(charaindex,CHAR_Y); int fl=CHAR_getInt(charaindex,CHAR_FLOOR); int size=MAP_CHAR_DEFAULTSEESIZ; RECT seekr,retr; seekr.x = x - (int)(size/2); seekr.y = y - (int)(size/2); seekr.width = size; seekr.height = size; #if 1 { int tilesum, objsum, eventsum; stringdata = MAP_getChecksumFromRECT(fl,&seekr,&retr, &tilesum,&objsum,&eventsum); if( stringdata == NULL ) return FALSE; lssproto_MC_send(fd,fl, retr.x, retr.y, retr.x + retr.width, retr.y + retr.height, tilesum, objsum, eventsum, stringdata ); } #else stringdata = MAP_getdataFromRECT(fl,&seekr,&retr); if( stringdata == NULL ) return FALSE; lssproto_M_send(fd,fl, retr.x, retr.y, retr.x + retr.width, retr.y + retr.height, stringdata ); #endif return TRUE; }
/*------------------------------------------------------------ * n Êâ Ê⤤¤¿map¤òÁ÷¤ë * °ú¿ô * index int ¥¥ã¥é¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹ * fl int ¥Õ¥í¥¢ID * ox int Á°¤Î¾õÂÖ¤Îx * oy int Á°¤Î¾õÂÖ¤Îy * fx int Ê⤤¤¿¸å¤Îx * fy int Ê⤤¤¿¸å¤Îy * ÊÖ¤êÃÍ * ¤Ê¤· ------------------------------------------------------------*/ static void CHAR_sendMapAtWalk( int index, int fl ,int ox ,int oy, int fx, int fy ) { /* * ¸½ºß¤ÎÃͤȡ¢Á°¤Þ¤Ç¤ÎÃͤκ¹¤ò¸«¤ë * ¤³¤¦¤¹¤ë¤È¡¢¥ï¡¼¥×NPC¤â´Êñ¤À¡£ */ int vx,vy; const int seesiz = MAP_CHAR_DEFAULTSEESIZ; if( !CHAR_CHECKINDEX( index ) )return; vx = fx - ox; vy = fy - oy; if( ABS(vx) >= seesiz/2 || /* º¹¤¬Â礤¤ */ ABS(vy) >= seesiz/2 ){ /* º¹¤¬Â礤¤ */ return; }else{ RECT send,get; char* mapdata; int oldlux = ox - (int)(seesiz/2); int oldluy = oy - (int)(seesiz/2); int absx = ABS(vx); int absy = ABS(vy); /* * ¤Ò¤È¤Ä¿¤á¤Ë¥¹¥¿¡¼¥È¤ò¼è¤ë¤Î¤È¡¢vx , vy ¤«¤é1¤Ò¤¯¤Î¤¬¥Ý¥¤¥ó¥È * Á°¤È¤«¤µ¤Ê¤é¤Ê¤¤¤è¤¦¤Ë¡¢ * clipRect ¤Ï w,h 0 ¤ò¤ß¤È¤á¤Æ¤¤¤ë */ /* == 0 ¤Î»þ¤ÏÁ÷¤é¤Ê¤¯¤Æ¤è¤¤ */ if( vx != 0 ){ if( vx > 0 ){ send.x = oldlux + seesiz; send.width = absx; }else if( vx < 0 ){ send.x = oldlux - absx; send.width = absx; } if( vy >= 0 ){ send.y = oldluy; send.height = seesiz + absy; }else{ send.y = oldluy - absy; send.height = seesiz + absy; } { int tilesum, objsum,eventsum; mapdata = MAP_getChecksumFromRECT(fl,&send,&get,&tilesum, &objsum,&eventsum ); if( mapdata != NULL && !( get.width == 0 && get.height == 0 ) ){ int fd = getfdFromCharaIndex( index ); if( fd != -1 ) lssproto_MC_send( fd,fl,get.x,get.y, get.x+get.width, get.y+get.height, tilesum, objsum, eventsum, mapdata ); } } } /* == 0 ¤Î»þ¤ÏÁ÷¤é¤Ê¤¯¤Æ¤è¤¤ */ if( vy != 0 ){ if( vy > 0 ){ send.y = oldluy + seesiz; send.height = absy; }else{ send.y = oldluy - absy; send.height = absy; } if( vx >= 0 ){ send.x = oldlux; send.width = seesiz + absx; }else if( vx < 0 ){ send.x = oldlux - absx; send.width = seesiz + absx; } { int tilesum, objsum,eventsum; mapdata = MAP_getChecksumFromRECT(fl,&send,&get, &tilesum, &objsum,&eventsum); if( mapdata != NULL && !( get.width == 0 && get.height == 0 ) ){ int fd = getfdFromCharaIndex( index ); if( fd != -1 ) lssproto_MC_send( fd,fl,get.x,get.y, get.x+get.width, get.y+get.height, tilesum, objsum, eventsum, mapdata ); } } } } }
/*------------------------------------------------------------ * n 汹 汹中凶map毛霜月 * 娄醒 * index int 平乓仿及奶件犯永弁旦 * fl int 白夫失ID * ox int 蟆及橇谪及x * oy int 蟆及橇谪及y * fx int 汹中凶 及x * fy int 汹中凶 及y * 忒曰袄 * 卅仄 ------------------------------------------------------------*/ static void CHAR_sendMapAtWalk( int index, int fl ,int ox ,int oy, int fx, int fy ) { /* * 蜇箕及袄午}蟆引匹及袄及犒毛苇月 * 仇丹允月午}伐□皿NPC手棵签分[ */ int vx,vy; const int seesiz = MAP_CHAR_DEFAULTSEESIZ; if( !CHAR_CHECKINDEX( index ) )return; vx = fx - ox; vy = fy - oy; if( ABS(vx) >= seesiz/2 || /* 犒互 五中 */ ABS(vy) >= seesiz/2 ){ /* 犒互 五中 */ return; }else{ RECT send,get; char* mapdata; int oldlux = ox - (int)(seesiz/2); int oldluy = oy - (int)(seesiz/2); int absx = ABS(vx); int absy = ABS(vy); /* * 夫午勾聂户卞旦正□玄毛潸月及午}vx , vy 井日1夫仁及互禾奶件玄 * 蟆午井今卅日卅中方丹卞} * clipRect 反 w,h 0 毛心午户化中月 */ /* == 0 及凛反霜日卅仁化方中 */ if( vx != 0 ){ if( vx > 0 ){ send.x = oldlux + seesiz; send.width = absx; }else if( vx < 0 ){ send.x = oldlux - absx; send.width = absx; } if( vy >= 0 ){ send.y = oldluy; send.height = seesiz + absy; }else{ send.y = oldluy - absy; send.height = seesiz + absy; } { int tilesum, objsum,eventsum; mapdata = MAP_getChecksumFromRECT(fl,&send,&get,&tilesum, &objsum,&eventsum ); if( mapdata != NULL && !( get.width == 0 && get.height == 0 ) ){ int fd = getfdFromCharaIndex( index ); if( fd != -1 ) lssproto_MC_send( fd,fl,get.x,get.y, get.x+get.width, get.y+get.height, tilesum, objsum, eventsum, mapdata ); } } } /* == 0 及凛反霜日卅仁化方中 */ if( vy != 0 ){ if( vy > 0 ){ send.y = oldluy + seesiz; send.height = absy; }else{ send.y = oldluy - absy; send.height = absy; } if( vx >= 0 ){ send.x = oldlux; send.width = seesiz + absx; }else if( vx < 0 ){ send.x = oldlux - absx; send.width = seesiz + absx; } { int tilesum, objsum,eventsum; mapdata = MAP_getChecksumFromRECT(fl,&send,&get, &tilesum, &objsum,&eventsum); if( mapdata != NULL && !( get.width == 0 && get.height == 0 ) ){ int fd = getfdFromCharaIndex( index ); if( fd != -1 ) lssproto_MC_send( fd,fl,get.x,get.y, get.x+get.width, get.y+get.height, tilesum, objsum, eventsum, mapdata ); } } } } }
/*------------------------------------------------------------ * n ÐÚ ÐÚÖÐÐ×mapë˪Ô * ¦ÐÑ * index int ƽÅҷ¼°Ä̼þ·¸ÓÀÛ͵© * fl int °×·òʧID * ox int ó¡¼°ÇÁÚؼ°x * oy int ó¡¼°ÇÁÚؼ°y * fx int ÐÚÖÐÐ× ¼°x * fy int ÐÚÖÐÐ× ¼°y * ߯Ի°À * ئØÆ ------------------------------------------------------------*/ static void CHAR_sendMapAtWalk( int index, int fl ,int ox ,int oy, int fx, int fy ) { /* * òØ»þ¼°°ÀÎç£ýó¡ÒýÆ¥¼°°À¼°êûëÎÔ * ³ðµ¤ÔÊÔÂÎç£ý·¥¡õÃóNPCÊÖ¿ÃÇ©·Ö£Û */ int vx,vy; const int seesiz = MAP_CHAR_DEFAULTSEESIZ; if( !CHAR_CHECKINDEX( index ) )return; vx = fx - ox; vy = fy - oy; if( ABS(vx) >= seesiz/2 || /* êû»¥ ÎåÖÐ */ ABS(vy) >= seesiz/2 ){ /* êû»¥ ÎåÖÐ */ return; }else{ RECT send,get; char* mapdata; int oldlux = ox - (int)(seesiz/2); int oldluy = oy - (int)(seesiz/2); int absx = ABS(vx); int absy = ABS(vy); /* * ·òÎç¹´Äô»§±åµ©Õý¡õÐþëäúÔ¼°Îç£ývx , vy ¾®ÈÕ1·òÈʼ°»¥ºÌÄ̼þÐþ * ó¡Îç¾®½ñئÈÕئÖз½µ¤±å£ý * clipRect ·´ w,h 0 ëÐÄÎ继»¯ÖÐÔ */ /* == 0 ¼°ÁÝ·´ËªÈÕئÈÊ»¯·½ÖÐ */ if( vx != 0 ){ if( vx > 0 ){ send.x = oldlux + seesiz; send.width = absx; }else if( vx < 0 ){ send.x = oldlux - absx; send.width = absx; } if( vy >= 0 ){ send.y = oldluy; send.height = seesiz + absy; }else{ send.y = oldluy - absy; send.height = seesiz + absy; } { int tilesum, objsum,eventsum; mapdata = MAP_getChecksumFromRECT(fl,&send,&get,&tilesum, &objsum,&eventsum ); if( mapdata != NULL && !( get.width == 0 && get.height == 0 ) ){ int fd = getfdFromCharaIndex( index ); if( fd != -1 ) lssproto_MC_send( fd,fl,get.x,get.y, get.x+get.width, get.y+get.height, tilesum, objsum, eventsum, mapdata ); } } } /* == 0 ¼°ÁÝ·´ËªÈÕئÈÊ»¯·½ÖÐ */ if( vy != 0 ){ if( vy > 0 ){ send.y = oldluy + seesiz; send.height = absy; }else{ send.y = oldluy - absy; send.height = absy; } if( vx >= 0 ){ send.x = oldlux; send.width = seesiz + absx; }else if( vx < 0 ){ send.x = oldlux - absx; send.width = seesiz + absx; } { int tilesum, objsum,eventsum; mapdata = MAP_getChecksumFromRECT(fl,&send,&get, &tilesum, &objsum,&eventsum); if( mapdata != NULL && !( get.width == 0 && get.height == 0 ) ){ int fd = getfdFromCharaIndex( index ); if( fd != -1 ) lssproto_MC_send( fd,fl,get.x,get.y, get.x+get.width, get.y+get.height, tilesum, objsum, eventsum, mapdata ); } } } } }