標題: 求saac 跟 gmsv之間的密碼驗證修改方法 [打印本頁]
作者: hongbbn 時間: 2013-5-4 23:37 標題: 求saac 跟 gmsv之間的密碼驗證修改方法
在saac方面
目前只知道修改 main.c內的
#ifndef _VIP
char buff[50];
sprintf(buff,"longzoro-%s-%d",svpass,123);
if( strcmp( svpas , buff ) == 0 ){
#else
--------------------------------------------------------------
和gmsv里的init.c
#ifdef _VIP_ALL
saacproto_ACServerLogin_send(acfd, getGameservername(), getAccountserverpasswd(), getCheckVip()*2);
#else
char buff[50];
sprintf(buff,"longzoro-%s-%d",getAccountserverpasswd(),123);
saacproto_ACServerLogin_send(acfd, getGameservername(), buff);
#endif
==========
net.c里的
}else if (strcmp(Connect[ sockfd ].cdkey, "longzoro")!=0 || strcmp(Connect[ sockfd ].cdkey, "zengweimin")!=0) {
=-=========
還有npc_sysinfo.c里的
#define NPC_SYSINFO_PASSWD_DEFAULT "longzoro"
-------------------------------------
但我修改了以上地方都不能一至登入
網路上某些端可以登入,但某些源碼無法登入
請求各位大大還有其他地方要修改嗎?
還有一點...在linux上,我是用redhat的,如何編譯saac??有教學嗎??
想架個編個2.5玩玩,但總是無法完整打開, 網上有的教學說可以關掉saac的vip驗證,但我關了後,saac可以打開,但gmsv一連上後,兩秒就斷線
求解
作者: hongbbn 時間: 2013-5-4 23:41
這個是跳vip檢測
aac/main.c:
找到if(checkvip==0 || checkvip!=123456 * 2)
改为if(1==0)
这样gmsvjt不会出现[failed][duplicate login]错误(绕过vip检查)
但修改了後,連上去好快就掉線了
因為不知如何在linux編譯saac,現只能在windows編,但也不能通過saac咎gmsv之間的密碼驗證
這問題困擾了我好久
認真求解
作者: hongbbn 時間: 2013-5-6 01:35
最後也關上了 saac 里的verion.h vip驗證,但運行一會後,出現
ACCharList 或 ACShowFMList
這兩個錯誤而斷線
求解
作者: wty4321 時間: 2013-5-6 12:53
我也遇到了這個問題,我是替換了原有的檢測使saac可以通用
首先,打開\saac\include\version.h,找到#define _VIP,將其註釋掉
//#define _VIP //會員版本認證
然後,打開\saac\main.c,找到gmsv gs[MAXCONNECTION];,將其後跟著的#ifdef _VIP、#ifndef _VIP、#ifdef _VIP全註釋掉,然後加上正常檢測代碼(就是只檢測兩個.cf文件裏面服務器密碼是否相同)
Step1.使用 /* */ 註釋多行代碼(或者你也可以將其整個刪掉)複製內容到剪貼板
代碼:
gmsv gs[MAXCONNECTION];
/*#ifdef _VIP
int login_game_server( int ti , char *svname , char *svpas , int checkvip,
char *result , int resultlen ,
char *retdata , int retdatalen )
#else
int login_game_server( int ti , char *svname , char *svpas ,
char *result , int resultlen ,
char *retdata , int retdatalen )
#endif
{
#ifndef _VIP
char buff[50];
sprintf(buff,"longzoro-%s-%d",svpass,123);
if( strcmp( svpas , buff ) == 0 ){
#else
if( strcmp( svpas , svpass ) == 0 ){
#endif
log( "服務器密碼正確 %s\n" , svname );
} else {
log( "服務器密碼錯誤 %s\n" , svname );
snprintf( result , resultlen , "失敗" );
snprintf( retdata , retdatalen , "密碼錯誤" );
return 0;
}
#ifdef _VIP
if(checkvip==0 || checkvip!=6302 * 2)
{
snprintf( result , resultlen , "failed" );
snprintf( retdata , retdatalen , "duplicate login" );
return 0;
}
#endif
{
int i;
for(i=0;i<MAXCONNECTION;i++){
if( gs[i].use &&
strcmp( gs[i].name , svname ) == 0 ){
snprintf( result, resultlen, "failed" );
snprintf( retdata , retdatalen, "duplicate login" );
return 0;
}
}
}
snprintf( gs[ti].name , sizeof(gs[ti].name), "%s" , svname );
gs[ti].fd = ti;
snprintf( result , resultlen ,SUCCESSFUL );
snprintf( retdata , retdatalen , "Nothing special" );
DeleteMemLockServer(svname); // Arminius 7.31 unlock server
return 0;
}*/
Step2.在gmsv gs[MAXCONNECTION];后加上正常檢測代碼,顯示如下(注意直接換行后粘貼到gmsv gs[MAXCONNECTION];那行下面就行)複製內容到剪貼板
代碼:
int login_game_server( int ti , char *svname , char *svpas ,
char *result , int resultlen ,
char *retdata , int retdatalen )
{
if( strcmp( svpas , svpass ) == 0 ){
log( "服务器密码正确 %s\n" , svname );
} else {
log( "服务器密码错误 %s\n" , svname );
snprintf( result , resultlen , FAILED );
snprintf( retdata , retdatalen , "bad passwd" );
return 0;
}
{
int i;
for(i=0;i<MAXCONNECTION;i++){
if( gs[i].use &&
strcmp( gs[i].name , svname ) == 0 ){
snprintf( result, resultlen, FAILED );
snprintf( retdata , retdatalen, "duplicate login" );
return 0;
}
}
}
snprintf( gs[ti].name , sizeof(gs[ti].name), "%s" , svname );
gs[ti].fd = ti;
snprintf( result , resultlen ,SUCCESSFUL );
snprintf( retdata , retdatalen , "Nothing special" );
DeleteMemLockServer(svname); // Arminius 7.31 unlock server
return 0;
}
[ 本帖最後由 wty4321 於 2013-5-7 10:27 編輯 ]
作者: hongbbn 時間: 2013-5-6 21:00
成功了,但又出現另一個情況
..............................
Íæ¼Ò=0 ³èÎï=0 ÎïÆ·=0 Óʼþ:0 Õ½¶·:0 Sys:[0.0042]
NT:[0.0042] NG:[0.0000] BT:[0.0000] CH:[0.0000]
.....................................
Íæ¼Ò=0 ³èÎï=0 ÎïÆ·=0 Óʼþ:0 Õ½¶·:0 Sys:[0.0032]
NT:[0.0032] NG:[0.0000] BT:[0.0000] CH:[0.0000]
.....................................
Íæ¼Ò=0 ³èÎï=0 ÎïÆ·=0 Óʼþ:0 Õ½¶·:0 Sys:[0.0036]
NT:[0.0035] NG:[0.0000] BT:[0.0000] CH:[0.0000]
.....................................
Íæ¼Ò=0 ³èÎï=0 ÎïÆ·=0 Óʼþ:0 Õ½¶·:0 Sys:[0.0033]
NT:[0.0033] NG:[0.0000] BT:[0.0000] CH:[0.0000]
.....................................
Íæ¼Ò=0 ³èÎï=0 ÎïÆ·=0 Óʼþ:0 Õ½¶·:0 Sys:[0.0041]
NT:[0.0041] NG:[0.0000] BT:[0.0000] CH:[0.0000]
.....................................
Íæ¼Ò=0 ³èÎï=0 ÎïÆ·=0 Óʼþ:0 Õ½¶·:0 Sys:[0.0034]
NT:[0.0034] NG:[0.0000] BT:[0.0000] CH:[0.0000]
.....................................
Íæ¼Ò=0 ³èÎï=0 ÎïÆ·=0 Óʼþ:0 Õ½¶·:0 Sys:[0.0029]
NT:[0.0029] NG:[0.0000] BT:[0.0000] CH:[0.0000]
.....................................
Íæ¼Ò=0 ³èÎï=0 ÎïÆ·=0 Óʼþ:0 Õ½¶·:0 Sys:[0.0032]
NT:[0.0032] NG:[0.0000] BT:[0.0000] CH:[0.0000]
.....................................
Íæ¼Ò=0 ³èÎï=0 ÎïÆ·=0 Óʼþ:0 Õ½¶·:0 Sys:[0.0044]
NT:[0.0044] NG:[0.0000] BT:[0.0000] CH:[0.0000]
.....................................
Íæ¼Ò=0 ³èÎï=0 ÎïÆ·=0 Óʼþ:0 Õ½¶·:0 Sys:[0.0035]
NT:[0.0035] NG:[0.0000] BT:[0.0000] CH:[0.0000]
............................
=========ÒÔÏÂÊÇ·þÎñÆ÷³ö´íÔÒò=========
±ê×¼ÐÅÏ¢: 11
ÔÚÏßÈËÊý: 0
×î¸ßÔÚÏß: 0
SAACº¯Êý: ACShowFMList
=========ÒÔÉÏÊÇ·þÎñÆ÷³ö´íÔÒò=========
±£´æÔËÐÐÖеÄÊý¾Ý
¹Ø±ÕSAACÁ¬½Ó:0
¹Ø±Õ°ó¶¨¶Ë¿Ú:0
[root@localhost gmsv]#
運行十行之後,就斷了
什麼": ACShowFMList"
查了好多資料,都不知怎麼回事
同樣的data,網上下載的端就沒出現此問題
請問有遇過這問題嗎?
作者: aoron 時間: 2013-5-7 05:23
我也遇到这个问题,弄了几个小时,请问你是怎么解决的、
作者: wty4321 時間: 2013-5-7 10:47
我沒有遇到你所提到的問題
=========以下是服务器出错原因=========
标准信息: 11
?: 0
?: 0
SAAC函数: ACShowFMList;
=========以上是服务器出错原因=========
這大約是你得到出錯信息,那就是提示SAAC程式的ACShowFMList函數(顯示家族列表)有問題
我這邊涉及ACShowFMList函數的有以下文件,你可以嘗試將他們用其他源碼的同名文件替換,看看是否能解決問題
(也許你那邊有其他文件也涉及此函數,請用文本編輯程式對源碼搜索“ACShowFMList”)
(說實話我沒學過C++,如果你會的話,你可以自行檢查一下哪裡出錯)
acfamily.h saacproto_serv.h
acfamily.c saacproto_serv.c recv.c
作者: hongbbn 時間: 2013-5-7 13:25
先謝謝哦
歡迎光臨 We Love SA 石器時代研討中心 (http://lab.welovesa.com/) |
Powered by Discuz! 6.0.0 |