コード例 #1
0
ファイル: CGoods.cpp プロジェクト: xiongshaogang/mmo-resourse
void CGoods::EnchaseAttrRemove(CPlayer* pPlayer,CGoods* pCard)
{	
	vector<CGoods::tagAddonProperty>::iterator tagCardIter=pCard->GetAddonProperties()->begin();
	CGoodsBaseProperties* pEquipBaseProperty=GoodsSetup::QueryGoodsBaseProperties(m_dwBasePropertiesIndex);
	for(;tagCardIter!=pCard->GetAddonProperties()->end();tagCardIter++)
	{				
		//装备上是否有该属性
		if(tagCardIter->gapType==GAP_PARTICULAR_ATTRIBUTE)
			continue;
		if(tagCardIter->gapType==GAP_MIN_REINFORCE_LEVEL || 
			tagCardIter->gapType==GAP_MAX_REINFORCE_LEVEL)
			continue;
		if(tagCardIter->gapType==GAP_COLOR)
			continue;
		if(tagCardIter->gapType==GAP_QUALITY)
			continue;
		

		bool bExist=HasAddonProperty(tagCardIter->gapType);		
		if(bExist)
		{
			//已经有该属性,直接更新
			ChangeAttribute(tagCardIter->gapType,-(tagCardIter->lValues[0]),1);
		}		
	}
	UpdateAttribute(pPlayer->GetExID());
}
コード例 #2
0
M_RESULT SnarlInterface::ChangeAttribute(LONG32 Id, SNARL_ATTRIBUTES Attr, LPCWSTR Value)
{
	LPSTR szParam1 = WideToUTF8(Value);
	
	M_RESULT result = ChangeAttribute(Id, Attr, szParam1);
	
	delete [] szParam1;
	
	return result;
}
コード例 #3
0
ファイル: CGoods.cpp プロジェクト: xiongshaogang/mmo-resourse
bool CGoods::AddonPropertyUpdate(eGoodsAddonProperties gapProperty,eGoodsAddonProperties gapRange)
{
	bool bPropertyExist=HasAddonProperty(gapProperty);
	bool bRangeExist=HasAddonProperty(gapRange);
	if(bPropertyExist && bRangeExist)
	{
		long lRange1=GetAddonPropertyValues(gapRange,1);
		long lRange2=GetAddonPropertyValues(gapRange,2);
		if(lRange1>lRange2)
			return false;
		int ranVal=random(lRange2-lRange1+1);
		ranVal+=lRange1;
		ChangeAttribute(gapProperty,ranVal,1,true);
		return true;
	}
	return false;
}
コード例 #4
0
ファイル: Copy.cpp プロジェクト: GregOcean/mini_UFS
int Copy(int mode,char *filenameSourc,char *fileextSourc,
	char* filenameDest,char *fileextDest)
{
	if (mode==1) //内往内
	{
		
		int p=GetFileID(filenameSourc,fileextSourc);
		if (p==-1)
		{
			printf("复制文件不存在!\n");
			return -1;
		}
		else if (fileIndex[p].node->filesize>FreeFDBNum*4093)
		{
			printf("目标文件大小超出剩余存储空间,操作已取消\n");
			return -1;
		}
		else
		{
			int q=GetFileID(filenameDest,fileextDest);
			if (q!=-1)
			{
				printf("文件已存在,是否替换?\n",filenameDest,fileextDest);
				printf("yes(y),no(n):  ");	
				char input;
				input=getchar();
				while(input=='\n')
					input=getchar();
				if (input=='n')
				{
					printf("File existe.Can not copy.\n");
					return -1;
				}
				else
				{
					Delete(1,filenameDest,fileextDest);
				}
			}
			//
			New(1,filenameDest,fileextDest);
			q=GetFileID(filenameDest,fileextDest);
			FileNode *fnq=fileIndex[q].node;//目的地
			FileNode *fnp=fileIndex[p].node;//源文件
			fnq->filesize=fnp->filesize;
			//FileNode fn=NowDirDirTree[p];
			int nowFDB=fnp->FDBBlock;//源
			int size=fnp->filesize;//源文件大小
			int BlockNum=(size+4092)/4093;//源文件数据块数
			char data[4096];
			char desnextadd[3];
			int add=0;
			int firstFDB=-1;
			for (int i=0;i<BlockNum-1;i++)
			{
				add=AddressOfBlock(nowFDB);
				fseek(fpDisk,add,0);
				fread(data,1,4096,fpDisk);

				char three[3];
				three[0]=data[4093];
				three[1]=data[4094];
				three[2]=data[4095];
				int nextBlock=ThreeToInt(three);
				nowFDB=nextBlock;
				//
				if (i==0) firstFDB=FirstBlankFDB;		

				add=AddressOfBlock(FirstBlankFDB+FCBRemainNum+3);
				fseek(fpDisk,add,0);
				
				FDBBitmap[FirstBlankFDB]=b_Full;
				FreeFDBNum--;

				FirstBlankFDB=GetNextBlankFDB();
				IntToThree(FirstBlankFDB+FCBRemainNum+3,desnextadd);
				data[4093]=desnextadd[0];
				data[4094]=desnextadd[1];
				data[4095]=desnextadd[2];

				fwrite(data,1,4096,fpDisk);
			}
			
			//不足一块的内容
			int remainSize=size;
			if (remainSize%4093==0&&remainSize>0) 
				remainSize=4093;
			else remainSize%=4093;
			//memset(data,0,sizeof(data));
			if (remainSize>0)
			{
				add=AddressOfBlock(nowFDB);
				//fseek(fpDisk,add,0);
				ReadBlock(nowFDB,data,remainSize);

				WriteToBlock(FirstBlankFDB+FCBRemainNum+3,data,remainSize);

				FDBBitmap[FirstBlankFDB]=b_Full;
				if(firstFDB==-1) 
					firstFDB=FirstBlankFDB;
				FirstBlankFDB=GetNextBlankFDB();
				FreeFDBNum--;
			}
			
			
			fnq->FDBBlock=firstFDB+FCBRemainNum+3;
			
			ChangeAttribute(1,q);

			return fnq->filesize;
		}
	}
	else if (mode==2)//内往外
		{
			int size;
			int fid=GetFileID(filenameSourc,fileextSourc);
			if (fid==-1)
			{
				printf("目录下找不到该文件。\n",filenameSourc,fileextSourc);
				return -1;
			}
			else
			{
				FileNode *fn=fileIndex[fid].node;
				int nowFDB=fn->FDBBlock;//源文件
				size=fn->filesize;
				int BlockNum=(size+4092)/4093;
				char data[4096];
				FILE* fp;
				fp=fopen(filenameDest,"wb");
				for (int i=0;i<BlockNum-1;i++)
				{	
					int add=AddressOfBlock(nowFDB);
					fseek(fpDisk,add,0);
					fread(data,1,4096,fpDisk);

					char three[3];
					three[0]=data[4093];
					three[1]=data[4094];
					three[2]=data[4095];
					int nextBlock=ThreeToInt(three);
					nowFDB=nextBlock;

					//fseek(fpDisk,add,0);
					fwrite(data,1,4093,fp);
				}
				int remainSize=size;
				if (remainSize%4093==0&&remainSize>0) remainSize=4093;
				else remainSize%=4093;
				ReadBlock(nowFDB,data,remainSize);
				for (int j=0;j<remainSize;j++)
				{
					fputc(data[j],fp);
				}
				int flen=ftell(fp);
				fclose(fp);
			}
			return size;
		}
		else//外往内		
		{
			FILE* fp;
			fp=fopen(filenameSourc,"rb");
			//
			if (fp==NULL)
			{
				printf("未找到目标文件,操作已终止\n");
				return -1;
			}
			fseek(fp,0L,SEEK_END); /* 定位到文件末尾 */
			int flen=ftell(fp); /* 得到文件大小 */
			if (flen>FreeFDBNum*4093)
			{
				printf("目标文件大小超出剩余存储空间,操作已取消\n");
				return -1;
			}
			fseek(fp,0L,SEEK_SET);
			//
			int q=GetFileID(filenameDest,fileextDest);
			
			if (q!=-1)
			{
				printf("文件已存在,是否替换?\n",filenameDest,fileextDest);
				printf("yes(y),no(n):  ");	
				char input;
				input=getchar();
				while(input=='\n')
					input=getchar();
				if (input=='n')
				{
					printf("File existe.Can not copy.\n");
					return -1;
				}
				else
				{
					Delete(1,filenameDest,fileextDest);
					ChangeNowDir(NowDirRoute);
				}
			}
			//
			New(1,filenameDest,fileextDest);
			int fid=GetFileID(filenameDest,fileextDest);
			FileNode *fn=fileIndex[fid].node;

			int filesize=flen; //文件大小
			int firstFDB=-1;
			char desnextadd[3];
			char data[4096];

			for (int i=0;i<(flen/4093);i++)
			{
				fread(data,1,4093,fp);
				int add=AddressOfBlock(FirstBlankFDB+FCBRemainNum+3);
				fseek(fpDisk,add,0);
				
				if (i==0) firstFDB=FirstBlankFDB;

				FDBBitmap[FirstBlankFDB]=b_Full;
				FreeFDBNum--;

				FirstBlankFDB=GetNextBlankFDB();
				IntToThree(FirstBlankFDB+FCBRemainNum+3,desnextadd);
				data[4093]=desnextadd[0];
				data[4094]=desnextadd[1];
				data[4095]=desnextadd[2];

				fwrite(data,1,4096,fpDisk);
				
			}
			
			if (flen%4093!=0&&flen>0)
			{
				int remainSize=flen;
				if (remainSize%4093==0&&remainSize>0) remainSize=4093;
				else remainSize%=4093;

				int add=AddressOfBlock(FirstBlankFDB+FCBRemainNum+3);
				fseek(fpDisk,add,0);
				fread(data,1,remainSize,fp);
				WriteToBlock(FirstBlankFDB+FCBRemainNum+3,data,remainSize);
				
				FDBBitmap[FirstBlankFDB]=b_Full;
				FreeFDBNum--;
				

				if(firstFDB==-1) 
					firstFDB=FirstBlankFDB;

				FirstBlankFDB=GetNextBlankFDB();

				fn->FDBBlock=firstFDB+FCBRemainNum+3;
			}

			fn->filesize=filesize;			
			ChangeAttribute(1,fid);		
			fclose(fp);
			return flen;
		}	
		
}
コード例 #5
0
M_RESULT SnarlInterface::ChangeAttribute(SNARL_ATTRIBUTES Attr, LPCWSTR Value)
{
	return ChangeAttribute(m_nLastMessageId, Attr, Value);
}
コード例 #6
0
ファイル: attrib.c プロジェクト: RareHare/reactos
INT CommandAttrib (LPTSTR param)
{
	LPTSTR *arg;
	INT    argc, i;
	TCHAR  szPath[MAX_PATH];
	TCHAR  szFileName [MAX_PATH];
	BOOL   bRecurse = FALSE;
	BOOL   bDirectories = FALSE;
	DWORD  dwAttrib = 0;
	DWORD  dwMask = 0;

	/* initialize strings */
	szPath[0] = _T('\0');
	szFileName[0] = _T('\0');

	/* print help */
	if (!_tcsncmp (param, _T("/?"), 2))
	{
		ConOutResPaging(TRUE,STRING_ATTRIB_HELP);
		return 0;
	}

  nErrorLevel = 0;

	/* build parameter array */
	arg = split (param, &argc, FALSE, FALSE);

	/* check for options */
	for (i = 0; i < argc; i++)
	{
		if (_tcsicmp (arg[i], _T("/s")) == 0)
			bRecurse = TRUE;
		else if (_tcsicmp (arg[i], _T("/d")) == 0)
			bDirectories = TRUE;
	}

	/* create attributes and mask */
	for (i = 0; i < argc; i++)
	{
		if (*arg[i] == _T('+'))
		{
			if (_tcslen (arg[i]) != 2)
			{
				error_invalid_parameter_format (arg[i]);
				freep (arg);
				return -1;
			}

			switch ((TCHAR)_totupper (arg[i][1]))
			{
				case _T('A'):
					dwMask   |= FILE_ATTRIBUTE_ARCHIVE;
					dwAttrib |= FILE_ATTRIBUTE_ARCHIVE;
					break;

				case _T('H'):
					dwMask   |= FILE_ATTRIBUTE_HIDDEN;
					dwAttrib |= FILE_ATTRIBUTE_HIDDEN;
					break;

				case _T('R'):
					dwMask   |= FILE_ATTRIBUTE_READONLY;
					dwAttrib |= FILE_ATTRIBUTE_READONLY;
					break;

				case _T('S'):
					dwMask   |= FILE_ATTRIBUTE_SYSTEM;
					dwAttrib |= FILE_ATTRIBUTE_SYSTEM;
					break;

				default:
					error_invalid_parameter_format (arg[i]);
					freep (arg);
					return -1;
			}
		}
		else if (*arg[i] == _T('-'))
		{
			if (_tcslen (arg[i]) != 2)
			{
				error_invalid_parameter_format (arg[i]);
				freep (arg);
				return -1;
			}

			switch ((TCHAR)_totupper (arg[i][1]))
			{
				case _T('A'):
					dwMask   |= FILE_ATTRIBUTE_ARCHIVE;
					dwAttrib &= ~FILE_ATTRIBUTE_ARCHIVE;
					break;

				case _T('H'):
					dwMask   |= FILE_ATTRIBUTE_HIDDEN;
					dwAttrib &= ~FILE_ATTRIBUTE_HIDDEN;
					break;

				case _T('R'):
					dwMask   |= FILE_ATTRIBUTE_READONLY;
					dwAttrib &= ~FILE_ATTRIBUTE_READONLY;
					break;

				case _T('S'):
					dwMask   |= FILE_ATTRIBUTE_SYSTEM;
					dwAttrib &= ~FILE_ATTRIBUTE_SYSTEM;
					break;

				default:
					error_invalid_parameter_format (arg[i]);
					freep (arg);
					return -1;
			}
		}
	}

	if (argc == 0)
	{
		DWORD len;

		len = GetCurrentDirectory (MAX_PATH, szPath);
		if (szPath[len-1] != _T('\\'))
		{
			szPath[len] = _T('\\');
			szPath[len + 1] = 0;
		}
		_tcscpy (szFileName, _T("*.*"));
		PrintAttribute (szPath, szFileName, bRecurse);
		freep (arg);
		return 0;
	}

	/* get full file name */
	for (i = 0; i < argc; i++)
	{
		if ((*arg[i] != _T('+')) && (*arg[i] != _T('-')) && (*arg[i] != _T('/')))
		{
			LPTSTR p;
			GetFullPathName (arg[i], MAX_PATH, szPath, NULL);
			p = _tcsrchr (szPath, _T('\\')) + 1;
			_tcscpy (szFileName, p);
			*p = _T('\0');

			if (dwMask == 0)
				PrintAttribute (szPath, szFileName, bRecurse);
			else
				ChangeAttribute (szPath, szFileName, dwMask,
						 dwAttrib, bRecurse, bDirectories);
		}
	}

	freep (arg);
	return 0;
}
コード例 #7
0
ファイル: attrib.c プロジェクト: RareHare/reactos
static VOID
ChangeAttribute (LPTSTR pszPath, LPTSTR pszFile, DWORD dwMask,
		 DWORD dwAttrib, BOOL bRecurse, BOOL bDirectories)
{
	WIN32_FIND_DATA findData;
	HANDLE hFind;
	DWORD  dwAttribute;
	TCHAR  szFullName[MAX_PATH];
	LPTSTR pszFileName;


	/* prepare full file name buffer */
	_tcscpy (szFullName, pszPath);
	pszFileName = szFullName + _tcslen (szFullName);

	/* change all subdirectories */
	if (bRecurse)
	{
		/* append file name */
		_tcscpy (pszFileName, _T("*.*"));

		hFind = FindFirstFile (szFullName, &findData);
		if (hFind == INVALID_HANDLE_VALUE)
		{
			ErrorMessage (GetLastError (), pszFile);
      nErrorLevel = 1;
			return;
		}

		do
		{
			if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
			{
				if (!_tcscmp (findData.cFileName, _T(".")) ||
				    !_tcscmp (findData.cFileName, _T("..")))
					continue;

				_tcscpy (pszFileName, findData.cFileName);
				_tcscat (pszFileName, _T("\\"));

				ChangeAttribute (szFullName, pszFile, dwMask,
								 dwAttrib, bRecurse, bDirectories);
			}
		}
		while (FindNextFile (hFind, &findData));
		FindClose (hFind);
	}

	/* append file name */
	_tcscpy (pszFileName, pszFile);

	hFind = FindFirstFile (szFullName, &findData);
	if (hFind == INVALID_HANDLE_VALUE)
	{
		ErrorMessage (GetLastError (), pszFile);
    nErrorLevel = 1;
		return;
	}

	do
	{
		if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
			continue;

		_tcscpy (pszFileName, findData.cFileName);

		dwAttribute = GetFileAttributes (szFullName);

		if (dwAttribute != 0xFFFFFFFF)
		{
			dwAttribute = (dwAttribute & ~dwMask) | dwAttrib;
			SetFileAttributes (szFullName, dwAttribute);
		}
	}
	while (FindNextFile (hFind, &findData));
	FindClose (hFind);
}
コード例 #8
0
void URPGAttributeComponent::TakeDamage(float DamageAmount, FName AttributeName, AActor* CausedBy)
{
	ChangeAttribute(AttributeName, DamageAmount, EAttributeOperation::Attribute_Subtract);
}