亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? char_walk.c

?? 石器時代8.0服務端完整源代碼。可以直接編譯
?? C
?? 第 1 頁 / 共 3 頁
字號:
#include "version.h"
#include <stdio.h>
#include <ctype.h>
#include <time.h>
//???
#include "common.h"
#include "handletime.h"
#include "object.h"
#include "char_base.h"
#include "char.h"
#include "char_event.h"
#include "lssproto_serv.h"
#include "readmap.h"
#include "map_deal.h"
#include "npccreate.h"
#include "encount.h"
#include "npcutil.h"
#include "battle.h"
#include "net.h"
#include "configfile.h"
#include "npc_npcenemy.h"

static void CHAR_sendCharaAtWalk( int charaindex, int of, int ox, int oy, int xflg, int yflg );
static void CHAR_sendCDCharaAtWalk( int charaindex, int of, int ox, int oy,	int xflg, int yflg );

static CHAR_WALKRET CHAR_walk_turn( int index, int dir )
{
    int     fx,fy,ff;
    OBJECT  object;

    if(!CHAR_CHECKINDEX( index ))return CHAR_WALKSYSTEMERROR;
    CHAR_setInt(index,CHAR_DIR,dir);
    fx = CHAR_getInt(index,CHAR_X);
    fy = CHAR_getInt(index,CHAR_Y);
    ff = CHAR_getInt(index,CHAR_FLOOR);
    CHAR_sendWatchEvent( CHAR_getWorkInt(index, CHAR_WORKOBJINDEX),
                         CHAR_ACTTURN,NULL,0,FALSE);
	CHAR_setWorkInt( index, CHAR_WORKACTION, CHAR_ACTTURN);
    for( object = MAP_getTopObj(ff,fx,fy) ; object ;
         object = NEXT_OBJECT(object ) ){
        typedef void (*POSTOFUNC)(int,int);
        POSTOFUNC   pfunc=NULL;
        int objindex = GET_OBJINDEX(object);

        switch( OBJECT_getType(objindex)  ){
        case OBJTYPE_CHARA:
            pfunc = (POSTOFUNC)CHAR_getFunctionPointer(
                OBJECT_getIndex(objindex),
                CHAR_POSTOVERFUNC);
            break;
        case OBJTYPE_ITEM:
            pfunc = (POSTOFUNC)ITEM_getFunctionPointer(
                OBJECT_getIndex(objindex),
                ITEM_POSTOVERFUNC);
            break;
        case OBJTYPE_GOLD:
            break;
        default:
            break;
        }
        if( pfunc )pfunc( OBJECT_getIndex(objindex),index );
    }
    return CHAR_WALKSUCCESSED;
}


/*------------------------------------------------------------
 * 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 );

            }
}
        }
    }

}
static CHAR_WALKRET CHAR_walk_move( int charaindex, int dir );
/*------------------------------------------------------------
 * 啖  允月[
 * 婁醒
 *  index       int     平乓仿及奶件犯永弁旦
 *  dir         int       輊
 * 忒曰襖
 *  CHAR_WALKRET
 ------------------------------------------------------------*/
static CHAR_WALKRET CHAR_walk_move( int charaindex, int dir )
{
    int     i;
    int     fx,fy,ff;
    int     ox,oy,of;
    int     objbuf[128];
    int     objbufindex=0;
    int     notover=FALSE;
    int     retvalue=CHAR_WALKSUCCESSED;

    if( !CHAR_CHECKINDEX( charaindex )) return CHAR_WALKSYSTEMERROR;
    ox = CHAR_getInt(charaindex,CHAR_X);
    oy = CHAR_getInt(charaindex,CHAR_Y);
    of = CHAR_getInt(charaindex,CHAR_FLOOR);
    CHAR_getCoordinationDir( dir,ox,oy,1,&fx,&fy);
    ff = of;

    if( CHAR_getInt( charaindex,CHAR_WHICHTYPE ) == CHAR_TYPEENEMY ){
        RECT    walkr;
        POINT   nextp;
        int npccreateindex;
        npccreateindex = CHAR_getInt( charaindex,CHAR_NPCCREATEINDEX );
        if( CHAR_isInvincibleArea( ff,fx,fy)) {
            CHAR_setInt(charaindex,CHAR_DIR,dir);
            retvalue = CHAR_WALKEXTEND;
            goto CHAR_AFTERWALK;
        }
        if( NPC_isBoundarySet( npccreateindex ) &&
            NPC_createGetRECT( npccreateindex,&walkr ) == TRUE )
        {
            nextp.x = fx;
            nextp.y = fy;
            if( PointInRect( &walkr,&nextp ) == FALSE ){
                CHAR_setInt(charaindex,CHAR_DIR,dir);
                retvalue = CHAR_WALKEXTEND;
                goto CHAR_AFTERWALK;
            }
        }else{
            ;
        }
    }


    if( CHAR_getFlg( charaindex, CHAR_ISBIG ) == 1 ){
        static POINT offset[5]={
            { 0,-1},
            {-1, 0},
            { 0, 0},
            { 1, 0},
            { 0, 1},
        };
        int     k;
        for( k=0 ; k<5; k++ ){
            if( !MAP_walkAble( charaindex, ff, fx+offset[k].x,
                               fy+offset[k].y )){
                CHAR_setInt(charaindex,CHAR_DIR,dir);
                retvalue = CHAR_WALK1357;
                goto CHAR_AFTERWALK;
            }
        }

    }else{
        if( CHAR_getDX(dir)*CHAR_getDY(dir) == 0 ){
            if( !MAP_walkAble( charaindex,ff, fx, fy ) ){
                CHAR_setInt(charaindex,CHAR_DIR,dir);
                retvalue = CHAR_WALK1357;
                goto CHAR_AFTERWALK;
            }
        }else{
            int     xflg,yflg;
            if( !MAP_walkAble( charaindex,ff, fx, fy ) ){
                CHAR_setInt(charaindex,CHAR_DIR,dir);
                retvalue = CHAR_WALK1357;
                goto CHAR_AFTERWALK;
            }

            xflg = MAP_walkAble( charaindex,of, ox+CHAR_getDX(dir), oy );
            yflg = MAP_walkAble( charaindex,of, ox, oy+CHAR_getDY(dir) );

            if( !xflg || !yflg ) {
                CHAR_setInt(charaindex,CHAR_DIR,dir);
                retvalue = CHAR_WALK1357;
                goto CHAR_AFTERWALK;
            }
        }
    }
    objbufindex = CHAR_getSameCoordinateObjects( objbuf, arraysizeof( objbuf ), ff,fx,fy );
    for( i = 0 ; i < objbufindex ; i ++ ){
        int     objindex= objbuf[i];
        switch( OBJECT_getType(objindex) ){
        case OBJTYPE_CHARA:
            if( !CHAR_getFlg( OBJECT_getIndex(objindex),CHAR_ISOVERED) )
                notover= TRUE;
            break;
        case OBJTYPE_ITEM:
            if( !ITEM_getInt( OBJECT_getIndex(objindex), ITEM_ISOVERED ) )
                notover= TRUE;
            break;
        case OBJTYPE_GOLD:
            break;
        default:
            break;
        }
    }
    if( notover == TRUE ){
        CHAR_setInt(charaindex,CHAR_DIR,dir);
        retvalue = CHAR_WALKHITOBJECT;
    }else{
        for( i = 0 ; i < objbufindex ; i ++ ){
            typedef void (*PREOFUNC)(int,int);
            PREOFUNC   pfunc=NULL;
            int     objindex=objbuf[i];
            switch( OBJECT_getType(objindex) ){
            case OBJTYPE_CHARA:
                pfunc = (PREOFUNC)CHAR_getFunctionPointer(
                    OBJECT_getIndex(objindex),
                    CHAR_PREOVERFUNC);
                break;
            case OBJTYPE_ITEM:
                pfunc = (PREOFUNC)ITEM_getFunctionPointer(
                    OBJECT_getIndex(objindex),
                    ITEM_PREOVERFUNC);
                break;
            case OBJTYPE_GOLD:
                break;
            default:
                break;
            }
            if( pfunc )pfunc( OBJECT_getIndex(objindex),charaindex );
        }

        CHAR_setInt(charaindex,CHAR_X,fx);
        CHAR_setInt(charaindex,CHAR_Y,fy);
        CHAR_setInt(charaindex,CHAR_FLOOR,ff);
        CHAR_setInt(charaindex,CHAR_DIR,dir);

        {
            int objindex;
            int ox,oy,of;
            objindex = CHAR_getWorkInt( charaindex,CHAR_WORKOBJINDEX );
            of = OBJECT_setFloor(objindex,
                                 CHAR_getInt(charaindex,CHAR_FLOOR));
            ox = OBJECT_setX(objindex,CHAR_getInt(charaindex,CHAR_X));
            oy = OBJECT_setY(objindex,CHAR_getInt(charaindex,CHAR_Y));
            if( !MAP_objmove( objindex, of,ox,oy,ff,fx,fy ) ){
                /*  仇氏卅氏升丹仄方丹手卅中    */
                fprint( "ERROR MAP_OBJMOVE objindex=%d(%s)\n",objindex,
                	CHAR_getUseName( charaindex ) );
            }
        }

        CHAR_setInt(charaindex,CHAR_WALKCOUNT,
                    CHAR_getInt(charaindex,CHAR_WALKCOUNT) + 1 );


        for( i = 0 ; i < objbufindex ; i ++ ){
            typedef void (*POSTOFUNC)(int,int);
            POSTOFUNC   pfunc=NULL;
            int     objindex=objbuf[i];

            switch( OBJECT_getType(objindex) ){
            case OBJTYPE_CHARA:
                pfunc = (POSTOFUNC)CHAR_getFunctionPointer(
                    OBJECT_getIndex(objindex),
                    CHAR_POSTOVERFUNC);
                break;
            case OBJTYPE_ITEM:
                pfunc = (POSTOFUNC)ITEM_getFunctionPointer( OBJECT_getIndex(objindex), ITEM_POSTOVERFUNC);
                break;
            case OBJTYPE_GOLD:
                break;
            default:
                break;
            }
            if( pfunc )pfunc( OBJECT_getIndex(objindex),charaindex );
        }
        objbufindex = CHAR_getSameCoordinateObjects(objbuf, arraysizeof(objbuf), of, ox, oy );
        for( i=0 ;i<objbufindex;i++){
            typedef void (*OFFFUNC)(int,int);
            OFFFUNC   ofunc=NULL;
            int     objindex = objbuf[i];

            switch( OBJECT_getType( objindex ) ){
            case OBJTYPE_CHARA:
                ofunc = (OFFFUNC)CHAR_getFunctionPointer( OBJECT_getIndex(objindex), CHAR_OFFFUNC);
                break;
            case OBJTYPE_ITEM:
                /*    卞窒手仄卅中  */
                break;
            case OBJTYPE_GOLD:
                /*    卞窒手仄卅中  */
                break;
            default:
                break;
            }
            if( ofunc )ofunc( OBJECT_getIndex(objindex), charaindex );

        }
    }
CHAR_AFTERWALK:
    if( retvalue == CHAR_WALK1357 || retvalue == CHAR_WALKHITOBJECT ){
	    {
	        int     opt[2] = { ox, oy};
	        CHAR_sendWatchEvent( CHAR_getWorkInt(charaindex,
	                                             CHAR_WORKOBJINDEX),
	                             CHAR_ACTWALK,opt,2,TRUE );
	    }
        CHAR_setWorkChar( charaindex, CHAR_WORKWALKARRAY, "");
		if( CHAR_getInt( charaindex, CHAR_WHICHTYPE) == CHAR_TYPEPLAYER) {
		    CHAR_sendWatchEvent( CHAR_getWorkInt(charaindex, CHAR_WORKOBJINDEX),
    		                     CHAR_ACTWARP,NULL,0,TRUE);
		}
    }else if( CHAR_getInt( charaindex, CHAR_WHICHTYPE ) == CHAR_TYPEPLAYER ){

		BOOL	flg = FALSE;
		int		par;
		int		count;
		CHAR_setWorkInt( charaindex, CHAR_WORKACTION, -1 );
		if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE ) == BATTLE_CHARMODE_NONE ){
			CHAR_sendCharaAtWalk( charaindex, of,ox,oy,CHAR_getDX(dir), CHAR_getDY(dir));
		}

	    {
	        int     opt[2] = { ox, oy};
	        CHAR_sendWatchEvent( CHAR_getWorkInt(charaindex,
	                                             CHAR_WORKOBJINDEX),
	                             CHAR_ACTWALK,opt,2,TRUE );
	    }
		if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) == CHAR_PARTY_CLIENT ) {
			CHAR_sendMapAtWalk( charaindex, of,
								ox,oy,
								CHAR_getInt( charaindex, CHAR_X),
								CHAR_getInt( charaindex, CHAR_Y));
		}
		count = CHAR_getWorkInt( charaindex, CHAR_WORK_TOHELOS_COUNT);
		if( count > 0 ) {
			CHAR_setWorkInt( charaindex, CHAR_WORK_TOHELOS_COUNT, count -1);
			if( count -1 == 0 ) {
				CHAR_talkToCli( charaindex, -1, "道具的效力已到。", CHAR_COLORWHITE);
			}
		}
		par = ENCOUNT_getEncountPercentMin( charaindex, of,ox,oy);
		if( par != -1 ) {
			if( CHAR_getWorkInt( charaindex, CHAR_WORKENCOUNTPROBABILITY_MIN) != par ){
				flg = TRUE;
				CHAR_setWorkInt( charaindex, CHAR_WORKENCOUNTPROBABILITY_MIN, par);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91天堂素人约啪| 极品少妇一区二区| 中文字幕欧美区| 欧美mv和日韩mv国产网站| 欧美亚男人的天堂| 欧美精品久久久久久久久老牛影院| 成人99免费视频| 国产91在线|亚洲| 成人黄页毛片网站| 波多野结衣中文字幕一区| 不卡的av在线播放| 色综合天天天天做夜夜夜夜做| 成人动漫一区二区| 成人av资源网站| 色综合久久久久久久久久久| 一本色道久久综合亚洲aⅴ蜜桃| 色综合久久久久| 欧美日本国产视频| 精品国产91乱码一区二区三区| 精品国产乱码91久久久久久网站| 精品欧美黑人一区二区三区| 久久综合99re88久久爱| 综合久久一区二区三区| 亚洲影视在线播放| 看片的网站亚洲| 国产剧情av麻豆香蕉精品| 成人动漫一区二区在线| 欧美日韩一区二区在线观看视频| 欧美精品粉嫩高潮一区二区| 日韩免费高清av| 国产精品免费久久久久| 午夜伊人狠狠久久| 激情深爱一区二区| 日本道免费精品一区二区三区| 69成人精品免费视频| 久久精品免费在线观看| 一区二区高清视频在线观看| 麻豆精品一区二区三区| 色偷偷成人一区二区三区91| 欧美一区二区成人6969| 国产精品久久久久7777按摩| 麻豆免费看一区二区三区| 91影视在线播放| xvideos.蜜桃一区二区| 一区二区激情小说| 成人午夜私人影院| 日韩视频123| 一区二区三区在线观看网站| 国产综合色在线视频区| 欧美喷潮久久久xxxxx| 中日韩免费视频中文字幕| 青青草原综合久久大伊人精品 | 国产视频一区二区在线| 亚洲国产成人av好男人在线观看| 经典一区二区三区| 69堂精品视频| 亚洲成在线观看| 一本色道久久综合亚洲91| 欧美国产日韩亚洲一区| 国模无码大尺度一区二区三区| 6080午夜不卡| 亚洲网友自拍偷拍| 91色porny蝌蚪| 亚洲欧美综合色| 国产成人av电影| 久久久天堂av| 伦理电影国产精品| 日韩欧美久久一区| 久久国产麻豆精品| 欧美r级在线观看| 麻豆精品视频在线观看视频| 7777精品伊人久久久大香线蕉的 | 久久综合一区二区| 毛片av一区二区| 日韩三级免费观看| 麻豆视频观看网址久久| 日韩欧美你懂的| 国产自产视频一区二区三区| 日韩欧美国产一区在线观看| 日本不卡123| 日韩三级av在线播放| 免费观看在线综合| 2021中文字幕一区亚洲| 经典一区二区三区| 国产精品视频麻豆| 99精品国产91久久久久久| 亚洲精品一二三四区| 欧美主播一区二区三区| 五月天激情综合网| 精品免费日韩av| 高清在线不卡av| 中文字幕一区二区三区在线观看| 99riav一区二区三区| 亚洲一区二区三区在线看| 欧美综合欧美视频| 日本免费新一区视频| 欧美va亚洲va国产综合| 国内久久精品视频| 亚洲三级在线免费观看| 欧美日韩日日摸| 狠狠色狠狠色综合日日91app| 中文字幕不卡一区| 在线观看不卡视频| 国产麻豆成人传媒免费观看| 亚洲视频网在线直播| 在线不卡a资源高清| 国产成人综合在线观看| 亚洲欧美日韩精品久久久久| 欧美精品xxxxbbbb| 成人av在线一区二区三区| 爽爽淫人综合网网站| 久久久www成人免费毛片麻豆| 色悠久久久久综合欧美99| 美女视频黄 久久| 亚洲精品一二三区| 欧美精品一区二区久久婷婷| 在线国产电影不卡| 国产麻豆精品视频| 石原莉奈一区二区三区在线观看| 国产视频一区不卡| 69堂国产成人免费视频| 99国产精品99久久久久久| 九色|91porny| 亚洲成av人片一区二区| 日韩毛片高清在线播放| 久久精品欧美日韩| 日韩一二三四区| 欧美在线视频日韩| 成人av在线网| 精品一区二区免费看| 亚洲超丰满肉感bbw| 亚洲人亚洲人成电影网站色| 精品人在线二区三区| 欧美日韩成人综合| 色欧美片视频在线观看在线视频| 国产成人综合在线| 国产综合色视频| 美女视频一区在线观看| 天天影视网天天综合色在线播放| 亚洲三级在线播放| 国产精品视频线看| 日本一区免费视频| 久久色.com| 精品久久久久av影院| 91精品国产黑色紧身裤美女| 在线精品视频小说1| 在线观看免费亚洲| 欧美视频一区二区在线观看| 99久久国产综合色|国产精品| 国产91露脸合集magnet| 国产丶欧美丶日本不卡视频| 精东粉嫩av免费一区二区三区| 青青青伊人色综合久久| 日韩电影在线一区| 麻豆成人91精品二区三区| 蜜臀av一区二区| 日韩成人精品在线观看| 精品一区二区三区免费毛片爱 | 国产欧美视频一区二区| 国产丝袜欧美中文另类| 国产丝袜欧美中文另类| 日本一区二区电影| 中文字幕一区二区三区不卡| 亚洲欧美另类综合偷拍| 亚洲一区成人在线| 蜜臀久久99精品久久久久久9| 国产中文字幕一区| 成人免费的视频| 色综合一个色综合亚洲| 欧美日韩国产另类一区| 欧美videos大乳护士334| 日韩精品一区二区三区中文精品| 欧美va日韩va| 国产色产综合色产在线视频| 国产精品久久久久久久久久久免费看| 亚洲色图19p| 天堂成人免费av电影一区| 久久99国产精品免费网站| 成人黄色在线网站| 欧美日韩成人综合天天影院| 久久综合网色—综合色88| 中文字幕在线一区二区三区| 亚洲www啪成人一区二区麻豆| 精品写真视频在线观看| 一本久道中文字幕精品亚洲嫩| 欧美一区二区三区在线看| 国产偷国产偷精品高清尤物| 亚洲午夜在线视频| 国产精品亚洲成人| 欧美性xxxxxxxx| 国产日韩精品久久久| 亚洲午夜精品一区二区三区他趣| 国产在线精品一区二区| 一本一道久久a久久精品| 日韩久久久久久| 中文字幕中文在线不卡住| 蜜臀a∨国产成人精品| 日本韩国一区二区三区| 久久精品一区蜜桃臀影院| 性欧美疯狂xxxxbbbb|