【骑马与砍杀-乱舞水浒】(一)关于单挑缴获计算公式详解
梦羽Knight
2025年07月04日 00:22
收录于文集
共2篇
骑马与砍杀讨论

整理几年前我写的攻略,不算抄袭哈!很多人或许会对单挑缴获的影响因素感兴趣,然后我从反编译后的伪代码来分析缴获公式,代码如下:

(try_begin),

(eq, "$order_attack_or_cheat", 0),

(gt, "$vs_lose_enemy_troop", 0),

(assign, ":var_38", 0),

(party_get_skill_level, ":var_21", "p_main_party", "skl_looting"),

(val_add, ":var_21", 15),

(val_min, ":var_21", 30),

(try_begin),

(eq, "$player_title_49", 1),

(val_add, ":var_21", 6),

(try_end),

(val_add, ":var_21", "$special_item_vs_loot_add"),

(val_min, ":var_21", 36),//撑死36

(try_begin),

(troop_is_hero, "$vs_lose_enemy_troop"),

(val_mul, ":var_21", 2),

(val_div, ":var_21", 3),//撑死24

(try_end),

(store_random_in_range, ":var_20", 0, 100),

(try_begin),

(ge, ":var_21", ":var_20"),

(assign, ":var_38", 1),

(try_end),

(assign, ":var_39", 0),

(try_begin),

(eq, ":var_38", 1),

(store_random_in_range, ":var_40", 0, 10),

(troop_get_inventory_slot, ":var_41", "$vs_lose_enemy_troop", ":var_40"),

(gt, ":var_41", 0),

(assign, ":var_42", 1),

(try_begin),

(item_slot_ge, ":var_41", 71, 1),

(try_begin),

(neg|ge, "$vs_loot_chance", 0),

(assign, ":var_42", 0),

(else_try),

(assign, "$vs_loot_chance", -4),

(try_end),

(try_end),

(eq, ":var_42", 1),

(try_begin),

(eq, ":var_40", 8),

(assign, ":var_39", 1),

(try_end),

(str_store_item_name, s1, ":var_41"),

(display_message, " loot enemy's equipment: {s1}!", 0x5AFF3C),

(call_script, "script_818", ":var_41", 0),

(play_sound, "snd_special_skill"),

(try_begin),

(neg|eq, "$player_title_49", 1),

(val_add, "$player_title_49_num", 1),

(try_end),

(try_end),

(try_begin),

(eq, "$order_attack_or_cheat", 0),

(gt, "$vs_lose_enemy_troop", 0),


1.作弊检测影响因素

以下代码是检测你是否作弊,如果作弊会影响奖励。

(try_begin),

(eq, "$order_attack_or_cheat", 0),

(gt, "$vs_lose_enemy_troop", 0),


2.队伍掠夺技能影响因素

凉大使用了一个变量,初始值为0,我们暂且称其为变量38,然后从队伍中获取队伍技能的数值赋值进变量38.之后,变量38加上数值15与30比大小。其中,掠夺等级最高为19,19+15>30,显然多出的四点是无效的,所以我的建议是,大家主角点到11点掠夺即可。这时就满足条件的最大值。

补充一点,队伍技能的一般计算是:最高值+( )。括号中的值是根据主角的队伍技能等级,通常主角2括号里就是1,5括号里就是2,8就括号是3,10括号里是4.当然队伍中有其他的队伍技能高的好像也对括号值有影响。

(assign, ":var_38", 0),

(party_get_skill_level, ":var_21", "p_main_party", "skl_looting"),

(val_add, ":var_21", 15),

(val_min, ":var_21", 30),


3.杀鸡取卵技能和时间间隔因素影响

受掠夺技能影响,变量21的最大值为30,player_title_49是我们的称号杀鸡取卵,有这个称号,概率最高30可以加上6,再加上special_item_vs_loot_add(额外概率)。

这个额外概率跟天数有关,你离上次缴获时间越长就越大。但是这个因素在后期得到杀鸡取卵称号后可以忽略掉,因为凉大加了个判断语句,和36比较大小。只要有杀鸡取卵和掠夺15,就是最高值36了。

try_begin),

(eq, "$player_title_49", 1),

(val_add, ":var_21", 6),

(try_end),

(val_add, ":var_21", "$special_item_vs_loot_add"),

(val_min, ":var_21", 36),//撑死36


4.对面是否有英雄的影响因素

进行一次处理,也就是如果是含英雄的部队,就进行乘2除3的处理。把上次最大值36进行这般处理后就是36x2/3=24.变量21最大为24.

(try_begin),

(troop_is_hero, "$vs_lose_enemy_troop"),

(val_mul, ":var_21", 2),

(val_div, ":var_21", 3),//撑死24

(try_end),

5.随机数影响因素

使用随机数在(0,100)内取值,并和之前的概率进行比大小,相当于把100置为分母,之前算的变量21为分子。如果取得随机数小于变量21,则进行缴获阶段。这么算来,概率差不多就是最高24%。

(store_random_in_range, ":var_20", 0, 100),

(try_begin),

(ge, ":var_21", ":var_20"),

(assign, ":var_38", 1),

(try_end),

(assign, ":var_39", 0),

(try_begin),

(eq, ":var_38", 1),

(store_random_in_range, ":var_40", 0, 10),

(troop_get_inventory_slot, ":var_41", "$vs_lose_enemy_troop", ":var_40"),


6.武器装备位置影响因素

显然大家会觉得不对,明明爆率不可能四场就缴获一次,那为啥是24%呢,原因是后面的那个函数(troop_get_inventory_slot, ":var_41", "$vs_lose_enemy_troop", ":var_40"),大家有兴趣可以看下十年前凉大的帖子,当时凉大想的缴获方式是,将装备位置分别用10位数字表示,然后这就出现一种情况是,我选的是马,但对面领主没有马,这时缴获失败。按照这个道理,如果你想精确获得某领主的装备,实际概率就是24%x0.1=2.4%.


7.触发器天数影响因素

单挑缴获还受触发器控制,如果这个vs_loot_chance小于等于0,那么就会把var_42置为0,而后面会检测这个变量,如果变量不是1就会不执行下面语句。如果大于0时,就会继续执行,并且把vs_loot_chance这个值置为-4.这样子有段时间就不会缴获任何东西。vs_loot_chance这个变量是由触发器102所影响,如果没有杀鸡取卵,这个数值是每天加1,有的话就是加2,所以,-4加5>0,-4+2x3>0,分别是5天冷却和3天冷却。

(try_begin),

(neg|ge, "$vs_loot_chance", 0),

(assign, ":var_42", 0),

(else_try),

(assign, "$vs_loot_chance", -4),

(try_end),