您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ CONPRINTF函数代码示例

51自学网 2021-06-01 20:03:50
  C++
这篇教程C++ CONPRINTF函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中CONPRINTF函数的典型用法代码示例。如果您正苦于以下问题:C++ CONPRINTF函数的具体用法?C++ CONPRINTF怎么用?C++ CONPRINTF使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了CONPRINTF函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: requestAlliance

void requestAlliance(uint8_t from, uint8_t to, BOOL prop, BOOL allowAudio){	alliances[from][to] = ALLIANCE_REQUESTED;	// We've asked	alliances[to][from] = ALLIANCE_INVITATION;	// They've been invited	CBallFrom = from;	CBallTo = to;	eventFireCallbackTrigger((TRIGGER_TYPE) CALL_ALLIANCEOFFER);	if (to == selectedPlayer)	{		CONPRINTF(ConsoleString,(ConsoleString,_("%s Requests An Alliance With You"),getPlayerName(from)));		if (allowAudio)		{			audio_QueueTrack(ID_ALLIANCE_OFF);		}	}	else if (from == selectedPlayer)	{		CONPRINTF(ConsoleString,(ConsoleString,_("You Invite %s To Form An Alliance"),getPlayerName(to)));		if (allowAudio)		{			audio_QueueTrack(ID_ALLIANCE_OFF);		}	}	if (prop)	{		sendAlliance(from, to, ALLIANCE_REQUESTED, false);	}}
开发者ID:cybersphinx,项目名称:wzgraphicsmods,代码行数:33,


示例2: requestAlliance

void requestAlliance(uint8_t from, uint8_t to, bool prop, bool allowAudio){	if (prop && bMultiMessages)	{		sendAlliance(from, to, ALLIANCE_REQUESTED, false);		return;  // Wait for our message.	}	syncDebug("Request alliance %d %d", from, to);	alliances[from][to] = ALLIANCE_REQUESTED;	// We've asked	alliances[to][from] = ALLIANCE_INVITATION;	// They've been invited	CBallFrom = from;	CBallTo = to;	eventFireCallbackTrigger((TRIGGER_TYPE) CALL_ALLIANCEOFFER);	if (to == selectedPlayer)	{		CONPRINTF(ConsoleString, (ConsoleString, _("%s Requests An Alliance With You"), getPlayerName(from)));		if (allowAudio)		{			audio_QueueTrack(ID_ALLIANCE_OFF);		}	}	else if (from == selectedPlayer)	{		CONPRINTF(ConsoleString, (ConsoleString, _("You Invite %s To Form An Alliance"), getPlayerName(to)));		if (allowAudio)		{			audio_QueueTrack(ID_ALLIANCE_OFF);		}	}}
开发者ID:C1annad,项目名称:warzone2100,代码行数:35,


示例3: breakAlliance

void breakAlliance(uint8_t p1, uint8_t p2, BOOL prop, BOOL allowAudio){	char	tm1[128];	if (alliances[p1][p2] == ALLIANCE_FORMED)	{		sstrcpy(tm1, getPlayerName(p1));		CONPRINTF(ConsoleString,(ConsoleString,_("%s Breaks The Alliance With %s"),tm1,getPlayerName(p2) ));		if (allowAudio && (p1 == selectedPlayer || p2 == selectedPlayer))		{			audio_QueueTrack(ID_ALLIANCE_BRO);		}	}	alliances[p1][p2] = ALLIANCE_BROKEN;	alliances[p2][p1] = ALLIANCE_BROKEN;	alliancebits[p1] &= ~(1 << p2);	alliancebits[p2] &= ~(1 << p1);	if (prop)	{		sendAlliance(p1, p2, ALLIANCE_BROKEN, false);	}}
开发者ID:cybersphinx,项目名称:wzgraphicsmods,代码行数:25,


示例4: giftPower

// ////////////////////////////////////////////////////////////////////////////// give Powervoid giftPower(uint8_t from, uint8_t to, BOOL send){	UDWORD gifval;	uint32_t dummy = 0;	if (from == ANYPLAYER)	{		gifval = OILDRUM_POWER;	}	else	{		// Give 1/3 of our power away		gifval = getPower(from) / 3;		usePower(from, gifval);	}	addPower(to, gifval);	if (send)	{		uint8_t giftType = POWER_GIFT;		NETbeginEncode(NET_GIFT, NET_ALL_PLAYERS);			NETuint8_t(&giftType);			NETuint8_t(&from);			NETuint8_t(&to);			NETuint32_t(&dummy);		NETend();	}	else if (to == selectedPlayer)	{		CONPRINTF(ConsoleString,(ConsoleString,_("%s Gives You %u Power"),getPlayerName(from),gifval));	}}
开发者ID:cybersphinx,项目名称:wzgraphicsmods,代码行数:36,


示例5: giftArtifact

// ///////////////////////////////////////////////////////////////void giftArtifact(UDWORD owner, UDWORD x, UDWORD y){	PLAYER_RESEARCH	*pR = asPlayerResList[selectedPlayer];	if (owner < MAX_PLAYERS)	{		PLAYER_RESEARCH	*pO = asPlayerResList[owner];		int topic;		for (topic = numResearch - 1; topic >= 0; topic--)		{			if (IsResearchCompleted(&pO[topic])			 && !IsResearchPossible(&pR[topic]))			{				// Make sure the topic can be researched				if (asResearch[topic].researchPower				 && asResearch[topic].researchPoints)				{					MakeResearchPossible(&pR[topic]);					CONPRINTF(ConsoleString,(ConsoleString,_("You Discover Blueprints For %s"),						getName(asResearch[topic].pName)));					break;				}				// Invalid topic				else				{					debug(LOG_WARNING, "%s is a invalid research topic?", getName(asResearch[topic].pName));				}			}		}	}}
开发者ID:cybersphinx,项目名称:wzgraphicsmods,代码行数:33,


示例6: pickupArtefact

// ///////////////////////////////////////////////////////////////bool pickupArtefact(int toPlayer, int fromPlayer){	if (fromPlayer < MAX_PLAYERS && bMultiPlayer)	{		for (int topic = asResearch.size() - 1; topic >= 0; topic--)		{			if (IsResearchCompleted(&asPlayerResList[fromPlayer][topic])			 && !IsResearchPossible(&asPlayerResList[toPlayer][topic]))			{				// Make sure the topic can be researched				if (asResearch[topic].researchPower && asResearch[topic].researchPoints)				{					MakeResearchPossible(&asPlayerResList[toPlayer][topic]);					if (toPlayer == selectedPlayer)					{						CONPRINTF(ConsoleString,(ConsoleString,_("You Discover Blueprints For %s"), getName(asResearch[topic].pName)));					}					break;				}				// Invalid topic				else				{					debug(LOG_WARNING, "%s is a invalid research topic?", getName(asResearch[topic].pName));				}			}		}		audio_QueueTrack(ID_SOUND_ARTIFACT_RECOVERED);		return true;	}	return false;}
开发者ID:JCDG,项目名称:warzone2100,代码行数:35,


示例7: formAlliance

void formAlliance(uint8_t p1, uint8_t p2, bool prop, bool allowAudio, bool allowNotification){	DROID	*psDroid;	char	tm1[128];	if (bMultiMessages && prop)	{		sendAlliance(p1, p2, ALLIANCE_FORMED, false);		return;  // Wait for our message.	}	// Don't add message if already allied	if (bMultiPlayer && alliances[p1][p2] != ALLIANCE_FORMED && allowNotification)	{		sstrcpy(tm1, getPlayerName(p1));		CONPRINTF(ConsoleString, (ConsoleString, _("%s Forms An Alliance With %s"), tm1, getPlayerName(p2)));	}	syncDebug("Form alliance %d %d", p1, p2);	triggerEventAllianceAccepted(p1, p2);	alliances[p1][p2] = ALLIANCE_FORMED;	alliances[p2][p1] = ALLIANCE_FORMED;	if (bMultiPlayer && alliancesSharedVision(game.alliance))	// this is for shared vision only	{		alliancebits[p1] |= 1 << p2;		alliancebits[p2] |= 1 << p1;	}	if (allowAudio && (p1 == selectedPlayer || p2 == selectedPlayer))	{		audio_QueueTrack(ID_ALLIANCE_ACC);	}	// Not campaign and alliances are transitive	if (bMultiPlayer && alliancesSharedVision(game.alliance))	{		giftRadar(p1, p2, false);		giftRadar(p2, p1, false);	}	// Clear out any attacking orders	for (psDroid = apsDroidLists[p1]; psDroid; psDroid = psDroid->psNext)	// from -> to	{		if (psDroid->order.type == DORDER_ATTACK		    && psDroid->order.psObj		    && psDroid->order.psObj->player == p2)		{			orderDroid(psDroid, DORDER_STOP, ModeImmediate);		}	}	for (psDroid = apsDroidLists[p2]; psDroid; psDroid = psDroid->psNext)	// to -> from	{		if (psDroid->order.type == DORDER_ATTACK		    && psDroid->order.psObj		    && psDroid->order.psObj->player == p1)		{			orderDroid(psDroid, DORDER_STOP, ModeImmediate);		}	}}
开发者ID:lamyongxian,项目名称:warzone2100,代码行数:60,


示例8: giftResearch

// ////////////////////////////////////////////////////////////////////////////// give technologies.static void giftResearch(uint8_t from, uint8_t to, bool send){	int		i;	uint32_t	dummy = 0;	if (send)	{		uint8_t giftType = RESEARCH_GIFT;		NETbeginEncode(NETgameQueue(selectedPlayer), GAME_GIFT);		NETuint8_t(&giftType);		NETuint8_t(&from);		NETuint8_t(&to);		NETuint32_t(&dummy);		NETend();	}	else if (alliancesCanGiveResearchAndRadar(game.alliance))	{		if (to == selectedPlayer)		{			CONPRINTF(ConsoleString, (ConsoleString, _("%s Gives You Technology Documents"), getPlayerName(from)));		}		// For each topic		for (i = 0; i < asResearch.size(); i++)		{			// If they have it and we don't research it			if (IsResearchCompleted(&asPlayerResList[from][i])			    && !IsResearchCompleted(&asPlayerResList[to][i]))			{				MakeResearchCompleted(&asPlayerResList[to][i]);				researchResult(i, to, false, NULL, true);			}		}	}}
开发者ID:C1annad,项目名称:warzone2100,代码行数:37,


示例9: giftAutoGame

static void giftAutoGame(uint8_t from, uint8_t to, bool send){	uint32_t dummy = 0;	if (send)	{		uint8_t subType = AUTOGAME_GIFT;		NETbeginEncode(NETgameQueue(selectedPlayer), GAME_GIFT);		NETuint8_t(&subType);		NETuint8_t(&from);		NETuint8_t(&to);		NETuint32_t(&dummy);		NETend();		debug(LOG_SYNC, "We (%d) are telling %d we want to enable/disable a autogame", from, to);	}	// If we are recieving the "gift"	else	{		if (to == selectedPlayer)		{			NetPlay.players[from].autoGame = !NetPlay.players[from].autoGame ;			CONPRINTF(ConsoleString, (ConsoleString, "%s has %s the autoGame command", getPlayerName(from), NetPlay.players[from].autoGame ? "Enabled" : "Disabled"));			debug(LOG_SYNC, "We (%d) are being told that %d has %s autogame", selectedPlayer, from, NetPlay.players[from].autoGame ? "Enabled" : "Disabled");		}	}}
开发者ID:C1annad,项目名称:warzone2100,代码行数:27,


示例10: giftRadar

// ////////////////////////////////////////////////////////////////////////////// give radar informationvoid giftRadar(uint8_t from, uint8_t to, bool send){	uint32_t dummy = 0;	if (send)	{		uint8_t subType = RADAR_GIFT;		NETbeginEncode(NETgameQueue(selectedPlayer), GAME_GIFT);		NETuint8_t(&subType);		NETuint8_t(&from);		NETuint8_t(&to);		NETuint32_t(&dummy);		NETend();	}	// If we are recieving the gift	else	{		hqReward(from, to);		if (to == selectedPlayer)		{			CONPRINTF(ConsoleString, (ConsoleString, _("%s Gives You A Visibility Report"), getPlayerName(from)));		}	}}
开发者ID:C1annad,项目名称:warzone2100,代码行数:27,


示例11: breakAlliance

void breakAlliance(uint8_t p1, uint8_t p2, bool prop, bool allowAudio){	char	tm1[128];	if (prop && bMultiMessages)	{		sendAlliance(p1, p2, ALLIANCE_BROKEN, false);		return;  // Wait for our message.	}	if (alliances[p1][p2] == ALLIANCE_FORMED)	{		sstrcpy(tm1, getPlayerName(p1));		CONPRINTF(ConsoleString, (ConsoleString, _("%s Breaks The Alliance With %s"), tm1, getPlayerName(p2)));		if (allowAudio && (p1 == selectedPlayer || p2 == selectedPlayer))		{			audio_QueueTrack(ID_ALLIANCE_BRO);		}	}	syncDebug("Break alliance %d %d", p1, p2);	alliances[p1][p2] = ALLIANCE_BROKEN;	alliances[p2][p1] = ALLIANCE_BROKEN;	alliancebits[p1] &= ~(1 << p2);	alliancebits[p2] &= ~(1 << p1);}
开发者ID:C1annad,项目名称:warzone2100,代码行数:27,


示例12: printComponentInfo

/** print out information about a general component *  /param psStats the component to print the info for */static void printComponentInfo(const COMPONENT_STATS *psStats){	CONPRINTF(ConsoleString, (ConsoleString, "%s ref %d/n"	                          "   bPwr %d bPnts %d wt %d bdy %d imd %p/n",	                          getName(psStats), psStats->ref, psStats->buildPower,	                          psStats->buildPoints, psStats->weight, psStats->pBase->hitpoints,	                          psStats->pIMD));}
开发者ID:ik3210,项目名称:warzone2100,代码行数:11,


示例13: sendGiftDroids

// sendGiftDroids()// We give selected droid(s) as a gift to another player.//// /param from  :player that sent us the droid// /param to    :player that should be getting the droidstatic void sendGiftDroids(uint8_t from, uint8_t to){	DROID        *next, *psD;	uint8_t      giftType = DROID_GIFT;	uint8_t      totalToSend;	if (apsDroidLists[from] == NULL)	{		return;	}	/*	 * Work out the number of droids to send. As well as making sure they are	 * selected we also need to make sure they will NOT put the receiving player	 * over their droid limit.	 */	for (totalToSend = 0, psD = apsDroidLists[from];	     psD && getNumDroids(to) + totalToSend < getMaxDroids(to) && totalToSend != UINT8_MAX;	     psD = psD->psNext)	{		if (psD->selected)				++totalToSend;	}	/*	 * We must send one droid at a time, due to the fact that giftSingleDroid()	 * does its own net calls.	 */	for (psD = apsDroidLists[from]; psD && totalToSend != 0; psD = next)	{		// Store the next droid in the list as the list may change		next = psD->psNext;		if (psD->droidType == DROID_TRANSPORTER		 && !transporterIsEmpty(psD))		{			CONPRINTF(ConsoleString, (ConsoleString, _("Tried to give away a non-empty %s - but this is not allowed."), psD->aName));			continue;		}		if (psD->selected)		{			NETbeginEncode(NET_GIFT, NET_ALL_PLAYERS);			NETuint8_t(&giftType);			NETuint8_t(&from);			NETuint8_t(&to);			// Add the droid to the packet			NETuint32_t(&psD->id);			NETend();			// Hand over the droid on our sidde			giftSingleDroid(psD, to);			// Decrement the number of droids left to send			--totalToSend;		}	}}
开发者ID:cybersphinx,项目名称:wzgraphicsmods,代码行数:63,


示例14: sendGiftDroids

// sendGiftDroids()// We give selected droid(s) as a gift to another player.//// /param from  :player that sent us the droid// /param to    :player that should be getting the droidstatic void sendGiftDroids(uint8_t from, uint8_t to){	DROID        *psD;	uint8_t      giftType = DROID_GIFT;	uint8_t      totalToSend;	if (apsDroidLists[from] == nullptr)	{		return;	}	/*	 * Work out the number of droids to send. As well as making sure they are	 * selected we also need to make sure they will NOT put the receiving player	 * over their droid limit.	 */	for (totalToSend = 0, psD = apsDroidLists[from];	     psD && getNumDroids(to) + totalToSend < getMaxDroids(to) && totalToSend != UINT8_MAX;	     psD = psD->psNext)	{		if (psD->selected)		{			++totalToSend;		}	}	/*	 * We must send one droid at a time, due to the fact that giftSingleDroid()	 * does its own net calls.	 */	for (psD = apsDroidLists[from]; psD && totalToSend != 0; psD = psD->psNext)	{		if (isTransporter(psD)		    && !transporterIsEmpty(psD))		{			CONPRINTF(ConsoleString, (ConsoleString, _("Tried to give away a non-empty %s - but this is not allowed."), psD->aName));			continue;		}		if (psD->selected)		{			NETbeginEncode(NETgameQueue(selectedPlayer), GAME_GIFT);			NETuint8_t(&giftType);			NETuint8_t(&from);			NETuint8_t(&to);			// Add the droid to the packet			NETuint32_t(&psD->id);			NETend();			// Decrement the number of droids left to send			--totalToSend;		}	}}
开发者ID:lamyongxian,项目名称:warzone2100,代码行数:59,


示例15: keyShowMapping

/* Sends a particular key mapping to the console */static void keyShowMapping(KEY_MAPPING *psMapping){	char	asciiSub[20], asciiMeta[20];	bool	onlySub;	onlySub = true;	if (psMapping->metaKeyCode != KEY_IGNORE)	{		keyScanToString(psMapping->metaKeyCode, (char *)&asciiMeta, 20);		onlySub = false;	}	keyScanToString(psMapping->subKeyCode, (char *)&asciiSub, 20);	if (onlySub)	{		CONPRINTF(ConsoleString, (ConsoleString, "%s - %s", asciiSub, _(psMapping->name.c_str())));	}	else	{		CONPRINTF(ConsoleString, (ConsoleString, "%s and %s - %s", asciiMeta, asciiSub, _(psMapping->name.c_str())));	}	debug(LOG_INPUT, "Received %s from Console", ConsoleString);}
开发者ID:lamyongxian,项目名称:warzone2100,代码行数:24,


示例16: recvGiftDroids

// recvGiftDroid()// We received a droid gift from another player.// NOTICE: the packet is already set-up for decoding via recvGift()//// /param from  :player that sent us the droid// /param to    :player that should be getting the droidstatic void recvGiftDroids(uint8_t from, uint8_t to, uint32_t droidID){	DROID		*psDroid;	if (IdToDroid(droidID, from, &psDroid))	{		giftSingleDroid(psDroid, to);		if (to == selectedPlayer)		{			CONPRINTF(ConsoleString, (ConsoleString, _("%s Gives you a %s"), getPlayerName(from), psDroid->aName));		}	}	else	{		debug(LOG_ERROR, "Bad droid id %u, from %u to %u", droidID, from, to);	}}
开发者ID:cybersphinx,项目名称:wzgraphicsmods,代码行数:23,


示例17: recvGiftStruct

// NOTICE: the packet is already set-up for decoding via recvGift()static void recvGiftStruct(uint8_t from, uint8_t to, uint32_t structID){	STRUCTURE *psStruct = IdToStruct(structID, from);	if (psStruct)	{		syncDebugStructure(psStruct, '<');		giftSingleStructure(psStruct, to, false);		syncDebugStructure(psStruct, '>');		if (to == selectedPlayer)		{			CONPRINTF(ConsoleString, (ConsoleString, _("%s Gives you a %s"), getPlayerName(from), objInfo(psStruct)));		}	}	else	{		debug(LOG_ERROR, "Bad structure id %u, from %u to %u", structID, from, to);	}}
开发者ID:lamyongxian,项目名称:warzone2100,代码行数:19,


示例18: giftPower

// ////////////////////////////////////////////////////////////////////////////// give Powervoid giftPower(uint8_t from, uint8_t to, uint32_t amount, bool send){	if (send)	{		uint8_t giftType = POWER_GIFT;		NETbeginEncode(NETgameQueue(selectedPlayer), GAME_GIFT);		NETuint8_t(&giftType);		NETuint8_t(&from);		NETuint8_t(&to);		NETuint32_t(&amount);		NETend();	}	else	{		int value = 0;		if (from == ANYPLAYER && !NetPlay.bComms)		{			// basically cheating power, so we check that we are not in multiplayer			addPower(to, amount);		}		else if (from == ANYPLAYER && NetPlay.bComms)		{			debug(LOG_WARNING, "Someone tried to cheat power in multiplayer - ignored!");		}		else if (amount == 0) // the GUI option		{			value = getPower(from) / 3;			usePower(from, value);			addPower(to, value);		}		else // for scripts etc that can give precise amounts		{			value = MIN(getPower(from), amount);			usePower(from, value);			addPower(to, value);		}		if (from != ANYPLAYER && to == selectedPlayer)		{			CONPRINTF(ConsoleString, (ConsoleString, _("%s Gives You %d Power"), getPlayerName(from), value));		}	}}
开发者ID:C1annad,项目名称:warzone2100,代码行数:46,


示例19: researchReward

/*find the last research topic of importance that the losing player did and'give' the results to the reward player*/void researchReward(UBYTE losingPlayer, UBYTE rewardPlayer){	UDWORD topicIndex = 0, researchPoints = 0, rewardID = 0;	STRUCTURE			*psStruct;	RESEARCH_FACILITY	*psFacility;	//look through the losing players structures to find a research facility	for (psStruct = apsStructLists[losingPlayer]; psStruct != NULL; psStruct =	         psStruct->psNext)	{		if (psStruct->pStructureType->type == REF_RESEARCH)		{			psFacility = (RESEARCH_FACILITY *)psStruct->pFunctionality;			if (psFacility->psBestTopic)			{				topicIndex = ((RESEARCH *)psFacility->psBestTopic)->ref -				             REF_RESEARCH_START;				if (topicIndex)				{					//if it cost more - it is better (or should be)					if (researchPoints < asResearch[topicIndex].researchPoints)					{						//store the 'best' topic						researchPoints = asResearch[topicIndex].researchPoints;						rewardID = topicIndex;					}				}			}		}	}	//if a topic was found give the reward player the results of that research	if (rewardID)	{		researchResult(rewardID, rewardPlayer, true, NULL, true);		if (rewardPlayer == selectedPlayer)		{			//name the actual reward			CONPRINTF(ConsoleString, (ConsoleString, "%s :- %s",			                          _("Research Award"),			                          getName(&asResearch[rewardID])));		}	}}
开发者ID:CalculusWZ,项目名称:warzone2100,代码行数:46,


示例20: printBaseObjInfo

/** print out information about a base object *  /param psObj the object to print the info for */static void printBaseObjInfo(const BASE_OBJECT* psObj){	const char *pType;	switch (psObj->type)	{	case OBJ_DROID:		pType = "UNIT";		break;	case OBJ_STRUCTURE:		pType = "STRUCT";		break;	case OBJ_FEATURE:		pType = "FEAT";		break;	default:		pType = "UNKNOWN TYPE";		break;	}	CONPRINTF( ConsoleString, (ConsoleString, "%s id %d at (%d,%d,%d) dpr (%hu,%hu,%hu)/n", pType, psObj->id, psObj->pos.x, psObj->pos.y, psObj->pos.z, psObj->rot.direction, psObj->rot.pitch, psObj->rot.roll));}
开发者ID:BG1,项目名称:warzone2100,代码行数:24,


示例21: giftResearch

// ////////////////////////////////////////////////////////////////////////////// give technologies.static void giftResearch(uint8_t from, uint8_t to, BOOL send){	PLAYER_RESEARCH	*pR, *pRto;	int		i;	uint32_t	dummy = 0;	if (send)	{		uint8_t giftType = RESEARCH_GIFT;		NETbeginEncode(NETgameQueue(selectedPlayer), GAME_GIFT);			NETuint8_t(&giftType);			NETuint8_t(&from);			NETuint8_t(&to);			NETuint32_t(&dummy);		NETend();	}	else	{		if (to == selectedPlayer)		{			CONPRINTF(ConsoleString, (ConsoleString, _("%s Gives You Technology Documents"), getPlayerName(from)));		}		pR   = asPlayerResList[from];		pRto = asPlayerResList[to];		// For each topic		for (i = 0; i < numResearch; i++)		{			// If they have it and we don't research it			if (IsResearchCompleted(&pR[i])			&& !IsResearchCompleted(&pRto[i]))			{				MakeResearchCompleted(&pRto[i]);				researchResult(i, to, false, NULL, true);			}		}	}}
开发者ID:DylanHsu,项目名称:warzone2100,代码行数:41,


示例22: giftPower

// ////////////////////////////////////////////////////////////////////////////// give Powervoid giftPower(uint8_t from, uint8_t to, uint32_t amount, bool send){	if (send)	{		uint8_t giftType = POWER_GIFT;		NETbeginEncode(NETgameQueue(selectedPlayer), GAME_GIFT);			NETuint8_t(&giftType);			NETuint8_t(&from);			NETuint8_t(&to);			NETuint32_t(&amount);		NETend();	}	else	{		uint32_t gifval;		if (from == ANYPLAYER || amount != 0)		{			gifval = amount;		}		else		{			// Give 1/3 of our power away			gifval = getPower(from) / 3;			usePower(from, gifval);		}		addPower(to, gifval);		if (from != ANYPLAYER && to == selectedPlayer)		{			CONPRINTF(ConsoleString,(ConsoleString,_("%s Gives You %u Power"),getPlayerName(from),gifval));		}	}}
开发者ID:JCDG,项目名称:warzone2100,代码行数:38,


示例23: processWarCam

/* Updates the camera position/angle along with the object movement */bool	processWarCam( void ){	BASE_OBJECT *foundTarget;	bool Status = true;	/* Get out if the camera isn't active */	if(trackingCamera.status == CAM_INACTIVE)	{		return(true);	}	/* Ensure that the camera only ever flips state within this routine! */	switch(trackingCamera.status)	{	case CAM_REQUEST:			/* See if we can find the target to follow */			foundTarget = camFindTarget();			if(foundTarget && !foundTarget->died)			{				/* We've got one, so store away info */				camAllignWithTarget(foundTarget);				/* We're now into tracking status */				trackingCamera.status = CAM_TRACKING;				/* Inform via console */				if(foundTarget->type == OBJ_DROID)				{					if(getWarCamStatus())					{						CONPRINTF(ConsoleString,(ConsoleString,"WZ/CAM  - %s",droidGetName((DROID*)foundTarget)));					}				}			}			else			{				/* We've requested a track with no droid selected */				trackingCamera.status = CAM_INACTIVE;			}		break;	case CAM_TRACKING:			/* Track the droid unless routine comes back false */			if(!camTrackCamera())			{				/*					Camera track came back false, either because droid died or is					no longer selected, so reset to old values				*/				foundTarget = camFindTarget();				if(foundTarget && !foundTarget->died)				{					trackingCamera.status = CAM_REQUEST;				}				else				{					trackingCamera.status = CAM_RESET;				}			}		processLeaderSelection();		break;	case CAM_RESET:			/* Reset camera to pre-droid tracking status */			if( (trackingCamera.target==NULL)			  ||(trackingCamera.target->type!=OBJ_TARGET))			{				camSwitchOff();			}			/* Switch to inactive mode */			trackingCamera.status = CAM_INACTIVE;			Status = false;		break;	case CAM_INACTIVE:	case CAM_TRACK_OBJECT:	case CAM_TRACK_LOCATION:		ASSERT(false, "Unexpected status for tracking camera");		break;	}	return Status;}
开发者ID:ShadowWolfTJC,项目名称:warzone2100,代码行数:84,


示例24: printWeaponInfo

/** print out weapon information *  /param psStats the weapon to print the info for */static void printWeaponInfo(const WEAPON_STATS *psStats){	const char *pWC, *pWSC, *pMM;	switch (psStats->weaponClass)	{	case WC_KINETIC:		//bullets etc		pWC = "WC_KINETIC";		break;	case WC_HEAT:		//laser etc		pWC = "WC_HEAT";		break;	default:		pWC = "UNKNOWN CLASS";		break;	}	switch (psStats->weaponSubClass)	{	case WSC_MGUN:		pWSC = "WSC_MGUN";		break;	case WSC_CANNON:		pWSC = "WSC_CANNON";		break;	case WSC_MORTARS:		pWSC = "WSC_MORTARS";		break;	case WSC_MISSILE:		pWSC = "WSC_MISSILE";		break;	case WSC_ROCKET:		pWSC = "WSC_ROCKET";		break;	case WSC_ENERGY:		pWSC = "WSC_ENERGY";		break;	case WSC_GAUSS:		pWSC = "WSC_GAUSS";		break;	case WSC_FLAME:		pWSC = "WSC_FLAME";		break;	case WSC_HOWITZERS:		pWSC = "WSC_HOWITZERS";		break;	case WSC_ELECTRONIC:		pWSC = "WSC_ELECTRONIC";		break;	case WSC_AAGUN:		pWSC = "WSC_AAGUN";		break;	case WSC_SLOWMISSILE:		pWSC = "WSC_SLOWMISSILE";		break;	case WSC_SLOWROCKET:		pWSC = "WSC_SLOWROCKET";		break;	case WSC_LAS_SAT:		pWSC = "WSC_LAS_SAT";		break;	case WSC_BOMB:		pWSC = "WSC_BOMB";		break;	case WSC_COMMAND:		pWSC = "WSC_COMMAND";		break;	case WSC_EMP:		pWSC = "WSC_EMP";		break;	default:		pWSC = "UNKNOWN SUB CLASS";		break;	}	switch (psStats->movementModel)	{	case MM_DIRECT:		pMM = "MM_DIRECT";		break;	case MM_INDIRECT:		pMM = "MM_INDIRECT";		break;	case MM_HOMINGDIRECT:		pMM = "MM_HOMINGDIRECT";		break;	case MM_HOMINGINDIRECT:		pMM = "MM_HOMINGINDIRECT";		break;	default:		pMM = "UNKNOWN MOVE MODEL";		break;	}	CONPRINTF(ConsoleString, (ConsoleString, "Weapon: "));	printComponentInfo((COMPONENT_STATS *)psStats);	CONPRINTF(ConsoleString, (ConsoleString, "   lRng %d mRng %d %s/n"	                          "   lHt %d pause %d dam %d/n",	                          proj_GetLongRange(psStats, selectedPlayer), psStats->upgrade[selectedPlayer].minRange,//.........这里部分代码省略.........
开发者ID:ik3210,项目名称:warzone2100,代码行数:101,


示例25: printWeaponInfo

//.........这里部分代码省略.........	case WSC_MORTARS:		pWSC = "WSC_MORTARS";		break;	case WSC_MISSILE:		pWSC = "WSC_MISSILE";		break;	case WSC_ROCKET:		pWSC = "WSC_ROCKET";		break;	case WSC_ENERGY:		pWSC = "WSC_ENERGY";		break;	case WSC_GAUSS:		pWSC = "WSC_GAUSS";		break;	case WSC_FLAME:		pWSC = "WSC_FLAME";		break;	/*case WSC_CLOSECOMBAT:		pWSC = "WSC_CLOSECOMBAT";		break;*/	case WSC_HOWITZERS:		pWSC = "WSC_HOWITZERS";		break;	case WSC_ELECTRONIC:		pWSC = "WSC_ELECTRONIC";		break;	case WSC_AAGUN:		pWSC = "WSC_AAGUN";		break;	case WSC_SLOWMISSILE:		pWSC = "WSC_SLOWMISSILE";		break;	case WSC_SLOWROCKET:		pWSC = "WSC_SLOWROCKET";		break;	case WSC_LAS_SAT:		pWSC = "WSC_LAS_SAT";		break;	case WSC_BOMB:		pWSC = "WSC_BOMB";		break;	case WSC_COMMAND:		pWSC = "WSC_COMMAND";		break;	case WSC_EMP:		pWSC = "WSC_EMP";		break;	default:		pWSC = "UNKNOWN SUB CLASS";		break;	}	switch (psStats->movementModel)	{	case MM_DIRECT:		pMM = "MM_DIRECT";		break;	case MM_INDIRECT:		pMM = "MM_INDIRECT";		break;	case MM_HOMINGDIRECT:		pMM = "MM_HOMINGDIRECT";		break;	case MM_HOMINGINDIRECT:		pMM = "MM_HOMINGINDIRECT";		break;	case MM_ERRATICDIRECT:		pMM = "MM_ERRATICDIRECT";		break;	case MM_SWEEP:		pMM = "MM_SWEEP";		break;	default:		pMM = "UNKNOWN MOVE MODEL";		break;	}	CONPRINTF(ConsoleString,(ConsoleString,"Weapon: "));	printComponentInfo((COMPONENT_STATS *)psStats);	CONPRINTF(ConsoleString,(ConsoleString,"   sRng %d lRng %d mRng %d %s/n"			  "   sHt %d lHt %d pause %d dam %d/n",				psStats->shortRange, proj_GetLongRange(psStats), psStats->minRange,				proj_Direct(psStats) ? "direct" : "indirect",				//psStats->shortHit, psStats->longHit, psStats->firePause, psStats->damage));				weaponShortHit(psStats,(UBYTE)selectedPlayer), weaponLongHit(psStats,				(UBYTE)selectedPlayer), weaponFirePause(psStats,(UBYTE)selectedPlayer),				weaponDamage(psStats, (UBYTE)selectedPlayer)));	CONPRINTF(ConsoleString,(ConsoleString,"   rad %d radHt %d radDam %d/n"			  "   inTime %d inDam %d inRad %d/n",				psStats->radius, psStats->radiusHit, psStats->radiusDamage,				psStats->incenTime, psStats->incenDamage, psStats->incenRadius));	CONPRINTF(ConsoleString,(ConsoleString,"   flSpd %d %s/n",				psStats->flightSpeed, psStats->fireOnMove ? "fireOnMove" : "not fireOnMove"));	CONPRINTF(ConsoleString,(ConsoleString,"   %s %s %s/n", pWC, pWSC, pMM));	CONPRINTF(ConsoleString,(ConsoleString,"   %srotate recoil %d/n"			  "   dLife %d radLife %d/n",			  psStats->rotate ? "" : "not ",			  psStats->recoilValue, psStats->directLife, psStats->radiusLife));}
开发者ID:BG1,项目名称:warzone2100,代码行数:101,


示例26: printDroidInfo

/** print out information about a droid and it's components *  /param psDroid the droid to print the info for */void printDroidInfo(const DROID* psDroid){	unsigned int i;	BODY_STATS			*psBdyStats;	PROPULSION_STATS	*psPropStats;	ECM_STATS			*psECMStats;	SENSOR_STATS		*psSensStats;	CONSTRUCT_STATS		*psConstStats;	REPAIR_STATS		*psRepairStats;	printBaseObjInfo((BASE_OBJECT *)psDroid);	CONPRINTF(ConsoleString,(ConsoleString,"   wt %d bSpeed %d sRng %d ECM %d bdy %d/n",		psDroid->weight, psDroid->baseSpeed, droidSensorRange(psDroid), droidConcealment(psDroid), psDroid->body));	if (psDroid->asWeaps[0].nStat > 0)	{		printWeaponInfo(asWeaponStats + psDroid->asWeaps[0].nStat);	}	for (i = 0; i < COMP_NUMCOMPONENTS; ++i)	{		switch (i)		{		case COMP_UNKNOWN:			break;		case COMP_BODY:			if (psDroid->asBits[i].nStat > 0)			{				CONPRINTF(ConsoleString,(ConsoleString,"Body: "));				psBdyStats = asBodyStats + psDroid->asBits[i].nStat;				printComponentInfo((COMPONENT_STATS *)psBdyStats);			}			else			{				CONPRINTF(ConsoleString,(ConsoleString,"ZNULL BODY/n"));			}			break;		case COMP_BRAIN:			break;		case COMP_PROPULSION:			if (psDroid->asBits[i].nStat > 0)			{				CONPRINTF(ConsoleString,(ConsoleString,"Prop: "));				psPropStats = asPropulsionStats + psDroid->asBits[i].nStat;				printComponentInfo((COMPONENT_STATS *)psPropStats);			}			else			{				CONPRINTF(ConsoleString,(ConsoleString,"ZNULL PROPULSION/n"));			}			break;		case COMP_ECM:			if (psDroid->asBits[i].nStat > 0)			{				CONPRINTF(ConsoleString,(ConsoleString,"ECM: "));				psECMStats = asECMStats + psDroid->asBits[i].nStat;				printComponentInfo((COMPONENT_STATS *)psECMStats);				CONPRINTF(ConsoleString,(ConsoleString,"   range %d loc %d imd %p/n",					//psECMStats->power, psECMStats->location, psECMStats->pMountGraphic));					ecmRange(psECMStats, psDroid->player), psECMStats->location,					psECMStats->pMountGraphic));			}			else			{				CONPRINTF(ConsoleString,(ConsoleString,"ZNULL ECM/n"));			}			break;		case COMP_SENSOR:			if (psDroid->asBits[i].nStat > 0)			{				CONPRINTF(ConsoleString,(ConsoleString,"Sensor: "));				psSensStats = asSensorStats + psDroid->asBits[i].nStat;				printComponentInfo((COMPONENT_STATS *)psSensStats);				CONPRINTF(ConsoleString,(ConsoleString,"   rng %d loc %d imd %p/n",					sensorRange(psSensStats,psDroid->player),					psSensStats->location, psSensStats->pMountGraphic));			}			else			{				CONPRINTF(ConsoleString,(ConsoleString,"ZNULL SENSOR/n"));			}			break;		case COMP_CONSTRUCT:			if (psDroid->asBits[i].nStat > 0)			{				CONPRINTF(ConsoleString,(ConsoleString,"Construct: "));				psConstStats = asConstructStats + psDroid->asBits[i].nStat;				printComponentInfo((COMPONENT_STATS *)psConstStats);				CONPRINTF(ConsoleString,(ConsoleString,"   cPnts %d imd %p/n",					//psConstStats->constructPoints, psConstStats->pMountGraphic));					constructorPoints(psConstStats, psDroid->player),					psConstStats->pMountGraphic));			}			break;		case COMP_REPAIRUNIT:			if (psDroid->asBits[i].nStat > 0)//.........这里部分代码省略.........
开发者ID:BG1,项目名称:warzone2100,代码行数:101,


示例27: recvDroid

// ////////////////////////////////////////////////////////////////////////////// receive droid creation information from other playersBOOL recvDroid(NETQUEUE queue){	DROID_TEMPLATE* pT;	DROID* psDroid;	uint8_t player;	uint32_t id;	Position pos;	uint32_t templateID;	BOOL haveInitialOrders;	INITIAL_DROID_ORDERS initialOrders;	NETbeginDecode(queue, GAME_DROID);	{		NETuint8_t(&player);		NETuint32_t(&id);		NETPosition(&pos);		NETuint32_t(&templateID);		NETbool(&haveInitialOrders);		if (haveInitialOrders)		{			NETuint32_t(&initialOrders.secondaryOrder);			NETint32_t(&initialOrders.moveToX);			NETint32_t(&initialOrders.moveToY);			NETuint32_t(&initialOrders.factoryId);  // For making scripts happy.		}		pT = IdToTemplate(templateID, player);	}	NETend();	ASSERT( player < MAX_PLAYERS, "invalid player %u", player);	debug(LOG_LIFE, "<=== getting Droid from %u id of %u ",player,id);	if ((pos.x == 0 && pos.y == 0) || pos.x > world_coord(mapWidth) || pos.y > world_coord(mapHeight))	{		debug(LOG_ERROR, "Received bad droid position (%d, %d) from %d about p%d (%s)", (int)pos.x, (int)pos.y,				queue.index, player, isHumanPlayer(player) ? "Human" : "AI");		return false;	}	// If we can not find the template ask for the entire droid instead	if (!pT)	{		debug(LOG_ERROR, "Packet from %d refers to non-existent template %u, [%s : p%d]",				queue.index, templateID, isHumanPlayer(player) ? "Human" : "AI", player);		return false;	}	// Create that droid on this machine.	psDroid = reallyBuildDroid(pT, pos.x, pos.y, player, false);	// If we were able to build the droid set it up	if (psDroid)	{		psDroid->id = id;		addDroid(psDroid, apsDroidLists);		if (haveInitialOrders)		{			psDroid->secondaryOrder = initialOrders.secondaryOrder;			orderDroidLoc(psDroid, DORDER_MOVE, initialOrders.moveToX, initialOrders.moveToY, ModeImmediate);			cbNewDroid(IdToStruct(initialOrders.factoryId, ANYPLAYER), psDroid);		}	}	else	{		debug(LOG_ERROR, "Packet from %d cannot create droid for p%d (%s)!", queue.index,			player, isHumanPlayer(player) ? "Human" : "AI");#ifdef DEBUG		CONPRINTF(ConsoleString, (ConsoleString, "MULTIPLAYER: Couldn't build a remote droid, relying on checking to resync"));#endif		return false;	}	return true;}
开发者ID:blezek,项目名称:warzone2100,代码行数:78,


示例28: GetOrdiText

void GetOrdiText ( const char *textname, char *messagename, Font *pRadioFont, int sizeX ){	// ouverture du fichier texte	char filename [128];	sprintf ( filename, TEXT_FILE_PATH );//	char messagename [62];	sprintf ( messagename, textname );	FILE *myfile = fopen ( filename, "r" );	if ( myfile == NULL )	{		CONPRINTF ("///nORDITXT : impossible d'ouvrir %s/n///n", filename );		return;	}	char	cscan [128];	char	messagetext [ORDI_STRING_LEN];	int		startoffset = 0;	int		stopoffset = 0;	while ( 1 )	{		// titre		SCANNE_CHAR;				if ( strcmp ( cscan, messagename ) != 0 ) continue;		// point d'entrée		SCANNE_CHAR;		if ( strcmp ( cscan, "{" ) != 0 ) continue;		// offsets de départ et d'arrivée		int startoffset = (int)ftell ( myfile ) + 2;				while ( 1 )		{				SCANNE_CHAR;			if ( strcmp ( cscan, "}" ) != 0 ) continue;			break;		}		int stopoffset = (int)ftell ( myfile );		// récupération du texte		fseek ( myfile, startoffset, SEEK_SET );		for ( int i=0; i<(int)(stopoffset-startoffset); i++ )		{			char copie = getc ( myfile );			if ( copie == '}' )			{				messagetext [i-1] = '/0';				break;			}			messagetext [i] = copie;		}		messagetext [i] = '/0';	}	// fermeture du fichier texte	fclose ( myfile );	// mise en forme				int curseurX = 0;	int curseurY = 0;	int rien;	char source [ORDI_STRING_LEN];	char dest	[ORDI_STRING_LEN];	sprintf ( source, messagetext );	sprintf ( dest, "" );	int i;	for ( i=0; i<(int)strlen(source); i++ )	{		if ( source[i] != '/n' )			break;	}//.........这里部分代码省略.........
开发者ID:jlecorre,项目名称:hlinvasion,代码行数:101,


示例29: selDroidSelection

/*   Selects the units of a given player according to given criteria.   It is also possible to request whether the units be onscreen or not.   */unsigned int selDroidSelection(unsigned int player, SELECTION_CLASS droidClass, SELECTIONTYPE droidType, bool bOnScreen){	/* So far, we haven't selected any */	unsigned int retVal = 0;	/* Establish the class of selection */	switch (droidClass)	{	case DS_ALL_UNITS:		retVal = selSelectUnitsIf(player, selTrue, bOnScreen);		break;	case DS_BY_TYPE:		switch (droidType)		{		case DST_VTOL:			retVal = selSelectUnitsIf(player, selProp, PROPULSION_TYPE_LIFT, bOnScreen);			break;		case DST_VTOL_ARMED:			retVal = selSelectUnitsIf(player, selPropArmed, PROPULSION_TYPE_LIFT, bOnScreen);			break;		case DST_HOVER:			retVal = selSelectUnitsIf(player, selProp, PROPULSION_TYPE_HOVER, bOnScreen);			break;		case DST_WHEELED:			retVal = selSelectUnitsIf(player, selProp, PROPULSION_TYPE_WHEELED, bOnScreen);			break;		case DST_TRACKED:			retVal = selSelectUnitsIf(player, selProp, PROPULSION_TYPE_TRACKED, bOnScreen);			break;		case DST_HALF_TRACKED:			retVal = selSelectUnitsIf(player, selProp, PROPULSION_TYPE_HALF_TRACKED, bOnScreen);			break;		case DST_CYBORG:			retVal = selSelectUnitsIf(player, selProp, PROPULSION_TYPE_LEGGED, bOnScreen);			break;		case DST_ENGINEER:			retVal = selSelectUnitsIf(player, selType, DROID_CYBORG_CONSTRUCT, bOnScreen);			break;		case DST_MECHANIC:			retVal = selSelectUnitsIf(player, selType, DROID_CYBORG_REPAIR, bOnScreen);			break;		case DST_TRANSPORTER:			retVal = selSelectUnitsIf(player, selTransporter, bOnScreen);			break;		case DST_REPAIR_TANK:			retVal = selSelectUnitsIf(player, selType, DROID_REPAIR, bOnScreen);			break;		case DST_SENSOR:			retVal = selSelectUnitsIf(player, selType, DROID_SENSOR, bOnScreen);			break;		case DST_TRUCK:			retVal = selSelectUnitsIf(player, selType, DROID_CONSTRUCT, bOnScreen);			break;		case DST_ALL_COMBAT:			retVal = selSelectUnitsIf(player, selCombat, bOnScreen);			break;		case DST_ALL_COMBAT_LAND:			retVal = selSelectUnitsIf(player, selCombatLand, bOnScreen);			break;		case DST_ALL_COMBAT_CYBORG:			retVal = selSelectUnitsIf(player, selCombatCyborg, bOnScreen);			break;		case DST_ALL_DAMAGED:			retVal = selSelectUnitsIf(player, selDamaged, bOnScreen);			break;		case DST_ALL_SAME:			retVal = selSelectAllSame(player, bOnScreen);			break;		default:			ASSERT(false, "Invalid selection type");		}		break;	default:		ASSERT(false, "Invalid selection attempt");		break;	}	CONPRINTF(ConsoleString, (ConsoleString, ngettext("%u unit selected", "%u units selected", retVal), retVal));	return retVal;}
开发者ID:CalculusWZ,项目名称:warzone2100,代码行数:85,


示例30: processWarCam

/* Updates the camera position/angle along with the object movement */BOOL	processWarCam( void ){    BASE_OBJECT	*foundTarget;    BOOL Status = true;    /* Get out if the camera isn't active */    if(trackingCamera.status == CAM_INACTIVE)    {        return(true);    }    /* Ensure that the camera only ever flips state within this routine! */    switch(trackingCamera.status)    {    case CAM_REQUEST:        /* See if we can find the target to follow */        foundTarget = camFindTarget();        if(foundTarget && !foundTarget->died)        {            /* We've got one, so store away info */            camAllignWithTarget(foundTarget);            /* We're now into tracking status */            trackingCamera.status = CAM_TRACKING;            /* Inform via console */            if(foundTarget->type == OBJ_DROID)            {                if(getWarCamStatus())                {                    CONPRINTF(ConsoleString,(ConsoleString,"WZ/CAM  - %s",droidGetName((DROID*)foundTarget)));                }            }            else            {//					CONPRINTF(ConsoleString,(ConsoleString,"DROID-CAM V0.1 Enabled - Now tracking new location"));            }        }        else        {            /* We've requested a track with no droid selected *///				addConsoleMessage("Droid-CAM V0.1 ERROR - No targets(s) selected",DEFAULT_JUSTIFY,SYSTEM_MESSAGE);            trackingCamera.status = CAM_INACTIVE;        }        break;    case CAM_TRACKING:        /* Track the droid unless routine comes back false */        if(!camTrackCamera())        {            /*            	Camera track came back false, either because droid died or is            	no longer selected, so reset to old values            */            foundTarget = camFindTarget();            if(foundTarget && !foundTarget->died)            {                trackingCamera.status = CAM_REQUEST;            }            else            {                trackingCamera.status = CAM_RESET;            }        }        processLeaderSelection();        break;    case CAM_RESET:        /* Reset camera to pre-droid tracking status */        if( (trackingCamera.target==NULL)                ||(trackingCamera.target->type!=OBJ_TARGET))        {            camSwitchOff();        }        /* Switch to inactive mode */        trackingCamera.status = CAM_INACTIVE;//			addConsoleMessage("Droid-CAM V0.1 Disabled",DEFAULT_JUSTIFY,SYSTEM_MESSAGE);        Status = false;        break;    default:        debug( LOG_FATAL, "Weirdy status for tracking Camera" );        abort();        break;    }    return Status;}
开发者ID:blezek,项目名称:warzone2100,代码行数:89,



注:本文中的CONPRINTF函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ CONSOLE_Print函数代码示例
C++ CONFIG_STRING函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。