Commit 4a26b245 authored by mercury233's avatar mercury233

update

parents 6db28c13 7123d072
...@@ -19,7 +19,6 @@ ClientCard::ClientCard() { ...@@ -19,7 +19,6 @@ ClientCard::ClientCard() {
is_highlighting = false; is_highlighting = false;
is_disabled = false; is_disabled = false;
is_reversed = false; is_reversed = false;
is_conti = false;
cmdFlag = 0; cmdFlag = 0;
code = 0; code = 0;
chain_code = 0; chain_code = 0;
......
...@@ -64,7 +64,6 @@ public: ...@@ -64,7 +64,6 @@ public:
bool is_showtarget; bool is_showtarget;
bool is_highlighting; bool is_highlighting;
bool is_reversed; bool is_reversed;
bool is_conti;
u32 code; u32 code;
u32 chain_code; u32 chain_code;
u32 alias; u32 alias;
......
...@@ -23,6 +23,7 @@ ClientField::ClientField() { ...@@ -23,6 +23,7 @@ ClientField::ClientField() {
pzone_act[1] = false; pzone_act[1] = false;
conti_act = false; conti_act = false;
deck_reversed = false; deck_reversed = false;
conti_selecting = false;
for(int p = 0; p < 2; ++p) { for(int p = 0; p < 2; ++p) {
for(int i = 0; i < 5; ++i) for(int i = 0; i < 5; ++i)
mzone[p].push_back(0); mzone[p].push_back(0);
...@@ -90,6 +91,7 @@ void ClientField::Initial(int player, int deckc, int extrac) { ...@@ -90,6 +91,7 @@ void ClientField::Initial(int player, int deckc, int extrac) {
pcard->controler = player; pcard->controler = player;
pcard->location = 0x1; pcard->location = 0x1;
pcard->sequence = i; pcard->sequence = i;
pcard->position = POS_FACEDOWN_DEFENSE;
GetCardLocation(pcard, &pcard->curPos, &pcard->curRot); GetCardLocation(pcard, &pcard->curPos, &pcard->curRot);
pcard->mTransform.setTranslation(pcard->curPos); pcard->mTransform.setTranslation(pcard->curPos);
pcard->mTransform.setRotationRadians(pcard->curRot); pcard->mTransform.setRotationRadians(pcard->curRot);
...@@ -354,7 +356,6 @@ void ClientField::ClearChainSelect() { ...@@ -354,7 +356,6 @@ void ClientField::ClearChainSelect() {
(*cit)->chain_code = 0; (*cit)->chain_code = 0;
(*cit)->is_selectable = false; (*cit)->is_selectable = false;
(*cit)->is_selected = false; (*cit)->is_selected = false;
(*cit)->is_conti = false;
} }
conti_cards.clear(); conti_cards.clear();
grave_act = false; grave_act = false;
...@@ -375,9 +376,10 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) { ...@@ -375,9 +376,10 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
} }
for(size_t i = 0; i < ct; ++i) { for(size_t i = 0; i < ct; ++i) {
mainGame->stCardPos[i]->enableOverrideColor(false); mainGame->stCardPos[i]->enableOverrideColor(false);
// image
if(selectable_cards[i]->code) if(selectable_cards[i]->code)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->code)); mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->code));
else if(chain) else if(conti_selecting)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->chain_code)); mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->chain_code));
else else
mainGame->btnCardSelect[i]->setImage(imageManager.tCover[0]); mainGame->btnCardSelect[i]->setImage(imageManager.tCover[0]);
...@@ -385,8 +387,9 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) { ...@@ -385,8 +387,9 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
mainGame->btnCardSelect[i]->setPressed(false); mainGame->btnCardSelect[i]->setPressed(false);
mainGame->btnCardSelect[i]->setVisible(true); mainGame->btnCardSelect[i]->setVisible(true);
if(mainGame->dInfo.curMsg != MSG_SORT_CHAIN && mainGame->dInfo.curMsg != MSG_SORT_CARD) { if(mainGame->dInfo.curMsg != MSG_SORT_CHAIN && mainGame->dInfo.curMsg != MSG_SORT_CARD) {
// text
wchar_t formatBuffer[2048]; wchar_t formatBuffer[2048];
if(chain && selectable_cards[i]->is_conti && !selectable_cards[i]->code) if(conti_selecting)
myswprintf(formatBuffer, L"%ls", DataManager::unknown_string); myswprintf(formatBuffer, L"%ls", DataManager::unknown_string);
else if(selectable_cards[i]->location == LOCATION_OVERLAY) else if(selectable_cards[i]->location == LOCATION_OVERLAY)
myswprintf(formatBuffer, L"%ls[%d](%d)", myswprintf(formatBuffer, L"%ls[%d](%d)",
...@@ -396,13 +399,16 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) { ...@@ -396,13 +399,16 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
myswprintf(formatBuffer, L"%ls[%d]", dataManager.FormatLocation(selectable_cards[i]->location, selectable_cards[i]->sequence), myswprintf(formatBuffer, L"%ls[%d]", dataManager.FormatLocation(selectable_cards[i]->location, selectable_cards[i]->sequence),
selectable_cards[i]->sequence + 1); selectable_cards[i]->sequence + 1);
mainGame->stCardPos[i]->setText(formatBuffer); mainGame->stCardPos[i]->setText(formatBuffer);
if(selectable_cards[i]->location == LOCATION_OVERLAY) { // color
if(conti_selecting)
mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
else if(selectable_cards[i]->location == LOCATION_OVERLAY) {
if(selectable_cards[i]->owner != selectable_cards[i]->overlayTarget->controler) if(selectable_cards[i]->owner != selectable_cards[i]->overlayTarget->controler)
mainGame->stCardPos[i]->setOverrideColor(0xff0000ff); mainGame->stCardPos[i]->setOverrideColor(0xff0000ff);
if(selectable_cards[i]->overlayTarget->controler) if(selectable_cards[i]->overlayTarget->controler)
mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0); mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0);
else mainGame->stCardPos[i]->setBackgroundColor(0xffffffff); else mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
} else if(selectable_cards[i]->location == LOCATION_EXTRA || selectable_cards[i]->location == LOCATION_REMOVED) { } else if(selectable_cards[i]->location == LOCATION_DECK || selectable_cards[i]->location == LOCATION_EXTRA || selectable_cards[i]->location == LOCATION_REMOVED) {
if(selectable_cards[i]->position & POS_FACEDOWN) if(selectable_cards[i]->position & POS_FACEDOWN)
mainGame->stCardPos[i]->setOverrideColor(0xff0000ff); mainGame->stCardPos[i]->setOverrideColor(0xff0000ff);
if(selectable_cards[i]->controler) if(selectable_cards[i]->controler)
......
...@@ -78,6 +78,7 @@ public: ...@@ -78,6 +78,7 @@ public:
ChainInfo current_chain; ChainInfo current_chain;
bool last_chain; bool last_chain;
bool deck_reversed; bool deck_reversed;
bool conti_selecting;
ClientField(); ClientField();
void Clear(); void Clear();
......
...@@ -844,6 +844,7 @@ void Game::HideElement(irr::gui::IGUIElement * win, bool set_action) { ...@@ -844,6 +844,7 @@ void Game::HideElement(irr::gui::IGUIElement * win, bool set_action) {
if(win == wCardSelect) { if(win == wCardSelect) {
for(int i = 0; i < 5; ++i) for(int i = 0; i < 5; ++i)
btnCardSelect[i]->setDrawImage(false); btnCardSelect[i]->setDrawImage(false);
dField.conti_selecting = false;
} }
if(win == wCardDisplay) { if(win == wCardDisplay) {
for(int i = 0; i < 5; ++i) for(int i = 0; i < 5; ++i)
......
...@@ -1217,13 +1217,11 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1217,13 +1217,11 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->dField.activatable_descs.push_back(std::make_pair(desc, flag)); mainGame->dField.activatable_descs.push_back(std::make_pair(desc, flag));
pcard->is_selected = false; pcard->is_selected = false;
if(flag == EDESC_OPERATION) { if(flag == EDESC_OPERATION) {
pcard->is_conti = true;
pcard->chain_code = code; pcard->chain_code = code;
mainGame->dField.conti_cards.push_back(pcard); mainGame->dField.conti_cards.push_back(pcard);
mainGame->dField.conti_act = true; mainGame->dField.conti_act = true;
conti_exist = true; conti_exist = true;
} else { } else {
pcard->chain_code = code;
pcard->is_selectable = true; pcard->is_selectable = true;
if(flag == EDESC_RESET) if(flag == EDESC_RESET)
pcard->cmdFlag |= COMMAND_RESET; pcard->cmdFlag |= COMMAND_RESET;
...@@ -1426,7 +1424,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1426,7 +1424,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
case MSG_SELECT_COUNTER: { case MSG_SELECT_COUNTER: {
/*int selecting_player = */BufferIO::ReadInt8(pbuf); /*int selecting_player = */BufferIO::ReadInt8(pbuf);
mainGame->dField.select_counter_type = BufferIO::ReadInt16(pbuf); mainGame->dField.select_counter_type = BufferIO::ReadInt16(pbuf);
mainGame->dField.select_counter_count = BufferIO::ReadInt8(pbuf); mainGame->dField.select_counter_count = BufferIO::ReadInt16(pbuf);
int count = BufferIO::ReadInt8(pbuf); int count = BufferIO::ReadInt8(pbuf);
mainGame->dField.selectable_cards.clear(); mainGame->dField.selectable_cards.clear();
int c, l, s, t/*, code*/; int c, l, s, t/*, code*/;
...@@ -1436,7 +1434,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -1436,7 +1434,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
c = mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf)); c = mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf));
l = BufferIO::ReadInt8(pbuf); l = BufferIO::ReadInt8(pbuf);
s = BufferIO::ReadInt8(pbuf); s = BufferIO::ReadInt8(pbuf);
t = BufferIO::ReadInt8(pbuf); t = BufferIO::ReadInt16(pbuf);
pcard = mainGame->dField.GetCard(c, l, s); pcard = mainGame->dField.GetCard(c, l, s);
mainGame->dField.selectable_cards.push_back(pcard); mainGame->dField.selectable_cards.push_back(pcard);
pcard->opParam = (t << 16) | t; pcard->opParam = (t << 16) | t;
...@@ -2222,7 +2220,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -2222,7 +2220,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
return true; return true;
} }
case MSG_FIELD_DISABLED: { case MSG_FIELD_DISABLED: {
int disabled = BufferIO::ReadInt32(pbuf); unsigned int disabled = BufferIO::ReadInt32(pbuf);
if (!mainGame->dInfo.isFirst) if (!mainGame->dInfo.isFirst)
disabled = (disabled >> 16) | (disabled << 16); disabled = (disabled >> 16) | (disabled << 16);
mainGame->dField.disabled_field = disabled; mainGame->dField.disabled_field = disabled;
......
...@@ -460,7 +460,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -460,7 +460,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
} }
} else { } else {
selectable_cards.clear(); selectable_cards.clear();
bool conti_exist = false; conti_selecting = false;
switch(command_location) { switch(command_location) {
case LOCATION_DECK: { case LOCATION_DECK: {
for(size_t i = 0; i < deck[command_controler].size(); ++i) for(size_t i = 0; i < deck[command_controler].size(); ++i)
...@@ -488,11 +488,11 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -488,11 +488,11 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
} }
case POSITION_HINT: { case POSITION_HINT: {
selectable_cards.insert(selectable_cards.end(), conti_cards.begin(), conti_cards.end()); selectable_cards.insert(selectable_cards.end(), conti_cards.begin(), conti_cards.end());
conti_exist = true; conti_selecting = true;
break; break;
} }
} }
if(!conti_exist) { if(!conti_selecting) {
mainGame->wCardSelect->setText(dataManager.GetSysString(566)); mainGame->wCardSelect->setText(dataManager.GetSysString(566));
list_command = COMMAND_ACTIVATE; list_command = COMMAND_ACTIVATE;
} else { } else {
...@@ -910,11 +910,15 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -910,11 +910,15 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
for(int i = 0; i < 5; ++i) { for(int i = 0; i < 5; ++i) {
// draw selectable_cards[i + pos] in btnCardSelect[i] // draw selectable_cards[i + pos] in btnCardSelect[i]
mainGame->stCardPos[i]->enableOverrideColor(false); mainGame->stCardPos[i]->enableOverrideColor(false);
// image
if(selectable_cards[i + pos]->code) if(selectable_cards[i + pos]->code)
mainGame->btnCardSelect[i]->setImage(imageManager.GetTexture(selectable_cards[i + pos]->code)); mainGame->btnCardSelect[i]->setImage(imageManager.GetTexture(selectable_cards[i + pos]->code));
else if(conti_selecting)
mainGame->btnCardSelect[i]->setImage(imageManager.GetTexture(selectable_cards[i + pos]->chain_code));
else else
mainGame->btnCardSelect[i]->setImage(imageManager.tCover[0]); mainGame->btnCardSelect[i]->setImage(imageManager.tCover[0]);
mainGame->btnCardSelect[i]->setRelativePosition(rect<s32>(30 + i * 125, 55, 30 + 120 + i * 125, 225)); mainGame->btnCardSelect[i]->setRelativePosition(rect<s32>(30 + i * 125, 55, 30 + 120 + i * 125, 225));
// text
wchar_t formatBuffer[2048]; wchar_t formatBuffer[2048];
if(sort_list.size()) { if(sort_list.size()) {
if(sort_list[pos + i] > 0) if(sort_list[pos + i] > 0)
...@@ -922,7 +926,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -922,7 +926,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
else else
myswprintf(formatBuffer, L""); myswprintf(formatBuffer, L"");
} else { } else {
if(selectable_cards[i + pos]->is_conti && !selectable_cards[i + pos]->code) if(conti_selecting)
myswprintf(formatBuffer, L"%ls", DataManager::unknown_string); myswprintf(formatBuffer, L"%ls", DataManager::unknown_string);
else if(selectable_cards[i + pos]->location == LOCATION_OVERLAY) else if(selectable_cards[i + pos]->location == LOCATION_OVERLAY)
myswprintf(formatBuffer, L"%ls[%d](%d)", myswprintf(formatBuffer, L"%ls[%d](%d)",
...@@ -933,17 +937,19 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -933,17 +937,19 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
selectable_cards[i + pos]->sequence + 1); selectable_cards[i + pos]->sequence + 1);
} }
mainGame->stCardPos[i]->setText(formatBuffer); mainGame->stCardPos[i]->setText(formatBuffer);
if(selectable_cards[i + pos]->location == LOCATION_OVERLAY) { // color
if(conti_selecting)
mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
else if(selectable_cards[i + pos]->location == LOCATION_OVERLAY) {
if(selectable_cards[i + pos]->owner != selectable_cards[i + pos]->overlayTarget->controler) if(selectable_cards[i + pos]->owner != selectable_cards[i + pos]->overlayTarget->controler)
mainGame->stCardPos[i]->setOverrideColor(0xff0000ff); mainGame->stCardPos[i]->setOverrideColor(0xff0000ff);
// BackgroundColor: controller of the xyz monster
if(selectable_cards[i + pos]->is_selected) if(selectable_cards[i + pos]->is_selected)
mainGame->stCardPos[i]->setBackgroundColor(0xffffff00); mainGame->stCardPos[i]->setBackgroundColor(0xffffff00);
else if(selectable_cards[i + pos]->overlayTarget->controler) else if(selectable_cards[i + pos]->overlayTarget->controler)
mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0); mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0);
else else
mainGame->stCardPos[i]->setBackgroundColor(0xffffffff); mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
} else if(selectable_cards[i + pos]->location == LOCATION_EXTRA || selectable_cards[i + pos]->location == LOCATION_REMOVED) { } else if(selectable_cards[i + pos]->location == LOCATION_DECK || selectable_cards[i + pos]->location == LOCATION_EXTRA || selectable_cards[i + pos]->location == LOCATION_REMOVED) {
if(selectable_cards[i + pos]->position & POS_FACEDOWN) if(selectable_cards[i + pos]->position & POS_FACEDOWN)
mainGame->stCardPos[i]->setOverrideColor(0xff0000ff); mainGame->stCardPos[i]->setOverrideColor(0xff0000ff);
if(selectable_cards[i + pos]->is_selected) if(selectable_cards[i + pos]->is_selected)
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#include <unistd.h> #include <unistd.h>
#endif #endif
const unsigned short PRO_VERSION = 0x133B; const unsigned short PRO_VERSION = 0x133C;
namespace ygo { namespace ygo {
...@@ -94,6 +94,8 @@ bool Game::Initialize() { ...@@ -94,6 +94,8 @@ bool Game::Initialize() {
is_building = false; is_building = false;
memset(&dInfo, 0, sizeof(DuelInfo)); memset(&dInfo, 0, sizeof(DuelInfo));
memset(chatTiming, 0, sizeof(chatTiming)); memset(chatTiming, 0, sizeof(chatTiming));
for(int i = 0; i < 2048; ++i)
dataManager._sysStrings[i] = 0;
deckManager.LoadLFList(); deckManager.LoadLFList();
driver = device->getVideoDriver(); driver = device->getVideoDriver();
driver->setTextureCreationFlag(irr::video::ETCF_CREATE_MIP_MAPS, false); driver->setTextureCreationFlag(irr::video::ETCF_CREATE_MIP_MAPS, false);
...@@ -118,17 +120,17 @@ bool Game::Initialize() { ...@@ -118,17 +120,17 @@ bool Game::Initialize() {
device->setResizable(false); device->setResizable(false);
#ifdef _WIN32 #ifdef _WIN32
HINSTANCE hInstance = (HINSTANCE)GetModuleHandle(NULL); HINSTANCE hInstance = (HINSTANCE)GetModuleHandle(NULL);
HICON hSmallIcon = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(1), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); HICON hSmallIcon = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(1), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
HICON hBigIcon = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(1), IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR); HICON hBigIcon = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(1), IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);
HWND hWnd; HWND hWnd;
irr::video::SExposedVideoData exposedData = driver->getExposedVideoData(); irr::video::SExposedVideoData exposedData = driver->getExposedVideoData();
if(gameConf.use_d3d) if(gameConf.use_d3d)
hWnd = reinterpret_cast<HWND>(exposedData.D3D9.HWnd); hWnd = reinterpret_cast<HWND>(exposedData.D3D9.HWnd);
else else
hWnd = reinterpret_cast<HWND>(exposedData.OpenGLWin32.HWnd); hWnd = reinterpret_cast<HWND>(exposedData.OpenGLWin32.HWnd);
SendMessage(hWnd, WM_SETICON, ICON_SMALL, (long)hSmallIcon); SendMessage(hWnd, WM_SETICON, ICON_SMALL, (long)hSmallIcon);
SendMessage(hWnd, WM_SETICON, ICON_BIG, (long)hBigIcon); SendMessage(hWnd, WM_SETICON, ICON_BIG, (long)hBigIcon);
#endif #endif
//main menu //main menu
wchar_t strbuf[256]; wchar_t strbuf[256];
myswprintf(strbuf, L"YGOPro Version:%X.0%X.%X", PRO_VERSION >> 12, (PRO_VERSION >> 4) & 0xff, PRO_VERSION & 0xf); myswprintf(strbuf, L"YGOPro Version:%X.0%X.%X", PRO_VERSION >> 12, (PRO_VERSION >> 4) & 0xff, PRO_VERSION & 0xf);
......
...@@ -412,9 +412,9 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) { ...@@ -412,9 +412,9 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
} }
case MSG_SELECT_COUNTER: { case MSG_SELECT_COUNTER: {
player = BufferIO::ReadInt8(pbuf); player = BufferIO::ReadInt8(pbuf);
pbuf += 3; pbuf += 4;
count = BufferIO::ReadInt8(pbuf); count = BufferIO::ReadInt8(pbuf);
pbuf += count * 8; pbuf += count * 9;
return ReadReplayResponse(); return ReadReplayResponse();
} }
case MSG_SELECT_SUM: { case MSG_SELECT_SUM: {
......
...@@ -768,9 +768,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) { ...@@ -768,9 +768,9 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
} }
case MSG_SELECT_COUNTER: { case MSG_SELECT_COUNTER: {
player = BufferIO::ReadInt8(pbuf); player = BufferIO::ReadInt8(pbuf);
pbuf += 3; pbuf += 4;
count = BufferIO::ReadInt8(pbuf); count = BufferIO::ReadInt8(pbuf);
pbuf += count * 8; pbuf += count * 9;
WaitforResponse(player); WaitforResponse(player);
NetServer::SendBufferToPlayer(players[player], STOC_GAME_MSG, offset, pbuf - offset); NetServer::SendBufferToPlayer(players[player], STOC_GAME_MSG, offset, pbuf - offset);
return 1; return 1;
......
...@@ -243,9 +243,9 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) { ...@@ -243,9 +243,9 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
} }
case MSG_SELECT_COUNTER: { case MSG_SELECT_COUNTER: {
player = BufferIO::ReadInt8(pbuf); player = BufferIO::ReadInt8(pbuf);
pbuf += 3; pbuf += 4;
count = BufferIO::ReadInt8(pbuf); count = BufferIO::ReadInt8(pbuf);
pbuf += count * 8; pbuf += count * 9;
if(!DuelClient::ClientAnalyze(offset, pbuf - offset)) { if(!DuelClient::ClientAnalyze(offset, pbuf - offset)) {
mainGame->singleSignal.Reset(); mainGame->singleSignal.Reset();
mainGame->singleSignal.Wait(); mainGame->singleSignal.Wait();
......
...@@ -705,9 +705,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) { ...@@ -705,9 +705,9 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
} }
case MSG_SELECT_COUNTER: { case MSG_SELECT_COUNTER: {
player = BufferIO::ReadInt8(pbuf); player = BufferIO::ReadInt8(pbuf);
pbuf += 3; pbuf += 4;
count = BufferIO::ReadInt8(pbuf); count = BufferIO::ReadInt8(pbuf);
pbuf += count * 8; pbuf += count * 9;
WaitforResponse(player); WaitforResponse(player);
NetServer::SendBufferToPlayer(cur_player[player], STOC_GAME_MSG, offset, pbuf - offset); NetServer::SendBufferToPlayer(cur_player[player], STOC_GAME_MSG, offset, pbuf - offset);
return 1; return 1;
......
Subproject commit b2d983470ed5da3989e2b217c3e13b3c4e9352f5 Subproject commit 0b4aef4a7a6e15ea65929ac9a0f87701ccc6cca4
Subproject commit 6daaa8d6398a3f9a323eb270b2cbbfaed2a2a381 Subproject commit e084e2207c5c37a07e3e095cc13526487a9bf618
...@@ -96,6 +96,7 @@ ...@@ -96,6 +96,7 @@
!system 530 请选择对方的卡 !system 530 请选择对方的卡
!system 531 请选择上级召唤用需要解放的怪兽 !system 531 请选择上级召唤用需要解放的怪兽
!system 532 请选择要取除超量素材的怪兽 !system 532 请选择要取除超量素材的怪兽
!system 549 请选择攻击的对象
!system 550 请选择要发动的效果 !system 550 请选择要发动的效果
!system 551 请选择效果的对象 !system 551 请选择效果的对象
!system 552 请选择硬币的正反面 !system 552 请选择硬币的正反面
...@@ -491,7 +492,7 @@ ...@@ -491,7 +492,7 @@
!setname 0xc008 命运英雄 D-HERO !setname 0xc008 命运英雄 D-HERO
!setname 0x9 新宇 ネオス !setname 0x9 新宇 ネオス
!setname 0xa 入魔 ヴェルズ !setname 0xa 入魔 ヴェルズ
!setname 0x100a 侵入魔 インヴェルズ !setname 0x100a 侵入魔 インヴェルズ
!setname 0xb 永火 インフェルニティ !setname 0xb 永火 インフェルニティ
!setname 0xc 外星 エーリアン !setname 0xc 外星 エーリアン
!setname 0xd 剑士 セイバー !setname 0xd 剑士 セイバー
...@@ -711,6 +712,7 @@ ...@@ -711,6 +712,7 @@
!setname 0xb5 灵兽 霊獣 !setname 0xb5 灵兽 霊獣
!setname 0x10b5 灵兽使 霊獣使い !setname 0x10b5 灵兽使 霊獣使い
!setname 0x20b5 精灵兽 精霊獣 !setname 0x20b5 精灵兽 精霊獣
#!setname 0x30b5 精灵兽使 精霊獣使い
!setname 0x40b5 圣灵兽骑 聖霊獣騎 !setname 0x40b5 圣灵兽骑 聖霊獣騎
!setname 0xb6 外神 !setname 0xb6 外神
!setname 0xb7 旧神 !setname 0xb7 旧神
...@@ -778,3 +780,6 @@ ...@@ -778,3 +780,6 @@
!setname 0xee 秘旋谍 SPYRAL !setname 0xee 秘旋谍 SPYRAL
!setname 0x10ee 秘旋谍装备 SPYRAL GEAR !setname 0x10ee 秘旋谍装备 SPYRAL GEAR
!setname 0xef 堕天使 !setname 0xef 堕天使
!setname 0xf0 风魔女 WW(ウィンド・ウィッチ)
!setname 0xf1 十二兽 十二獣
!setname 0xf2 灵摆龙 ペンデュラム・ドラゴン
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment