npc_roomadminnew.c
来自「石器时代8.0服务端完整源代码。可以直接编译」· C语言 代码 · 共 1,094 行 · 第 1/3 页
C
1,094 行
if( nowgold > topgold ) {
topindex = index;
}
else if( nowgold == topgold ) {
/* 域踝卅日伊矛伙互斓中谛 */
int nowlv, toplv;
nowlv = CHAR_getInt( index, CHAR_LV );
toplv = CHAR_getInt( topindex, CHAR_LV);
if( nowlv < toplv ) {
topindex = index;
}
/* 公木匹手荸瑁仄卅中氏卅日仿件母丞元扎*/
/* index互燮及谛互切斤匀午尕厍分仃升 */
else if( nowlv == toplv ) {
if( RAND( 0,1)) {
topindex = index;
}
}
}
}
}
}
}
}
}
}
return( topindex);
}
/*-----------------------------------------------
* 隙烂今木凶index及白夫失卞中月皿伊奶乩□蝈够卞
* 丢永本□斥毛霜耨允月[
*----------------------------------------------*/
static void NPC_RoomAdminNew_SendMsgThisFloor( int index, char *buff)
{
int i, fl;
int playernum = CHAR_getPlayerMaxNum();
fl = CHAR_getInt( index, CHAR_FLOOR);
for( i = 0; i < playernum; i ++ ) {
if( CHAR_getInt( i, CHAR_FLOOR) == fl ) {
/* 及凶户皿伊奶乩□井民尼永弁 */
if( CHAR_getInt( i, CHAR_WHICHTYPE) == CHAR_TYPEPLAYER ) {
CHAR_talkToCli( i, index, buff, NPC_ROOMADMINNEW_MSGCOLOR);
}
}
}
}
/*-----------------------------------------------
* 由旦伐□玉毛戏岳允月[passlen及-1 侬互综日木月[
* makecdn.c及天仁曰[
*----------------------------------------------*/
static void NPC_RoomAdminNew_CreatePasswd( char *passwd, int passlen)
{
#define NPC_ROOMADMINNEW_RAND() ( (rand() /256) % 32768 ) /* 256匹喃月及反刭醒及 撙及凶户 */
int i;
char *candidates[]= {
"A","B","D", "E","F","G","H", "J","K","L","M", "N","P","Q","R",
"T","W","X","Y", "a","b","d","e", "f","g","m","n", "q","r","t",
"0","1","2", "3","4","5","6", "7","8","9"
};
strcpy( passwd , "");
for(i = 0;i < passlen -1 ; i++){
strcat( passwd , candidates[ NPC_ROOMADMINNEW_RAND() % (sizeof( candidates)/sizeof(candidates[0])) ] );
}
#undef NPC_ROOMADMINNEW_RAND
}
/*-----------------------------------------------
* 栋 谛迕及白央奶伙卞犯□正毛踏五 戈
*
* 白央奶伙 反"房间的名字.room"
* 毛银丹[
*
* 白央奶伙及白巧□穴永玄反]
* cdkey|charaname|passwd|expiretime
*
*
* 娄醒及flg 互ㄠ分匀凶日踏五 心]ㄟ分匀凶日白央奶伙绰轮
* 曰袄“TRUE“岳
* FALSE:窒日井及撩
*----------------------------------------------*/
static BOOL NPC_RoomAdminNew_WriteDataFile( int meindex, int pindex,
char *roomname,
char *passwd, int flg)
{
char *cdkey;
char charaname[32*2];
char expiretime[64];
char filename[128];
char outbuf[1024];
FILE *fp_src;
/* 白央奶伙 毛戏岳 */
strcpy( filename, NPC_ROOMADMINNEW_DATADIR);
/*strcat( filename, CHAR_getWorkChar( meindex, CHAR_WORKCHAR_NEXTROOM));*/
strcat( filename, roomname);
strcat( filename, NPC_ROOMADMINNEW_EXTENSION);
if( flg) {
/* 诳仄凶谛及 平□ */
//getcdkeyFromCharaIndex( pindex, cdkey, sizeof(cdkey ));
cdkey = CHAR_getChar( pindex, CHAR_CDKEY);
/* 诳仄凶谛及平乓仿 */
makeEscapeString( CHAR_getChar( pindex, CHAR_NAME),
charaname, sizeof( charaname));
/* 渝蜃濠木凛棉 */
snprintf( expiretime, sizeof( expiretime), "%d",
CHAR_getWorkInt( meindex, CHAR_WORKINT_NEXTTIME)
+ NPC_ROOMADMINNEW_2WEEK /* ㄡ葱棉 */
);
/* 犯伉立正匹仁仁月 */
snprintf( outbuf, sizeof( outbuf), "%s|%s|%s|%s|",
cdkey, charaname, passwd, expiretime);
fp_src = fopen( filename, "w");
if( !fp_src) {
print( "[%s:%d] File Open Error\n", __FILE__, __LINE__);
return FALSE;
}
fputs( outbuf, fp_src);
fclose( fp_src);
}
else {
unlink( filename);
}
return TRUE;
}
/*-----------------------------------------------
* 犯□正白央奶伙毛 氏匹竟癫允月 盒互丐木壬
* 犯□正毛伞 仄化忒允[
*----------------------------------------------*/
BOOL NPC_RoomAdminNew_ReadFile( char *roomname, NPC_ROOMINFO *data)
{
FILE *fp;
char line[1024];
char buf2[128];
char filename[128];
/* 白央奶伙 毛戏岳 */
strcpy( filename, NPC_ROOMADMINNEW_DATADIR);
strcat( filename, roomname);
strcat( filename, NPC_ROOMADMINNEW_EXTENSION);
fp = fopen( filename, "r");
if( !fp) return FALSE;
fgets( line, sizeof( line), fp);
/* 犯□正本永玄 */
getStringFromIndexWithDelim( line, "|" , 1 , buf2,sizeof(buf2) );
strcpy( data->cdkey, buf2);
getStringFromIndexWithDelim( line, "|" , 2 , buf2,sizeof(buf2) );
strcpy( data->charaname, makeStringFromEscaped( buf2));
getStringFromIndexWithDelim( line, "|" , 3 , buf2,sizeof(buf2) );
strcpy( data->passwd, buf2);
getStringFromIndexWithDelim( line, "|" , 4 , buf2,sizeof(buf2) );
if( strcmp( buf2, "max") == 0 ) {
data->expire = 0xffffffff;
}
else {
data->expire = atoi( buf2);
}
fclose( fp);
return TRUE;
}
/*-----------------------------------------------
* 戚及左□弁扑亦件及凛棉午 盒 毛伐□弁卞本永玄允月
*----------------------------------------------*/
static BOOL NPC_RoomAdminNew_SetNextAuction( int meindex)
{
int i, j;
int hitindex = -1;
int charnum = CHAR_getCharNum();
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
struct tm tmwk;
/* 卅升毛潸 允月*/
memcpy( &tmwk, localtime( ( time_t *)&NowTime.tv_sec), sizeof( tmwk));
NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr));
/* 玉失毛腹绸允月[NPC_DoorSearchByName()毛银匀凶日啼分仃升
* 蛲互聂仁卅曰公丹卅及匹仇仇左伉斥瓜伙
*/
for( i = CHAR_getPlayerMaxNum()+ CHAR_getPetMaxNum();
i < charnum;
i ++ )
{
if( CHAR_getInt( i, CHAR_WHICHTYPE) != CHAR_TYPEDOOR) {
continue;
}
if( CHAR_getWorkInt( i, CHAR_WORKDOORPASSFLG) == 0 ) {
continue;
}
/* 蟆互栋喱及手及井民尼永弁允月 */
for( j = 3; ; j ++ ) {
int rc;
char *doorname;
char buf[256];
int dataexist;
NPC_ROOMINFO data;
rc = getStringFromIndexWithDelim( argstr, "|" , j,
buf,sizeof(buf) );
if( rc != TRUE ) {
break;
}
doorname = CHAR_getWorkChar( i, CHAR_WORKDOORNAME);
/* 玉失 互域谯仄凶 */
if( strcmp( buf, doorname ) != 0 ) {
continue;
}
/* 互域谯允月 */
if( atoi( CHAR_getWorkChar( i, CHAR_WORKDOORWEEK)) != tmwk.tm_wday) {
break;
}
/* 域杀赓渝祭 */
memset( &data, 0, sizeof( data));
/* 犯□正白央奶伙井日犯□正毛 戈 */
if( NPC_RoomAdminNew_ReadFile( doorname, &data) ) {
struct tm tmdoor;
/* 仇仇匹渝蜃濠木民尼永弁毛支匀化支月[
* 渝蜃互濠木化中凶日白央奶伙毛绰轮允月
* 酷 读卞丐引曰仇及伙□民件骚月仪反卅中午 丹[
*/
if( data.expire < NowTime.tv_sec) {
NPC_RoomAdminNew_WriteDataFile( meindex, -1,doorname, NULL, 0);
/* 玉失手五木中卞*/
NPC_DoorSetPasswd( i, "8hda8iauia90494jasd9asodfasdf89");
CHAR_setWorkInt( i, CHAR_WORKDOOREXPIRETIME, 0xffffffff);
break;
}
/* 漆 匹濠木月 瘀卅日 */
memcpy( &tmdoor, localtime( ( time_t *)&data.expire), sizeof( tmdoor));
if( tmdoor.tm_mon != tmwk.tm_mon ||
tmdoor.tm_mday != tmwk.tm_mday)
{
break;
}
dataexist = TRUE;
}
else {
dataexist = FALSE;
}
/* 蜇箕及凛棉方曰 匹丐月仪[ */
if( tmwk.tm_hour > atoi( CHAR_getWorkChar( i, CHAR_WORKDOORHOUR))){
break;
}
if( tmwk.tm_hour == atoi( CHAR_getWorkChar( i, CHAR_WORKDOORHOUR))) {
if( tmwk.tm_min >= atoi( CHAR_getWorkChar( i, CHAR_WORKDOORMINUTE))) {
break;
}
}
/* 仇仇引匹五凶日午曰丐尹内仇及玉失反戚钒疡卞请月凤伞互
* 丐月午中丹仪[仇木井日职及玉失午民尼永弁允月[
*/
if( hitindex == -1 ) {
hitindex = i;
}
else {
/* 钒疡凛棉互镀仁]蜇箕欧曰日木化中月午中丹及互穸燮赐匏 */
if( atoi( CHAR_getWorkChar( hitindex, CHAR_WORKDOORHOUR))
> atoi( CHAR_getWorkChar( i, CHAR_WORKDOORHOUR)))
{
hitindex = i;
}
else if( atoi( CHAR_getWorkChar( hitindex, CHAR_WORKDOORHOUR))
== atoi( CHAR_getWorkChar( i, CHAR_WORKDOORHOUR)))
{
if( atoi( CHAR_getWorkChar( hitindex, CHAR_WORKDOORMINUTE))
> atoi( CHAR_getWorkChar( i, CHAR_WORKDOORMINUTE)))
{
hitindex = i;
}
else if( atoi( CHAR_getWorkChar( hitindex, CHAR_WORKDOORMINUTE))
== atoi( CHAR_getWorkChar( i, CHAR_WORKDOORMINUTE)))
{
NPC_ROOMINFO datawk;
int hitindexdataexist;
hitindexdataexist = NPC_RoomAdminNew_ReadFile(
CHAR_getWorkChar( hitindex, CHAR_WORKDOORNAME),
&datawk);
if( hitindexdataexist < dataexist ) {
hitindex = i;
}
/* 仇仇引匹 月方丹卅日燮及index及引引午允月[*/
}
}
}
}
}
if( hitindex > 0 ) {
/* 钒疡凛棉毛本永玄 */
tmwk.tm_sec = 0;
tmwk.tm_min = atoi( CHAR_getWorkChar( hitindex, CHAR_WORKDOORMINUTE));
tmwk.tm_hour = atoi( CHAR_getWorkChar( hitindex, CHAR_WORKDOORHOUR));
CHAR_setWorkInt( meindex, CHAR_WORKINT_NEXTTIME, mktime( &tmwk));
/* 盒 毛本永玄 */
CHAR_setWorkChar( meindex, CHAR_WORKCHAR_NEXTROOM,
CHAR_getWorkChar( hitindex, CHAR_WORKDOORNAME));
}
else {
CHAR_setWorkInt( meindex, CHAR_WORKINT_NEXTTIME, 0);
/* 盒 毛本永玄 */
CHAR_setWorkChar( meindex, CHAR_WORKCHAR_NEXTROOM,"" );
}
/* 腹绸凛棉毛本永玄 */
CHAR_setWorkInt( meindex, CHAR_WORKINT_SEARCHROOMTIME, NowTime.tv_sec);
return( TRUE);
}
/*-----------------------------------------------
* 仄井仃日木凶谛互 盒毛欧曰化中凶日由旦伐□玉毛 憎允月
*----------------------------------------------*/
static void NPC_RoomAdminNew_DspRoomPasswd( int index, int adminindex, int talkerindex)
{
int i, rc, flg = FALSE;
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
char argstr2[NPC_UTIL_GETARGSTR_BUFSIZE];
char *cdkey;
char buf[128];
char buff[16];
char buf2[1024];
NPC_ROOMINFO info;
//getcdkeyFromCharaIndex( talkerindex, cdkey, sizeof(cdkey));
cdkey = CHAR_getChar( talkerindex, CHAR_CDKEY);
NPC_Util_GetArgStr( adminindex, argstr, sizeof( argstr));
for( i = 3; ; i ++ ) {
if( getStringFromIndexWithDelim(argstr, "|" , i , buf,sizeof(buf) )) {
rc = NPC_RoomAdminNew_ReadFile( buf, &info);
if( rc == TRUE ) {
/* CDKEY 午平乓仿及 蟆互域谯仄凶日 */
if( strcmp( info.cdkey, cdkey) == 0 &&
strcmp( info.charaname,
CHAR_getChar( talkerindex, CHAR_NAME)) == 0 )
{
int doorindex;
char msgbuf[256];
/* 盒树 潸 */
doorindex = NPC_DoorSearchByName( buf);
NPC_Util_GetArgStr( doorindex, argstr2, sizeof( argstr2));
getStringFromIndexWithDelim( argstr2, "|" , 9 ,
buf2,sizeof(buf2) );
/* 盒树 */
if( strlen(CHAR_getChar( doorindex, CHAR_NAME) ) != 0 ) {
strcpy( buff, "号室");
}
else {
buff[0] = '\0';
}
/* 丢永本□斥本永玄 */
snprintf( msgbuf, sizeof( msgbuf),
NPC_ROOMADMINNEW_MSG_DSPPASSWD1,
buf2,
CHAR_getChar( doorindex, CHAR_NAME),
buff
);
/* 丢永本□斥霜耨 */
CHAR_talkToCli( talkerindex, index,msgbuf,
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?