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;
}
}
}
}