remove: OpenID

This commit is contained in:
2024-06-01 16:54:08 +01:00
parent fe2f7cddb3
commit a2bac7a5f3
10 changed files with 229 additions and 465 deletions

View File

@ -262,10 +262,6 @@ class LoginWindow(ui.ScriptWindow):
else: else:
connectingIP = self.stream.GetConnectAddr() connectingIP = self.stream.GetConnectAddr()
if connectingIP: if connectingIP:
if app.USE_OPENID and not app.OPENID_TEST :
self.__RefreshServerList()
self.__OpenServerBoard()
else:
self.__OpenLoginBoard() self.__OpenLoginBoard()
if IsFullBackImage(): if IsFullBackImage():
self.GetChild("bg1").Hide() self.GetChild("bg1").Hide()
@ -287,13 +283,13 @@ class LoginWindow(ui.ScriptWindow):
print "---------------------------------------------------------------------------- CLOSE LOGIN WINDOW " print "---------------------------------------------------------------------------- CLOSE LOGIN WINDOW "
# #
# selectMusic<69><63> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BGM<47><4D> <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20>ΰ<EFBFBD> <20><> üũ<C3BC>Ѵ<EFBFBD>. # selectMusic<69><63> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BGM<47><4D> <20><><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20>ΰ<EFBFBD> <20><> üũ<C3BC>Ѵ<EFBFBD>.
# #
if musicInfo.loginMusic != "" and musicInfo.selectMusic != "": if musicInfo.loginMusic != "" and musicInfo.selectMusic != "":
snd.FadeOutMusic("BGM/"+musicInfo.loginMusic) snd.FadeOutMusic("BGM/"+musicInfo.loginMusic)
## NOTE : idEditLine<6E><65> pwdEditLine<6E><65> <20>̺<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD><C7BE>־ ## NOTE : idEditLine<6E><65> pwdEditLine<6E><65> <20>̺<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD><C7BE>־
## Event<6E><74> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ <20><><EFBFBD>־<EFBFBD><EFBFBD>߸<EFBFBD> <20>մϴ<D5B4> - [levites] ## Event<6E><74> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ <20><><EFBFBD>־<EFBFBD>߸<EFBFBD> <20>մϴ<D5B4> - [levites]
self.idEditLine.SetTabEvent(0) self.idEditLine.SetTabEvent(0)
self.idEditLine.SetReturnEvent(0) self.idEditLine.SetReturnEvent(0)
self.pwdEditLine.SetReturnEvent(0) self.pwdEditLine.SetReturnEvent(0)
@ -393,11 +389,11 @@ class LoginWindow(ui.ScriptWindow):
def SetPasswordEditLineFocus(self): def SetPasswordEditLineFocus(self):
if localeInfo.IsEUROPE(): if localeInfo.IsEUROPE():
if self.idEditLine != None: #0000862: [M2EU] <20>α<EFBFBD><CEB1><EFBFBD>â <20>˾<EFBFBD> <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> None <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> if self.idEditLine != None: #0000862: [M2EU] <20>α<EFBFBD><CEB1><EFBFBD>â <20>˾<EFBFBD> <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> None <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
self.idEditLine.SetText("") self.idEditLine.SetText("")
self.idEditLine.SetFocus() #0000685: [M2EU] <20><><EFBFBD>̵<EFBFBD>/<2F><><EFBFBD>й<EFBFBD>ȣ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD> <20><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> self.idEditLine.SetFocus() #0000685: [M2EU] <20><><EFBFBD>̵<EFBFBD>/<2F><>й<EFBFBD>ȣ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD><CCB5> <20><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
if self.pwdEditLine != None: #0000862: [M2EU] <20>α<EFBFBD><CEB1><EFBFBD>â <20>˾<EFBFBD> <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> None <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> if self.pwdEditLine != None: #0000862: [M2EU] <20>α<EFBFBD><CEB1><EFBFBD>â <20>˾<EFBFBD> <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> None <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
self.pwdEditLine.SetText("") self.pwdEditLine.SetText("")
else: else:
if self.pwdEditLine != None: if self.pwdEditLine != None:
@ -455,7 +451,7 @@ class LoginWindow(ui.ScriptWindow):
loginFailureMsg = localeInfo.LOGIN_FAILURE_UNKNOWN + error loginFailureMsg = localeInfo.LOGIN_FAILURE_UNKNOWN + error
#0000685: [M2EU] <20><><EFBFBD>̵<EFBFBD>/<2F><><EFBFBD>й<EFBFBD>ȣ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #0000685: [M2EU] <20><><EFBFBD>̵<EFBFBD>/<2F><>й<EFBFBD>ȣ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
loginFailureFunc=self.loginFailureFuncDict.get(error, self.SetPasswordEditLineFocus) loginFailureFunc=self.loginFailureFuncDict.get(error, self.SetPasswordEditLineFocus)
if app.loggined: if app.loggined:
@ -703,18 +699,18 @@ class LoginWindow(ui.ScriptWindow):
execfile(loginInfoFileName, loginInfo) execfile(loginInfoFileName, loginInfo)
except IOError: except IOError:
print(\ print(\
"<EFBFBD>ڵ<EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD> <20>Ͻ÷<CFBD><C3B7><EFBFBD>" + loginInfoFileName + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>\n"\ "<EFBFBD>ڵ<EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD> <20>Ͻ÷<CFBD><C3B7><EFBFBD>" + loginInfoFileName + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>\n"\
"\n"\ "\n"\
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n"\ "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n"\
"================================================================\n"\ "================================================================\n"\
"addr=<3D>ּ<EFBFBD>\n"\ "addr=<3D>ּ<EFBFBD>\n"\
"port=<3D><>Ʈ\n"\ "port=<3D><>Ʈ\n"\
"id=<3D><><EFBFBD>̵<EFBFBD>\n"\ "id=<3D><><EFBFBD>̵<EFBFBD>\n"\
"pwd=<3D><><EFBFBD>й<EFBFBD>ȣ\n"\ "pwd=<3D><>й<EFBFBD>ȣ\n"\
"slot=ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD> (<28><><EFBFBD>ų<EFBFBD> -1<≯<EFBFBD> <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)\n"\ "slot=ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD> (<28><><EFBFBD>ų<EFBFBD> -1<≯<EFBFBD> <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)\n"\
"autoLogin=<3D>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>\n" "autoLogin=<3D>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>\n"
"autoSelect=<3D>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>\n" "autoSelect=<3D>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>\n"
"locale=(ymir) LC_Ymir <20>ϰ<EFBFBD><CFB0><EFBFBD> ymir<69><72> <20>۵<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> korea<65><61> <20>۵<EFBFBD>\n" "locale=(ymir) LC_Ymir <20>ϰ<EFBFBD><CFB0> ymir<69><72> <20>۵<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> korea<65><61> <20>۵<EFBFBD>\n"
); );
id=loginInfo.get("id", "") id=loginInfo.get("id", "")
@ -738,7 +734,7 @@ class LoginWindow(ui.ScriptWindow):
self.__SetServerInfo(locale.CHANNEL_TEST_SERVER) self.__SetServerInfo(locale.CHANNEL_TEST_SERVER)
except: except:
import exception import exception
exception.Abort("LoginWindow.__LoadLoginInfo - <20>׽<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20>ּҰ<D6BC> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>") exception.Abort("LoginWindow.__LoadLoginInfo - <20>׽<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20>ּҰ<D6BC> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>")
else: else:
addr=loginInfo.get("addr", "") addr=loginInfo.get("addr", "")
@ -752,7 +748,7 @@ class LoginWindow(ui.ScriptWindow):
net.SetMarkServer(addr, port) net.SetMarkServer(addr, port)
if locale == "ymir" : if locale == "ymir" :
net.SetServerInfo("õ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>") net.SetServerInfo("õ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>")
self.serverInfo.SetText("Y:"+addr+":"+str(port)) self.serverInfo.SetText("Y:"+addr+":"+str(port))
else: else:
net.SetServerInfo(addr+":"+str(port)) net.SetServerInfo(addr+":"+str(port))
@ -783,7 +779,7 @@ class LoginWindow(ui.ScriptWindow):
self.Connect(id, pwd) self.Connect(id, pwd)
print "==================================================================================" print "=================================================================================="
print "<EFBFBD>ڵ<EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD>: %s - %s:%d %s" % (loginInfoFileName, addr, port, id) print "<EFBFBD>ڵ<EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD>: %s - %s:%d %s" % (loginInfoFileName, addr, port, id)
print "==================================================================================" print "=================================================================================="
@ -902,9 +898,9 @@ class LoginWindow(ui.ScriptWindow):
self.stream.popupWindow.Close() self.stream.popupWindow.Close()
# CHINA_MATRIX_CARD_BUG_FIX # CHINA_MATRIX_CARD_BUG_FIX
## A~Z <20><><EFBFBD><EFBFBD> 26 <20>̳<EFBFBD><CCB3><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>߸<EFBFBD> <20>Ѵ<EFBFBD>. ## A~Z <20><><EFBFBD><EFBFBD> 26 <20>̳<EFBFBD><CCB3><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>־<EFBFBD>߸<EFBFBD> <20>Ѵ<EFBFBD>.
## Python Exception Log <20><><EFBFBD><EFBFBD> <20><> <20>̻<EFBFBD><CCBB><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>־ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ## Python Exception Log <20><><EFBFBD><EFBFBD> <20><> <20>̻<EFBFBD><CCBB><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>־ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
## <20><20><> <20>ѱ<EFBFBD><D1B1><EFBFBD> <20>α׿<CEB1><D7BF><EFBFBD> <20>̰<EFBFBD> Ȱ<><C8B0><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>𸣰<EFBFBD><F0B8A3B0><EFBFBD> ## <20><20><> <20>ѱ<EFBFBD><D1B1><EFBFBD> <20>α׿<CEB1><D7BF><EFBFBD> <20>̰<EFBFBD> Ȱ<><C8B0>Ǵ<EFBFBD><C7B4><EFBFBD><EFBFBD><EFBFBD> <20>𸣰<EFBFBD><F0B8A3B0><EFBFBD>
row1 = min(30, row1) row1 = min(30, row1)
row2 = min(30, row2) row2 = min(30, row2)
row3 = min(30, row3) row3 = min(30, row3)
@ -1031,7 +1027,7 @@ class LoginWindow(ui.ScriptWindow):
if channelIndex >= 0: if channelIndex >= 0:
self.channelList.SelectItem(channelIndex) self.channelList.SelectItem(channelIndex)
## Show/Hide <20>ڵ忡 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>־ <20>ӽ<EFBFBD> - [levites] ## Show/Hide <20>ڵ忡 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>־ <20>ӽ<EFBFBD> - [levites]
self.serverBoard.SetPosition(self.xServerBoard, self.yServerBoard) self.serverBoard.SetPosition(self.xServerBoard, self.yServerBoard)
self.serverBoard.Show() self.serverBoard.Show()
self.connectBoard.Hide() self.connectBoard.Hide()
@ -1265,7 +1261,7 @@ class LoginWindow(ui.ScriptWindow):
self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_CHANNEL) self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_CHANNEL)
return return
# <20><><EFBFBD>°<EFBFBD> FULL <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> # <20><><EFBFBD>°<EFBFBD> FULL <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if state == serverInfo.STATE_DICT[3]: if state == serverInfo.STATE_DICT[3]:
self.PopupNotifyMessage(localeInfo.CHANNEL_NOTIFY_FULL) self.PopupNotifyMessage(localeInfo.CHANNEL_NOTIFY_FULL)
return return
@ -1277,9 +1273,9 @@ class LoginWindow(ui.ScriptWindow):
channelName = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["name"] channelName = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["name"]
addrKey = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["key"] addrKey = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["key"]
if "õ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>" == serverName: if "õ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>" == serverName:
app.ForceSetLocale("ymir", "locale/ymir") app.ForceSetLocale("ymir", "locale/ymir")
elif "<EFBFBD><20><><EFBFBD><EFBFBD>" == serverName: elif "<EFBFBD><20><><EFBFBD><EFBFBD>" == serverName:
app.ForceSetLocale("we_korea", "locale/we_korea") app.ForceSetLocale("we_korea", "locale/we_korea")
except: except:
@ -1294,7 +1290,7 @@ class LoginWindow(ui.ScriptWindow):
tcp_port = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["tcp_port"] tcp_port = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["tcp_port"]
except: except:
import exception import exception
exception.Abort("LoginWindow.__OnClickSelectServerButton - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>") exception.Abort("LoginWindow.__OnClickSelectServerButton - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>")
try: try:
account_ip = serverInfo.REGION_AUTH_SERVER_DICT[regionID][serverID]["ip"] account_ip = serverInfo.REGION_AUTH_SERVER_DICT[regionID][serverID]["ip"]
@ -1314,20 +1310,11 @@ class LoginWindow(ui.ScriptWindow):
except: except:
import exception import exception
exception.Abort("LoginWindow.__OnClickSelectServerButton - <20><>ũ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>") exception.Abort("LoginWindow.__OnClickSelectServerButton - <20><>ũ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>")
if app.USE_OPENID and not app.OPENID_TEST :
## 2012.07.19 OpenID : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
# ä<><C3A4> <20><><EFBFBD><EFBFBD> ȭ<><EFBFBD><E9BFA1><><C8AE>"(SelectServerButton) <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
# <20>α<EFBFBD><CEB1><EFBFBD> ȭ<><C8AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ѿ<D1BE><EEB0A1> <20>ʰ<EFBFBD> <20>ٷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> OpenID <20><><EFBFBD><EFBFBD>Ű<EFBFBD><C5B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
self.stream.SetConnectInfo(ip, tcp_port, account_ip, account_port)
self.Connect(0, 0)
else :
self.stream.SetConnectInfo(ip, tcp_port, account_ip, account_port) self.stream.SetConnectInfo(ip, tcp_port, account_ip, account_port)
self.__OpenLoginBoard() self.__OpenLoginBoard()
def __OnClickSelectConnectButton(self): def __OnClickSelectConnectButton(self):
if IsFullBackImage(): if IsFullBackImage():
self.GetChild("bg1").Show() self.GetChild("bg1").Show()

View File

@ -521,7 +521,6 @@ const char * GetRecvHeaderName(BYTE header)
stringList[135] = "HEADER_GC_DAMAGE_INFO"; stringList[135] = "HEADER_GC_DAMAGE_INFO";
stringList[136] = "HEADER_GC_CHAR_ADDITIONAL_INFO"; stringList[136] = "HEADER_GC_CHAR_ADDITIONAL_INFO";
stringList[150] = "HEADER_GC_AUTH_SUCCESS"; stringList[150] = "HEADER_GC_AUTH_SUCCESS";
stringList[154] = "HEADER_GC_AUTH_SUCCESS_OPENID";
stringList[0xfc] = "HEADER_GC_HANDSHAKE_OK"; stringList[0xfc] = "HEADER_GC_HANDSHAKE_OK";
stringList[0xfd] = "HEADER_GC_PHASE"; stringList[0xfd] = "HEADER_GC_PHASE";
stringList[0xfe] = "HEADER_GC_BINDUDP"; stringList[0xfe] = "HEADER_GC_BINDUDP";

View File

@ -10,10 +10,6 @@ extern DWORD g_adwEncryptKey[4];
extern DWORD g_adwDecryptKey[4]; extern DWORD g_adwDecryptKey[4];
// END_OF_CHINA_CRYPT_KEY // END_OF_CHINA_CRYPT_KEY
#ifdef USE_OPENID
extern int openid_test;
#endif
void CAccountConnector::SetHandler(PyObject* poHandler) void CAccountConnector::SetHandler(PyObject* poHandler)
{ {
m_poHandler = poHandler; m_poHandler = poHandler;
@ -141,7 +137,7 @@ bool CAccountConnector::__HandshakeState_Process()
if (!__AnalyzePacket(HEADER_GC_PING, sizeof(TPacketGCPing), &CAccountConnector::__AuthState_RecvPing)) if (!__AnalyzePacket(HEADER_GC_PING, sizeof(TPacketGCPing), &CAccountConnector::__AuthState_RecvPing))
return false; return false;
// TODO : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> data serialize & deserialize <20>۾<EFBFBD><DBBE>ؾ<EFBFBD> <20>Ѵ<EFBFBD>. // TODO : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> data serialize & deserialize <20>۾<EFBFBD><DBBE>ؾ<EFBFBD> <20>Ѵ<EFBFBD>.
if (!__AnalyzeVarSizePacket(HEADER_GC_HYBRIDCRYPT_KEYS, &CAccountConnector::__AuthState_RecvHybridCryptKeys)) if (!__AnalyzeVarSizePacket(HEADER_GC_HYBRIDCRYPT_KEYS, &CAccountConnector::__AuthState_RecvHybridCryptKeys))
return false; return false;
@ -165,11 +161,6 @@ bool CAccountConnector::__AuthState_Process()
if (!__AnalyzePacket(HEADER_GC_AUTH_SUCCESS, sizeof(TPacketGCAuthSuccess), &CAccountConnector::__AuthState_RecvAuthSuccess)) if (!__AnalyzePacket(HEADER_GC_AUTH_SUCCESS, sizeof(TPacketGCAuthSuccess), &CAccountConnector::__AuthState_RecvAuthSuccess))
return true; return true;
#ifdef USE_OPENID
if (!__AnalyzePacket(HEADER_GC_AUTH_SUCCESS_OPENID, sizeof(TPacketGCAuthSuccess), &CAccountConnector::__AuthState_RecvAuthSuccess_OpenID))
return true;
#endif /* USE_OPENID */
if (!__AnalyzePacket(HEADER_GC_LOGIN_FAILURE, sizeof(TPacketGCAuthSuccess), &CAccountConnector::__AuthState_RecvAuthFailure)) if (!__AnalyzePacket(HEADER_GC_LOGIN_FAILURE, sizeof(TPacketGCAuthSuccess), &CAccountConnector::__AuthState_RecvAuthFailure))
return true; return true;
@ -188,7 +179,7 @@ bool CAccountConnector::__AuthState_Process()
if (!__AnalyzePacket(HEADER_GC_PANAMA_PACK, sizeof(TPacketGCPanamaPack), &CAccountConnector::__AuthState_RecvPanamaPack)) if (!__AnalyzePacket(HEADER_GC_PANAMA_PACK, sizeof(TPacketGCPanamaPack), &CAccountConnector::__AuthState_RecvPanamaPack))
return false; return false;
// TODO : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> data serialize & deserialize <20>۾<EFBFBD><DBBE>ؾ<EFBFBD> <20>Ѵ<EFBFBD>. // TODO : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> data serialize & deserialize <20>۾<EFBFBD><DBBE>ؾ<EFBFBD> <20>Ѵ<EFBFBD>.
if (!__AnalyzeVarSizePacket(HEADER_GC_HYBRIDCRYPT_KEYS, &CAccountConnector::__AuthState_RecvHybridCryptKeys)) if (!__AnalyzeVarSizePacket(HEADER_GC_HYBRIDCRYPT_KEYS, &CAccountConnector::__AuthState_RecvHybridCryptKeys))
return false; return false;
@ -217,37 +208,6 @@ bool CAccountConnector::__AuthState_RecvPhase()
} }
else if (kPacketPhase.phase == PHASE_AUTH) else if (kPacketPhase.phase == PHASE_AUTH)
{ {
#ifdef USE_OPENID
if (!openid_test)
{
//2012.07.19 OpenID : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//Ongoing : <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD> <20><><EFBFBD><EFBFBD>-> TPacketCGLogin5
//Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>Ű<EFBFBD><C5B0><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//const char* tempAuthKey = "d4025bc1f752b64fe5d51ae575ec4730"; //<2F>ϵ<EFBFBD><CFB5>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD> 32
TPacketCGLogin5 LoginPacket;
LoginPacket.header = HEADER_CG_LOGIN5_OPENID;
strncpy(LoginPacket.authKey, LocaleService_GetOpenIDAuthKey(), OPENID_AUTHKEY_LEN);
LoginPacket.authKey[OPENID_AUTHKEY_LEN] = '\0';
for (DWORD i = 0; i < 4; ++i)
LoginPacket.adwClientKey[i] = g_adwEncryptKey[i];
if (!Send(sizeof(LoginPacket), &LoginPacket))
{
Tracen(" CAccountConnector::__AuthState_RecvPhase - SendLogin5 Error");
return false;
}
if (!SendSequence())
{
return false;
}
}
else
{
TPacketCGLogin3 LoginPacket; TPacketCGLogin3 LoginPacket;
LoginPacket.header = HEADER_CG_LOGIN3; LoginPacket.header = HEADER_CG_LOGIN3;
@ -256,7 +216,7 @@ bool CAccountConnector::__AuthState_RecvPhase()
LoginPacket.name[ID_MAX_NUM] = '\0'; LoginPacket.name[ID_MAX_NUM] = '\0';
LoginPacket.pwd[PASS_MAX_NUM] = '\0'; LoginPacket.pwd[PASS_MAX_NUM] = '\0';
// <EFBFBD><EFBFBD><EFBFBD>й<EFBFBD>ȣ<EFBFBD><EFBFBD> <20>޸𸮿<DEB8> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>־, <20><><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> // <20><>й<EFBFBD>ȣ<EFBFBD><C8A3> <20>޸𸮿<DEB8> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>־, <20><><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
ClearLoginInfo(); ClearLoginInfo();
CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance(); CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
rkNetStream.ClearLoginInfo(); rkNetStream.ClearLoginInfo();
@ -276,38 +236,6 @@ bool CAccountConnector::__AuthState_RecvPhase()
{ {
return false; return false;
} }
}
#else /* USE_OPENID */
TPacketCGLogin3 LoginPacket;
LoginPacket.header = HEADER_CG_LOGIN3;
strncpy(LoginPacket.name, m_strID.c_str(), ID_MAX_NUM);
strncpy(LoginPacket.pwd, m_strPassword.c_str(), PASS_MAX_NUM);
LoginPacket.name[ID_MAX_NUM] = '\0';
LoginPacket.pwd[PASS_MAX_NUM] = '\0';
// <20><><EFBFBD>й<EFBFBD>ȣ<EFBFBD><C8A3> <20>޸𸮿<DEB8> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>־, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
ClearLoginInfo();
CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
rkNetStream.ClearLoginInfo();
m_strPassword = "";
for (DWORD i = 0; i < 4; ++i)
LoginPacket.adwClientKey[i] = g_adwEncryptKey[i];
if (!Send(sizeof(LoginPacket), &LoginPacket))
{
Tracen(" CAccountConnector::__AuthState_RecvPhase - SendLogin3 Error");
return false;
}
if (!SendSequence())
{
return false;
}
#endif /* USE_OPENID */
__AuthState_Set(); __AuthState_Set();
} }
@ -437,37 +365,6 @@ bool CAccountConnector::__AuthState_RecvAuthSuccess()
return true; return true;
} }
#ifdef USE_OPENID
bool CAccountConnector::__AuthState_RecvAuthSuccess_OpenID()
{
TPacketGCAuthSuccessOpenID kAuthSuccessOpenIDPacket;
if (!Recv(sizeof(kAuthSuccessOpenIDPacket), &kAuthSuccessOpenIDPacket))
return false;
if (!kAuthSuccessOpenIDPacket.bResult)
{
if (m_poHandler)
PyCallClassMemberFunc(m_poHandler, "OnLoginFailure", Py_BuildValue("(s)", "BESAMEKEY"));
}
else
{
DWORD dwPanamaKey = kAuthSuccessOpenIDPacket.dwLoginKey ^ g_adwEncryptKey[0] ^ g_adwEncryptKey[1] ^ g_adwEncryptKey[2] ^ g_adwEncryptKey[3];
CEterPackManager::instance().DecryptPackIV(dwPanamaKey);
CPythonNetworkStream & rkNet = CPythonNetworkStream::Instance();
rkNet.SetLoginInfo(kAuthSuccessOpenIDPacket.login, "0000"); //OpenID <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>й<EFBFBD>ȣ<EFBFBD><C8A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>.
rkNet.SetLoginKey(kAuthSuccessOpenIDPacket.dwLoginKey);
rkNet.Connect(m_strAddr.c_str(), m_iPort);
}
Disconnect();
__OfflineState_Set();
return true;
}
#endif /* USE_OPENID */
bool CAccountConnector::__AuthState_RecvAuthFailure() bool CAccountConnector::__AuthState_RecvAuthFailure()
{ {
TPacketGCLoginFailure packet_failure; TPacketGCLoginFailure packet_failure;
@ -593,7 +490,7 @@ void CAccountConnector::OnConnectSuccess()
void CAccountConnector::OnRemoteDisconnect() void CAccountConnector::OnRemoteDisconnect()
{ {
// Matrix Card Number <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ҵµ<D2B4> close <20>Ǹ<EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>. // Matrix Card Number <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ҵµ<D2B4> close <20>Ǹ<EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>.
if (m_isWaitKey) if (m_isWaitKey)
{ {
if (m_poHandler) if (m_poHandler)

View File

@ -52,9 +52,6 @@ class CAccountConnector : public CNetworkStream, public CSingleton<CAccountConne
bool __AuthState_RecvPing(); bool __AuthState_RecvPing();
bool __AuthState_SendPong(); bool __AuthState_SendPong();
bool __AuthState_RecvAuthSuccess(); bool __AuthState_RecvAuthSuccess();
#ifdef USE_OPENID
bool __AuthState_RecvAuthSuccess_OpenID();
#endif /* USE_OPENID */
bool __AuthState_RecvAuthFailure(); bool __AuthState_RecvAuthFailure();
bool __AuthState_RecvChinaMatrixCard(); bool __AuthState_RecvChinaMatrixCard();
bool __AuthState_RecvRunupMatrixQuiz(); bool __AuthState_RecvRunupMatrixQuiz();
@ -64,8 +61,8 @@ class CAccountConnector : public CNetworkStream, public CSingleton<CAccountConne
bool __AuthState_RecvHybridCryptSDB(int VarSize); bool __AuthState_RecvHybridCryptSDB(int VarSize);
bool __AnalyzePacket(UINT uHeader, UINT uPacketSize, bool (CAccountConnector::*pfnDispatchPacket)()); bool __AnalyzePacket(UINT uHeader, UINT uPacketSize, bool (CAccountConnector::*pfnDispatchPacket)());
// TODO: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ӽô<D3BD>. header<65>ڿ<EFBFBD> size 4byte<74><65> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>´ٴ<C2B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. // TODO: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>ӽô<D3BD>. header<65>ڿ<EFBFBD> size 4byte<74><65> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>´ٴ<C2B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD><CFB7><EFBFBD> Packet System Refactoring<6E>ؾ<EFBFBD> <20>Ѵ<EFBFBD>. // <20><><EFBFBD><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD><CFB7><EFBFBD> Packet System Refactoring<6E>ؾ<EFBFBD> <20>Ѵ<EFBFBD>.
bool __AnalyzeVarSizePacket(UINT uHeader, bool (CAccountConnector::*pfnDispatchPacket)(int)); bool __AnalyzeVarSizePacket(UINT uHeader, bool (CAccountConnector::*pfnDispatchPacket)(int));
protected: protected:

View File

@ -399,23 +399,3 @@ int LocaleService_StringCompareCI( LPCSTR szStringLeft, LPCSTR szStringRight, si
return strnicmp( szStringLeft, szStringRight, sizeLength ); return strnicmp( szStringLeft, szStringRight, sizeLength );
} }
#endif #endif
#ifdef USE_OPENID
std::string __OPENID_AUTH_KEY_STRING__;
int openid_test = 0;
void LocaleService_SetOpenIDAuthKey(const char *authKey)
{
__OPENID_AUTH_KEY_STRING__ = authKey;
return;
}
const char* LocaleService_GetOpenIDAuthKey()
{
return __OPENID_AUTH_KEY_STRING__.c_str();
}
#endif /* USE_OPENID */

View File

@ -33,8 +33,3 @@ int LocaleService_GetSkillPower(unsigned level);
void LocaleService_SetCHEONMA(bool isEnable); void LocaleService_SetCHEONMA(bool isEnable);
bool LocaleService_IsCHEONMA(); bool LocaleService_IsCHEONMA();
// END_OF_CHEONMA // END_OF_CHEONMA
#ifdef USE_OPENID
void LocaleService_SetOpenIDAuthKey(const char *authKey);
const char* LocaleService_GetOpenIDAuthKey();
#endif

View File

@ -4,18 +4,18 @@
#include "Hackshield.h" #include "Hackshield.h"
#include METIN2HS_INCLUDE_ANTICPXSVR #include METIN2HS_INCLUDE_ANTICPXSVR
#else #else
#pragma pack(push) //<2F><><EFBFBD><EFBFBD> alignment <20><><EFBFBD><EFBFBD> #pragma pack(push) //<2F><><EFBFBD><EFBFBD> alignment <20><><EFBFBD><EFBFBD>
#pragma pack(8) #pragma pack(8)
#define ANTICPX_TRANS_BUFFER_MAX 400 #define ANTICPX_TRANS_BUFFER_MAX 400
typedef struct _AHNHS_TRANS_BUFFER typedef struct _AHNHS_TRANS_BUFFER
{ {
unsigned char byBuffer[ANTICPX_TRANS_BUFFER_MAX/* <20>ۼ<EFBFBD><DBBC><EFBFBD> <20><>Ŷ<EFBFBD><C5B6> <20>ִ<EFBFBD> ũ<><C5A9> */]; unsigned char byBuffer[ANTICPX_TRANS_BUFFER_MAX/* <20>ۼ<EFBFBD><DBBC><EFBFBD> <20><>Ŷ<EFBFBD><C5B6> <20>ִ<EFBFBD> ũ<><C5A9> */];
unsigned short nLength; unsigned short nLength;
} AHNHS_TRANS_BUFFER, *PAHNHS_TRANS_BUFFER; } AHNHS_TRANS_BUFFER, *PAHNHS_TRANS_BUFFER;
#pragma pack(pop) // <20><><EFBFBD><EFBFBD> alignment <20><><EFBFBD><EFBFBD>. #pragma pack(pop) // <20><><EFBFBD><EFBFBD> alignment <20><><EFBFBD><EFBFBD>.
#endif /* !USE_AHNLAB_HACKSHIELD */ #endif /* !USE_AHNLAB_HACKSHIELD */
#include "../gamelib/RaceData.h" #include "../gamelib/RaceData.h"
@ -30,8 +30,8 @@ enum
HEADER_CG_LOGIN = 1, HEADER_CG_LOGIN = 1,
HEADER_CG_ATTACK = 2, HEADER_CG_ATTACK = 2,
HEADER_CG_CHAT = 3, HEADER_CG_CHAT = 3,
HEADER_CG_PLAYER_CREATE = 4, // <20><><EFBFBD>ο<EFBFBD> <20>÷<EFBFBD><C3B7>̾ <20><><EFBFBD><EFBFBD> HEADER_CG_PLAYER_CREATE = 4, // <20><><EFBFBD>ο<EFBFBD> <20>÷<EFBFBD><C3B7>̾ <20><><EFBFBD><EFBFBD>
HEADER_CG_PLAYER_DESTROY = 5, // <20>÷<EFBFBD><C3B7>̾ <20><><EFBFBD><EFBFBD>. HEADER_CG_PLAYER_DESTROY = 5, // <20>÷<EFBFBD><C3B7>̾ <20><><EFBFBD><EFBFBD>.
HEADER_CG_PLAYER_SELECT = 6, HEADER_CG_PLAYER_SELECT = 6,
HEADER_CG_CHARACTER_MOVE = 7, HEADER_CG_CHARACTER_MOVE = 7,
HEADER_CG_SYNC_POSITION = 8, HEADER_CG_SYNC_POSITION = 8,
@ -95,8 +95,8 @@ enum
HEADER_CG_MESSENGER = 67, HEADER_CG_MESSENGER = 67,
//HEADER_BLANK68 = 68, //HEADER_BLANK68 = 68,
HEADER_CG_MALL_CHECKOUT = 69, HEADER_CG_MALL_CHECKOUT = 69,
HEADER_CG_SAFEBOX_CHECKIN = 70, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2><EFBFBD><EFBFBD> <20>ִ´<D6B4>. HEADER_CG_SAFEBOX_CHECKIN = 70, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2><EFBFBD><EFBFBD> <20>ִ´<D6B4>.
HEADER_CG_SAFEBOX_CHECKOUT = 71, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>´<EFBFBD>. HEADER_CG_SAFEBOX_CHECKOUT = 71, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>´<EFBFBD>.
HEADER_CG_PARTY_INVITE = 72, HEADER_CG_PARTY_INVITE = 72,
HEADER_CG_PARTY_INVITE_ANSWER = 73, HEADER_CG_PARTY_INVITE_ANSWER = 73,
HEADER_CG_PARTY_REMOVE = 74, HEADER_CG_PARTY_REMOVE = 74,
@ -144,7 +144,6 @@ enum
HEADER_CG_GUILD_SYMBOL_CRC = 113, HEADER_CG_GUILD_SYMBOL_CRC = 113,
HEADER_CG_SCRIPT_SELECT_ITEM = 114, HEADER_CG_SCRIPT_SELECT_ITEM = 114,
HEADER_CG_LOGIN4 = 115, HEADER_CG_LOGIN4 = 115,
HEADER_CG_LOGIN5_OPENID = 116, //OpenID : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ű<EFBFBD><C5B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
HEADER_CG_RUNUP_MATRIX_ANSWER = 201, HEADER_CG_RUNUP_MATRIX_ANSWER = 201,
HEADER_CG_NEWCIBN_PASSPOD_ANSWER = 202, HEADER_CG_NEWCIBN_PASSPOD_ANSWER = 202,
@ -188,17 +187,17 @@ enum
HEADER_GC_CHANGE_SPEED = 18, HEADER_GC_CHANGE_SPEED = 18,
HEADER_GC_CHARACTER_UPDATE = 19, HEADER_GC_CHARACTER_UPDATE = 19,
#if defined(GAIDEN) #if defined(GAIDEN)
HEADER_GC_ITEM_DEL = 20, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20>߰<EFBFBD> HEADER_GC_ITEM_DEL = 20, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20>߰<EFBFBD>
HEADER_GC_ITEM_SET = 21, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20>߰<EFBFBD> HEADER_GC_ITEM_SET = 21, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20>߰<EFBFBD>
#else #else
HEADER_GC_ITEM_SET = 20, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20>߰<EFBFBD> HEADER_GC_ITEM_SET = 20, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20>߰<EFBFBD>
HEADER_GC_ITEM_SET2 = 21, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20>߰<EFBFBD> HEADER_GC_ITEM_SET2 = 21, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20>߰<EFBFBD>
#endif #endif
HEADER_GC_ITEM_USE = 22, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD> <20><><EFBFBD><EFBFBD>) HEADER_GC_ITEM_USE = 22, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E9BFA1> <20><><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD> <20><><EFBFBD><EFBFBD>)
HEADER_GC_ITEM_DROP = 23, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HEADER_GC_ITEM_DROP = 23, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HEADER_GC_ITEM_UPDATE = 25, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ HEADER_GC_ITEM_UPDATE = 25, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
HEADER_GC_ITEM_GROUND_ADD = 26, // <20>ٴڿ<D9B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD> HEADER_GC_ITEM_GROUND_ADD = 26, // <20>ٴڿ<D9B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD>
HEADER_GC_ITEM_GROUND_DEL = 27, // <20>ٴڿ<D9B4><DABF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> HEADER_GC_ITEM_GROUND_DEL = 27, // <20>ٴڿ<D9B4><DABF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
HEADER_GC_QUICKSLOT_ADD = 28, HEADER_GC_QUICKSLOT_ADD = 28,
HEADER_GC_QUICKSLOT_DEL = 29, HEADER_GC_QUICKSLOT_DEL = 29,
HEADER_GC_QUICKSLOT_SWAP = 30, HEADER_GC_QUICKSLOT_SWAP = 30,
@ -331,8 +330,6 @@ enum
HEADER_GC_HYBRIDCRYPT_SDB = 153, // SDB means Supplmentary Data Blocks HEADER_GC_HYBRIDCRYPT_SDB = 153, // SDB means Supplmentary Data Blocks
//HYBRID CRYPT //HYBRID CRYPT
HEADER_GC_AUTH_SUCCESS_OPENID = 154,
HEADER_GC_RUNUP_MATRIX_QUIZ = 201, HEADER_GC_RUNUP_MATRIX_QUIZ = 201,
HEADER_GC_NEWCIBN_PASSPOD_REQUEST = 202, HEADER_GC_NEWCIBN_PASSPOD_REQUEST = 202,
HEADER_GC_NEWCIBN_PASSPOD_FAILURE = 203, HEADER_GC_NEWCIBN_PASSPOD_FAILURE = 203,
@ -386,13 +383,13 @@ enum
PLAYER_PER_ACCOUNT3 = 3, PLAYER_PER_ACCOUNT3 = 3,
PLAYER_PER_ACCOUNT4 = 4, PLAYER_PER_ACCOUNT4 = 4,
PLAYER_ITEM_SLOT_MAX_NUM = 20, // <20>÷<EFBFBD><C3B7>̾<EFBFBD><CCBE><EFBFBD> <20><><EFBFBD>Դ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. PLAYER_ITEM_SLOT_MAX_NUM = 20, // <20>÷<EFBFBD><C3B7>̾<EFBFBD><CCBE><EFBFBD> <20><><EFBFBD>Դ<EFBFBD> <20><><EFBFBD><EEB0A1> <20><><EFBFBD><EFBFBD>.
QUICKSLOT_MAX_LINE = 4, QUICKSLOT_MAX_LINE = 4,
QUICKSLOT_MAX_COUNT_PER_LINE = 8, // Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> QUICKSLOT_MAX_COUNT_PER_LINE = 8, // Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QUICKSLOT_MAX_COUNT = QUICKSLOT_MAX_LINE * QUICKSLOT_MAX_COUNT_PER_LINE, QUICKSLOT_MAX_COUNT = QUICKSLOT_MAX_LINE * QUICKSLOT_MAX_COUNT_PER_LINE,
QUICKSLOT_MAX_NUM = 36, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><> QUICKSLOT_MAX_NUM = 36, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><>
SHOP_HOST_ITEM_MAX_NUM = 40, SHOP_HOST_ITEM_MAX_NUM = 40,
@ -423,8 +420,6 @@ enum
WEAR_MAX_NUM = 11, WEAR_MAX_NUM = 11,
OPENID_AUTHKEY_LEN = 32,
SHOP_TAB_NAME_MAX = 32, SHOP_TAB_NAME_MAX = 32,
SHOP_TAB_COUNT_MAX = 3, SHOP_TAB_COUNT_MAX = 3,
}; };
@ -465,7 +460,7 @@ typedef struct packet_mark_idxlist
BYTE header; BYTE header;
DWORD bufSize; DWORD bufSize;
WORD count; WORD count;
//<2F>ڿ<EFBFBD> size * (WORD + WORD)<29><>ŭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> //<2F>ڿ<EFBFBD> size * (WORD + WORD)<29><>ŭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
} TPacketGCMarkIDXList; } TPacketGCMarkIDXList;
typedef struct packet_mark_block typedef struct packet_mark_block
@ -474,7 +469,7 @@ typedef struct packet_mark_block
DWORD bufSize; DWORD bufSize;
BYTE imgIdx; BYTE imgIdx;
DWORD count; DWORD count;
// <20>ڿ<EFBFBD> 64 x 48 x <20>ȼ<EFBFBD>ũ<EFBFBD><C5A9>(4<><34><EFBFBD><EFBFBD>Ʈ) = 12288<38><38>ŭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> // <20>ڿ<EFBFBD> 64 x 48 x <20>ȼ<EFBFBD>ũ<EFBFBD><C5A9>(4<><34><EFBFBD><EFBFBD>Ʈ) = 12288<38><38>ŭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
} TPacketGCMarkBlock; } TPacketGCMarkBlock;
typedef struct command_symbol_upload typedef struct command_symbol_upload
@ -543,7 +538,7 @@ typedef struct command_login
char pwd[PASS_MAX_NUM + 1]; char pwd[PASS_MAX_NUM + 1];
} TPacketCGLogin; } TPacketCGLogin;
// start - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6> // start - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6>
typedef struct command_login2 typedef struct command_login2
{ {
BYTE header; BYTE header;
@ -559,14 +554,7 @@ typedef struct command_login3
char pwd[PASS_MAX_NUM + 1]; char pwd[PASS_MAX_NUM + 1];
DWORD adwClientKey[4]; DWORD adwClientKey[4];
} TPacketCGLogin3; } TPacketCGLogin3;
// end - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6>
typedef struct command_login5
{
BYTE header;
char authKey[OPENID_AUTHKEY_LEN + 1];
DWORD adwClientKey[4];
} TPacketCGLogin5;
// end - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6>
typedef struct command_direct_enter typedef struct command_direct_enter
{ {
@ -585,8 +573,8 @@ typedef struct command_player_select
typedef struct command_attack typedef struct command_attack
{ {
BYTE header; BYTE header;
BYTE bType; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> BYTE bType; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
DWORD dwVictimVID; // <20><> VID DWORD dwVictimVID; // <20><> VID
BYTE bCRCMagicCubeProcPiece; BYTE bCRCMagicCubeProcPiece;
BYTE bCRCMagicCubeFilePiece; BYTE bCRCMagicCubeFilePiece;
} TPacketCGAttack; } TPacketCGAttack;
@ -1014,9 +1002,9 @@ typedef struct SShopItemTable
DWORD vnum; DWORD vnum;
BYTE count; BYTE count;
TItemPos pos; // PC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD> TItemPos pos; // PC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD>
DWORD price; // PC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD> DWORD price; // PC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD>
BYTE display_pos; // PC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD>, <20><><EFBFBD><EFBFBD> <20><>ġ. BYTE display_pos; // PC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD>, <20><><EFBFBD><EFBFBD> <20><>ġ.
} TShopItemTable; } TShopItemTable;
typedef struct SPacketCGMyShop typedef struct SPacketCGMyShop
@ -1116,18 +1104,18 @@ typedef struct command_script_select_item
// From Server // From Server
enum EPhase enum EPhase
{ {
PHASE_CLOSE, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>) PHASE_CLOSE, // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
PHASE_HANDSHAKE, // <20>Ǽ<EFBFBD>..;; PHASE_HANDSHAKE, // <20>Ǽ<EFBFBD>..;;
PHASE_LOGIN, // <20>α<EFBFBD><CEB1><EFBFBD> <20><> PHASE_LOGIN, // <20>α<EFBFBD><CEB1><EFBFBD> <20><>
PHASE_SELECT, // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ȭ<><C8AD> PHASE_SELECT, // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ȭ<><C8AD>
PHASE_LOADING, // <20><><EFBFBD><EFBFBD> <20><> <20>ε<EFBFBD> ȭ<><C8AD> PHASE_LOADING, // <20><><EFBFBD><EFBFBD> <20><> <20>ε<EFBFBD> ȭ<><C8AD>
PHASE_GAME, // <20><><EFBFBD><EFBFBD> ȭ<><C8AD> PHASE_GAME, // <20><><EFBFBD><EFBFBD> ȭ<><C8AD>
PHASE_DEAD, // <20>׾<EFBFBD><D7BE><EFBFBD> <20><>.. (<28><><EFBFBD><EFBFBD> <20>ȿ<EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..) PHASE_DEAD, // <20>׾<EFBFBD><D7BE><EFBFBD> <20><>.. (<28><><EFBFBD><EFBFBD> <20>ȿ<EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..)
PHASE_DBCLIENT_CONNECTING, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PHASE_DBCLIENT_CONNECTING, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PHASE_DBCLIENT, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PHASE_DBCLIENT, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PHASE_P2P, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PHASE_P2P, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PHASE_AUTH, // <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> PHASE_AUTH, // <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
}; };
typedef struct packet_phase typedef struct packet_phase
@ -1136,7 +1124,7 @@ typedef struct packet_phase
BYTE phase; BYTE phase;
} TPacketGCPhase; } TPacketGCPhase;
typedef struct packet_blank // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ. typedef struct packet_blank // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ.
{ {
BYTE header; BYTE header;
} TPacketGCBlank; } TPacketGCBlank;
@ -1273,7 +1261,7 @@ enum EPKModes
PK_MODE_MAX_NUM, PK_MODE_MAX_NUM,
}; };
// 2004.11.20.myevan.CRaceData::PART_MAX_NUM <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ°Ͱ<EFBFBD> <20><>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> // 2004.11.20.myevan.CRaceData::PART_MAX_NUM <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ϴ°Ͱ<C2B0> <20><>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
enum ECharacterEquipmentPart enum ECharacterEquipmentPart
{ {
CHR_EQUIPPART_ARMOR, CHR_EQUIPPART_ARMOR,
@ -1293,7 +1281,7 @@ typedef struct packet_char_additional_info
BYTE bEmpire; BYTE bEmpire;
DWORD dwGuildID; DWORD dwGuildID;
DWORD dwLevel; DWORD dwLevel;
short sAlignment; //<2F><><EFBFBD><EFBFBD>ġ short sAlignment; //<2F><><EFBFBD><EFBFBD>ġ
BYTE bPKMode; BYTE bPKMode;
DWORD dwMountVnum; DWORD dwMountVnum;
} TPacketGCCharacterAdditionalInfo; } TPacketGCCharacterAdditionalInfo;
@ -1405,14 +1393,14 @@ typedef struct packet_GlobalTime
enum EChatType enum EChatType
{ {
CHAT_TYPE_TALKING, /* <20>׳<EFBFBD> ä<><C3A4> */ CHAT_TYPE_TALKING, /* <20>׳<EFBFBD> ä<><C3A4> */
CHAT_TYPE_INFO, /* <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><>) */ CHAT_TYPE_INFO, /* <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD>. <20><>) */
CHAT_TYPE_NOTICE, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ CHAT_TYPE_NOTICE, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
CHAT_TYPE_PARTY, /* <20><>Ƽ<EFBFBD><C6BC> */ CHAT_TYPE_PARTY, /* <20><>Ƽ<EFBFBD><C6BC> */
CHAT_TYPE_GUILD, /* <20><><EFBFBD>帻 */ CHAT_TYPE_GUILD, /* <20><>帻 */
CHAT_TYPE_COMMAND, /* <20><><EFBFBD><EFBFBD> */ CHAT_TYPE_COMMAND, /* <20><><EFBFBD><EFBFBD> */
CHAT_TYPE_SHOUT, /* <20><>ġ<EFBFBD><C4A1> */ CHAT_TYPE_SHOUT, /* <20><>ġ<EFBFBD><C4A1> */
CHAT_TYPE_WHISPER, // <20><><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> Only Client Enum CHAT_TYPE_WHISPER, // <20><><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> Only Client Enum
CHAT_TYPE_BIG_NOTICE, CHAT_TYPE_BIG_NOTICE,
CHAT_TYPE_MAX_NUM, CHAT_TYPE_MAX_NUM,
}; };
@ -1426,7 +1414,7 @@ typedef struct packet_chatting
BYTE bEmpire; BYTE bEmpire;
} TPacketGCChat; } TPacketGCChat;
typedef struct packet_whisper // <20><><EFBFBD><EFBFBD> <20><>Ŷ typedef struct packet_whisper // <20><><EFBFBD><EFBFBD> <20><>Ŷ
{ {
BYTE bHeader; BYTE bHeader;
WORD wSize; WORD wSize;
@ -1513,57 +1501,57 @@ enum EPointTypes
POINT_MAX_HP, // 6 POINT_MAX_HP, // 6
POINT_SP, // 7 POINT_SP, // 7
POINT_MAX_SP, // 8 POINT_MAX_SP, // 8
POINT_STAMINA, // 9 <20><><EFBFBD>׹̳<D7B9> POINT_STAMINA, // 9 <20><><EFBFBD>׹̳<D7B9>
POINT_MAX_STAMINA, // 10 <20>ִ<EFBFBD> <20><><EFBFBD>׹̳<D7B9> POINT_MAX_STAMINA, // 10 <20>ִ<EFBFBD> <20><><EFBFBD>׹̳<D7B9>
POINT_GOLD, // 11 POINT_GOLD, // 11
POINT_ST, // 12 <20>ٷ<EFBFBD> POINT_ST, // 12 <20>ٷ<EFBFBD>
POINT_HT, // 13 ü<><C3BC> POINT_HT, // 13 ü<><C3BC>
POINT_DX, // 14 <20><>ø<EFBFBD><C3B8> POINT_DX, // 14 <20><>ø<EFBFBD><C3B8>
POINT_IQ, // 15 <20><><EFBFBD>ŷ<EFBFBD> POINT_IQ, // 15 <20><><EFBFBD>ŷ<EFBFBD>
POINT_ATT_POWER, // 16 <20><><EFBFBD>ݷ<EFBFBD> POINT_ATT_POWER, // 16 <20><><EFBFBD>ݷ<EFBFBD>
POINT_ATT_SPEED, // 17 <20><><EFBFBD>ݼӵ<DDBC> POINT_ATT_SPEED, // 17 <20><><EFBFBD>ݼӵ<DDBC>
POINT_EVADE_RATE, // 18 ȸ<><C8B8><EFBFBD><EFBFBD> POINT_EVADE_RATE, // 18 ȸ<><C8B8><EFBFBD><EFBFBD>
POINT_MOV_SPEED, // 19 <20>̵<EFBFBD><CCB5>ӵ<EFBFBD> POINT_MOV_SPEED, // 19 <20>̵<EFBFBD><CCB5>ӵ<EFBFBD>
POINT_DEF_GRADE, // 20 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_DEF_GRADE, // 20 <20><><EFBFBD><EFBFBD><EFBFBD>
POINT_CASTING_SPEED, // 21 <20>ֹ<EFBFBD><D6B9>ӵ<EFBFBD> (<28><><EFBFBD>ٿ<EFBFBD>Ÿ<EFBFBD><EFBFBD>*100) / (100 + <20>̰<EFBFBD>) = <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ٿ<EFBFBD> Ÿ<><C5B8> POINT_CASTING_SPEED, // 21 <20>ֹ<EFBFBD><D6B9>ӵ<EFBFBD> (<28><>ٿ<EFBFBD>Ÿ<EFBFBD><C5B8>*100) / (100 + <20>̰<EFBFBD>) = <20><><EFBFBD><EFBFBD> <20><>ٿ<EFBFBD> Ÿ<><C5B8>
POINT_MAGIC_ATT_GRADE, // 22 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD> POINT_MAGIC_ATT_GRADE, // 22 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD>
POINT_MAGIC_DEF_GRADE, // 23 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_MAGIC_DEF_GRADE, // 23 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_EMPIRE_POINT, // 24 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_EMPIRE_POINT, // 24 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_LEVEL_STEP, // 25 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ܰ<EFBFBD>.. (1 2 3 <20><> <20><> <20><><EFBFBD><EFBFBD>, 4 <20>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>) POINT_LEVEL_STEP, // 25 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ܰ<EFBFBD>.. (1 2 3 <20><> <20><> <20><><EFBFBD><EFBFBD>, 4 <20>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>)
POINT_STAT, // 26 <20>ɷ<EFBFBD>ġ <20>ø<EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> POINT_STAT, // 26 <20>ɷ<EFBFBD>ġ <20>ø<EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_SUB_SKILL, // 27 <20><><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>Ʈ POINT_SUB_SKILL, // 27 <20><><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>Ʈ
POINT_SKILL, // 28 <20><>Ƽ<EFBFBD><C6BC> <20><>ų <20><><EFBFBD><EFBFBD>Ʈ POINT_SKILL, // 28 <20><>Ƽ<EFBFBD><C6BC> <20><>ų <20><><EFBFBD><EFBFBD>Ʈ
// POINT_SKILL_PASV, // 27 <20>нú<D0BD> <20><><EFBFBD><EFBFBD> <20>ø<EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> // POINT_SKILL_PASV, // 27 <20>нú<D0BD> <20><><EFBFBD> <20>ø<EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>
// POINT_SKILL_ACTIVE, // 28 <20><>Ƽ<EFBFBD><C6BC> <20><>ų <20><><EFBFBD><EFBFBD>Ʈ // POINT_SKILL_ACTIVE, // 28 <20><>Ƽ<EFBFBD><C6BC> <20><>ų <20><><EFBFBD><EFBFBD>Ʈ
POINT_MIN_ATK, // 29 <20>ּ<EFBFBD> <20>ı<EFBFBD><C4B1><EFBFBD> POINT_MIN_ATK, // 29 <20>ּ<EFBFBD> <20>ı<EFBFBD><C4B1><EFBFBD>
POINT_MAX_ATK, // 30 <20>ִ<EFBFBD> <20>ı<EFBFBD><C4B1><EFBFBD> POINT_MAX_ATK, // 30 <20>ִ<EFBFBD> <20>ı<EFBFBD><C4B1><EFBFBD>
POINT_PLAYTIME, // 31 <20>÷<EFBFBD><C3B7>̽ð<CCBD> POINT_PLAYTIME, // 31 <20>÷<EFBFBD><C3B7>̽ð<CCBD>
POINT_HP_REGEN, // 32 HP ȸ<><C8B8><EFBFBD><EFBFBD> POINT_HP_REGEN, // 32 HP ȸ<><C8B8><EFBFBD><EFBFBD>
POINT_SP_REGEN, // 33 SP ȸ<><C8B8><EFBFBD><EFBFBD> POINT_SP_REGEN, // 33 SP ȸ<><C8B8><EFBFBD><EFBFBD>
POINT_BOW_DISTANCE, // 34 Ȱ <20><><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD> <20><><EFBFBD><EFBFBD>ġ (meter) POINT_BOW_DISTANCE, // 34 Ȱ <20><><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD> <20><><EFBFBD><EFBFBD>ġ (meter)
POINT_HP_RECOVERY, // 35 ü<><C3BC> ȸ<><C8B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_HP_RECOVERY, // 35 ü<><C3BC> ȸ<><C8B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_SP_RECOVERY, // 36 <20><><EFBFBD>ŷ<EFBFBD> ȸ<><C8B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_SP_RECOVERY, // 36 <20><><EFBFBD>ŷ<EFBFBD> ȸ<><C8B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_POISON_PCT, // 37 <20><> Ȯ<><C8AE> POINT_POISON_PCT, // 37 <20><> Ȯ<><C8AE>
POINT_STUN_PCT, // 38 <20><><EFBFBD><EFBFBD> Ȯ<><C8AE> POINT_STUN_PCT, // 38 <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
POINT_SLOW_PCT, // 39 <20><><EFBFBD>ο<EFBFBD> Ȯ<><C8AE> POINT_SLOW_PCT, // 39 <20><><EFBFBD>ο<EFBFBD> Ȯ<><C8AE>
POINT_CRITICAL_PCT, // 40 ũ<><C5A9>Ƽ<EFBFBD><C6BC> Ȯ<><C8AE> POINT_CRITICAL_PCT, // 40 ũ<><C5A9>Ƽ<EFBFBD><C6BC> Ȯ<><C8AE>
POINT_PENETRATE_PCT, // 41 <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> Ȯ<><C8AE> POINT_PENETRATE_PCT, // 41 <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> Ȯ<><C8AE>
POINT_CURSE_PCT, // 42 <20><><EFBFBD><EFBFBD> Ȯ<><C8AE> POINT_CURSE_PCT, // 42 <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
POINT_ATTBONUS_HUMAN, // 43 <20>ΰ<EFBFBD><CEB0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> POINT_ATTBONUS_HUMAN, // 43 <20>ΰ<EFBFBD><CEB0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_ATTBONUS_ANIMAL, // 44 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD> POINT_ATTBONUS_ANIMAL, // 44 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD>
POINT_ATTBONUS_ORC, // 45 <20><><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD> POINT_ATTBONUS_ORC, // 45 <20><><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD>
POINT_ATTBONUS_MILGYO, // 46 <20>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD> POINT_ATTBONUS_MILGYO, // 46 <20>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD>
POINT_ATTBONUS_UNDEAD, // 47 <20><>ü<EFBFBD><C3BC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD> POINT_ATTBONUS_UNDEAD, // 47 <20><>ü<EFBFBD><C3BC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD>
POINT_ATTBONUS_DEVIL, // 48 <20><><EFBFBD><EFBFBD>(<28>Ǹ<EFBFBD>)<29><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD> POINT_ATTBONUS_DEVIL, // 48 <20><><EFBFBD><EFBFBD>(<28>Ǹ<EFBFBD>)<29><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD>
POINT_ATTBONUS_INSECT, // 49 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_ATTBONUS_INSECT, // 49 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_ATTBONUS_FIRE, // 50 ȭ<><C8AD><EFBFBD><EFBFBD> POINT_ATTBONUS_FIRE, // 50 ȭ<><C8AD><EFBFBD><EFBFBD>
POINT_ATTBONUS_ICE, // 51 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_ATTBONUS_ICE, // 51 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_ATTBONUS_DESERT, // 52 <20><EFBFBD><E7B8B7> POINT_ATTBONUS_DESERT, // 52 <20><EFBFBD><E7B8B7>
POINT_ATTBONUS_UNUSED0, // 53 UNUSED0 POINT_ATTBONUS_UNUSED0, // 53 UNUSED0
POINT_ATTBONUS_UNUSED1, // 54 UNUSED1 POINT_ATTBONUS_UNUSED1, // 54 UNUSED1
POINT_ATTBONUS_UNUSED2, // 55 UNUSED2 POINT_ATTBONUS_UNUSED2, // 55 UNUSED2
@ -1575,42 +1563,42 @@ enum EPointTypes
POINT_ATTBONUS_UNUSED8, // 61 UNUSED8 POINT_ATTBONUS_UNUSED8, // 61 UNUSED8
POINT_ATTBONUS_UNUSED9, // 62 UNUSED9 POINT_ATTBONUS_UNUSED9, // 62 UNUSED9
POINT_STEAL_HP, // 63 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> POINT_STEAL_HP, // 63 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_STEAL_SP, // 64 <20><><EFBFBD>ŷ<EFBFBD> <20><><EFBFBD><EFBFBD> POINT_STEAL_SP, // 64 <20><><EFBFBD>ŷ<EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_MANA_BURN_PCT, // 65 <20><><EFBFBD><EFBFBD> <20><> POINT_MANA_BURN_PCT, // 65 <20><><EFBFBD><EFBFBD> <20><>
/// <20><><EFBFBD>ؽ<EFBFBD> <20><><EFBFBD>ʽ<EFBFBD> /// /// <20><><EFBFBD>ؽ<EFBFBD> <20><><EFBFBD>ʽ<EFBFBD> ///
POINT_DAMAGE_SP_RECOVER, // 66 <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD> <20><> <20><><EFBFBD>ŷ<EFBFBD> ȸ<><C8B8> Ȯ<><C8AE> POINT_DAMAGE_SP_RECOVER, // 66 <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD> <20><> <20><><EFBFBD>ŷ<EFBFBD> ȸ<><C8B8> Ȯ<><C8AE>
POINT_BLOCK, // 67 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_BLOCK, // 67 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_DODGE, // 68 ȸ<><C8B8><EFBFBD><EFBFBD> POINT_DODGE, // 68 ȸ<><C8B8><EFBFBD><EFBFBD>
POINT_RESIST_SWORD, // 69 POINT_RESIST_SWORD, // 69
POINT_RESIST_TWOHAND, // 70 POINT_RESIST_TWOHAND, // 70
POINT_RESIST_DAGGER, // 71 POINT_RESIST_DAGGER, // 71
POINT_RESIST_BELL, // 72 POINT_RESIST_BELL, // 72
POINT_RESIST_FAN, // 73 POINT_RESIST_FAN, // 73
POINT_RESIST_BOW, // 74 ȭ<><C8AD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> POINT_RESIST_BOW, // 74 ȭ<><C8AD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_RESIST_FIRE, // 75 ȭ<><C8AD> <20><><EFBFBD><EFBFBD> : ȭ<><C8AD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> POINT_RESIST_FIRE, // 75 ȭ<><C8AD> <20><><EFBFBD><EFBFBD> : ȭ<><C8AD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_RESIST_ELEC, // 76 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> POINT_RESIST_ELEC, // 76 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_RESIST_MAGIC, // 77 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> POINT_RESIST_MAGIC, // 77 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_RESIST_WIND, // 78 <20>ٶ<EFBFBD> <20><><EFBFBD><EFBFBD> : <20>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD>ݿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> POINT_RESIST_WIND, // 78 <20>ٶ<EFBFBD> <20><><EFBFBD><EFBFBD> : <20>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD>ݿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
POINT_REFLECT_MELEE, // 79 <20><><EFBFBD><EFBFBD> <20>ݻ<EFBFBD> POINT_REFLECT_MELEE, // 79 <20><><EFBFBD><EFBFBD> <20>ݻ<EFBFBD>
/// Ư<><C6AF> <20><><EFBFBD>ؽ<EFBFBD> /// /// Ư<><C6AF> <20><><EFBFBD>ؽ<EFBFBD> ///
POINT_REFLECT_CURSE, // 80 <20><><EFBFBD><EFBFBD> <20>ݻ<EFBFBD> POINT_REFLECT_CURSE, // 80 <20><><EFBFBD><EFBFBD> <20>ݻ<EFBFBD>
POINT_POISON_REDUCE, // 81 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> POINT_POISON_REDUCE, // 81 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
/// <20><> <20>Ҹ<EFBFBD><D2B8><EFBFBD> /// /// <20><> <20>Ҹ<EFBFBD><D2B8> ///
POINT_KILL_SP_RECOVER, // 82 <20><> <20>Ҹ<EFBFBD><D2B8><EFBFBD> MP ȸ<><C8B8> POINT_KILL_SP_RECOVER, // 82 <20><> <20>Ҹ<EFBFBD><D2B8> MP ȸ<><C8B8>
POINT_EXP_DOUBLE_BONUS, // 83 POINT_EXP_DOUBLE_BONUS, // 83
POINT_GOLD_DOUBLE_BONUS, // 84 POINT_GOLD_DOUBLE_BONUS, // 84
POINT_ITEM_DROP_BONUS, // 85 POINT_ITEM_DROP_BONUS, // 85
/// ȸ<><C8B8> <20><><EFBFBD><EFBFBD> /// /// ȸ<><C8B8> <20><><EFBFBD><EFBFBD> ///
POINT_POTION_BONUS, // 86 POINT_POTION_BONUS, // 86
POINT_KILL_HP_RECOVER, // 87 POINT_KILL_HP_RECOVER, // 87
@ -1635,32 +1623,32 @@ enum EPointTypes
POINT_STAT_RESET_COUNT = 112, POINT_STAT_RESET_COUNT = 112,
POINT_HORSE_SKILL = 113, POINT_HORSE_SKILL = 113,
POINT_MALL_ATTBONUS, // 114 <20><><EFBFBD>ݷ<EFBFBD> +x% POINT_MALL_ATTBONUS, // 114 <20><><EFBFBD>ݷ<EFBFBD> +x%
POINT_MALL_DEFBONUS, // 115 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +x% POINT_MALL_DEFBONUS, // 115 <20><><EFBFBD><EFBFBD> +x%
POINT_MALL_EXPBONUS, // 116 <20><><EFBFBD><EFBFBD>ġ +x% POINT_MALL_EXPBONUS, // 116 <20><><EFBFBD><EFBFBD>ġ +x%
POINT_MALL_ITEMBONUS, // 117 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> x/10<31><30> POINT_MALL_ITEMBONUS, // 117 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> x/10<31><30>
POINT_MALL_GOLDBONUS, // 118 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> x/10<31><30> POINT_MALL_GOLDBONUS, // 118 <20><> <20><><EFBFBD><EFBFBD><EFBFBD> x/10<31><30>
POINT_MAX_HP_PCT, // 119 <20>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +x% POINT_MAX_HP_PCT, // 119 <20>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +x%
POINT_MAX_SP_PCT, // 120 <20>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD>ŷ<EFBFBD> +x% POINT_MAX_SP_PCT, // 120 <20>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD>ŷ<EFBFBD> +x%
POINT_SKILL_DAMAGE_BONUS, // 121 <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *(100+x)% POINT_SKILL_DAMAGE_BONUS, // 121 <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *(100+x)%
POINT_NORMAL_HIT_DAMAGE_BONUS, // 122 <20><>Ÿ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *(100+x)% POINT_NORMAL_HIT_DAMAGE_BONUS, // 122 <20><>Ÿ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *(100+x)%
POINT_SKILL_DEFEND_BONUS, // 123 <20><>ų <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_SKILL_DEFEND_BONUS, // 123 <20><>ų <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_NORMAL_HIT_DEFEND_BONUS, // 124 <20><>Ÿ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_NORMAL_HIT_DEFEND_BONUS, // 124 <20><>Ÿ <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POINT_PC_BANG_EXP_BONUS, // 125 POINT_PC_BANG_EXP_BONUS, // 125
POINT_PC_BANG_DROP_BONUS, // 126 PC<50><43> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ӷ<EFBFBD> <20><><EFBFBD>ʽ<EFBFBD> POINT_PC_BANG_DROP_BONUS, // 126 PC<50><43> <20><><EFBFBD><EFBFBD> <20><>ӷ<EFBFBD> <20><><EFBFBD>ʽ<EFBFBD>
POINT_ENERGY = 128, // 128 <20><><EFBFBD><EFBFBD> POINT_ENERGY = 128, // 128 <20><><EFBFBD>
// <20><><EFBFBD><EFBFBD> ui <20><>. // <20><><EFBFBD> ui <20><>.
// <20>̷<EFBFBD><CCB7><EFBFBD> <20>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>, // <20>̷<EFBFBD><CCB7><EFBFBD> <20>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>,
// uiTaskBar<61><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD> affect<63><74> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, // uiTaskBar<61><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD> affect<63><74> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>,
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<>󸮾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> blend_affect<63><74> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾ<EFBFBD>, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<>󸮾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> blend_affect<63><74> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾ<EFBFBD>,
// <20>ӽ÷<D3BD> <20>̷<EFBFBD><CCB7><EFBFBD> <20>д<EFBFBD>. // <20>ӽ÷<D3BD> <20>̷<EFBFBD><CCB7><EFBFBD> <20>д<EFBFBD>.
POINT_ENERGY_END_TIME = 129, // 129 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> POINT_ENERGY_END_TIME = 129, // 129 <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>
// Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>Ʈ // Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>Ʈ
POINT_MIN_WEP = 200, POINT_MIN_WEP = 200,
POINT_MAX_WEP, POINT_MAX_WEP,
POINT_MIN_MAGIC_WEP, POINT_MIN_MAGIC_WEP,
@ -1668,7 +1656,7 @@ enum EPointTypes
POINT_HIT_RATE, POINT_HIT_RATE,
//POINT_MAX_NUM = 255,=>stdafx.h <20><>/ //POINT_MAX_NUM = 255,=>stdafx.h <20><>/
}; };
typedef struct packet_points typedef struct packet_points
@ -1684,8 +1672,8 @@ typedef struct packet_point_change
DWORD dwVID; DWORD dwVID;
BYTE Type; BYTE Type;
long amount; // <20>ٲ<EFBFBD> <20><> long amount; // <20>ٲ<EFBFBD> <20><>
long value; // <20><><EFBFBD><EFBFBD> <20><> long value; // <20><><EFBFBD><EFBFBD> <20><>
} TPacketGCPointChange; } TPacketGCPointChange;
typedef struct packet_motion typedef struct packet_motion
@ -1723,7 +1711,7 @@ typedef struct packet_set_item
BYTE pos; BYTE pos;
DWORD vnum; DWORD vnum;
BYTE count; BYTE count;
DWORD flags; // <20>÷<EFBFBD><C3B7><EFBFBD> <20>߰<EFBFBD> DWORD flags; // <20>÷<EFBFBD><C3B7><EFBFBD> <20>߰<EFBFBD>
long alSockets[ITEM_SOCKET_SLOT_MAX_NUM]; long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM]; TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
} TPacketGCItemSet; } TPacketGCItemSet;
@ -1750,8 +1738,8 @@ typedef struct packet_set_item2
TItemPos Cell; TItemPos Cell;
DWORD vnum; DWORD vnum;
BYTE count; BYTE count;
DWORD flags; // <20>÷<EFBFBD><C3B7><EFBFBD> <20>߰<EFBFBD> DWORD flags; // <20>÷<EFBFBD><C3B7><EFBFBD> <20>߰<EFBFBD>
DWORD anti_flags; // <20>÷<EFBFBD><C3B7><EFBFBD> <20>߰<EFBFBD> DWORD anti_flags; // <20>÷<EFBFBD><C3B7><EFBFBD> <20>߰<EFBFBD>
bool highlight; bool highlight;
long alSockets[ITEM_SOCKET_SLOT_MAX_NUM]; long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM]; TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
@ -1832,7 +1820,7 @@ typedef struct packet_shop_start
struct packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM]; struct packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM];
} TPacketGCShopStart; } TPacketGCShopStart;
typedef struct packet_shop_start_ex // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TSubPacketShopTab* shop_tabs <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. typedef struct packet_shop_start_ex // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TSubPacketShopTab* shop_tabs <20><> <20><><EFBFBD><EFBFBD><EFBFBD>.
{ {
typedef struct sub_packet_shop_tab typedef struct sub_packet_shop_tab
{ {
@ -1975,12 +1963,12 @@ typedef struct packet_move
enum enum
{ {
QUEST_SEND_IS_BEGIN = 1 << 0, QUEST_SEND_IS_BEGIN = 1 << 0,
QUEST_SEND_TITLE = 1 << 1, // 28<32><38> <20><><EFBFBD><EFBFBD> QUEST_SEND_TITLE = 1 << 1, // 28<32><38> <20><><EFBFBD><EFBFBD>
QUEST_SEND_CLOCK_NAME = 1 << 2, // 16<31><36> <20><><EFBFBD><EFBFBD> QUEST_SEND_CLOCK_NAME = 1 << 2, // 16<31><36> <20><><EFBFBD><EFBFBD>
QUEST_SEND_CLOCK_VALUE = 1 << 3, QUEST_SEND_CLOCK_VALUE = 1 << 3,
QUEST_SEND_COUNTER_NAME = 1 << 4, // 16<31><36> <20><><EFBFBD><EFBFBD> QUEST_SEND_COUNTER_NAME = 1 << 4, // 16<31><36> <20><><EFBFBD><EFBFBD>
QUEST_SEND_COUNTER_VALUE = 1 << 5, QUEST_SEND_COUNTER_VALUE = 1 << 5,
QUEST_SEND_ICON_FILE = 1 << 6, // 24<32><34> <20><><EFBFBD><EFBFBD> QUEST_SEND_ICON_FILE = 1 << 6, // 24<32><34> <20><><EFBFBD><EFBFBD>
}; };
typedef struct packet_quest_info typedef struct packet_quest_info
@ -2003,8 +1991,8 @@ typedef struct packet_attack
{ {
BYTE header; BYTE header;
DWORD dwVID; DWORD dwVID;
DWORD dwVictimVID; // <20><> VID DWORD dwVictimVID; // <20><> VID
BYTE bType; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> BYTE bType; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
} TPacketGCAttack; } TPacketGCAttack;
typedef struct packet_c2c typedef struct packet_c2c
@ -2074,7 +2062,7 @@ enum EPVPModes
typedef struct packet_duel_start typedef struct packet_duel_start
{ {
BYTE header ; BYTE header ;
WORD wSize ; // DWORD<52><44> <20>? <20><><EFBFBD><EFBFBD> = (wSize - sizeof(TPacketGCPVPList)) / 4 WORD wSize ; // DWORD<52><44> <20>? <20><><EFBFBD><EFBFBD> = (wSize - sizeof(TPacketGCPVPList)) / 4
} TPacketGCDuelStart ; } TPacketGCDuelStart ;
typedef struct packet_pvp typedef struct packet_pvp
@ -2230,7 +2218,7 @@ enum
typedef struct packet_guild_sub_grade typedef struct packet_guild_sub_grade
{ {
char grade_name[GUILD_GRADE_NAME_MAX_LEN+1]; // 8+1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD> char grade_name[GUILD_GRADE_NAME_MAX_LEN+1]; // 8+1 <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD>
BYTE auth_flag; BYTE auth_flag;
} TPacketGCGuildSubGrade; } TPacketGCGuildSubGrade;
@ -2271,7 +2259,7 @@ enum EGuildWarState
GUILD_WAR_ON_WAR, GUILD_WAR_ON_WAR,
GUILD_WAR_END, GUILD_WAR_END,
GUILD_WAR_DURATION = 2*60*60, // 2<>ð<EFBFBD> GUILD_WAR_DURATION = 2*60*60, // 2<>ð<EFBFBD>
}; };
typedef struct packet_guild_war typedef struct packet_guild_war
@ -2347,8 +2335,8 @@ typedef struct SRefineTable
DWORD src_vnum; DWORD src_vnum;
DWORD result_vnum; DWORD result_vnum;
BYTE material_count; BYTE material_count;
int cost; // <20>ҿ<EFBFBD> <20><><EFBFBD><EFBFBD> int cost; // <20>ҿ<EFBFBD> <20><><EFBFBD>
int prob; // Ȯ<><C8AE> int prob; // Ȯ<><C8AE>
TMaterial materials[REFINE_MATERIAL_MAX_NUM]; TMaterial materials[REFINE_MATERIAL_MAX_NUM];
} TRefineTable; } TRefineTable;
@ -2383,17 +2371,17 @@ enum SPECIAL_EFFECT
SE_SUCCESS, SE_SUCCESS,
SE_FAIL, SE_FAIL,
SE_FR_SUCCESS, SE_FR_SUCCESS,
SE_LEVELUP_ON_14_FOR_GERMANY, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 14<31>϶<EFBFBD> ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ) SE_LEVELUP_ON_14_FOR_GERMANY, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 14<31>϶<EFBFBD> ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> )
SE_LEVELUP_UNDER_15_FOR_GERMANY,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 15<31>϶<EFBFBD> ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ) SE_LEVELUP_UNDER_15_FOR_GERMANY,//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 15<31>϶<EFBFBD> ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> )
SE_PERCENT_DAMAGE1, SE_PERCENT_DAMAGE1,
SE_PERCENT_DAMAGE2, SE_PERCENT_DAMAGE2,
SE_PERCENT_DAMAGE3, SE_PERCENT_DAMAGE3,
SE_AUTO_HPUP, SE_AUTO_HPUP,
SE_AUTO_SPUP, SE_AUTO_SPUP,
SE_EQUIP_RAMADAN_RING, // <20>ʽ´<CABD><C2B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ SE_EQUIP_RAMADAN_RING, // <20>ʽ´<CABD><C2B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
SE_EQUIP_HALLOWEEN_CANDY, // <20>ҷ<EFBFBD><D2B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(-_-;)<29><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ SE_EQUIP_HALLOWEEN_CANDY, // <20>ҷ<EFBFBD><D2B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(-_-;)<29><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
SE_EQUIP_HAPPINESS_RING, // ũ<><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0BAB9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ SE_EQUIP_HAPPINESS_RING, // ũ<><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0BAB9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
SE_EQUIP_LOVE_PENDANT, // <20>߷<EFBFBD>Ÿ<EFBFBD><C5B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҵ<EFBFBD>Ʈ(71145) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>Ʈ (<28>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20>ƴ<EFBFBD>) SE_EQUIP_LOVE_PENDANT, // <20>߷<EFBFBD>Ÿ<EFBFBD><C5B8> <20><><EFBFBD><EFBFBD><EFBFBD> <20>Ҵ<EFBFBD>Ʈ(71145) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>Ʈ (<28>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20>ƴ<EFBFBD>)
}; };
typedef struct SPacketGCSpecialEffect typedef struct SPacketGCSpecialEffect
@ -2472,14 +2460,6 @@ typedef struct packet_auth_success
BYTE bResult; BYTE bResult;
} TPacketGCAuthSuccess; } TPacketGCAuthSuccess;
typedef struct packet_auth_success_openid
{
BYTE bHeader;
DWORD dwLoginKey;
BYTE bResult;
char login[ID_MAX_NUM + 1];
} TPacketGCAuthSuccessOpenID;
typedef struct packet_channel typedef struct packet_channel
{ {
BYTE header; BYTE header;
@ -2696,7 +2676,7 @@ typedef struct packet_hs_check_req
AHNHS_TRANS_BUFFER Req; AHNHS_TRANS_BUFFER Req;
} TPacketHSCheck; } TPacketHSCheck;
//NOTE : recv/send<6E><64> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, bPacketData<74><61> <20><><EFBFBD><20>ٲ<EFBFBD><D9B2><EFBFBD>. //NOTE : recv/send<6E><64> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, bPacketData<74><61> <20><><EFBFBD><20>ٲ<EFBFBD><D9B2>.
typedef struct packet_xtrap_verify typedef struct packet_xtrap_verify
{ {
BYTE bHeader; BYTE bHeader;
@ -2714,7 +2694,7 @@ typedef struct packet_autoban_quiz
// END_OF_AUTOBAN // END_OF_AUTOBAN
#ifdef __AUCTION__ #ifdef __AUCTION__
// Argument<6E><74> <20><EFBFBD><EBB5B5> cmd<6D><64> <20><><EFBFBD><EFBFBD> <20>ٸ<EFBFBD><D9B8><EFBFBD>. // Argument<6E><74> <20><EFBFBD><EBB5B5> cmd<6D><64> <20><><EFBFBD><EFBFBD> <20>ٸ<EFBFBD><D9B8><EFBFBD>.
typedef struct SPacketCGAuctionCmd typedef struct SPacketCGAuctionCmd
{ {
BYTE bHeader; BYTE bHeader;
@ -2740,7 +2720,7 @@ typedef struct SPacketGCSpecificEffect
char effect_file[128]; char effect_file[128];
} TPacketGCSpecificEffect; } TPacketGCSpecificEffect;
// <20><>ȥ<EFBFBD><C8A5> // <20><>ȥ<EFBFBD><C8A5>
enum EDragonSoulRefineWindowRefineType enum EDragonSoulRefineWindowRefineType
{ {
DragonSoulRefineWindow_UPGRADE, DragonSoulRefineWindow_UPGRADE,

View File

@ -9,10 +9,6 @@ extern BOOL bVisibleNotice = true;
extern BOOL bTestServerFlag = FALSE; extern BOOL bTestServerFlag = FALSE;
extern int TWOHANDED_WEWAPON_ATT_SPEED_DECREASE_VALUE = 0; extern int TWOHANDED_WEWAPON_ATT_SPEED_DECREASE_VALUE = 0;
#ifdef USE_OPENID
extern int openid_test;
#endif
PyObject* appShowWebPage(PyObject* poSelf, PyObject* poArgs) PyObject* appShowWebPage(PyObject* poSelf, PyObject* poArgs)
{ {
char* szWebPage; char* szWebPage;
@ -1356,7 +1352,7 @@ void initapp()
PyModule_AddIntConstant(poModule, "VK_DELETE", VK_DELETE); PyModule_AddIntConstant(poModule, "VK_DELETE", VK_DELETE);
PyModule_AddIntConstant(poModule, "DIK_ESCAPE", DIK_ESCAPE); PyModule_AddIntConstant(poModule, "DIK_ESCAPE", DIK_ESCAPE);
PyModule_AddIntConstant(poModule, "DIK_ESC", DIK_ESCAPE); // <20><><EFBFBD>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD> PyModule_AddIntConstant(poModule, "DIK_ESC", DIK_ESCAPE); // <20><><EFBFBD>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD>
PyModule_AddIntConstant(poModule, "DIK_1", DIK_1); PyModule_AddIntConstant(poModule, "DIK_1", DIK_1);
PyModule_AddIntConstant(poModule, "DIK_2", DIK_2); PyModule_AddIntConstant(poModule, "DIK_2", DIK_2);
PyModule_AddIntConstant(poModule, "DIK_3", DIK_3); PyModule_AddIntConstant(poModule, "DIK_3", DIK_3);
@ -1516,15 +1512,4 @@ void initapp()
#else #else
PyModule_AddIntConstant(poModule, "ENABLE_NEW_EQUIPMENT_SYSTEM", 0); PyModule_AddIntConstant(poModule, "ENABLE_NEW_EQUIPMENT_SYSTEM", 0);
#endif #endif
#ifdef USE_OPENID
PyModule_AddIntConstant(poModule, "USE_OPENID", 1);
if (openid_test)
PyModule_AddIntConstant(poModule, "OPENID_TEST", 1);
else
PyModule_AddIntConstant(poModule, "OPENID_TEST", 0);
#else
PyModule_AddIntConstant(poModule, "USE_OPENID", 0);
PyModule_AddIntConstant(poModule, "OPENID_TEST", 0);
#endif /* USE_OPENID */
} }

View File

@ -150,7 +150,6 @@ class CMainPacketHeaderMap : public CNetworkPacketHeaderMap
Set(HEADER_GC_LOGIN_KEY, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCLoginKey), STATIC_SIZE_PACKET)); Set(HEADER_GC_LOGIN_KEY, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCLoginKey), STATIC_SIZE_PACKET));
Set(HEADER_GC_AUTH_SUCCESS, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCAuthSuccess), STATIC_SIZE_PACKET)); Set(HEADER_GC_AUTH_SUCCESS, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCAuthSuccess), STATIC_SIZE_PACKET));
Set(HEADER_GC_AUTH_SUCCESS_OPENID, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCAuthSuccessOpenID), STATIC_SIZE_PACKET));
Set(HEADER_GC_CHANNEL, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCChannel), STATIC_SIZE_PACKET)); Set(HEADER_GC_CHANNEL, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCChannel), STATIC_SIZE_PACKET));
Set(HEADER_GC_VIEW_EQUIP, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCViewEquip), STATIC_SIZE_PACKET)); Set(HEADER_GC_VIEW_EQUIP, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCViewEquip), STATIC_SIZE_PACKET));
Set(HEADER_GC_LAND_LIST, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCLandList), DYNAMIC_SIZE_PACKET)); Set(HEADER_GC_LAND_LIST, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCLandList), DYNAMIC_SIZE_PACKET));
@ -239,7 +238,7 @@ void CPythonNetworkStream::AbsoluteExitApplication()
bool CPythonNetworkStream::__IsNotPing() bool CPythonNetworkStream::__IsNotPing()
{ {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ȿö<C8BF> üũ<C3BC>̳<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ȯ<EFBFBD><C8AE> <20><><EFBFBD>߾<EFBFBD><DFBE><EFBFBD> <20>Ѵ<EFBFBD>. // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ȿö<C8BF> üũ<C3BC>̳<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ȯ<EFBFBD><C8AE> <20><><EFBFBD>߾<EFBFBD><DFBE> <20>Ѵ<EFBFBD>.
return false; return false;
} }
@ -251,7 +250,7 @@ DWORD CPythonNetworkStream::GetGuildID()
UINT CPythonNetworkStream::UploadMark(const char * c_szImageFileName) UINT CPythonNetworkStream::UploadMark(const char * c_szImageFileName)
{ {
// MARK_BUG_FIX // MARK_BUG_FIX
// <20><><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ĵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD> 0<>̴<EFBFBD>. // <20><><20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ĵ<EFBFBD> <20><><EFBFBD> <20><><EFBFBD>̵<EFBFBD> 0<>̴<EFBFBD>.
if (0 == m_dwGuildID) if (0 == m_dwGuildID)
return ERROR_MARK_UPLOAD_NEED_RECONNECT; return ERROR_MARK_UPLOAD_NEED_RECONNECT;
@ -321,13 +320,13 @@ UINT CPythonNetworkStream::UploadSymbol(const char* c_szImageFileName)
void CPythonNetworkStream::__DownloadMark() void CPythonNetworkStream::__DownloadMark()
{ {
// 3<><33> <20>ȿ<EFBFBD><C8BF><EFBFBD> <20>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>. // 3<><33> <20>ȿ<EFBFBD><C8BF><EFBFBD> <20>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>.
DWORD curTime = ELTimer_GetMSec(); DWORD curTime = ELTimer_GetMSec();
if (curTime < gs_nextDownloadMarkTime) if (curTime < gs_nextDownloadMarkTime)
return; return;
gs_nextDownloadMarkTime = curTime + 60000 * 3; // 3<><33> gs_nextDownloadMarkTime = curTime + 60000 * 3; // 3<><33>
CGuildMarkDownloader& rkGuildMarkDownloader = CGuildMarkDownloader::Instance(); CGuildMarkDownloader& rkGuildMarkDownloader = CGuildMarkDownloader::Instance();
rkGuildMarkDownloader.Connect(m_kMarkAuth.m_kNetAddr, m_kMarkAuth.m_dwHandle, m_kMarkAuth.m_dwRandomKey); rkGuildMarkDownloader.Connect(m_kMarkAuth.m_kNetAddr, m_kMarkAuth.m_dwHandle, m_kMarkAuth.m_dwRandomKey);
@ -593,19 +592,19 @@ bool CPythonNetworkStream::RecvPhasePacket()
switch (packet_phase.phase) switch (packet_phase.phase)
{ {
case PHASE_CLOSE: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>) case PHASE_CLOSE: // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
ClosePhase(); ClosePhase();
break; break;
case PHASE_HANDSHAKE: // <20>Ǽ<EFBFBD>..;; case PHASE_HANDSHAKE: // <20>Ǽ<EFBFBD>..;;
SetHandShakePhase(); SetHandShakePhase();
break; break;
case PHASE_LOGIN: // <20>α<EFBFBD><CEB1><EFBFBD> <20><> case PHASE_LOGIN: // <20>α<EFBFBD><CEB1><EFBFBD> <20><>
SetLoginPhase(); SetLoginPhase();
break; break;
case PHASE_SELECT: // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ȭ<><C8AD> case PHASE_SELECT: // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ȭ<><C8AD>
SetSelectPhase(); SetSelectPhase();
BuildProcessCRC(); BuildProcessCRC();
@ -615,15 +614,15 @@ bool CPythonNetworkStream::RecvPhasePacket()
// END_OF_MARK_BUG_FIX // END_OF_MARK_BUG_FIX
break; break;
case PHASE_LOADING: // <20><><EFBFBD><EFBFBD> <20><> <20>ε<EFBFBD> ȭ<><C8AD> case PHASE_LOADING: // <20><><EFBFBD><EFBFBD> <20><> <20>ε<EFBFBD> ȭ<><C8AD>
SetLoadingPhase(); SetLoadingPhase();
break; break;
case PHASE_GAME: // <20><><EFBFBD><EFBFBD> ȭ<><C8AD> case PHASE_GAME: // <20><><EFBFBD><EFBFBD> ȭ<><C8AD>
SetGamePhase(); SetGamePhase();
break; break;
case PHASE_DEAD: // <20>׾<EFBFBD><D7BE><EFBFBD> <20><>.. (<28><><EFBFBD><EFBFBD> <20>ȿ<EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..) case PHASE_DEAD: // <20>׾<EFBFBD><D7BE><EFBFBD> <20><>.. (<28><><EFBFBD><EFBFBD> <20>ȿ<EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..)
break; break;
} }
@ -655,7 +654,7 @@ bool CPythonNetworkStream::RecvDefaultPacket(int header)
if (!header) if (!header)
return true; return true;
TraceError("ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ <20><><EFBFBD><EFBFBD> %d, state %s\n", header, m_strPhase.c_str()); TraceError("ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ <20><><EFBFBD> %d, state %s\n", header, m_strPhase.c_str());
ClearRecvBuffer(); ClearRecvBuffer();
return true; return true;
} }

View File

@ -42,10 +42,6 @@ bool __IS_TEST_SERVER_MODE__=false;
extern bool SetDefaultCodePage(DWORD codePage); extern bool SetDefaultCodePage(DWORD codePage);
#ifdef USE_OPENID
extern int openid_test;
#endif
static const char* sc_apszPythonLibraryFilenames[] = static const char* sc_apszPythonLibraryFilenames[] =
{ {
@ -239,20 +235,20 @@ bool PackInitialize(const char * c_pszFolder)
} }
#ifdef _DISTRIBUTE #ifdef _DISTRIBUTE
Tracef("<EFBFBD>˸<EFBFBD>: <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<EFBFBD>.\n"); Tracef("<EFBFBD>˸<EFBFBD>: <20><> <20><><EFBFBD><EFBFBD>Դϴ<D4B4>.\n");
//if (0 == strPackType.compare("FILE")) //if (0 == strPackType.compare("FILE"))
//{ //{
// bPackFirst = FALSE; // bPackFirst = FALSE;
// Tracef("<22>˸<EFBFBD>: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<EFBFBD>.\n"); // Tracef("<22>˸<EFBFBD>: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Դϴ<D4B4>.\n");
//} //}
//else //else
//{ //{
// Tracef("<22>˸<EFBFBD>: <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<EFBFBD>.\n"); // Tracef("<22>˸<EFBFBD>: <20><> <20><><EFBFBD><EFBFBD>Դϴ<D4B4>.\n");
//} //}
#else #else
bPackFirst = FALSE; bPackFirst = FALSE;
Tracef("<EFBFBD>˸<EFBFBD>: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<EFBFBD>.\n"); Tracef("<EFBFBD>˸<EFBFBD>: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Դϴ<D4B4>.\n");
#endif #endif
CTextFileLoader::SetCacheMode(); CTextFileLoader::SetCacheMode();
@ -262,7 +258,7 @@ bool PackInitialize(const char * c_pszFolder)
CEterPackManager::Instance().SetCacheMode(); CEterPackManager::Instance().SetCacheMode();
CEterPackManager::Instance().SetSearchMode(bPackFirst); CEterPackManager::Instance().SetSearchMode(bPackFirst);
CSoundData::SetPackMode(); // Miles <20><><EFBFBD><EFBFBD> <20>ݹ<EFBFBD><DDB9><EFBFBD> <20><><EFBFBD><EFBFBD> CSoundData::SetPackMode(); // Miles <20><><EFBFBD><EFBFBD> <20>ݹ<EFBFBD><DDB9><EFBFBD> <20><><EFBFBD><EFBFBD>
std::string strPackName, strTexCachePackName; std::string strPackName, strTexCachePackName;
for (DWORD i = 1; i < TextLoader.GetLineCount() - 1; i += 2) for (DWORD i = 1; i < TextLoader.GetLineCount() - 1; i += 2)
@ -353,7 +349,7 @@ bool RunMainScript(CPythonLauncher& pyLauncher, const char* lpCmdLine)
SplitLine(lpCmdLine,seperator,&stVec); SplitLine(lpCmdLine,seperator,&stVec);
if (CmdSize == stVec.size() && stVec[0]==loginMark) if (CmdSize == stVec.size() && stVec[0]==loginMark)
{ {
char buf[MAX_PATH]; //TODO <20>Ʒ<EFBFBD> <20>Լ<EFBFBD> string <20><><EFBFBD>·<EFBFBD> <20><><EFBFBD><EFBFBD> char buf[MAX_PATH]; //TODO <20>Ʒ<EFBFBD> <20>Լ<EFBFBD> string <20><><EFBFBD>·<EFBFBD> <20><><EFBFBD><EFBFBD>
base64_decode(stVec[2].c_str(),buf); base64_decode(stVec[2].c_str(),buf);
stVec[2] = buf; stVec[2] = buf;
string_join(seperator,stVec,&stCmdLine); string_join(seperator,stVec,&stCmdLine);
@ -462,12 +458,12 @@ bool Main(HINSTANCE hInstance, LPSTR lpCmdLine)
if (pyLauncher.Create()) if (pyLauncher.Create())
{ {
ret=RunMainScript(pyLauncher, lpCmdLine); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>. ret=RunMainScript(pyLauncher, lpCmdLine); //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>.
} }
//ProcessScanner_ReleaseQuitEvent(); //ProcessScanner_ReleaseQuitEvent();
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
app->Clear(); app->Clear();
timeEndPeriod(1); timeEndPeriod(1);
@ -537,20 +533,6 @@ bool __IsLocaleVersion(LPSTR lpCmdLine)
return (strcmp(lpCmdLine, "--perforce-revision") == 0); return (strcmp(lpCmdLine, "--perforce-revision") == 0);
} }
#ifdef USE_OPENID
//2012.07.16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>Ϻ<EFBFBD> OpenID <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD>Ű <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
bool __IsOpenIDAuthKeyOption(LPSTR lpCmdLine)
{
return (strcmp(lpCmdLine, "--openid-authkey") == 0);
}
bool __IsOpenIDTestOption(LPSTR lpCmdLine) //Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
{
return (strcmp(lpCmdLine, "--openid-test") == 0);
}
#endif /* USE_OPENID */
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{ {
if (strstr(lpCmdLine, "--hackshield") != 0) if (strstr(lpCmdLine, "--hackshield") != 0)
@ -567,14 +549,13 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
SetDefaultCodePage(LocaleService_GetCodePage()); SetDefaultCodePage(LocaleService_GetCodePage());
bool bQuit = false; bool bQuit = false;
bool bAuthKeyChecked = false; //OpenID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ű<EFBFBD><C5B0> <20><><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD> <20>˱<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
int nArgc = 0; int nArgc = 0;
PCHAR* szArgv = CommandLineToArgv( lpCmdLine, &nArgc ); PCHAR* szArgv = CommandLineToArgv( lpCmdLine, &nArgc );
for( int i=0; i < nArgc; i++ ) { for( int i=0; i < nArgc; i++ ) {
if(szArgv[i] == 0) if(szArgv[i] == 0)
continue; continue;
if (__IsLocaleVersion(szArgv[i])) // #0000829: [M2EU] <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׻<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʵ<EFBFBD><CAB5><EFBFBD> <20><><EFBFBD><EFBFBD> if (__IsLocaleVersion(szArgv[i])) // #0000829: [M2EU] <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׻<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʵ<EFBFBD><CAB5><EFBFBD> <20><><EFBFBD><EFBFBD>
{ {
char szModuleName[MAX_PATH]; char szModuleName[MAX_PATH];
char szVersionPath[MAX_PATH]; char szVersionPath[MAX_PATH];
@ -601,7 +582,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
bQuit = true; bQuit = true;
} else if ((strcmp(szArgv[i], "--force-set-locale") == 0)) } else if ((strcmp(szArgv[i], "--force-set-locale") == 0))
{ {
// locale <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڰ<EFBFBD> <20><> <20><> <20><> <20>ʿ<EFBFBD><CABF><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ī, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) // locale <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڰ<EFBFBD> <20><> <20><> <20><> <20>ʿ<EFBFBD><CABF><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ī, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>)
if (nArgc <= i + 2) if (nArgc <= i + 2)
{ {
MessageBox(NULL, "Invalid arguments", ApplicationStringTable_GetStringz(IDS_APP_NAME, "APP_NAME"), MB_ICONSTOP); MessageBox(NULL, "Invalid arguments", ApplicationStringTable_GetStringz(IDS_APP_NAME, "APP_NAME"), MB_ICONSTOP);
@ -613,49 +594,13 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
LocaleService_ForceSetLocale(localeName, localePath); LocaleService_ForceSetLocale(localeName, localePath);
} }
#ifdef USE_OPENID
else if (__IsOpenIDAuthKeyOption(szArgv[i])) //2012.07.16 OpenID : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
// <20><><EFBFBD><EFBFBD>Ű <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڰ<EFBFBD> <20><> <20><> <20><> <20>ʿ<EFBFBD><CABF><EFBFBD> (<28><><EFBFBD><EFBFBD>Ű)
if (nArgc <= i + 1)
{
MessageBox(NULL, "Invalid arguments", ApplicationStringTable_GetStringz(IDS_APP_NAME, "APP_NAME"), MB_ICONSTOP);
goto Clean;
} }
const char* authKey = szArgv[++i];
//ongoing (2012.07.16)
//<2F><><EFBFBD><EFBFBD>Ű <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>κ<EFBFBD>
LocaleService_SetOpenIDAuthKey(authKey);
bAuthKeyChecked = true;
}
else if (__IsOpenIDTestOption(szArgv[i]))
{
openid_test = 1;
}
#endif /* USE_OPENID */
}
#ifdef USE_OPENID
//OpenID
//OpenID Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ű<EFBFBD><C5B0> <20>޾ƿ<DEBE><C6BF><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>) Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>.
if (false == bAuthKeyChecked && !openid_test)
{
MessageBox(NULL, "Invalid execution", ApplicationStringTable_GetStringz(IDS_APP_NAME, "APP_NAME"), MB_ICONSTOP);
goto Clean;
}
#endif /* USE_OPENID */
if(bQuit) if(bQuit)
goto Clean; goto Clean;
#if defined(NEEDED_COMMAND_ARGUMENT) #if defined(NEEDED_COMMAND_ARGUMENT)
// <20>ɼ<EFBFBD><C9BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD>α׷<CEB1> <20><><EFBFBD><EFBFBD> // <20>ɼ<EFBFBD><C9BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD>α׷<CEB1> <20><><EFBFBD><EFBFBD>
if (strstr(lpCmdLine, NEEDED_COMMAND_ARGUMENT) == 0) { if (strstr(lpCmdLine, NEEDED_COMMAND_ARGUMENT) == 0) {
MessageBox(NULL, ApplicationStringTable_GetStringz(IDS_ERR_MUST_LAUNCH_FROM_PATCHER, "ERR_MUST_LAUNCH_FROM_PATCHER"), ApplicationStringTable_GetStringz(IDS_APP_NAME, "APP_NAME"), MB_ICONSTOP); MessageBox(NULL, ApplicationStringTable_GetStringz(IDS_ERR_MUST_LAUNCH_FROM_PATCHER, "ERR_MUST_LAUNCH_FROM_PATCHER"), ApplicationStringTable_GetStringz(IDS_APP_NAME, "APP_NAME"), MB_ICONSTOP);
goto Clean; goto Clean;
@ -713,7 +658,7 @@ static void GrannyError(granny_log_message_type Type,
int Setup(LPSTR lpCmdLine) int Setup(LPSTR lpCmdLine)
{ {
/* /*
* Ÿ<≯<EFBFBD> <20><><EFBFBD>е<EFBFBD><D0B5><EFBFBD> <20>ø<EFBFBD><C3B8><EFBFBD>. * Ÿ<≯<EFBFBD> <20><><EFBFBD>е<EFBFBD><D0B5><EFBFBD> <20>ø<EFBFBD><C3B8><EFBFBD>.
*/ */
TIMECAPS tc; TIMECAPS tc;
UINT wTimerRes; UINT wTimerRes;
@ -725,7 +670,7 @@ int Setup(LPSTR lpCmdLine)
timeBeginPeriod(wTimerRes); timeBeginPeriod(wTimerRes);
/* /*
* <09>׷<EFBFBD><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڵ鸵 * <09>׷<EFBFBD><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڵ鸵
*/ */
granny_log_callback Callback; granny_log_callback Callback;