منظمة قانون التطور - Evolution Law Organization
(نسخة قابلة للطباعة من الموضوع)
https://lb-h.mt2academy.com/t577
أنقر هنا لمشاهدة الموضوع بهيئته الأصلية

شرح : [تجميعة] بعض شروحات السورس
sharqawy 07-06-2020 06:43 مساء
السلام عليكم ورحمة الله وبركاته ،،

أقدم إليكم بعض شروحات السورس التي يبحث عنها معظم الناس .

1- تفعيل ميزات 6 و 7 في السورس

قم بفتح ملف char_item.cpp وقم بالبحث عن (مرتين) : 

                if (LC_IsEurope() || LC_IsSingapore() || LC_IsVietnam())
                    return false;


وقم بوضع علامتي // قبلهما (تعطيلهما حتى يظهروا باللون الأخضر)
أو حذفهما

2- تعديل نسبة نجاح الأحجار

قم بفتح ملف char_item.cpp وقم بالبحث عن :

for (i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
                    if (item2->GetSocket(i) >= 1 && item2->GetSocket(i) <= 2 && item2->GetSocket(i) >= item->GetValue(2))
                    {
                        if (number(1, 100) <= 30) // 30 Is Success Rate(30 هي نسبة النجاح)


بإمكانك تعديلها لأي رقم تريد .

3- إزالة ال3% ضرائب مبيعات عند بيع بند 
قم بفتح ملفي shop.cpp و shop_manager.cpp وقم بالبحث عن :
iVal = 3;

وقم بتغييرها إلى :
iVal = 0;


أو أي نسبة تريد.

4- تفعيل بيع بنود بسعر 0 يانغ (عند وضع بند سعره 0 يظهر أنك لا تملك ما يكفي من اليانغ)
نقوم بفتح ملف shop.cpp ونقوم بالبحث عن : 
if (r_item.price <= 0)


ونقوم بإستبدالها بـ :

if (r_item.price < 0)


5- تفعيل أمر pc.change_name
نقوم بفتح ملف questlua_pc.cpp

ونقوم بالبحث عن (في دالة pc_change_name) : 

        if ( LC_IsEurope() )
        {
            lua_pushnumber(L, 5);
            return 1;
        }


ونقوم بحذفها أو تعطيلها (وضع // أو /*)

6- تفعيل بيع كرات البركة وخام نحاس سحري لدى المتاجر 

نقوم بفتح ملف shop.cpp والبحث عن : 

        if (quest::CQuestManager::instance().GetEventFlag("hivalue_item_sell") == 0)
        {
            if (item->GetVnum() == 70024 || item->GetVnum() == 70035)
            {
                return SHOP_SUBHEADER_GC_END;
            }
        }


ونقوم بحذفه أو تعطيله (وضع علامتي //)
ونقوم بالبحث عن : 

        if (quest::CQuestManager::instance().GetEventFlag("hivalue_item_sell") == 0)
        {
            if (item.vnum == 70024 || item.vnum == 70035)
            {
                continue;
            }
        }


ونقوم بنفس الشيئ (تعطيل أو حذف)

7- تعطيل مميزات 6 و 7 للأزياء 

نقوم بفتح ملف char_item.cpp ونقوم بالبحث عن : 

case 71051:


وبداخلها نقوم بالبحث عن : 

if (!IsValidItemPosition(DestCell) || !(item2 = GetInventoryItem(wDestCell)))



ونضيف بعدها : 

            if (item2->GetType() == ITEM_COSTUME)
            {
                ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't add 6&7 bonuses on costumes"));
                return false;
            }


8- تعديل وقت إغلاق السيرفر بأمر shutdown (الطبيعي 10 ثوانٍ)

نقوم بفتح ملف cmd_general.cpp ونقوم بالبحث عن : 

Shutdown(10);


قم بإستبدالها بـ : 

Shutdown(30); // Close After 30 Seconds


9- تعديل أقصى مستوى 

نقوم بفتح length.h في مجلد common ونقوم بالبحث عن : 

                    PLAYER_EXP_TABLE_MAX    = 120,
                    PLAYER_MAX_LEVEL_CONST    = 120,


ونقوم بإستبدال 120 بأي رقم نريده مثلاً 255

بعدها يجب عليك الذهاب إلى ملف constans.cpp في مجلد game
ونقوم بتعديل 

const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1] =


(الطبيعي انها 120 لكن اعتقد في سورس مارتي حتى مستوى 255) 
المهم أن هذه الدالة المسؤولة عن الخبرة لكل مستوى ويسهل تعديلها لا تحتاج إلى شرح فقط إضافة أسطر جديدة .

10 - تعطيل طلب زجاج الإدراك عند عرض بند 
نقوم بفتح ملف i*nput_main.cpp ونقوم بالبحث عن : 

int ProcessTextTag(LPCHARACTER ch, const char * c_pszText, size_t len)
{

ونقوم بإضافة 

 return 0; 


11- حل مشكلة أمر dice وظهور كتابة غريبة
نقوم بفتح ملف cmd_general.cpp ونقوم بالبحث عن : 
ACMD(do_dice)


ونقوم بإستبدال الدالة كاملة (من { إلى }) بـ :
ACMD(do_dice)
{
    ch->ChatPacket(CHAT_TYPE_INFO, "This command has been disabled.");
}



12- تعطيل إلقاء اليانغ على الأرض للاعبين 
نقوم بفتح ملف char_item.cpp ونبحث عن : 
bool CHARACTER::DropGold(int gold)


ونقوم بإستبدال محتوى الدالة كاملاً بـ : 
return false;


13- تعطيل الوقت بين العلاوات (60 ثانية واحيانا 10 دقائق)

نقوم بفتح ملف char_item.cpp ونقوم بالبحث عن : 

    if (pPC)
    {
        DWORD dwNowMin = get_global_time() / 60;

        DWORD dwLastChangeItemAttrMin = pPC->GetFlag(msc_szLastChangeItemAttrFlag);

        [ Bla Bla About Function ]
        pPC->SetFlag(msc_szLastChangeItemAttrFlag, dwNowMin);
    }


ونقوم بحذفه أو تعطيله .

14 - تعديل وقت إختفاء البنود الملقاة على الأرض
نقوم بفتح ملف item.h ونقوم بالبحث عن : 

void    StartDestroyEvent(int iSec=300);

ونقوم بتغيير ال300(ثانية) إلى أي رقم نريده
ونقوم بفتح ملف char_item.cpp ونقوم بالبحث عن : 

pkItemToDrop->StartDestroyEvent();


ونقوم بوضع أي رقم بداخل () ، كمثال : 
pkItemToDrop->StartDestroyEvent(500);


15- جعل الدواب قابلة للضرب من فوقها 

نقوم بفتح ملف char_item.cpp ونقوم بالبحث عن : 
case 20118:


ونقوم بإضافة

​case mount_vnum:

أسفلها حيث mount_vnum = كود الدابة ، كمثال : 


case 20118:
case 20249:
case 20250:


16- تعديل أقصى نقاط وضع (الطبيعي 90)

نقوم بفتح ملف cmd_general.cpp ونقوم بالبحث عن : 
#define MAX_STAT 90


ونقوم بتغيير 90 لأي رقم نريد (ملحوظة هذا الرقم سيكون لل4 نقاط (حيوية-مناورة-ذكاء-قوة)

17- تعطيل أو تعديل الlimit_time (مدة عمل الملفات بعدها تتعطل)

للتعطيل : 
نقوم بفتح ملف limit_time.h ونقوم بالبحث عن : 
#define ENABLE_LIMIT_TIME

ونقوم بحذف السطر أو تعطيله 

للتعديل : 
نقوم بفتح ملف 
update_limit_time.py 

ونقوم بالبحث عن : 

limitTime = time.mktime(time.localtime()) + 3600 * 24 * 180 * 2


وتقوم بتعديل الأرقام كما تشاء (هذه المدة الحالية هي عامين 360 يوم)

بعدها نقوم بكتابة : 

gmake limit_time


في الputty أو الVirtual Box

18- تفعيل المشاعر والرقصات بدون قناع عاطفة 

نقوم بفتح ملف cmd_emotion.cpp ونقوم بالبحث عن : 

bool CHARACTER_CanEmotion(CHARACTER& rch)


ونقوم بإستبدال محتوى الدالة كاملةً بـ : 

return true;


19- إصلاح خطأ Game Core بسبب حروب الروابط

نقوم بفتح  ملف cmd_general.cpp ونقوم بالبحث عن : 

    if (*arg2)
    {
        str_to_number(type, arg2);

        if (type >= GUILD_WAR_TYPE_MAX_NUM)
            type = GUILD_WAR_TYPE_FIELD;
    }


نقوم بالإستبدال بـ : 


    if (*arg2)
    {
        str_to_number(type, arg2);

        if (type >= GUILD_WAR_TYPE_MAX_NUM || type < 0)
            type = GUILD_WAR_TYPE_FIELD;
    }


20 - تعديل صلاحيات الأكواد من السورس
كمثال : نقوم بفتح ملف cmd.cpp 
{ "shutdown",    do_shutdown,        0,            POS_DEAD,    GM_HIGH_WIZARD    },


ونقوم بتعديل GM_HIGH_WIZARD للصلاحية التي نريد ، كمثال بعد التعديل : 

    { "shutdown",    do_shutdown,        0,            POS_DEAD,    GM_IMPLEMENTOR    },


21- إصلاح خطأ عدم إعطاء نقاط وضع بعد المستوى 91 

نقوم بفتح ملف char.cpp ونقوم بالبحث عن : 
if (GetLevel() < 91) PointChange(POINT_STAT, 1);


نقوم بتغيير 91 لأي رقم نريد (أقصى مستوى لسيرفرك)

ونقوم بالبحث عن (في نفس الملف) : 
    if(iLv <= 90)
        PointChange(POINT_STAT, ((MINMAX(1, iLv, 90) - 1) * 3) + GetPoint(POINT_LEVEL_STEP) - GetPoint(POINT_STAT));



ونقوم بتغيير 90 إلى الرقم الذي تريد (أقصى مستوى لسيرفرك)

22- إزالة الجرع عند زيادة المستوى 
نقوم بفتح ملف char.cpp ونقوم بالبحث عن : 


    if (GetLevel() <= 10)
        AutoGiveItem(27001, 2);
    else if (GetLevel() <= 30)
        AutoGiveItem(27002, 2);
    else
    {
        AutoGiveItem(27002, 2);
//        AutoGiveItem(27003, 2);
    }


يمكنك تعطيلهم أو حذفهم .

23- إصلاح خطأ فحص نسخة الكلاينت 
نقوم بفتح ملف config.cpp ونقوم بالبحث عن : 
if (version > date)


ونقوم بإستبدالها بـ : 
if (version != date)


نكتفي بهذا القدر ،،

كل الود ،،

والسلام خير ختام ~
منظمة قانون التطور - Evolution Law Organization

Powered by PBBoard ©Version 3.0.3