示例#1
0
/*----------------------------------------
 * 平乓仿及璃曰及穴永皿毛允屯化霜月
 * 婁醒
 *  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;
}
示例#2
0
/*------------------------------------------------------------
 * 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 );

            }
}
        }
    }

}
示例#3
0
/*------------------------------------------------------------
 * 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 );

            }
}
        }
    }

}
示例#4
0
/*------------------------------------------------------------
 * 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 );

            }
}
        }
    }

}