Exemplo n.º 1
0
void Exec_MSG_QuitTrade(int conn, char *pMsg)
{
	if(pMob[conn].MOB.CurrentScore.Hp <= 0 || pUser[conn].Mode != USER_PLAY)
	{
		SendHpMode(conn);
		AddCrackError(conn, 10, 17);
		return; 
	}
						   
	RemoveTrade(pUser[conn].Trade.OpponentID);
	RemoveTrade(conn);

	MSG_STANDARDPARM sm;
	memset(&sm, 0, sizeof(MSG_STANDARDPARM));

	sm.Size = sizeof(MSG_STANDARDPARM);
	sm.Type = _MSG_PKInfo;
	sm.ID = conn;

	if (NewbieEventServer == 0)
	{
		int guilty = GetGuilty(conn);

		int state = 0;

		if (guilty || pUser[conn].PKMode || RvRState && pMob[conn].TargetX >= 1023 && pMob[conn].TargetY >= 1919 && pMob[conn].TargetX <= 1280 && pMob[conn].TargetY <= 2179 || CastleState && pMob[conn].TargetX >= 1024 && pMob[conn].TargetY >= 1664 && pMob[conn].TargetX <= 1153 && pMob[conn].TargetY <= 1793 || GTorreState && pMob[conn].TargetX >= 2430 && pMob[conn].TargetY >= 1825 && pMob[conn].TargetX <= 2560 && pMob[conn].TargetY <= 1925)
			state = 1;

		sm.Parm = state;
	}
	else
		sm.Parm = 1;

	GridMulticast(pMob[conn].TargetX, pMob[conn].TargetY, (MSG_STANDARD*)&sm, 0);
}
Exemplo n.º 2
0
void SendPKInfo(int conn, int target)
{
	if (conn <= 0 || conn >= MAX_USER)
		return;

	if (target <= 0 || target >= MAX_USER)
		return;

	MSG_STANDARDPARM sm;
	memset(&sm, 0, sizeof(MSG_STANDARDPARM));

	sm.Size = sizeof(MSG_STANDARDPARM);
	sm.Type = _MSG_PKInfo;
	sm.ID = target;

	if (NewbieEventServer == 0)
	{
		int guilty = GetGuilty(target);

		int state = 0;

		if (guilty || pUser[target].PKMode || RvRState || CastleState || GTorreState)
			state = 1;

		sm.Parm = state;
	}
	else
		sm.Parm = 1;

	pUser[conn].cSock.AddMessage((char*)&sm, sizeof(MSG_STANDARDPARM));
}
Exemplo n.º 3
0
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;
}