コード例 #1
0
ファイル: SendFunc.cpp プロジェクト: AndersonGIT/W2PP
void SendScore(int conn)
{
	MSG_UpdateScore sm_vus;
	memset(&sm_vus, 0, sizeof(MSG_UpdateScore));

	sm_vus.Type = _MSG_UpdateScore;

	if (conn < MAX_USER)
	{
		sm_vus.CurrHp = pMob[conn].MOB.CurrentScore.Hp;
		sm_vus.CurrMp = pMob[conn].MOB.CurrentScore.Mp;
	}

	sm_vus.Size = sizeof(MSG_UpdateScore);
	sm_vus.ID = conn;

	memcpy(&sm_vus.Score, &pMob[conn].MOB.CurrentScore, sizeof(STRUCT_SCORE));

	sm_vus.Critical = pMob[conn].MOB.Critical;
	sm_vus.SaveMana = pMob[conn].MOB.SaveMana;
	sm_vus.Guild = pMob[conn].MOB.Guild;
	sm_vus.GuildLevel = pMob[conn].MOB.GuildLevel;

	GetAffect(sm_vus.Affect, pMob[conn].Affect);

	sm_vus.Resist[0] = pMob[conn].MOB.Resist[0];
	sm_vus.Resist[1] = pMob[conn].MOB.Resist[1];
	sm_vus.Resist[2] = pMob[conn].MOB.Resist[2];
	sm_vus.Resist[3] = pMob[conn].MOB.Resist[3];

	sm_vus.Special[0] = 0xCC;
	sm_vus.Special[1] = 0xCC;
	sm_vus.Special[2] = 0xCC;
	sm_vus.Special[3] = 0xCC;

	sm_vus.Magic = pMob[conn].MOB.Magic;

	if (pMob[conn].GuildDisable)
		sm_vus.Guild = 0;

	if (BrState != 0)
	{
		if (conn < MAX_USER)
		{
			int posX = pMob[conn].TargetX;
			int posY = pMob[conn].TargetY;

			if (posX >= 2604 && posY >= 1708 && posX <= 2648 && posY <= 1744)
			{
				sm_vus.Guild = 0;
				sm_vus.GuildLevel = 0;
			}
		}
	}
	GridMulticast(pMob[conn].TargetX, pMob[conn].TargetY, (MSG_STANDARD*)&sm_vus, 0);

	SendAffect(conn);
}
コード例 #2
0
ファイル: GetFunc.cpp プロジェクト: CAIOVA7X/W2PP
int GetCreateMob(int mob, MSG_CreateMob *sm)
{
	memset(sm, 0, sizeof(MSG_CreateMob));

	sm->Type = _MSG_CreateMob;

	strncpy(sm->MobName, pMob[mob].MOB.MobName, NAME_LENGTH);

	if (mob < MAX_USER)
	{
		int ck = GetCurKill(mob);
		int tk = GetTotKill(mob);

		unsigned char cv = ck;
		unsigned char cv1 = tk % 256;
		unsigned char cv2 = tk / 256;

		sm->MobName[13] = cv;
		sm->MobName[14] = cv1;
		sm->MobName[15] = cv2;

		int chaos = GetPKPoint(mob);
		int gv = GetGuilty(mob);

		if (gv > 0)
			chaos = 0;

		cv = chaos;
		sm->MobName[12] = chaos;
	}

	sm->PosX = pMob[mob].TargetX;
	sm->PosY = pMob[mob].TargetY;
	sm->Size = sizeof(MSG_CreateMob);
	sm->ID = ESCENE_FIELD;
	sm->MobID = mob;
	sm->ClientTick = CurrentTime;

	sm->Score = pMob[mob].MOB.CurrentScore;

	sm->Guild = pMob[mob].MOB.Guild;
	sm->GuildMemberType = pMob[mob].MOB.GuildLevel;

	if (pMob[mob].GuildDisable == 1)
	{
		sm->Guild = 0;
		sm->GuildMemberType = 0;
	}
	if (mob >= MAX_USER)
	{
		if (pMob[mob].MOB.Clan == 4)
			sm->Score.Ac = 0;

		else
			sm->Score.Ac = 1;
	}

	sm->CreateType = 0;

	if (pMob[mob].MOB.GuildLevel == 9)
		sm->CreateType = sm->CreateType | 0x80;

	else if (pMob[mob].MOB.GuildLevel >= 6)
		sm->CreateType = sm->CreateType | 0x40;


	sm->Hold = pMob[mob].extra.Hold;

	strncpy(sm->Tab, pMob[mob].Tab, 26);

	int selfdead = 0;

	int xx = pMob[mob].TargetX;
	int yy = pMob[mob].TargetY;

	for (int i = 0; i < MAX_EQUIP; i++)
	{
		STRUCT_ITEM *item = &pMob[mob].MOB.Equip[i];

		sm->Equip[i] = BASE_VisualItemCode(item, i);

		sm->AnctCode[i] = BASE_VisualAnctCode(item);
		
		if (i == 14 && sm->Equip[i] >= 2360 && sm->Equip[i] < 2390 && pMob[mob].MOB.Equip[i].stEffect[0].sValue <= 0)
		{
			sm->Equip[i] = 0;

			selfdead = 1;

			continue;
		}

		if (i == 14 && sm->Equip[i] >= 2360 && sm->Equip[i] < 2390)
		{
			int sanc = pMob[mob].MOB.Equip[i].stEffect[1].cEffect;
			sanc = sanc / 10;

			if (sanc > 13)
				sanc = 13;

			if (sanc < 0)
				sanc = 0;

			sanc = sanc << 12;

			sm->Equip[i] = sm->Equip[i] + sanc;

			continue;
		}
	}

	GetAffect(sm->Affect, pMob[mob].Affect);

	if (BrState != 0 && xx >= 2604 && yy >= 1708 && xx <= 2648 && yy <= 1744)
	{
		memset(sm->MobName, 0, NAME_LENGTH); // MOBNAME_LEGNTH = 16
		strncpy(sm->MobName, "??????", 6);

		sm->Equip[15] = 0;
		sm->Guild = 0;
	}

	return selfdead;
}
コード例 #3
0
ファイル: GetFunc.cpp プロジェクト: CAIOVA7X/W2PP
int GetCreateMobTrade(int mob, MSG_CreateMobTrade *sm)
{
	sm->Type = _MSG_CreateMobTrade;
	
	strncpy(sm->MobName, pMob[mob].MOB.MobName, NAME_LENGTH);
	
	if(mob >= MAX_USER)
	{
		Log("err,getcreatemob request by non player %d", pMob[mob].MOB.MobName, 0);
		return 0;
	}

	if	(mob < MAX_USER)
	{	
		int ck = GetCurKill(mob);
		int tk = GetTotKill(mob);

		unsigned char cv = ck;
		unsigned char cv1 = tk%256;
		unsigned char cv2 = tk/256;

		sm->MobName[13] = cv;
		sm->MobName[14] = cv1;
		sm->MobName[15] = cv2;

		int chaos = GetPKPoint(mob);
		
		cv = chaos;
		sm->MobName[12] = cv;
	}

	sm->PosX = pMob[mob].TargetX;
	sm->PosY = pMob[mob].TargetY;
	sm->Size = sizeof(MSG_CreateMobTrade);
	sm->ID   = ESCENE_FIELD;
	sm->MobID = mob;
	sm->ClientTick = CurrentTime;

	memcpy(&sm->Score, &pMob[mob].MOB.CurrentScore, sizeof(STRUCT_SCORE));

	sm->Guild = pMob[mob].MOB.Guild;

	if	(pMob[mob].GuildDisable == 1)
		sm->Guild = 0;

	if	(mob >= MAX_USER)
		sm->Score.Ac = pMob[mob].MOB.Clan != 4;

	sm->CreateType = 0;

	if (pMob[mob].MOB.GuildLevel == 9)
		sm->CreateType = sm->CreateType | 0x80;

	if (pMob[mob].MOB.GuildLevel != 0)
		sm->CreateType = sm->CreateType | 0x40;

	int selfdead=0;

	for (int i = 0; i < MAX_EQUIP; i++)
	{
		STRUCT_ITEM *item = &pMob[mob].MOB.Equip[i];

		sm->Equip[i] = BASE_VisualItemCode(item, i);

		sm->AnctCode[i] = BASE_VisualAnctCode(item);

		if (i == 14 && sm->Equip[i] >= 2360 && sm->Equip[i] < 2390 && pMob[mob].MOB.Equip[i].stEffect[0].sValue <= 0)
		{
			sm->Equip[i] = 0;

			selfdead = 1;

			continue;
		}

		if (i == 14 && sm->Equip[i] >= 2360 && sm->Equip[i] < 2390)
		{
			int sanc = pMob[mob].MOB.Equip[i].stEffect[1].cEffect;
			sanc = sanc / 10;

			if (sanc > 13)
				sanc = 13;

			if (sanc < 0)
				sanc = 0;

			sanc = sanc << 12;

			sm->Equip[i] = sm->Equip[i] + sanc;

			continue;
		}
	}

	strncpy(sm->Tab, pMob[mob].Tab, 26);
	strncpy(sm->Desc, pUser[mob].AutoTrade.Title, MAX_AUTOTRADETITLE-1);

	GetAffect(sm->Affect,pMob[mob].Affect);

	return selfdead;
}
コード例 #4
0
ファイル: Interpreter.cpp プロジェクト: Aura15/OpenJK
int CInterpreter::GetID( char *id_name )
{
	int		id;

	id = FindSymbol( id_name, m_IDKeywords );

	if ( id == -1 )
		return Error("'%s' : unknown identifier", id_name);

	//FIXME: Function pointers would be awfully nice.. but not inside a class!  Weee!!

	switch (id)
	{
	
	//Affect takes control of an entity

	case ID_AFFECT:
		return GetAffect();
		break;

	//Wait for a specified amount of time

	case ID_WAIT:
		return GetWait();
		break;

	//Generic set call

	case ID_SET:
		return GetSet();
		break;

	case ID_LOOP:
		return GetLoop();
		break;

	case ID_PRINT:
		return GetPrint();
		break;

	case ID_USE:
		return GetUse();
		break;

	case ID_FLUSH:
		return GetFlush();
		break;
		
	case ID_RUN:
		return GetRun();
		break;

	case ID_KILL:
		return GetKill();
		break;

	case ID_REMOVE:
		return GetRemove();
		break;

	case ID_CAMERA:
		return GetCamera();
		break;

	case ID_SOUND:
		return GetSound();
		break;

	case ID_MOVE:
		return GetMove();
		break;

	case ID_ROTATE:
		return GetRotate();
		break;

	case ID_IF:
		return GetIf();
		break;

	case ID_ELSE:
		//return Error("syntax error : else without matching if");
		return GetElse();	//FIXME: Protect this call so that floating else's aren't allowed
		break;

	case ID_GET:
		return Error("syntax error : illegal use of \"get\"");
		break;

	case ID_TAG:
		return Error("syntax error : illegal use of \"tag\"");
		break;

	case ID_TASK:
		return GetTask();
		break;

	case ID_DO:
		return GetDo();
		break;

	case ID_DECLARE:
		return GetDeclare();
		break;

	case ID_FREE:
		return GetFree();
		break;

	case ID_REM:
		GetRem();
		break;

	case ID_DOWAIT:
		GetDoWait();
		break;

	case ID_SIGNAL:
		GetSignal();
		break;

	case ID_WAITSIGNAL:
		GetWaitSignal();
		break;

	case ID_PLAY:
		GetPlay();	//Bad eighties slang joke...  yeah, it's not really funny, I know...
		break;

		//Local variable types
	case TK_FLOAT:
	case TK_INT:
	case TK_STRING:
	case TK_VECTOR:
		GetVariable( id );
		break;

	//Unknown ID

	default:
	case -1:
		return Error("'%s' : unknown identifier", id_name);
		break;
	}

	return true;
}