- Katılım
- 19 Kas 2022
- Konular
- 55
- Mesajlar
- 188
- Çözüm
- 1
- Online süresi
- 2mo 4d
- Reaksiyon Skoru
- 150
- Altın Konu
- 0
- Başarım Puanı
- 98
- MmoLira
- 13,820
- DevLira
- 66
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
metin2 de iç itemlerinize eklediğin cevherlerin vermiş olduğu özellikler constants.cpp dosyasındaki aiAccessorySocketEffectivePct kısmındaki oranlara göre hesaplanır.
[CODE lang="cpp" title="constants.cpp"]const int aiAccessorySocketEffectivePct[ITEM_ACCESSORY_SOCKET_MAX_NUM + 1] =
{
0, 10, 20, 40
};[/CODE]
tabi teoride öyle ama pratikte pekte öyle çalışmıyor. Bu fix bu durumu düzeltmenize yarar.
Fixden Önce
Fixten Sonra
Fix;
[CODE lang="cpp" title="item.cpp"]//Arat;
for (int i = 0; i < ITEM_APPLY_MAX_NUM; ++i)
{
if (m_pProto->aApplies.bType == APPLY_NONE)
continue;
long value = m_pProto->aApplies.lValue;
if (m_pProto->aApplies.bType == APPLY_SKILL)
{
m_pOwner->ApplyPoint(m_pProto->aApplies.bType, bAdd ? value : value ^ 0x00800000);
}
else
{
if (0 != accessoryGrade)
value += MAX(accessoryGrade, value * aiAccessorySocketEffectivePct[accessoryGrade] / 100);
m_pOwner->ApplyPoint(m_pProto->aApplies.bType, bAdd ? value : -value);
}
}
//Değiştir;
for (int i = 0; i < ITEM_APPLY_MAX_NUM; ++i)
{
const auto& apply = m_pProto->aApplies;
if (apply.bType == APPLY_NONE)
continue;
long value = apply.lValue;
if (apply.bType == APPLY_SKILL)
{
m_pOwner->ApplyPoint(apply.bType, bAdd ? value : value ^ 0x00800000);
}
else
{
if (accessoryGrade > 0)
{
long totalBonus = 0;
for (int j = 0; j < accessoryGrade; ++j)
{
totalBonus += MAX(1, value * aiAccessorySocketEffectivePct[j + 1] / 100);
}
value += totalBonus;
}
m_pOwner->ApplyPoint(apply.bType, bAdd ? value : -value);
}
}
[/CODE]
[CODE lang="python" title="uitooltip.py"]#Arat;
def __AppendAccessoryMetinSlotInfo(self, metinSlot, mtrlVnum):
ACCESSORY_SOCKET_MAX_SIZE = 3
cur=min(metinSlot[0], ACCESSORY_SOCKET_MAX_SIZE)
end=min(metinSlot[1], ACCESSORY_SOCKET_MAX_SIZE)
affectType1, affectValue1 = item.GetAffect(0)
affectList1=[0, max(1, affectValue1*10/100), max(2, affectValue1*20/100), max(3, affectValue1*40/100)]
affectType2, affectValue2 = item.GetAffect(1)
affectList2=[0, max(1, affectValue2*10/100), max(2, affectValue2*20/100), max(3, affectValue2*40/100)]
mtrlPos=0
mtrlList=[mtrlVnum]*cur+[player.METIN_SOCKET_TYPE_SILVER]*(end-cur)
for mtrl in mtrlList:
affectString1 = self.__GetAffectString(affectType1, affectList1[mtrlPos+1]-affectList1[mtrlPos])
affectString2 = self.__GetAffectString(affectType2, affectList2[mtrlPos+1]-affectList2[mtrlPos])
leftTime = 0
if cur == mtrlPos+1:
leftTime=metinSlot[2]
self.__AppendMetinSlotInfo_AppendMetinSocketData(mtrlPos, mtrl, affectString1, affectString2, leftTime)
mtrlPos+=1
#Değiştir;
def #DeğiştirryMetinSl#D#DeğiştirsoryMetinSlInfo(self ACCESSORY_SOCKET_MAX_SIZE = 3
cur=min(metinSlot[0], ACCESSORY_SOCKET_MAX_SIZE)
end=min(metinSlot[1], ACCESSORY_SOCKET_MAX_SIZE)
affectType1, affectValue1 = item.GetAffect(0)
affectType2, affectValue2 = item.GetAffect(1)
percentList = [0, 10, 20, 40]
affectList1=[0]
affectList2=[0]
for pct in percentList[1:]:
affectList1.append(max(1, affectValue1 * pct / 100))
affectList2.append(max(1, affectValue2 * pct / 100))
mtrlPos=0
mtrlList = [mtrlVnum] * cur + [player.METIN_SOCKET_TYPE_SILVER] * (end - cur)
for mtrl in mtrlList:
affectString1 = self.__GetAffectString(affectType1, affectList1[mtrlPos+1])
affectString2 = self.__GetAffectString(affectType2, affectList2[mtrlPos+1])
leftTime = 0
if cur == mtrlPos+1:
leftTime=metinSlot[2]
self.__AppendMetinSlotInfo_AppendMetinSocketData(mtrlPos, mtrl, affectString1, affectString2, leftTime)
mtrlPos+=1
[/CODE]
[CODE lang="cpp" title="constants.cpp"]const int aiAccessorySocketEffectivePct[ITEM_ACCESSORY_SOCKET_MAX_NUM + 1] =
{
0, 10, 20, 40
};[/CODE]
tabi teoride öyle ama pratikte pekte öyle çalışmıyor. Bu fix bu durumu düzeltmenize yarar.
Fixden Önce
Fixten Sonra
Fix;
[CODE lang="cpp" title="item.cpp"]//Arat;
for (int i = 0; i < ITEM_APPLY_MAX_NUM; ++i)
{
if (m_pProto->aApplies.bType == APPLY_NONE)
continue;
long value = m_pProto->aApplies.lValue;
if (m_pProto->aApplies.bType == APPLY_SKILL)
{
m_pOwner->ApplyPoint(m_pProto->aApplies.bType, bAdd ? value : value ^ 0x00800000);
}
else
{
if (0 != accessoryGrade)
value += MAX(accessoryGrade, value * aiAccessorySocketEffectivePct[accessoryGrade] / 100);
m_pOwner->ApplyPoint(m_pProto->aApplies.bType, bAdd ? value : -value);
}
}
//Değiştir;
for (int i = 0; i < ITEM_APPLY_MAX_NUM; ++i)
{
const auto& apply = m_pProto->aApplies;
if (apply.bType == APPLY_NONE)
continue;
long value = apply.lValue;
if (apply.bType == APPLY_SKILL)
{
m_pOwner->ApplyPoint(apply.bType, bAdd ? value : value ^ 0x00800000);
}
else
{
if (accessoryGrade > 0)
{
long totalBonus = 0;
for (int j = 0; j < accessoryGrade; ++j)
{
totalBonus += MAX(1, value * aiAccessorySocketEffectivePct[j + 1] / 100);
}
value += totalBonus;
}
m_pOwner->ApplyPoint(apply.bType, bAdd ? value : -value);
}
}
[/CODE]
[CODE lang="python" title="uitooltip.py"]#Arat;
def __AppendAccessoryMetinSlotInfo(self, metinSlot, mtrlVnum):
ACCESSORY_SOCKET_MAX_SIZE = 3
cur=min(metinSlot[0], ACCESSORY_SOCKET_MAX_SIZE)
end=min(metinSlot[1], ACCESSORY_SOCKET_MAX_SIZE)
affectType1, affectValue1 = item.GetAffect(0)
affectList1=[0, max(1, affectValue1*10/100), max(2, affectValue1*20/100), max(3, affectValue1*40/100)]
affectType2, affectValue2 = item.GetAffect(1)
affectList2=[0, max(1, affectValue2*10/100), max(2, affectValue2*20/100), max(3, affectValue2*40/100)]
mtrlPos=0
mtrlList=[mtrlVnum]*cur+[player.METIN_SOCKET_TYPE_SILVER]*(end-cur)
for mtrl in mtrlList:
affectString1 = self.__GetAffectString(affectType1, affectList1[mtrlPos+1]-affectList1[mtrlPos])
affectString2 = self.__GetAffectString(affectType2, affectList2[mtrlPos+1]-affectList2[mtrlPos])
leftTime = 0
if cur == mtrlPos+1:
leftTime=metinSlot[2]
self.__AppendMetinSlotInfo_AppendMetinSocketData(mtrlPos, mtrl, affectString1, affectString2, leftTime)
mtrlPos+=1
#Değiştir;
def #DeğiştirryMetinSl#D#DeğiştirsoryMetinSlInfo(self ACCESSORY_SOCKET_MAX_SIZE = 3
cur=min(metinSlot[0], ACCESSORY_SOCKET_MAX_SIZE)
end=min(metinSlot[1], ACCESSORY_SOCKET_MAX_SIZE)
affectType1, affectValue1 = item.GetAffect(0)
affectType2, affectValue2 = item.GetAffect(1)
percentList = [0, 10, 20, 40]
affectList1=[0]
affectList2=[0]
for pct in percentList[1:]:
affectList1.append(max(1, affectValue1 * pct / 100))
affectList2.append(max(1, affectValue2 * pct / 100))
mtrlPos=0
mtrlList = [mtrlVnum] * cur + [player.METIN_SOCKET_TYPE_SILVER] * (end - cur)
for mtrl in mtrlList:
affectString1 = self.__GetAffectString(affectType1, affectList1[mtrlPos+1])
affectString2 = self.__GetAffectString(affectType2, affectList2[mtrlPos+1])
leftTime = 0
if cur == mtrlPos+1:
leftTime=metinSlot[2]
self.__AppendMetinSlotInfo_AppendMetinSocketData(mtrlPos, mtrl, affectString1, affectString2, leftTime)
mtrlPos+=1
[/CODE]
Son düzenleme:
- Katılım
- 15 May 2013
- Konular
- 1,209
- Mesajlar
- 7,333
- Çözüm
- 6
- Online süresi
- 2mo 16d
- Reaksiyon Skoru
- 5,974
- Altın Konu
- 410
- Başarım Puanı
- 349
- MmoLira
- 2,031
- DevLira
- 6
Paylaşım için teşekkürler.
- Katılım
- 2 Ara 2024
- Konular
- 186
- Mesajlar
- 1,981
- Çözüm
- 8
- Online süresi
- 5mo 13d
- Reaksiyon Skoru
- 1,495
- Altın Konu
- 1
- Başarım Puanı
- 206
- MmoLira
- 12,375
- DevLira
- 36
Paylaşım için teşekkürler.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 5
- Görüntüleme
- 386
- Cevaplar
- 37
- Görüntüleme
- 5K
















