Example #1
0
int NPC_WarpInit(int charaindex) {
  char arg[NPC_UTIL_GETARGSTR_BUFSIZE];
  int ret;
  int floor = -1, x = -1, y = -1;
  char token[128];

  CHAR_setInt(charaindex, CHAR_WHICHTYPE, CHAR_TYPEWARP);
  if(NPC_Util_GetArgStr(charaindex, arg, sizeof(arg)) == NULL) {
    print("\n GetArgStr ERR!!");
    return FALSE;
  }
#ifdef _NEW_WARPPOINT
  if(strstr(arg, "FREEMORE") != NULL) {
    CHAR_setWorkInt(charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP);
  } else {
#endif
    return FALSE;
    ret = getStringFromIndexWithDelim(arg, "|", 1, token, sizeof(token));
    if(ret) floor = atoi(token);
    ret = getStringFromIndexWithDelim(arg, "|", 2, token, sizeof(token));
    if(ret) x = atoi(token);
    ret = getStringFromIndexWithDelim(arg, "|", 3, token, sizeof(token));
    if(ret) y = atoi(token);
    if(MAP_IsValidCoordinate(floor, x, y) == FALSE) {
      NPC_WarpsetNeverMake(charaindex);
      //print( "Warp NPC:Invalid arg:%s\n", arg );
      print("Warp Npc Err:%d:%d:%d->(%s)\n",
            CHAR_getInt(charaindex, CHAR_FLOOR),
            CHAR_getInt(charaindex, CHAR_X),
            CHAR_getInt(charaindex, CHAR_Y),
            arg);
      return FALSE;
    }
    ret = getStringFromIndexWithDelim(arg, "|", 4, token, sizeof(token));
    if(ret == TRUE) {
      int day;
      day = NPC_TimeWarpCheck(charaindex, token, 0);
      if(day == 0) {
        CHAR_setWorkInt(charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP_NIGHT);
      } else if(day == 1) {
        CHAR_setWorkInt(charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP_MORNING);
      } else if(day == 2) {
        CHAR_setWorkInt(charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP_NOON);
      } else {
        CHAR_setWorkInt(charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP);
      }
    } else {
      CHAR_setWorkInt(charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP);
    }
#ifdef _NEW_WARPPOINT
  }
#endif
  CHAR_setFlg(charaindex, CHAR_ISVISIBLE, 0);
  CHAR_setFlg(charaindex, CHAR_ISOVERED, 1);
  CHAR_setFlg(charaindex, CHAR_ISATTACKED, 0);
  CHAR_setFlg(charaindex, CHAR_ISATTACK, 0);
  return TRUE;
}
Example #2
0
BOOL NPC_WarpInit( int charaindex )
{
	char arg1[NPC_UTIL_GETARGSTR_BUFSIZE];
	char *arg;
    int ret;
    int floor=-1,x=-1,y=-1;
    char    token[128];

#ifdef _RECORD_NPCMAN_ //紀錄
	char evtype[256];
	char evtime[256];
	char argfile[256];

	if( NPC_Util_CheckAssignArgFile( charaindex, argfile) == NULL )
		sprintf( argfile, "NULL");
#endif

	CHAR_setInt( charaindex, CHAR_WHICHTYPE , CHAR_TYPEWARP );
    if((arg = NPC_Util_GetArgStr( charaindex, arg1, sizeof( arg1))) == NULL )	{
		print("\n GetArgStr ERR!!");
		return FALSE;
	}
#ifdef _NEW_WARPPOINT
	if( strstr( arg, "FREEMORE") != NULL )	{
#ifdef _RECORD_NPCMAN_ //紀錄
		sprintf( evtype, "FREE");
		sprintf( evtime, "NULL");
#endif
		CHAR_setWorkInt( charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP);
	}else	{
#endif
#ifdef _MAP_WARPPOINT
		return FALSE;
#endif
#ifdef _RECORD_NPCMAN_ //紀錄
		sprintf( evtype, "NONE");
#endif
		ret=getStringFromIndexWithDelim(arg,"|", 1,token,sizeof(token));
		if( ret ) floor = atoi( token );
		ret=getStringFromIndexWithDelim(arg,"|", 2,token,sizeof(token));
		if( ret ) x = atoi( token );
		ret=getStringFromIndexWithDelim(arg,"|", 3,token,sizeof(token));
		if( ret ) y = atoi( token );
		if( MAP_IsValidCoordinate( floor,x,y )== FALSE ){
			NPC_WarpsetNeverMake( charaindex );
			//print( "Warp NPC:Invalid arg:%s\n", arg );
			print( "Warp Npc Err:%d:%d:%d->(%s)\n",
        		CHAR_getInt( charaindex, CHAR_FLOOR ),
        		CHAR_getInt( charaindex, CHAR_X ),
        		CHAR_getInt( charaindex, CHAR_Y ),
        		arg );
			return FALSE;
		}
		ret=getStringFromIndexWithDelim(arg,"|",4,token,sizeof(token));
		if(ret==TRUE){
			int day;
			day=NPC_TimeWarpCheck(charaindex,token,0);
				if(day==0){
#ifdef _RECORD_NPCMAN_ //紀錄
					sprintf( evtime, "N");
#endif
					CHAR_setWorkInt( charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP_NIGHT);
				}else if(day==1){
#ifdef _RECORD_NPCMAN_ //紀錄
					sprintf( evtime, "M");
#endif
					CHAR_setWorkInt( charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP_MORNING);
				}else if(day==2){
#ifdef _RECORD_NPCMAN_ //紀錄
					sprintf( evtime, "A");
#endif
					CHAR_setWorkInt( charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP_NOON);
				}else{
#ifdef _RECORD_NPCMAN_ //紀錄
					sprintf( evtime, "NULL");
#endif
					CHAR_setWorkInt( charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP);
				}
		}else{
#ifdef _RECORD_NPCMAN_ //紀錄
					sprintf( evtime, "NULL");
#endif
			CHAR_setWorkInt( charaindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_WARP);
		}
#ifdef _NEW_WARPPOINT
	}
#endif
    CHAR_setFlg( charaindex,CHAR_ISVISIBLE, 0 );
    CHAR_setFlg( charaindex,CHAR_ISOVERED,1 );
    CHAR_setFlg( charaindex,CHAR_ISATTACKED,0 );
    CHAR_setFlg( charaindex,CHAR_ISATTACK,0 );

#ifdef _RECORD_NPCMAN_ //紀錄
	{
		FILE *fp=NULL;
		char filename[256];
		sprintf( filename,"./data/npc/%s", "mapwarp.txt");
		if( (fp = fopen( filename, "a+")) != NULL ) {
			fprintf( fp, "%s:%s:%d,%d,%d:%d,%d,%d:%s\n",
				evtype, evtime,
				CHAR_getInt( charaindex, CHAR_FLOOR),
				CHAR_getInt( charaindex, CHAR_X),
				CHAR_getInt( charaindex, CHAR_Y),
				floor, x, y, argfile );
			fclose( fp);
		}else {
		}
	}
#endif
    return TRUE;
}