Алгоритм заточки талик(исходный код). - Rising Force Online - Уязвимости, баги, читы и статьи по RF Online.
25.02.2010, 19:16
#1
Разведчик
Регистрация: 22.02.2010
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Алгоритм заточки талик(исходный код).
Копирайт rf-cheats
Случайно обнаружил исходники клиента, сервера и движка рф онлайн. Порывшись немножко, я нашёл часть кода, отвечающую за вставку и изъятие талик:
PHP код:
void CNormalItem :: InsertTalik ( BYTE pi_byTalikDTIndex ) { if( m_byLevel < MAX_ITEM_LEVEL ) { InsertTalik ( static_cast < INGOT_DATA * >( _GetItemDataMgr ()-> GetData ( IEPT_INGOT , pi_byTalikDTIndex + 20 ) ) ); } } void CNormalItem :: InsertTalik ( INGOT_DATA * pi_pTalikData ) { if( pi_pTalikData ) { if( m_byLevel < MAX_ITEM_LEVEL ) { ++ m_byLevel ; m_listTalik [ m_byLevel - 1 ] = pi_pTalikData ; ApplyUpgradeEffect ( m_listTalik [ m_byLevel - 1 ], TRUE ); } } } void CNormalItem :: InsertTalikFromServerFlag ( DWORD pi_dwServerFlag ) { if( ! IsUpgradable () ) return; if( pi_dwServerFlag == ID_INVALID ) { m_byMaxSocketNum = 0 ; return; } BYTE pi_byTalikDTIndex , i ; m_byMaxSocketNum = pi_dwServerFlag >> 28 ; for( i = 0 ; i < m_byMaxSocketNum ; ++ i ) { pi_byTalikDTIndex = ( pi_dwServerFlag >> ( i * 4 ) ) & 0x0000000F ; if( pi_byTalikDTIndex != 0xF ) InsertTalik ( pi_byTalikDTIndex ); } } void CNormalItem :: ExtractTalik ( void ) { if( m_byLevel > 0 ) { ApplyUpgradeEffect ( m_listTalik [ m_byLevel - 1 ], FALSE ); m_listTalik [ m_byLevel - 1 ] = NULL ; -- m_byLevel ; } } void CNormalItem :: ExtractAllTalik ( void ) { if( m_byLevel > 0 ) { for( int i = m_byLevel - 1 ; i >= 0 ; -- i ) { ApplyUpgradeEffect ( m_listTalik [ i ], FALSE ); m_listTalik [ i ] = NULL ; } m_byLevel = 0 ; } } INGOT_DATA * CNormalItem :: GetTalik ( BYTE pi_bySocketNo ) { if( ( pi_bySocketNo >= m_byLevel ) || ( pi_bySocketNo >= MAX_ITEM_LEVEL ) ) return NULL ; return m_listTalik [ pi_bySocketNo ]; } DWORD CNormalItem :: IsEnableInsertJewel ( DWORD pi_dwJewelDTIndex ) { BYTE byItemKind = GetItemKind (); BYTE byWeaponCategoryID = GetWeaponCategoryID (); if( !( ( byItemKind > IEPT_FACE ) && ( byItemKind <= IEPT_SHIELD ) ) ) return 0 ; INGOT_DATA * pJewelData = static_cast < INGOT_DATA * >( _GetItemDataMgr ()-> GetData ( IEPT_INGOT , pi_dwJewelDTIndex ) ); if( ! pJewelData ) return 0 ; // ѕЖАМЕЫАМ №«±вАП °жїм if( byItemKind == IEPT_WEAPON ) { // ±ЩБў №«±в if( ( byWeaponCategoryID == IWCT_KNIFE ) || ( byWeaponCategoryID == IWCT_SWORD ) || ( byWeaponCategoryID == IWCT_AXE ) || ( byWeaponCategoryID == IWCT_MACE ) || ( byWeaponCategoryID == IWCT_SPEAR ) || ( byWeaponCategoryID == IWCT_STAFF ) ) { if( pJewelData -> GetUpgradeInsertLimitNum ( IEPT_WEAPON - 1 ) <= 0 ) return 1 ; } // їш°Её® №«±в else if( ( byWeaponCategoryID == IWCT_BOW ) || ( byWeaponCategoryID == IWCT_FIREARM ) || ( byWeaponCategoryID == IWCT_LUANCHER ) || ( byWeaponCategoryID == IWCT_THROW ) ) { if( pJewelData -> GetUpgradeInsertLimitNum ( 7 ) <= 0 ) return 1 ; } // №«±вїЎґВ ±¤ИЦ, Б¤И*, јцИЈ, ЅЕідАЗ Е»ёЇ БЯ їАБч ЗПіЄёёА» »зїлЗТ јц АЦґЩ. ( DT Index 27 ~ 30 ) if( ( pi_dwJewelDTIndex >= 27 ) && ( pi_dwJewelDTIndex <= 30 ) ) { for( int i = 0 ; i < m_byLevel ; ++ i ) { if( ! m_listTalik [ i ] ) continue; if( ( m_listTalik [ i ]-> GetDTIndex () >= 27 ) && ( m_listTalik [ i ]-> GetDTIndex () <= 30 ) ) return 2 ; } } } // ѕЖАМЕЫАМ ѕЖёУАП °жїм else { if( pJewelData -> GetUpgradeInsertLimitNum ( byItemKind - 1 ) <= 0 ) return 1 ; } return 3 ; } //============================================================================// // Boundary // //============================================================================// void CNormalItem :: ApplyUpgradeEffect ( INGOT_DATA * pi_pTalik , BOOL pi_bIsAdd ) { BYTE byTalikNum = GetSameTalikNum ( pi_pTalik ); if( byTalikNum <= 0 ) return; if( ! pi_bIsAdd ) -- byTalikNum ; BYTE byEffectType = pi_pTalik -> byUpgradeEffectType ; float fEffectConstant = pi_pTalik -> fUpgradeEffectConstant [ byTalikNum - 1 ]; // Е»ёЇАЗ АМЖеЖ® Аыїл switch( byEffectType ) { case 0 : break; case 1 : // ёрµз°ш°Э·ВUP 1 if( byTalikNum <= 0 ) m_clUpgradeEffect . m_fStrikingPower = 0 ; else m_clUpgradeEffect . m_fStrikingPower = fEffectConstant ; break; case 2 : // °Ў°ЭЗПґВ_µҐ№МБцАЗ_µҐАМЕНЗКµе_ЖЫјѕЖ®°ЄёёЕ*А»_HP·О_Инјц 2 case 3 : // °Ў°ЭЗПґВ_µҐ№МБцАЗ_µҐАМЕНЗКµе_ЖЫјѕЖ®°ЄёёЕ*А»_FP·О_Инјц 3 break; case 4 : // °Ў°ЭґзЗПґВ_ґл»уА»_stunЅГЕґ(µҐАМЕНЗКµе_ЖЫјѕЖ®°ЄёёЕ*АЗ_И®·ь·О_1ГКµїѕИ) 4 => ѕЖАМЕЫАМ ѕЖґС ДіёЇЕНїЎ АыїлµЗ№З·О +1Ає ЗПБц ѕКґВґЩ. if( byTalikNum <= 0 ) m_clUpgradeEffect . m_fStunProb = 0 ; else m_clUpgradeEffect . m_fStunProb = fEffectConstant ; break; case 5 : // »зБ¤°Её®UP 5 if( byTalikNum <= 0 ) m_clUpgradeEffect . m_byAttackRange = 0 ; else m_clUpgradeEffect . m_byAttackRange = fEffectConstant ; break; case 6 : // №жѕо·ВUP 6 if( byTalikNum <= 0 ) m_clUpgradeEffect . m_fDefencePower = 1 ; else m_clUpgradeEffect . m_fDefencePower = 1 + fEffectConstant ; break; case 7 : // µҐАМЕНЗКµе_ЖЫјѕЖ®°ЄёёЕ*АЗ_БцјУЗЗЗШєёБ¶ЅГ°Ј_ґЬГа 7 break; case 8 : // ДіёЇЕНАЗ_єТі»јє°ЄїЎ_µҐАМЕНЗКµе_°ЄёёЕ*АЗ_єТі»јєБх°Ў 8 case 9 : // ДіёЇЕНАЗ_єТі»јє°ЄїЎ_µҐАМЕНЗКµе_°ЄёёЕ*АЗ_№°і»јєБх°Ў 9 case 10 : // ДіёЇЕНАЗ_єТі»јє°ЄїЎ_µҐАМЕНЗКµе_°ЄёёЕ*АЗ_Илі»јєБх°Ў 9 case 11 : // ДіёЇЕНАЗ_єТі»јє°ЄїЎ_µҐАМЕНЗКµе_°ЄёёЕ*АЗ_№Щ¶чі»јєБх°Ў 9 // №«±вАП °жїмґВ јУјє єЇИ*, №жѕо±ёАП °жїмґВ і»јє Бх°ЎАУ. if( IsEqualItemKind ( IEPT_WEAPON ) ) { if( byTalikNum <= 0 ) m_clUpgradeEffect . m_byAttackAttribute = 0xFF ; else m_clUpgradeEffect . m_byAttackAttribute = byEffectType - 8 ; } else { if( byTalikNum <= 0 ) m_clUpgradeEffect . m_byResist [ byEffectType - 8 ] = 0 ; else m_clUpgradeEffect . m_byResist [ byEffectType - 8 ] = fEffectConstant ; } break; case 12 : // µҐАМЕНЗКµе_ЖЫјѕЖ®°ЄёёЕ*АЗ_HPИёє№·®_Бх°Ў 12 break; case 13 : // µҐАМЕНЗКµе_ЖЫјѕЖ®°ЄёёЕ*АЗ_ИёЗЗАІ_Бх°Ў 13 => ѕЖАМЕЫАМ ѕЖґС ДіёЇЕНїЎ АыїлµЗ№З·О +1Ає ЗПБц ѕКґВґЩ. if( byTalikNum <= 0 ) m_clUpgradeEffect . m_fAvoidProb = 0 ; else m_clUpgradeEffect . m_fAvoidProb = fEffectConstant ; break; case 14 : // °ЎАе_ГЦ±ЩїЎ_»рАФЗС_Е»ёЇ_іЇ·Б№цёІ 14 break; } } // µїАПЗС Е»ёЇАМ АЦґВБцё¦ ГјЕ©ЗШј*, °іјцё¦ °ЎБ®їВґЩ. BYTE CNormalItem :: GetSameTalikNum ( INGOT_DATA * pi_pTalik ) { if( ! pi_pTalik ) return 0 ; if( ! IsUpgradable () ) return 0 ; BYTE byTalikNum = 0 ; for( int i = 0 ; i < m_byLevel ; ++ i ) { if( ! m_listTalik [ i ] ) continue; if( m_listTalik [ i ]-> dwDTIndex == pi_pTalik -> dwDTIndex ) ++ byTalikNum ; } return byTalikNum ; }
Предлагаю разобраться в нем!
Вот исходники:
[
Ссылки могут видеть только зарегистрированные пользователи. ]
Данный код находится здесь:
RF Online Sourcecode\RF Client Side\RF_Client\item\citemdata.cpp
Последний раз редактировалось Magbaf; 25.02.2010 в 21:17 .
25.02.2010, 19:43
#2
Маршал
Регистрация: 05.05.2009
Сообщений: 875
Популярность: 48955
Золото Zhyk.Ru: 850
Сказал(а) спасибо: 155
Поблагодарили 739 раз(а) в 274 сообщениях
Re: Алгоритм заточки талик(исходный код).
Это исходники гиги3? Просто качать нет времени.
25.02.2010, 19:52
#3
Разведчик
Регистрация: 22.02.2010
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: Алгоритм заточки талик(исходный код).
Если честно, не знаю... А чего тут качать, архив весит ~4мб...
07.03.2010, 01:12
#4
Разведчик
Регистрация: 31.07.2009
Сообщений: 28
Популярность: 420
Сказал(а) спасибо: 3
Поблагодарили 42 раз(а) в 17 сообщениях
Re: Алгоритм заточки талик(исходный код).
Посчитай количество слов "case" - это рандом) Ужаснись.
12.03.2010, 17:37
#5
Разведчик
Регистрация: 22.12.2009
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: Алгоритм заточки талик(исходный код).
если кто разберется отпишитесь плиз.
20.03.2010, 19:04
#6
Сержант
Регистрация: 09.07.2008
Сообщений: 140
Популярность: 257
Сказал(а) спасибо: 120
Поблагодарили 71 раз(а) в 46 сообщениях
Re: Алгоритм заточки талик(исходный код).
Ты не тот файл распечатал...
________________
I C Q 498805509 (все справки платные)
P.S - Помните дети мои...
MMORPG первая ступень в ад!!!
И если на то пошло,
то лучше продать душу дьяволу,
чем Иннове!!
[
Ссылки могут видеть только зарегистрированные пользователи. ]
20.03.2010, 19:11
#7
Фельдмаршал
Регистрация: 10.06.2008
Сообщений: 965
Популярность: 5501
Сказал(а) спасибо: 786
Поблагодарили 942 раз(а) в 598 сообщениях
Re: Алгоритм заточки талик(исходный код).
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 13:11 .