主题:關於一個網路遊戲"人在江湖"源碼修改的問題??
關於一個網路遊戲"人在江湖"源碼修改的問題??
各位先進大家好
小弟日前在因緣際會下不小心就架好了台灣第一套網路遊戲"人在江湖"的伺服
也有對源碼做些許的修改
近日碰到了一個難題
不知道這裡是不是能夠尋求到解答
本身對程式碼是完全的外行
僅靠一些簡單的邏輯去做部份參數的修改
這是我現在開伺服相關的網站
http://xmud.miroko.tw
內有相關程式資料
有興趣的人可以來參考看看喔!!
下列是"人在江湖"的一段源碼,
主要是計算裝備損壞的部份
武器的部份並無此計算式
所以武器的使用是不會損壞的
而我想把武器也設定成有損壞
該如何修改程式源碼?
另外我也附加了該程式源碼完整的連結
http://blog.yam.com/xmud/article/21423964
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//裝備保護玩家,但自身也受損
#define EP_force 1
#define EP_damage 2
void EquipProtect(CActiveObject *you, int nType, int &damage, int nWhere)
{
int nRet = 0;
CGoods * lpGoods;
CEquip * lpEquip;
char szTxt[128];
if (you == NULL)
return;
if (damage <= 0) {
damage = 0;
return;
}
POSITION pos = you->listequip.GetHeadPosition();
while(pos != NULL) {
lpGoods = you->listequip.GetNext(pos);
if(lpGoods->lpGoods->nKinds & GK_equip) { //如果是裝備
lpEquip = dynamic_cast<CEquip *>(lpGoods);
if(lpEquip->nWearWhere & nWhere) { //穿到了挨打的地方
switch(nType) {
case EP_force:
nRet += lpEquip->lpEquip->nDefanceForce;//防御內力
if (you->bPlayer && (you->nStatus == AOS_kill)
&& !(lpEquip->lpGoods->nUsage & GP_noold))
lpEquip->nNew -= damage >> 6;//裝備受損
break;
case EP_damage:
nRet += lpEquip->lpEquip->nDefance;//一般防御
if (you->bPlayer && (you->nStatus == AOS_kill)
&& !(lpEquip->lpGoods->nUsage & GP_noold))
lpEquip->nNew -= damage >> 5;//裝備受損
break;
}
if (lpEquip->nNew <= 0 && you->bPlayer) {
sprintf(szTxt, "%s %s %s的%s在戰鬥中被打壞了!", SZOKMSG, szCyanHigt,
you->szCName, lpEquip->lpGoods->szCName);
you->SendMsg(szTxt);
you->SendMsgToAll(szTxt);
CString szStatus;
switch(lpEquip->lpEquip->nWhereWear){
case EW_neck:
szStatus = "護頸";
break;
case EW_chest:
szStatus = "護胸";
break;
case EW_abdomen:
szStatus = "護腹";
break;
case EW_wrist:
szStatus = "護腕";
break;
case EW_knee:
szStatus = "護膝";
break;
case EW_head:
szStatus = "護頭";
break;
case EW_hand:
szStatus = "護手";
break;
case EW_foot:
szStatus = "護腳";
break;
case EW_body:
szStatus = "護身";
break;
}
sprintf(szTxt, "%s %s %s %d %s", SZSUBGOODS,
lpEquip->lpGoods->szCName, szStatus, 1, lpEquip->lpGoods->szUnit);
you->SendMsg(szTxt);
you->SubGoods(lpEquip->lpGoods->szEName);
}
}//if 穿到了挨打的地方
}//如果是裝備
}//while
damage -= nRet;
if( damage < 0 ) damage = 0;
// return nRet;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
再附上一段有關武器傷害的計算式
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 臂力及武器
damage = ( me->nStr * 1.1 )+(me->nCon*0.4)+(me->nDex*0.3)+(me->nInt*0.1) ;
damage -= ( you->nCon * 0.2 )+( you->nDex * 0.1 );
#define Random( n) ( ( (rand()%n)> 100 )?100:(rand()%n))
if( (me->nStr-you->nCon) < 5 && (me->nStr-you->nCon) > 0 )
damage += Random( me->nStr + (me->nStr /3));
if ((me->lpWeapon != NULL) && (me->nStatus == AOS_kill)) {
damage += me->lpWeapon->lpWeapon->nAttack;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
各位先進大家好
小弟日前在因緣際會下不小心就架好了台灣第一套網路遊戲"人在江湖"的伺服
也有對源碼做些許的修改
近日碰到了一個難題
不知道這裡是不是能夠尋求到解答
本身對程式碼是完全的外行
僅靠一些簡單的邏輯去做部份參數的修改
這是我現在開伺服相關的網站
http://xmud.miroko.tw
內有相關程式資料
有興趣的人可以來參考看看喔!!
下列是"人在江湖"的一段源碼,
主要是計算裝備損壞的部份
武器的部份並無此計算式
所以武器的使用是不會損壞的
而我想把武器也設定成有損壞
該如何修改程式源碼?
另外我也附加了該程式源碼完整的連結
http://blog.yam.com/xmud/article/21423964
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//裝備保護玩家,但自身也受損
#define EP_force 1
#define EP_damage 2
void EquipProtect(CActiveObject *you, int nType, int &damage, int nWhere)
{
int nRet = 0;
CGoods * lpGoods;
CEquip * lpEquip;
char szTxt[128];
if (you == NULL)
return;
if (damage <= 0) {
damage = 0;
return;
}
POSITION pos = you->listequip.GetHeadPosition();
while(pos != NULL) {
lpGoods = you->listequip.GetNext(pos);
if(lpGoods->lpGoods->nKinds & GK_equip) { //如果是裝備
lpEquip = dynamic_cast<CEquip *>(lpGoods);
if(lpEquip->nWearWhere & nWhere) { //穿到了挨打的地方
switch(nType) {
case EP_force:
nRet += lpEquip->lpEquip->nDefanceForce;//防御內力
if (you->bPlayer && (you->nStatus == AOS_kill)
&& !(lpEquip->lpGoods->nUsage & GP_noold))
lpEquip->nNew -= damage >> 6;//裝備受損
break;
case EP_damage:
nRet += lpEquip->lpEquip->nDefance;//一般防御
if (you->bPlayer && (you->nStatus == AOS_kill)
&& !(lpEquip->lpGoods->nUsage & GP_noold))
lpEquip->nNew -= damage >> 5;//裝備受損
break;
}
if (lpEquip->nNew <= 0 && you->bPlayer) {
sprintf(szTxt, "%s %s %s的%s在戰鬥中被打壞了!", SZOKMSG, szCyanHigt,
you->szCName, lpEquip->lpGoods->szCName);
you->SendMsg(szTxt);
you->SendMsgToAll(szTxt);
CString szStatus;
switch(lpEquip->lpEquip->nWhereWear){
case EW_neck:
szStatus = "護頸";
break;
case EW_chest:
szStatus = "護胸";
break;
case EW_abdomen:
szStatus = "護腹";
break;
case EW_wrist:
szStatus = "護腕";
break;
case EW_knee:
szStatus = "護膝";
break;
case EW_head:
szStatus = "護頭";
break;
case EW_hand:
szStatus = "護手";
break;
case EW_foot:
szStatus = "護腳";
break;
case EW_body:
szStatus = "護身";
break;
}
sprintf(szTxt, "%s %s %s %d %s", SZSUBGOODS,
lpEquip->lpGoods->szCName, szStatus, 1, lpEquip->lpGoods->szUnit);
you->SendMsg(szTxt);
you->SubGoods(lpEquip->lpGoods->szEName);
}
}//if 穿到了挨打的地方
}//如果是裝備
}//while
damage -= nRet;
if( damage < 0 ) damage = 0;
// return nRet;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
再附上一段有關武器傷害的計算式
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 臂力及武器
damage = ( me->nStr * 1.1 )+(me->nCon*0.4)+(me->nDex*0.3)+(me->nInt*0.1) ;
damage -= ( you->nCon * 0.2 )+( you->nDex * 0.1 );
#define Random( n) ( ( (rand()%n)> 100 )?100:(rand()%n))
if( (me->nStr-you->nCon) < 5 && (me->nStr-you->nCon) > 0 )
damage += Random( me->nStr + (me->nStr /3));
if ((me->lpWeapon != NULL) && (me->nStatus == AOS_kill)) {
damage += me->lpWeapon->lpWeapon->nAttack;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~