Sosyal açıldı! Bir göz at → Hemen gir →

YARDIM Pk botlara Ice Lr tutmuyor

gorothred

KY Kıdemli Üye
KAYIT
8 Ağu 2022
Mesajlar
110
Çözümler
1
Tepki puanı
60
Merhaba ice lr hiç çalışmıyordu src ye aşağıdaki kodu ekledikten sonra botların bana attıkları çalışmaya başladı ama benim botlara attığım ice ve lr skilleri çalışmıyor. Öneri ve yardımlarınızı bekliyorum.
if (pTarget->isPlayer())
{
if ((pSkill->bMoral == MORAL_ENEMY
|| pSkill->bMoral == MORAL_AREA_ENEMY)
&& (pType->bBuffType == BUFF_TYPE_SPEED2
|| pType->bBuffType == BUFF_TYPE_STUN))
{
uint16 nMaxRessitance = 250;
uint16 nTargetResistance = pType->bBuffType == BUFF_TYPE_SPEED2 ? pTarget->m_sColdR : pTarget->m_sLightningR;

if (nTargetResistance < (nMaxRessitance / 2))
nTargetResistance = 110;

if (nTargetResistance > nMaxRessitance)
nMaxRessitance = nTargetResistance;

if (nTargetResistance >= myrand(0, nMaxRessitance - nTargetResistance))
bSetSpeed = false;

_MAGIC_TYPE4 * pTypeTarget;

Guard lock(pTarget->m_buffLock);
auto itr = pTarget->m_buffMap.find(BUFF_TYPE_SPEED);
if (itr != pTarget->m_buffMap.end() && (pTypeTarget = g_pMain->m_Magictype4Array.GetData(itr->second.m_nSkillID)))
nTargetSpeedAmount = pTypeTarget->bSpeed;

if (!bSetSpeed)
goto fail_return;
}
}
 

ATABEYY

KY Uzman Üye
Yardımsever
KAYIT
2 Ağu 2025
Mesajlar
362
Çözümler
4
Tepki puanı
443
user tablosuna eklediysen bot tablosuna da ekle belki bi işe yarayabilir ya da tam tersini yap
 

JobRogue

KY Üye
KAYIT
2 Ağu 2025
Mesajlar
43
Çözümler
1
Tepki puanı
8
isPlayer(User)
isBot(Pot) işlemi yazmalısın.
Merhaba ice lr hiç çalışmıyordu src ye aşağıdaki kodu ekledikten sonra botların bana attıkları çalışmaya başladı ama benim botlara attığım ice ve lr skilleri çalışmıyor. Öneri ve yardımlarınızı bekliyorum.
if (pTarget->isPlayer())
{
if ((pSkill->bMoral == MORAL_ENEMY
|| pSkill->bMoral == MORAL_AREA_ENEMY)
&& (pType->bBuffType == BUFF_TYPE_SPEED2
|| pType->bBuffType == BUFF_TYPE_STUN))
{
uint16 nMaxRessitance = 250;
uint16 nTargetResistance = pType->bBuffType == BUFF_TYPE_SPEED2 ? pTarget->m_sColdR : pTarget->m_sLightningR;

if (nTargetResistance < (nMaxRessitance / 2))
nTargetResistance = 110;

if (nTargetResistance > nMaxRessitance)
nMaxRessitance = nTargetResistance;

if (nTargetResistance >= myrand(0, nMaxRessitance - nTargetResistance))
bSetSpeed = false;

_MAGIC_TYPE4 * pTypeTarget;

Guard lock(pTarget->m_buffLock);
auto itr = pTarget->m_buffMap.find(BUFF_TYPE_SPEED);
if (itr != pTarget->m_buffMap.end() && (pTypeTarget = g_pMain->m_Magictype4Array.GetData(itr->second.m_nSkillID)))
nTargetSpeedAmount = pTypeTarget->bSpeed;

if (!bSetSpeed)
goto fail_return;
}
}
isPlayer(user) fonksiyonunu kullandığın gibi, isBot(Bot) işlemini de yazmalısın.
 

gorothred

KY Kıdemli Üye
KAYIT
8 Ağu 2022
Mesajlar
110
Çözümler
1
Tepki puanı
60
isPlayer(User)
isBot(Pot) işlemi yazmalısın.

isPlayer(user) fonksiyonunu kullandığın gibi, isBot(Bot) işlemini de yazmalısın.
Hocam şu şekilde güncelledim kodu ama durum hala aynı

if (pTarget->isPlayer())
{
bool isEnemySkill = (pSkill.bMoral == MORAL_ENEMY || pSkill.bMoral == MORAL_AREA_ENEMY);
bool isSelfSkill = (pSkill.bMoral == MORAL_SELF);

bool fisico = (pSkill.bType[0] == 1 && pSkill.bType[1] == 4);

if ((isEnemySkill && (pType->bBuffType == BUFF_TYPE_SPEED2 || pType->bBuffType == BUFF_TYPE_SPEED || pType->bBuffType == BUFF_TYPE_STUN))
|| (isSelfSkill && (pType->bBuffType == BUFF_TYPE_SPEED2 || pType->bBuffType == BUFF_TYPE_STUN))) {


if (fisico)
{
if (myrand(0, 100) >= 10)
bSetSpeed = false;
}
else if (isStaffSkill(true) || isExtendedArcherSkill(true)) {
bSetSpeed = false;

}
else if (nSkillID == 492027)
{
bSetSpeed = false;
}

else
{
// Calcular las resistencias
uint16 coldResistance = pTarget->m_sColdR + pTarget->m_bResistanceBonus + pTarget->m_bAddColdR;
uint16 lightningResistance = pTarget->m_sLightningR + pTarget->m_bResistanceBonus + pTarget->m_bAddLightningR;

// Determinar la resistencia objetivo
uint16 targetResistance = (pType->bBuffType == BUFF_TYPE_SPEED2) ? coldResistance : lightningResistance;

// Calcular la suma total de resistencia
uint16 totalResistencia = targetResistance + 100; // Sumar la resistencia base directamente

// Calcular el porcentaje
uint16 porcentaje = 10; // Porcentaje fijo

uint16 successRate = myrand(0, totalResistencia);

if (pSkillCaster->isPlayer())
{
CUser* pUser = TO_USER(pSkillCaster);
// Determinar si el skill caster es mago y si tiene suficiente damage_atributo
if (pUser && pUser->isMage() && pUser->isPlayer())
{
uint16 damage_atributo = 0;
if (damage_atributo >= 40)
{

if (porcentaje < successRate)
bSetSpeed = false;
}
else
{
if (uint16(1) < successRate)
bSetSpeed = false;
}

}
else
{
// Si no es mago o no cumple las condiciones anteriores
if (porcentaje <= successRate)
bSetSpeed = false;
}

}
else
{
// Si no es mago o no cumple las condiciones anteriores
if (porcentaje <= successRate)
bSetSpeed = false;
}

}
}

}

if (pTarget->isBot())
{
bool isEnemySkill = (pSkill.bMoral == MORAL_ENEMY || pSkill.bMoral == MORAL_AREA_ENEMY);
bool isSelfSkill = (pSkill.bMoral == MORAL_SELF);

bool fisico = (pSkill.bType[0] == 1 && pSkill.bType[1] == 4);

if ((isEnemySkill && (pType->bBuffType == BUFF_TYPE_SPEED2 || pType->bBuffType == BUFF_TYPE_SPEED || pType->bBuffType == BUFF_TYPE_STUN))
|| (isSelfSkill && (pType->bBuffType == BUFF_TYPE_SPEED2 || pType->bBuffType == BUFF_TYPE_STUN))) {

if (fisico)
{
if (myrand(0, 100) >= 10)
bSetSpeed = false;
}
else if (isStaffSkill(true) || isExtendedArcherSkill(true)) {
bSetSpeed = false;

}
else if (nSkillID == 492027)
{
bSetSpeed = false;
}
else
{
// Calcular las resistencias
uint16 coldResistance = pTarget->m_sColdR + pTarget->m_bResistanceBonus + pTarget->m_bAddColdR;
uint16 lightningResistance = pTarget->m_sLightningR + pTarget->m_bResistanceBonus + pTarget->m_bAddLightningR;

// Determinar la resistencia objetivo
uint16 targetResistance = (pType->bBuffType == BUFF_TYPE_SPEED2) ? coldResistance : lightningResistance;

// Calcular la suma total de resistencia
uint16 totalResistencia = targetResistance + 100; // Sumar la resistencia base directamente

// Calcular el porcentaje
uint16 porcentaje = 20; // Porcentaje fijo

uint16 successRate = myrand(0, totalResistencia);

if (pSkillCaster->isPlayer())
{
CUser* pUser = TO_USER(pSkillCaster);
// Determinar si el skill caster es mago y si tiene suficiente damage_atributo
if (pUser && pUser->isMage() && pUser->isPlayer())
{
uint16 damage_atributo = 0;
if (damage_atributo >= 40)
{
if (porcentaje < successRate)
bSetSpeed = false;
}
else
{
if (uint16(1) < successRate)
bSetSpeed = false;
}
}
else
{
// Si no es mago o no cumple las condiciones anteriores
if (porcentaje <= successRate)
bSetSpeed = false;
}
}
else
{
// Si no es mago o no cumple las condiciones anteriores
if (porcentaje <= successRate)
bSetSpeed = false;
}
}
}
}
 
Anasayfa Kayıt ol Giriş yap
Üst Alt