• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Critical strike

Erexo

Kage
Premium User
Joined
Mar 27, 2010
Messages
741
Solutions
5
Reaction score
193
Location
Pr0land
GitHub
Erexo
Hello,
i think about nice script, a new critical system.

Code:
˹                                                                                                                                                 ˺
 ᵒ You have (axe_skill / 3)% chance to make a critical strike (from basic weapon (throwing or melee) (ex. If you have 90axe you have 30% chance
 ᵒ When you hit critical strike you deal (100 + axe_skill)% dmg. (ex. If you have 90axe, you deal 190% basic dmg).
 ᵒ If you hit a critical strike on your character pos set animated message "Critical!" on red colour
 ᵒ If you hit a critical strike on enemy what you hit send a magic effect (10)
˻                                                                                                                                                 ˼

I try to do that, but with no resoults ;s


thanks for all :3
 
Here is my system of critical hit!

weapons/scripts/enchanted.lua
PHP:
-- 100% Credits to zup.
local weapons = {
--CLUBS: 
["war hammer"] = {id = 2391, skill = 1, atk = 45},
["morning star"] = {id = 2394, skill = 1, atk = 25},
["crowbar"] = {id = 2416, skill = 1, atk = 5},
["thunder hammer"] = {id = 2421, skill = 1, atk = 49},
["clerical mace"] = {id = 2423, skill = 1, atk = 28},
["silver mace"] = {id = 2424, skill = 1, atk = 41},
["dragon hammer"] = {id = 2434, skill = 1, atk = 32},
["golden mace"] = {id = 2437, skill = 1, atk = 47},
["hammer of wrath"] = {id = 2444, skill = 1, atk = 48},
["crystal mace"] = {id = 2445, skill = 1, atk = 38},
["heavy mace"] = {id = 2452, skill = 1, atk = 49},
["brutetamer's staff"] = {id = 7379, skill = 1, atk = 35},
["mammoth whopper"] = {id = 7381, skill = 1, atk = 30},
["diamond sceptre"] = {id = 7387, skill = 1, atk = 34},
["orcish maul"] = {id = 7392, skill = 1, atk = 42},
["queen's sceptre"] = {id = 7410, skill = 1, atk = 43},
["abyss hammer"] = {id = 7414, skill = 1, atk = 47},
["cranial basher"] = {id = 7415, skill = 1, atk = 44},
["jade hammer"] = {id = 7422, skill = 1, atk = 46},
["skullcrusher"] = {id = 7423, skill = 1, atk = 51},
["taurus mace"] = {id = 7425, skill = 1, atk = 30},
["amber staff"] = {id = 7426, skill = 1, atk = 43},
["chaos mace"] = {id = 7427, skill = 1, atk = 44},
["bonebreaker"] = {id = 7428, skill = 1, atk = 46},
["blessed sceptre"] = {id = 7429, skill = 1, atk = 47},
["dragonbone staff"] = {id = 7430, skill = 1, atk = 35},
["demonbone"] = {id = 7431, skill = 1, atk = 48},
["furry club"] = {id = 7432, skill = 1, atk = 31},
["sapphire hammer"] = {id = 7437, skill = 1, atk = 37},
["shadow sceptre"] = {id = 7451, skill = 1, atk = 39},
["spiked squelcher"] = {id = 7452, skill = 1, atk = 41},
["dark trinity mace"] = {id = 8927, skill = 1, atk = 51},
["obsidian truncheon"] = {id = 8928, skill = 1, atk = 50},
["stomper"] = {id = 8929, skill = 1, atk = 51},



--SWORDS: 
["two handed sword"] = {id = 2377, skill = 2, atk = 30},
["spike sword"] = {id = 2383, skill = 2, atk = 24},
["magic longsword"] = {id = 2390, skill = 2, atk = 55},
["giant sword"] = {id = 2393, skill = 2, atk = 46},
["magic sword"] = {id = 2400, skill = 2, atk = 48},
["silver dagger"] = {id = 2402, skill = 2, atk = 9},
["bright sword"] = {id = 2407, skill = 2, atk = 36},
["warlord sword"] = {id = 2408, skill = 2, atk = 53},
["broad sword"] = {id = 2413, skill = 2, atk = 26},
["pharaoh sword"] = {id = 2446, skill = 2, atk = 41},
["djinn blade"] = {id = 2451, skill = 2, atk = 38},
["avenger"] = {id = 6528, skill = 2, atk = 50},
["demonrage sword"] = {id = 7382, skill = 2, atk = 47},
["relic sword"] = {id = 7383, skill = 2, atk = 42},
["mystic blade"] = {id = 7384, skill = 2, atk = 44},
["crimson sword"] = {id = 7385, skill = 2, atk = 28},
["mercenary sword"] = {id = 7386, skill = 2, atk = 43},
["justice seeker"] = {id = 7390, skill = 2, atk = 47},
["thaian sword"] = {id = 7391, skill = 2, atk = 46},
["dragon slayer"] = {id = 7402, skill = 2, atk = 44},
["berserker"] = {id = 7403, skill = 2, atk = 48},
["assassin dagger"] = {id = 7404, skill = 2, atk = 40},
["havoc blade"] = {id = 7405, skill = 2, atk = 49},
["blacksteel sword"] = {id = 7406, skill = 2, atk = 42},
["haunted blade"] = {id = 7407, skill = 2, atk = 40},
["wyvern fang"] = {id = 7408, skill = 2, atk = 32},
["bloody edge"] = {id = 7416, skill = 2, atk = 43},
["runed sword"] = {id = 7417, skill = 2, atk = 45},
["nightmare blade"] = {id = 7418, skill = 2, atk = 46},
["crystal sword"] = {id = 7449, skill = 2, atk = 35},
["emerald sword"] = {id = 8930, skill = 2, atk = 49},
["calamity"] = {id = 8932, skill = 2, atk = 51},
["zaoan sword"] = {id = 11307, skill = 2, atk = 46},
["blade of corruption"] = {id = 12649, skill = 2, atk = 48},
["firlefanz"] = {id = 7959, skill = 2, atk = 128},



--AXE: 
["halberd"] = {id = 2381, skill = 3, atk = 35},
["double axe"] = {id = 2387, skill = 3, atk = 35},
["dragon lance"] = {id = 2414, skill = 3, atk = 47},
["great axe"] = {id = 2415, skill = 3, atk = 52},
["golden sickle"] = {id = 2418, skill = 3, atk = 13},
["obsidian lance"] = {id = 2425, skill = 3, atk = 34},
["naginata"] = {id = 2426, skill = 3, atk = 39},
["guardian halberd"] = {id = 2427, skill = 3, atk = 46},
["orcish axe"] = {id = 2428, skill = 3, atk = 23},
["barbarian axe"] = {id = 2429, skill = 3, atk = 28},
["knight axe"] = {id = 2430, skill = 3, atk = 33},
["stonecutter axe"] = {id = 2431, skill = 3, atk = 50},
["dwarven axe"] = {id = 2435, skill = 3, atk = 31},
["daramanian waraxe"] = {id = 2440, skill = 3, atk = 39},
["ravager's axe"] = {id = 2443, skill = 3, atk = 49},
["twin axe"] = {id = 2447, skill = 3, atk = 45},
["war axe"] = {id = 2454, skill = 3, atk = 48},
["beastslayer axe"] = {id = 3962, skill = 3, atk = 35},
["ruthless axe"] = {id = 6553, skill = 3, atk = 50},
["headchopper"] = {id = 7380, skill = 3, atk = 42},
["vile axe"] = {id = 7388, skill = 3, atk = 43},
["heroic axe"] = {id = 7389, skill = 3, atk = 44},
["ornamented axe"] = {id = 7411, skill = 3, atk = 42},
["butcher's axe"] = {id = 7412, skill = 3, atk = 41},
["titan axe"] = {id = 7413, skill = 3, atk = 43},
["dreaded cleaver"] = {id = 7419, skill = 3, atk = 40},
["reaper's axe"] = {id = 7420, skill = 3, atk = 46},
["royal axe"] = {id = 7434, skill = 3, atk = 47},
["impaler"] = {id = 7435, skill = 3, atk = 49},
["angelic axe"] = {id = 7436, skill = 3, atk = 44},
["executioner"] = {id = 7453, skill = 3, atk = 51},
["glorious axe"] = {id = 7454, skill = 3, atk = 40},
["noble axe"] = {id = 7456, skill = 3, atk = 39},
["hellforged axe"] = {id = 8924, skill = 3, atk = 51},
["solar axe"] = {id = 8925, skill = 3, atk = 52},
["demonwing axe"] = {id = 8926, skill = 3, atk = 53},
["drakinata"] = {id = 11305, skill = 3, atk = 47},

}
local damage_percent = 1.4

local combat_crit = createCombatObject()
setCombatParam(combat_crit, COMBAT_PARAM_BLOCKSHIELD, 1)
setCombatParam(combat_crit, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat_crit, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat_crit, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

function onGetPlayerMinMaxValues(cid, level, skill, attack, factor)
local right_hand = getPlayerSlotItem(cid, 5)
local left_hand = getPlayerSlotItem(cid, 6)
if right_hand.itemid ~= 0 and right_hand.actionid > 100 and right_hand.actionid < 200 then
item_in_hand_r = getItemName(right_hand.itemid)
else
item_in_hand_l = getItemName(left_hand.itemid)
end
		if weapons[item_in_hand_r] then
			t = weapons[item_in_hand_r]
		else
			t = weapons[item_in_hand_l]
		end
local skill = getPlayerSkill(cid,t.skill)
attack_points = ((right_hand.actionid + left_hand.actionid) - 100) * damage_percent
	local min = 0
	local max = (((2 * ((t.atk + attack_points) * (skill + 5.8) / 25 + (getPlayerLevel(cid) - 1) / 10.)) / 1) * 1.7)
	
	return -min, -max
end
setCombatCallback(combat_crit, CALLBACK_PARAM_SKILLVALUE, "onGetPlayerMinMaxValues")


function onUseCrowbar(parameters)
local right_hand = getPlayerSlotItem(parameters.cid, 5)
local left_hand = getPlayerSlotItem(parameters.cid, 6)
local crit = 100
chance = math.random(0,100)
		if ((right_hand.actionid + left_hand.actionid > crit) and (right_hand.actionid + left_hand.actionid < crit + 100)) then
			crit_percent = (right_hand.actionid + left_hand.actionid) - crit
			if (chance <= crit_percent) then
			doCreatureSay(parameters.cid, "CRITICAL HIT!", TALKTYPE_MONSTER)
			doCombat(parameters.cid, parameters.combat_crit, parameters.var)
			else
			doCombat(parameters.cid, parameters.combat, parameters.var)
			end
		else
			doCombat(parameters.cid, parameters.combat, parameters.var)
		end
end

function onUseWeapon(cid, var)
local parameters = {cid = cid, var = var, combat = combat, combat_crit = combat_crit, combat_vampiric = combat_vampiric, combat_crit = combat_crit, combat_deadly = combat_deadly}
if isPlayer(cid) then
addEvent(onUseCrowbar, 0, parameters) 
end
end




USAGE:
1. You need to do some action script what will change weapon actionID from 100 to 200...
2. Add all weapons what u want to get work with CRITICAL HIT! To weapons/weapons.xml
3. Change for example orcish axe actionID to 110 and look inside script for local attack_percent = 1.4 (its a percent %% where 1 = 100% - normal hit, 1.2 = 120% just play with formulas :D)
4. Give me a repp :)
 
If you want do this script and don't create new (second) system of critical system, someone must edit a source code. If you want a can do this script for money.
 
find:
XML:
m_confNumber[EX_ACTIONS_DELAY_INTERVAL] = getGlobalNumber("timeBetweenExActions", 1000);

after that line add:
XML:
m_confNumber[CRITICAL_HIT_MULTIPLIER] = getGlobalNumber("criticalMultiplier", 3);

1)
You have (axe_skill / 3)% chance to make a critical strike (from basic weapon (throwing or melee) (ex. If you have 90axe you have 30% chance


find all of:
XML:
double maxDamage = Weapons::getMaxWeaponDamage(player->getLevel(), attackSkill, attackValue, attackFactor);

under this line replace every this line:
XML:
if(random_range(1, 100) ...

for that:
XML:
if(random_range(1, 100) <= getSkill(SKILL_AXE, SKILL_LEVEL) / g_config.getDouble(ConfigManager::CRITICAL_HIT_MULTIPLIER)))

2)
When you hit critical strike you deal (100 + axe_skill)% dmg. (ex. If you have 90axe, you deal 190% basic dmg).

find all of:
XML:
maxDamage = std::pow(maxDamage, g_config.getDouble(ConfigManager::CRITICAL_HIT_MUL));

replace with:
XML:
maxDamage = std::pow(maxDamage, getSkill(SKILL_AXE, SKILL_LEVEL)+100);

3+4)
If you hit a critical strike on your character pos set animated message "Critical!" on red colour
If you hit a critical strike on enemy what you hit send a magic effect (10)

find:
XML:
void Player::sendCritical() const

under that add:
XML:
{
	if(g_config.getBool(ConfigManager::DISPLAY_CRITICAL_HIT))
	g_game.addMagicEffect(getPosition(), MAGIC_EFFECT_EXPLOSION_DAMAGE);
	g_game.addAnimatedText(getPosition(), TEXTCOLOR_RED, "Critical!");
}


Put into config.lua :
XML:
criticalMultiplier = 3
displayCriticalHitNotify = true
Remember to set:
XML:
criticalHitMultiplier = 1

NOT TESTED
 
Here is my system of critical hit!

weapons/scripts/enchanted.lua
PHP:
-- 100% Credits to zup.
local weapons = {
--CLUBS:
["war hammer"] = {id = 2391, skill = 1, atk = 45},
["morning star"] = {id = 2394, skill = 1, atk = 25},
["crowbar"] = {id = 2416, skill = 1, atk = 5},
["thunder hammer"] = {id = 2421, skill = 1, atk = 49},
["clerical mace"] = {id = 2423, skill = 1, atk = 28},
["silver mace"] = {id = 2424, skill = 1, atk = 41},
["dragon hammer"] = {id = 2434, skill = 1, atk = 32},
["golden mace"] = {id = 2437, skill = 1, atk = 47},
["hammer of wrath"] = {id = 2444, skill = 1, atk = 48},
["crystal mace"] = {id = 2445, skill = 1, atk = 38},
["heavy mace"] = {id = 2452, skill = 1, atk = 49},
["brutetamer's staff"] = {id = 7379, skill = 1, atk = 35},
["mammoth whopper"] = {id = 7381, skill = 1, atk = 30},
["diamond sceptre"] = {id = 7387, skill = 1, atk = 34},
["orcish maul"] = {id = 7392, skill = 1, atk = 42},
["queen's sceptre"] = {id = 7410, skill = 1, atk = 43},
["abyss hammer"] = {id = 7414, skill = 1, atk = 47},
["cranial basher"] = {id = 7415, skill = 1, atk = 44},
["jade hammer"] = {id = 7422, skill = 1, atk = 46},
["skullcrusher"] = {id = 7423, skill = 1, atk = 51},
["taurus mace"] = {id = 7425, skill = 1, atk = 30},
["amber staff"] = {id = 7426, skill = 1, atk = 43},
["chaos mace"] = {id = 7427, skill = 1, atk = 44},
["bonebreaker"] = {id = 7428, skill = 1, atk = 46},
["blessed sceptre"] = {id = 7429, skill = 1, atk = 47},
["dragonbone staff"] = {id = 7430, skill = 1, atk = 35},
["demonbone"] = {id = 7431, skill = 1, atk = 48},
["furry club"] = {id = 7432, skill = 1, atk = 31},
["sapphire hammer"] = {id = 7437, skill = 1, atk = 37},
["shadow sceptre"] = {id = 7451, skill = 1, atk = 39},
["spiked squelcher"] = {id = 7452, skill = 1, atk = 41},
["dark trinity mace"] = {id = 8927, skill = 1, atk = 51},
["obsidian truncheon"] = {id = 8928, skill = 1, atk = 50},
["stomper"] = {id = 8929, skill = 1, atk = 51},



--SWORDS:
["two handed sword"] = {id = 2377, skill = 2, atk = 30},
["spike sword"] = {id = 2383, skill = 2, atk = 24},
["magic longsword"] = {id = 2390, skill = 2, atk = 55},
["giant sword"] = {id = 2393, skill = 2, atk = 46},
["magic sword"] = {id = 2400, skill = 2, atk = 48},
["silver dagger"] = {id = 2402, skill = 2, atk = 9},
["bright sword"] = {id = 2407, skill = 2, atk = 36},
["warlord sword"] = {id = 2408, skill = 2, atk = 53},
["broad sword"] = {id = 2413, skill = 2, atk = 26},
["pharaoh sword"] = {id = 2446, skill = 2, atk = 41},
["djinn blade"] = {id = 2451, skill = 2, atk = 38},
["avenger"] = {id = 6528, skill = 2, atk = 50},
["demonrage sword"] = {id = 7382, skill = 2, atk = 47},
["relic sword"] = {id = 7383, skill = 2, atk = 42},
["mystic blade"] = {id = 7384, skill = 2, atk = 44},
["crimson sword"] = {id = 7385, skill = 2, atk = 28},
["mercenary sword"] = {id = 7386, skill = 2, atk = 43},
["justice seeker"] = {id = 7390, skill = 2, atk = 47},
["thaian sword"] = {id = 7391, skill = 2, atk = 46},
["dragon slayer"] = {id = 7402, skill = 2, atk = 44},
["berserker"] = {id = 7403, skill = 2, atk = 48},
["assassin dagger"] = {id = 7404, skill = 2, atk = 40},
["havoc blade"] = {id = 7405, skill = 2, atk = 49},
["blacksteel sword"] = {id = 7406, skill = 2, atk = 42},
["haunted blade"] = {id = 7407, skill = 2, atk = 40},
["wyvern fang"] = {id = 7408, skill = 2, atk = 32},
["bloody edge"] = {id = 7416, skill = 2, atk = 43},
["runed sword"] = {id = 7417, skill = 2, atk = 45},
["nightmare blade"] = {id = 7418, skill = 2, atk = 46},
["crystal sword"] = {id = 7449, skill = 2, atk = 35},
["emerald sword"] = {id = 8930, skill = 2, atk = 49},
["calamity"] = {id = 8932, skill = 2, atk = 51},
["zaoan sword"] = {id = 11307, skill = 2, atk = 46},
["blade of corruption"] = {id = 12649, skill = 2, atk = 48},
["firlefanz"] = {id = 7959, skill = 2, atk = 128},



--AXE:
["halberd"] = {id = 2381, skill = 3, atk = 35},
["double axe"] = {id = 2387, skill = 3, atk = 35},
["dragon lance"] = {id = 2414, skill = 3, atk = 47},
["great axe"] = {id = 2415, skill = 3, atk = 52},
["golden sickle"] = {id = 2418, skill = 3, atk = 13},
["obsidian lance"] = {id = 2425, skill = 3, atk = 34},
["naginata"] = {id = 2426, skill = 3, atk = 39},
["guardian halberd"] = {id = 2427, skill = 3, atk = 46},
["orcish axe"] = {id = 2428, skill = 3, atk = 23},
["barbarian axe"] = {id = 2429, skill = 3, atk = 28},
["knight axe"] = {id = 2430, skill = 3, atk = 33},
["stonecutter axe"] = {id = 2431, skill = 3, atk = 50},
["dwarven axe"] = {id = 2435, skill = 3, atk = 31},
["daramanian waraxe"] = {id = 2440, skill = 3, atk = 39},
["ravager's axe"] = {id = 2443, skill = 3, atk = 49},
["twin axe"] = {id = 2447, skill = 3, atk = 45},
["war axe"] = {id = 2454, skill = 3, atk = 48},
["beastslayer axe"] = {id = 3962, skill = 3, atk = 35},
["ruthless axe"] = {id = 6553, skill = 3, atk = 50},
["headchopper"] = {id = 7380, skill = 3, atk = 42},
["vile axe"] = {id = 7388, skill = 3, atk = 43},
["heroic axe"] = {id = 7389, skill = 3, atk = 44},
["ornamented axe"] = {id = 7411, skill = 3, atk = 42},
["butcher's axe"] = {id = 7412, skill = 3, atk = 41},
["titan axe"] = {id = 7413, skill = 3, atk = 43},
["dreaded cleaver"] = {id = 7419, skill = 3, atk = 40},
["reaper's axe"] = {id = 7420, skill = 3, atk = 46},
["royal axe"] = {id = 7434, skill = 3, atk = 47},
["impaler"] = {id = 7435, skill = 3, atk = 49},
["angelic axe"] = {id = 7436, skill = 3, atk = 44},
["executioner"] = {id = 7453, skill = 3, atk = 51},
["glorious axe"] = {id = 7454, skill = 3, atk = 40},
["noble axe"] = {id = 7456, skill = 3, atk = 39},
["hellforged axe"] = {id = 8924, skill = 3, atk = 51},
["solar axe"] = {id = 8925, skill = 3, atk = 52},
["demonwing axe"] = {id = 8926, skill = 3, atk = 53},
["drakinata"] = {id = 11305, skill = 3, atk = 47},

}
local damage_percent = 1.4

local combat_crit = createCombatObject()
setCombatParam(combat_crit, COMBAT_PARAM_BLOCKSHIELD, 1)
setCombatParam(combat_crit, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat_crit, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat_crit, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

function onGetPlayerMinMaxValues(cid, level, skill, attack, factor)
local right_hand = getPlayerSlotItem(cid, 5)
local left_hand = getPlayerSlotItem(cid, 6)
if right_hand.itemid ~= 0 and right_hand.actionid > 100 and right_hand.actionid < 200 then
item_in_hand_r = getItemName(right_hand.itemid)
else
item_in_hand_l = getItemName(left_hand.itemid)
end
        if weapons[item_in_hand_r] then
            t = weapons[item_in_hand_r]
        else
            t = weapons[item_in_hand_l]
        end
local skill = getPlayerSkill(cid,t.skill)
attack_points = ((right_hand.actionid + left_hand.actionid) - 100) * damage_percent
    local min = 0
    local max = (((2 * ((t.atk + attack_points) * (skill + 5.8) / 25 + (getPlayerLevel(cid) - 1) / 10.)) / 1) * 1.7)
   
    return -min, -max
end
setCombatCallback(combat_crit, CALLBACK_PARAM_SKILLVALUE, "onGetPlayerMinMaxValues")


function onUseCrowbar(parameters)
local right_hand = getPlayerSlotItem(parameters.cid, 5)
local left_hand = getPlayerSlotItem(parameters.cid, 6)
local crit = 100
chance = math.random(0,100)
        if ((right_hand.actionid + left_hand.actionid > crit) and (right_hand.actionid + left_hand.actionid < crit + 100)) then
            crit_percent = (right_hand.actionid + left_hand.actionid) - crit
            if (chance <= crit_percent) then
            doCreatureSay(parameters.cid, "CRITICAL HIT!", TALKTYPE_MONSTER)
            doCombat(parameters.cid, parameters.combat_crit, parameters.var)
            else
            doCombat(parameters.cid, parameters.combat, parameters.var)
            end
        else
            doCombat(parameters.cid, parameters.combat, parameters.var)
        end
end

function onUseWeapon(cid, var)
local parameters = {cid = cid, var = var, combat = combat, combat_crit = combat_crit, combat_vampiric = combat_vampiric, combat_crit = combat_crit, combat_deadly = combat_deadly}
if isPlayer(cid) then
addEvent(onUseCrowbar, 0, parameters)
end
end




USAGE:
1. You need to do some action script what will change weapon actionID from 100 to 200...
2. Add all weapons what u want to get work with CRITICAL HIT! To weapons/weapons.xml
3. Change for example orcish axe actionID to 110 and look inside script for local attack_percent = 1.4 (its a percent %% where 1 = 100% - normal hit, 1.2 = 120% just play with formulas :D)
4. Give me a repp :)
I welcome your script does not work
 
Back
Top