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); }
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)); }
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; }