📄 object.cpp
字号:
/*****************************************************************************\
* Copyright (c), Future Entertainment World / Seoul, Republic of Korea *
* All Rights Reserved. *
* *
* This document contains proprietary and confidential information. No *
* parts of this document or the computer program it embodies may be in *
* any way copied, duplicated, reproduced, translated into a different *
* programming language, or distributed to any person, company, or *
* corporation without the prior written consent of Future Entertainment World *
\*****************************************************************************/
#include "..\stdafx.h"
#include "DefaultHeader.h"
#include "object.h"
#include "map.h"
#include "Citem.h"
#include "RajaSystem.h"
///////////////////////////////////////////////////////////////////////////////
//
MAPOBJECT Mo[ MAX_MAPOBJECT_];
WORD TotalMapObjectID;
WORD TotalMapObject;
int MapObjectLevel;
short int Doors[ 500];
int DoorNum;
///////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////
// user functions
/* Origin阑 棱阑锭,
扁夯狼 Saf绰 BMP俊辑 offsetx, offsety甫 哭率困俊辑 佬篮 image甫 toi狼
甫 嘛阑锭,,,,
*/
//---------------------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////////////////////////////
//021030 YGI
void LoadItemDoorLine( MAPOBJECT *mo, int *dsx, int *dsy, int *ddx, int *ddy, char *filename )
{
char temp[ FILENAME_MAX];
int j;
int obcount;
int no;
FILE *fp = 0;
if( filename )
{
sprintf( temp, "%s/map/%s", GameServerDataPath, filename );
fp = fopen( temp,"rb" );
}
if( !fp )
{
sprintf( temp, "%s/map/%s_toi2.b", GameServerDataPath, filename );
fp = fopen( temp,"rb" );
}
if( fp != NULL )
{
fread( &obcount, sizeof( int), 1, fp );
for( j = 0 ; j < obcount ; j ++)
{
fseek (fp, j * (sizeof( int ) * 20 + sizeof( short int ) * 4 * ITEM_FRAME_MAX_ ) + sizeof( int ), SEEK_SET );
fread( &no, sizeof( int ), 1, fp );
if( no == mo->id + 13000 )
{
fseek( fp, 19 * sizeof( int ), SEEK_CUR );
*dsx = 0;
*dsy = 0;
*ddx = 0;
*ddy = 0;
short int sx, sy, dx, dy;
fread( &sx, sizeof( short), 1, fp ); fseek( fp, sizeof( short ) * (ITEM_FRAME_MAX_-1), SEEK_CUR );
*dsx = sx;
fread( &sy, sizeof( short), 1, fp ); fseek( fp, sizeof( short ) * (ITEM_FRAME_MAX_-1), SEEK_CUR );
*dsy = sy;
fread( &dx, sizeof( short), 1, fp ); fseek( fp, sizeof( short ) * (ITEM_FRAME_MAX_-1), SEEK_CUR );
*ddx = dx;
fread( &dy, sizeof( short), 1, fp ); fseek( fp, sizeof( short ) * (ITEM_FRAME_MAX_-1), SEEK_CUR );
*ddy = dy;
*dsx += mo->x ;
*dsy += mo->y ;
*ddx += mo->x ;
*ddy += mo->y ;
fclose(fp );
return;
}
}
fclose(fp );
}
}
// Table狼 蔼阑 八荤茄促.
void CheckItemsBox( void )
{
int j,i;
for( i = 0 ; i < MAX_TABLE_ITEMS_IN_BOX ; i ++)
{
for( j = 0 ; j < 40 ; j ++)
{
if( Itemsinbox[i].item[j] )
{
ItemAttr item= GenerateItem( Itemsinbox[i].item[j] );//020509 lsw
AddItemList( item.item_no, item.attr, 0, 1000 + TILE_SIZE * j, 1000 + TILE_SIZE * i, 0,0,0,0,0,0 );
}
}
}
}
int InputItemInBox( void )
{
int r = rand()%100;
int i;
for( i = 1 ; i < ItemsinboxMax ; i ++)
{
if( Itemsinbox[i].lev > r )
{
return i;
}
}
return 0;
}
/*
ItemsInBox Itemsinbox[ MAX_TABLE_ITEMS_IN_BOX];
int dum = Itemsinbox[n].item[rand()%40];
int m = Itemsinbox[n].money[rand()%10];
int q = Itemsinbox[n].quantity;
int attrbroadcast = 0;
i->dum[0] = 0;
i->dum[1] = 0;
for( int j = 0 ; j < q ; j ++) i->dum[j] = dum;
i->money = m;
int n = i->dumno;
int dum = Itemsinbox[n].item[rand()%40];
int m = Itemsinbox[n].money[rand()%10];
int q = Itemsinbox[n].quantity;
int attrbroadcast = 0;
*/
//021030 YGI
extern int LoadTOI( int type, char *filename1, char *filename2 );
#include "teambattle.h"
int ReloadTOI( char *filename1, char *filename2 )
{
for( int i = 0; i < MAX_ITEM_LIST; i ++)
{
if( ItemList[i].bAlive == ALIVE_ && ItemList[i].bObject )
{
RemoveItemList( i );
}
}
return LoadTOI( 1, filename1, filename2 );
}
int LoadTOI( char *filename )
{
return LoadTOI( 0, filename, filename );
}
int LoadTOI( int type, char *filename1, char *filename2 )
{
FILE *fp = 0;
char szFilePath[ FILENAME_MAX];
WORD i;
int count = 0;
MAPOBJECT mo;
MAPOBJECT_old moold;
int dsx,dsy, ddx, ddy;
int id;
bool newtoi;
DoorNum = 0;
if( type )
{
sprintf( szFilePath, "%s/Map/%s", GameServerDataPath, filename1 );
fp = fopen( szFilePath, "rb" );
}
if( !fp )
{
sprintf( szFilePath, "%s/Map/%s.toi2", GameServerDataPath, filename1 );
fp = fopen( szFilePath, "rb" );
}
if( fp )
{
fread ( &TotalMapObject, 2,1, fp );
if( TotalMapObject == 0xffff ) { newtoi = true; fread ( &TotalMapObject, 2,1, fp ); }
else newtoi = false;
fread ( &TotalMapObjectID, 2,1, fp );
fseek( fp, TotalMapObject * sizeof( int ), SEEK_CUR );
//fread ( TempMoImageID, TotalMapObject, sizeof( int ), fp );
for( i = 0 ; i < TotalMapObject ; i ++)
{
if( newtoi == true )
{
fread( &mo, sizeof( MAPOBJECT ), 1, fp );
}
else
{
fread( &moold, sizeof( MAPOBJECT_old ), 1, fp );
memcpy( &mo, &moold, sizeof( MAPOBJECT_old ) );
mo.soundno = 0;
mo.soundframe = 0;
mo.sounddelay = 1;
}
// ITEMTYPE_DIRECTBOARD, ITEMTYPE_BOARD..
switch( mo.objectoritem )
{
// 捞沥钎 埃魄.
case 5 :
case 6 :
// 扁贱侩 累诀措..
case 71 :
case 72 :
case 73 :
case 74 :
case 75 :
case 76 :
case 77 :
case 78 :
case 81 :
case 82 :
case 83 :
case 84 :
case 85 :
case 86 :
continue;
case 79 :
case 80 :
break;
}
if( mo.objectoritem )
{
ItemAttr I;
dsx = dsy = ddx = ddy = 0;
I.item_no = mo.id + 13000;
I.attr[0] = 1;
I.attr[1] = 1;
I.attr[IATTR_ATTR] =0;
I.attr[3] = 1;
I.attr[4] = 1;
I.attr[5] = 1;
switch( mo.objectoritem )
{
case ITEMTYPE_NORMAL :
case ITEMTYPE_CHAIR :
case ITEMTYPE_TABLE : I.attr[IATTR_ATTR] = 0; break;
case ITEMTYPE_DOOR : I.attr[IATTR_ATTR] = IA2_NOTMOVE | IA2_DOOR;
LoadItemDoorLine( &mo, &dsx, &dsy, &ddx, &ddy, filename2 );break;
case ITEMTYPE_BOX : I.attr[IATTR_ATTR] = IA2_NOTMOVE | IA2_BOX ;
mo.dum = InputItemInBox();
break;
case ITEMTYPE_COLOSSUS_STONE :
{
I.attr[IATTR_ATTR] = IA2_COLOSSUS_STONE;
static int count = 0;
mo.dum = count;
count++;
break;
}
case ITEMTYPE_SEAL_SPC :
case ITEMTYPE_SEAL_NOR : I.attr[IATTR_ATTR] = IA2_SEAL_NOR | IA2_NOTMOVE;
I.attr[ IATTR_SEAL_STONE_NO] = mo.dum;
I.attr[IATTR_DURATION] = 800000;
break;
}
id = AddItemList( I.item_no, I.attr, mo.dum, mo.x, mo.y, mo.offx, mo.offy, dsx, dsy, ddx, ddy );
if( id > 0)
ItemList[id].bObject = 1;
count ++;
if( mo.objectoritem == ITEMTYPE_DOOR )
{
Doors[ DoorNum] = id;
DoorNum++;
}
else if( mo.objectoritem == ITEMTYPE_COLOSSUS_STONE )
{
g_ColossusStone.AddStone( id );
}
///////////////////////////////////////////////////
///////////////////////////////////////////////////
}
}
fclose(fp);
return 1;
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -