hello, my server is crashing, does anyone know the reason for the log below?
JustPaste.it - Share Text & Images the Easy Way
justpaste.it
There are 1000 versions of otservbr. Post yourmonster.cpp
file.
void Monster::onThinkDefense(uint32_t interval)
{
bool resetTicks = true;
defenseTicks += interval;
for (const spellBlock_t& spellBlock : mType->info.defenseSpells) {
if (spellBlock.speed > defenseTicks) {
resetTicks = false;
continue;
}
if (defenseTicks % spellBlock.speed >= interval) {
//already used this spell for this round
continue;
}
if ((spellBlock.chance >= static_cast<uint32_t>(uniform_random(1, 100)))) {
minCombatValue = spellBlock.minCombatValue;
maxCombatValue = spellBlock.maxCombatValue;
spellBlock.spell->castSpell(this, this);
}
}
if (!isSummon() && summons.size() < mType->info.maxSummons && hasFollowPath) {
for (const summonBlock_t& summonBlock : mType->info.summons) {
if (summonBlock.speed > defenseTicks) {
resetTicks = false;
continue;
}
if (summons.size() >= mType->info.maxSummons) {
continue;
}
if (defenseTicks % summonBlock.speed >= interval) {
//already used this spell for this round
continue;
}
uint32_t summonCount = 0;
for (Creature* summon : summons) {
if (summon->getName() == summonBlock.name) {
++summonCount;
}
}
if (summonCount >= summonBlock.max) {
continue;
}
if (summonBlock.chance < static_cast<uint32_t>(uniform_random(1, 100))) {
continue;
}
Monster* summon = Monster::createMonster(summonBlock.name);
if (summon) {
if (g_game.placeCreature(summon, getPosition(), false, summonBlock.force)) {
summon->setDropLoot(false);
summon->setSkillLoss(false);
summon->setMaster(this);
g_game.addMagicEffect(getPosition(), CONST_ME_MAGIC_BLUE);
g_game.addMagicEffect(summon->getPosition(), CONST_ME_TELEPORT);
} else {
delete summon;
}
}
}
}
if (resetTicks) {
defenseTicks = 0;
}
}
line 1001Lua:void Monster::onThinkDefense(uint32_t interval) { bool resetTicks = true; defenseTicks += interval; for (const spellBlock_t& spellBlock : mType->info.defenseSpells) { if (spellBlock.speed > defenseTicks) { resetTicks = false; continue; } if (defenseTicks % spellBlock.speed >= interval) { //already used this spell for this round continue; } if ((spellBlock.chance >= static_cast<uint32_t>(uniform_random(1, 100)))) { minCombatValue = spellBlock.minCombatValue; maxCombatValue = spellBlock.maxCombatValue; spellBlock.spell->castSpell(this, this); } } if (!isSummon() && summons.size() < mType->info.maxSummons && hasFollowPath) { for (const summonBlock_t& summonBlock : mType->info.summons) { if (summonBlock.speed > defenseTicks) { resetTicks = false; continue; } if (summons.size() >= mType->info.maxSummons) { continue; } if (defenseTicks % summonBlock.speed >= interval) { //already used this spell for this round continue; } uint32_t summonCount = 0; for (Creature* summon : summons) { if (summon->getName() == summonBlock.name) { ++summonCount; } } if (summonCount >= summonBlock.max) { continue; } if (summonBlock.chance < static_cast<uint32_t>(uniform_random(1, 100))) { continue; } Monster* summon = Monster::createMonster(summonBlock.name); if (summon) { if (g_game.placeCreature(summon, getPosition(), false, summonBlock.force)) { summon->setDropLoot(false); summon->setSkillLoss(false); summon->setMaster(this); g_game.addMagicEffect(getPosition(), CONST_ME_MAGIC_BLUE); g_game.addMagicEffect(summon->getPosition(), CONST_ME_TELEPORT); } else { delete summon; } } } } if (resetTicks) { defenseTicks = 0; } }
gdb
in interactive mode. Do you have core
file?gdb
message me on Discord: Gesior.pl#3208