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

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

?? char.c

?? 最新主流石器時代源代碼,包含諸多目前流行功能代碼.
?? C
?? 第 1 頁 / 共 5 頁
字號:
#include "version.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>   // shan
#include <ctype.h>
#include <time.h>
#include <sys/time.h>
#include <errno.h>
#include "common.h"
#include "char_base.h"
#include "char_data.h"
#include "char.h"
#include "lssproto_serv.h"
#include "item.h"
#include "item_event.h"
#include "buf.h"
#include "object.h"
#include "map_deal.h"
#include "saacproto_cli.h"
#include "readmap.h"
#include "handletime.h"
#include "char_event.h"
#include "npccreate.h"
#include "addressbook.h"
#include "item_event.h"
#include "magic_base.h"
#include "magic.h"
#include "chatmagic.h"
#include "configfile.h"
#include "log.h"
#include "anim_tbl.h"
#include "encount.h"
#include "battle.h"
#include "pet_skill.h"
#include "util.h"
#include "enemy.h"
#include "npcutil.h"
#include "pet.h"
#include "family.h"
#include "defend.h"
#ifdef _NPCSERVER_NEW
#include "npcserver.h"
#endif
#ifdef _DEATH_CONTEND
#include "deathcontend.h"
#endif
#include "correct_bug.h"
#ifdef _JOBDAILY
#include "npc_checkman.h"
#endif

#ifdef _CHAR_PROFESSION			// WON ADD 人物職業欄位
#include "profession_skill.h"
#endif
#ifdef _CHATROOMPROTOCOL			// (不可開) Syu ADD 聊天室頻道
#include "chatroom.h"
#endif

extern int channelMember[FAMILY_MAXNUM][FAMILY_MAXCHANNEL][FAMILY_MAXMEMBER];	
extern int familyMemberIndex[FAMILY_MAXNUM][FAMILY_MAXMEMBER];

extern  tagRidePetTable ridePetTable[296];
extern	int BATTLE_getRidePet( int charaindex );

#ifdef _CHANNEL_MODIFY
extern int InitOccChannel(void);
#endif

#ifdef _ANGEL_SUMMON
extern int checkIfAngelByName( char* nameinfo);
extern char* getMissionNameInfo( int charaindex, char* nameinfo);
extern void CHAR_sendAngelMark( int objindex, int flag);
extern int checkIfOnlyAngel( int charaindex);
extern void selectAngel( int charaindex, int heroindex, int mission, int gm_cmd);
#endif

extern void GOLD_DeleteTimeCheckOne( int objindex);

// WON ADD 修正道具的設定問題
void fix_item_bug(int charaindex, int i);


/*====================平乓仿及綜岳卞楮允月楮醒====================*/
/*------------------------------------------------------------
 * 綜岳允月凜及左皿撲亦件及襖毛澀爛仄方丹午允月[
 * 婁醒
 *  ch      Char*       澀爛燮及平乓仿及犯□正
 *  option  char*       弁仿奶失件玄井日仁月犯□正
 * 忒曰襖
 *  岳      TRUE
 *  撩      FALSE
 ------------------------------------------------------------*/
static BOOL CHAR_makeCharFromOptionAtCreate( Char* ch ,
		int	vital, int str, int tgh, int dex,
		int earth, int water, int fire, int wind)
{

	/*    躲嶺及腹據毛墊丹  */
	int		para[4];
	int		attr[4];
	int		i;
	int		parasum,attrsum;
	int		cnt;

	para[0] = vital;
	para[1] = str;
	para[2] = tgh;
	para[3] = dex;

	attr[0] = earth;
	attr[1] = water;
	attr[2] = fire;
	attr[3] = wind;

#define MAXPARAMETER 20
#define PKMAXPARAMETER 300
	parasum = 0;
	/*
	 * 允屯化及犯□正及  卞 - 反丐勻化反卅日卅中仄
	 * 瑕丐孔木及儀毛嗶尹化云中化    及襖手譯尹卅中
	 */

	for( i = 0; i < arraysizeof( para); i ++ ) {
		if( para[i] < 0 || para[i] > MAXPARAMETER )return FALSE;
		parasum += para[i];
	}
#ifdef _NEW_PLAYER_CF	//新手出生配置
	if( parasum > MAXPARAMETER ) return FALSE;
#else
	if( parasum != MAXPARAMETER ) return FALSE;
#endif

/*#ifdef _NEW_TESTSERVER	//測試伺服
	if( parasum > MAXPARAMETER ) return FALSE;
#else
	if( parasum != MAXPARAMETER ) return FALSE;
#endif*/


#undef MAXPARAMETER


#define MAXATTRIBUTE 10
	cnt = 0;
	attrsum = 0;
	/* 簞嶺及民尼永弁毛允月 */
	for( i = 0; i < arraysizeof( para); i ++ ) {
		if( attr[i] < 0 || attr[i] > MAXATTRIBUTE )return FALSE;
		attrsum += attr[i];
		if( attr[i] > 0 ) cnt ++;
	}
	/* 寧煌襖反10 */
	if( attrsum != MAXATTRIBUTE ) return FALSE;

	/* 2勾方曰聶仁喃曰癲化日木化中兇日蟯   */
	if( cnt > 2 ) return FALSE;

	/* 菅簞嶺反喃曰癲化日木卅中 */
	if( attr[0] > 0 && attr[2] > 0 ) return FALSE;
	if( attr[1] > 0 && attr[3] > 0 ) return FALSE;

#undef MAXATTRIBUTE

	/*  戊疋□  */
	ch->data[CHAR_VITAL] = vital*100;
	ch->data[CHAR_STR]   = str*100;
	ch->data[CHAR_TOUGH] = tgh*100;
	ch->data[CHAR_DEX]   = dex*100;

	ch->data[CHAR_EARTHAT] = attr[0] * 10;
	ch->data[CHAR_WATERAT] = attr[1] * 10;
	ch->data[CHAR_FIREAT]  = attr[2] * 10;
	ch->data[CHAR_WINDAT]  = attr[3] * 10;
#ifdef _NEWOPEN_MAXEXP
	ch->data[CHAR_OLDEXP] = 0;
#endif
	ch->data[CHAR_EXP] = 0;
	
	
#ifdef _NEW_PLAYER_CF	//新手出生配置
	ch->data[CHAR_TRANSMIGRATION] = getNewplayertrans();
	ch->data[CHAR_GOLD] = getNewplayergivegold();;
	ch->data[CHAR_LV] = getNewplayerlv();//120;
//	ch->data[CHAR_LEARNRIDE] = 200;
//	ch->data[CHAR_LASTTALKELDER] = (rand()%10)>5?35:36;//34;
//	ch->data[CHAR_SKILLUPPOINT] = 616;//600;
#ifdef _75_TEST
	ch->data[CHAR_TRANSEQUATION] = (100 << 16) + 650;
#endif
#ifdef _NEW_RIDEPETS
	//ch->data[CHAR_LOWRIDEPETS] = 0xffffffff;
#endif
#endif

/*#ifdef _NEW_TESTSERVER	//測試伺服
	ch->data[CHAR_SKILLUPPOINT] = "";//600;
	ch->data[CHAR_TRANSMIGRATION] = 5;
	ch->data[CHAR_GOLD] = CHAR_MAXGOLDHAVE;
	ch->data[CHAR_LV] = 140;//120;
	ch->data[CHAR_LEARNRIDE] = 200;
//	ch->data[CHAR_LASTTALKELDER] = (rand()%10)>5?35:36;//34;
	ch->data[CHAR_SKILLUPPOINT] = 616;//600;
#ifdef _75_TEST
	ch->data[CHAR_TRANSEQUATION] = (100 << 16) + 650;
#endif
#ifdef _NEW_RIDEPETS
	//ch->data[CHAR_LOWRIDEPETS] = 0xffffffff;
#endif
#endif*/

#ifdef _PETSKILL_BECOMEPIG
    ch->data[CHAR_BECOMEPIG] = -1;
	ch->data[CHAR_BECOMEPIG_BBI] = 100250;
#endif

	ch->data[CHAR_LASTLEAVETIME] = 0;

	return TRUE;
}

#ifdef _HELP_NEWHAND
void CHAR_loginAddItemForNew( int charindex )
{
    int emptyitemindexinchara, itemindex;
	int	i;

	char	msgbuf[128];
	
	for( i = 0; i < 15; i ++ ) {
	    emptyitemindexinchara = CHAR_findEmptyItemBox( charindex );

		if( emptyitemindexinchara < 0 ){
			sprintf( msgbuf, "空間欄位不足。" );

			CHAR_talkToCli( charindex, -1, msgbuf, CHAR_COLORYELLOW);
			return;
		}
		if(getNewplayergiveitem(i)==-1)continue;
		itemindex = ITEM_makeItemAndRegist( getNewplayergiveitem(i) );

	    if( itemindex != -1 ){
	        CHAR_setItemIndex( charindex, emptyitemindexinchara, itemindex );
	        ITEM_setWorkInt(itemindex, ITEM_WORKOBJINDEX,-1);
	        ITEM_setWorkInt(itemindex, ITEM_WORKCHARAINDEX,charindex);
	       	CHAR_sendItemDataOne( charindex, emptyitemindexinchara);
		}
	}
	print("Get New Hand Item");
}
#endif

void CHAR_createNewChar( int clifd, int dataplacenum, char* charname ,
						  int imgno,int faceimgno,
						  int vital,int str,int tgh,int dex,
						  int earth,int water,int fire,int wind,
						  int hometown , char *cdkey )
{

	Char    ch, *chwk;
	int		charaindex, petindex;
	int		enemyarray;
	char szKey[256];

/*#ifdef _NEW_TESTSERVER	//測試伺服
	int add_pet[]={0,0,0,0,0};
#endif*/

#ifdef _NEW_PLAYER_CF	//新手出生配置
	int add_pet[]={0,0,0,0,0};
#endif

#ifdef _DELBORNPLACE //Syu ADD 6.0 統一出生於新手村
	int BornPet = hometown;
	if( getMuseum() )
		hometown = 1;
#endif
	memset(&ch,0,sizeof(Char));

	if( !CHAR_checkPlayerImageNumber( imgno)) {
		lssproto_CreateNewChar_send( clifd ,FAILED, "" );
        CONNECT_setState( clifd, NOTLOGIN );
		return;
	}
	if( !CHAR_checkFaceImageNumber( imgno, faceimgno)) {
		lssproto_CreateNewChar_send( clifd ,FAILED, "" );
        CONNECT_setState( clifd, NOTLOGIN );
		return;
	}
	CHAR_getDefaultChar(&ch,imgno);
	ch.data[CHAR_WALKINTERVAL] = getWalksendinterval();

	if( CHAR_getInitElderPosition( &ch ,hometown) == FALSE ){
		lssproto_CreateNewChar_send( clifd ,FAILED, "" );
        CONNECT_setState( clifd, NOTLOGIN );
		return;

	}else if( MAP_checkCoordinates( ch.data[CHAR_FLOOR], ch.data[CHAR_X],
									ch.data[CHAR_Y] ) == FALSE ){
		lssproto_CreateNewChar_send( clifd ,FAILED, "");
        CONNECT_setState( clifd, NOTLOGIN );
		return;
	}
	strcpysafe( ch.string[CHAR_NAME].string ,
				sizeof(ch.string[CHAR_NAME].string),
				charname);

	if( CHAR_getNewImagenumberFromEquip( imgno,0) == -1 ){
		lssproto_CreateNewChar_send( clifd ,FAILED, "");
        CONNECT_setState( clifd, NOTLOGIN );
		return;
	}
	ch.data[CHAR_BASEIMAGENUMBER] = imgno;
	ch.data[CHAR_BASEBASEIMAGENUMBER] = imgno;
	ch.data[CHAR_FACEIMAGENUMBER] = faceimgno;
	ch.data[CHAR_DATAPLACENUMBER] = dataplacenum;
	
#ifdef _FM_JOINLIMIT
	ch.data[CHAR_FMTIMELIMIT] = 0;
#endif

#ifdef _NEWSAVE
	ch.data[CHAR_SAVEINDEXNUMBER] = -1;
#endif
	ch.data[CHAR_HP] = 0x7fffffff;

	ch.data[CHAR_CHARM] = 60;
	ch.data[CHAR_MAXMP] = ch.data[CHAR_MP] = 100;
	strcpysafe( ch.string[CHAR_CDKEY].string,
                sizeof( ch.string[CHAR_CDKEY].string), cdkey );
                
        // Robin 0724
        ch.data[CHAR_RIDEPET] = -1;
        ch.data[CHAR_LEARNRIDE] = 0;

#ifdef _NEW_RIDEPETS
		ch.data[CHAR_LOWRIDEPETS] = 0;
#endif

#ifdef _PERSONAL_FAME	// Arminius: 家族個人聲望
	ch.data[CHAR_FAME] = 0;
#endif
#ifdef _NEW_MANOR_LAW
	ch.data[CHAR_MOMENTUM] = 0;	// 個人氣勢
#endif
#ifdef _TEACHER_SYSTEM
	ch.data[CHAR_TEACHER_FAME] = 0;	// 導師領導聲望
#endif
#ifdef _RACEMAN
	ch.data[CHAR_CHECKIN] = 0;  // 寵物登記
	ch.data[CHAR_CATCHCNT1] = 0; // 新手限 獵寵次數
	ch.data[CHAR_CATCHCNT2] = 0; // 老手限 獵寵次數
	ch.data[CHAR_CATCHCNT3] = 0; // 家族限 獵寵次數
	ch.data[CHAR_CATCHCNT4] = 0; // 老手不限 獵寵次數
	ch.data[CHAR_CATCHCNT5] = 0; // 家族不限 獵寵次數
	ch.data[CHAR_KINDCNT1] = 0;
	ch.data[CHAR_KINDCNT2] = 0;
	ch.data[CHAR_KINDCNT3] = 0;
	ch.data[CHAR_KINDCNT4] = 0;
	ch.data[CHAR_KINDCNT5] = 0;
	ch.data[CHAR_KINDCNT6] = 0;
	ch.data[CHAR_KINDCNT7] = 0;
	ch.data[CHAR_KINDCNT8] = 0;
	ch.data[CHAR_KINDCNT9] = 0;
	ch.data[CHAR_KINDCNT10] = 0;
#endif
#ifdef _CHAR_PROFESSION			// WON ADD 人物職業
	ch.data[PROFESSION_CLASS] = 0;
	ch.data[PROFESSION_LEVEL] = 0;
//	ch.data[PROFESSION_EXP] = 0;
	ch.data[PROFESSION_SKILL_POINT] = 0;
	ch.data[ATTACHPILE] = 0;
#endif

#ifdef _GM_IDENTIFY
  sprintf(ch.string[CHAR_GMIDENTIFY].string,"%s",""); //gm名稱清為空字串
#endif
#ifdef _TEACHER_SYSTEM
	memset(ch.string[CHAR_TEACHER_ID].string,0,sizeof(STRING128));
	memset(ch.string[CHAR_TEACHER_NAME].string,0,sizeof(STRING128));
#endif

#ifdef _ITEM_SETLOVER
	memset(ch.string[CHAR_LOVERID].string,0,sizeof(STRING128));
	memset(ch.string[CHAR_LOVERNAME].string,0,sizeof(STRING128));
#endif

#ifdef _PETSKILL_BECOMEPIG
    ch.data[CHAR_BECOMEPIG] = -1;
	ch.data[CHAR_BECOMEPIG_BBI] = 100250;
#endif

	strcpysafe( ch.string[CHAR_FMNAME].string,
                sizeof( ch.string[CHAR_FMNAME].string), "\0" );
	ch.data[CHAR_FMINDEX] = -1;

	if( CHAR_makeCharFromOptionAtCreate( &ch,
										vital,str,tgh,dex,
										earth,water,fire,wind ) == FALSE )
	{
		lssproto_CreateNewChar_send( clifd ,FAILED,
									 "option data is invalid\n");
        CONNECT_setState( clifd, NOTLOGIN );
		return;
	}
	{
		int mp=ch.data[CHAR_MAXMP];
		int str=ch.data[CHAR_STR];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电视剧在线看免费| 日韩欧美一二三四区| 六月丁香综合在线视频| 亚洲高清免费在线| 一区二区在线观看不卡| 中文字幕中文字幕在线一区| 亚洲国产精品av| 国产欧美一区二区精品性色 | 欧美男人的天堂一二区| 欧美图区在线视频| 欧美日本国产一区| 欧美丰满少妇xxxxx高潮对白| 欧美日韩国产片| 欧美一区二区播放| 久久久九九九九| 国产精品丝袜黑色高跟| 亚洲欧美日韩人成在线播放| 一区二区三区免费在线观看| 午夜伊人狠狠久久| 久久爱www久久做| 成人h版在线观看| 欧美亚洲综合在线| 精品日产卡一卡二卡麻豆| 国产午夜精品理论片a级大结局| 国产精品福利在线播放| 洋洋av久久久久久久一区| 日韩福利电影在线| 国产精品一卡二卡| 欧美在线观看视频在线| 日韩欧美激情在线| 亚洲女同ⅹxx女同tv| 日韩电影在线看| 成人sese在线| 欧美一级片免费看| 中文字幕中文字幕一区二区| 日韩电影一区二区三区四区| 成人av电影在线观看| 制服丝袜亚洲精品中文字幕| 国产精品毛片a∨一区二区三区| 五月天精品一区二区三区| 成人一区二区三区在线观看| 欧美日精品一区视频| 欧美精品一区二区三区高清aⅴ | 成人a级免费电影| 欧美理论电影在线| 国产丝袜美腿一区二区三区| 日欧美一区二区| 成人高清视频免费观看| 日韩欧美国产午夜精品| 亚洲一区av在线| zzijzzij亚洲日本少妇熟睡| 精品国产乱码久久久久久蜜臀| 一区二区三区四区在线播放| 成人av片在线观看| 久久亚洲捆绑美女| 美女视频黄久久| 欧美精品v日韩精品v韩国精品v| 亚洲色图在线播放| 成人小视频免费在线观看| 精品少妇一区二区三区视频免付费 | 91免费看视频| 精品成人一区二区三区| 午夜av电影一区| 91老师片黄在线观看| 国产女人aaa级久久久级| 青青草国产精品亚洲专区无| 欧美日韩久久久一区| 亚洲六月丁香色婷婷综合久久 | 日本最新不卡在线| 欧美日韩免费电影| 亚洲成人av电影| 欧美亚洲日本一区| 亚洲超碰精品一区二区| 欧美亚洲国产一区在线观看网站| 亚洲欧美经典视频| 99国产精品国产精品久久| 国产欧美精品一区二区三区四区| 国产一区二区网址| 国产亚洲欧美日韩在线一区| 国产在线精品一区二区| 国产欧美日韩激情| 成人国产在线观看| 一区二区三区四区高清精品免费观看 | 欧美电影在线免费观看| 一区二区三区美女| 欧美日韩在线免费视频| 喷水一区二区三区| 久久久久久免费毛片精品| 国产精品综合一区二区三区| 国产拍揄自揄精品视频麻豆| 成人精品视频一区| 亚洲黄色小视频| 在线播放91灌醉迷j高跟美女 | 精品系列免费在线观看| 国产喂奶挤奶一区二区三区| 国产.欧美.日韩| 亚洲美女在线国产| 欧美一区三区二区| 国产成人亚洲精品青草天美| 成人免费一区二区三区视频 | 成人激情小说网站| 亚洲欧美福利一区二区| 欧美日韩高清一区二区不卡 | 亚洲卡通欧美制服中文| 欧美日韩国产综合一区二区三区 | 日本伊人色综合网| 久久影院午夜片一区| 91美女蜜桃在线| 久久精品av麻豆的观看方式| 国产精品污污网站在线观看| 欧美三级日韩三级国产三级| 国产一级精品在线| 亚洲一二三四久久| 国产欧美日韩麻豆91| 欧美性大战久久久久久久蜜臀 | 中文字幕乱码日本亚洲一区二区| 91黄色激情网站| 国产在线精品免费av| 一级日本不卡的影视| 国产亚洲欧美在线| 欧美日韩黄视频| av毛片久久久久**hd| 精品亚洲porn| 日韩精品亚洲专区| 亚洲欧洲日韩综合一区二区| 欧美xxxx在线观看| 欧美二区三区91| 色婷婷av一区二区三区大白胸| 国产伦精品一区二区三区视频青涩| 亚洲国产裸拍裸体视频在线观看乱了| 久久精品网站免费观看| 91麻豆精品国产91久久久久久| proumb性欧美在线观看| 久久91精品久久久久久秒播| 亚洲国产另类av| 曰韩精品一区二区| 中文字幕中文乱码欧美一区二区| 欧美成人a∨高清免费观看| 欧美日韩一区二区三区高清| 一本久久综合亚洲鲁鲁五月天| 国产盗摄一区二区| 国产综合成人久久大片91| 青青国产91久久久久久| 偷窥国产亚洲免费视频| 亚洲一区二区高清| 亚洲高清不卡在线| 亚洲成人黄色影院| 午夜成人免费视频| 亚洲图片欧美色图| 亚洲成人tv网| 亚洲成a人v欧美综合天堂下载| 亚洲自拍偷拍网站| 亚洲成av人**亚洲成av**| 亚洲成av人综合在线观看| 午夜婷婷国产麻豆精品| 亚洲午夜av在线| 视频一区在线播放| 日本不卡视频在线观看| 极品少妇xxxx偷拍精品少妇| 国产在线不卡视频| 成人福利视频在线看| 一本色道久久综合狠狠躁的推荐| 日本韩国欧美三级| 欧美精品18+| 欧美一区二区三区免费在线看| 欧美亚洲综合网| 日韩欧美在线123| 久久久99免费| 亚洲免费观看高清完整版在线| 亚洲综合一二区| 日本不卡高清视频| 懂色中文一区二区在线播放| 99精品久久久久久| 欧美人与禽zozo性伦| 精品日产卡一卡二卡麻豆| 亚洲国产精品高清| 亚洲午夜久久久| 精品一二三四区| 成人app网站| 欧美福利视频一区| 久久伊人蜜桃av一区二区| 亚洲人午夜精品天堂一二香蕉| 亚洲一区电影777| 国产麻豆欧美日韩一区| 色综合色狠狠天天综合色| 欧美顶级少妇做爰| 亚洲国产精品二十页| 视频在线在亚洲| 丁香六月综合激情| 7777精品伊人久久久大香线蕉完整版 | 色婷婷av一区二区三区软件| 日韩一本二本av| 亚洲欧美经典视频| 韩国av一区二区三区| 欧美色男人天堂| 国产亚洲精品超碰| 日韩电影免费在线观看网站| www.亚洲精品| 欧美videossexotv100| 亚洲日本在线天堂|