Skip to content

Commit

Permalink
feat(pkuxkx): 为锦囊增加两个功能,gem.Value 用来估算宝石价值,gem.SafelyPack 用来努力收纳宝石
Browse files Browse the repository at this point in the history
  • Loading branch information
dzpao committed Dec 2, 2024
1 parent 115e34a commit d772ed8
Show file tree
Hide file tree
Showing 3 changed files with 197 additions and 10 deletions.
26 changes: 26 additions & 0 deletions mud/pkuxkx/etc/gem.tin
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#nop vim: set filetype=tt:;

#var {gem.Price} {
{地} {2}
{山} {4}
{水} {13}
{风} {40}
{雷} {130}
{火} {400}
{泽} {1400}
{天} {4200}
};

#var {gem.PriceScale} {
{日魂} {9.10}
{月魄} {3.10}
{玄武甲} {1.60}
{凤凰羽} {1.50}
{麒麟角} {1.40}
{神龙骨} {1.30}
{木灵} {1.20}
{玉髓} {1.03}
{玄冰} {1.02}
{精金} {1.01}
{炎晶} {1.00}
};
40 changes: 34 additions & 6 deletions mud/pkuxkx/plugins/basic/char/backpack.tin
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ event.Define {char/bag} {无参} {$MODULE} {look bag 命令运行完毕
#local type {Bag[$char.backpack.currentBag]};
};

#if { "$type" != "{Item|Cash|Wear|Wield|Equip|Bag\[\d+\]}" } {
#if { "$type" != "{Item|Cash|Wear|Wield|Equip|Gem|Bag\[\d+\]}" } {
#return;
};

Expand Down Expand Up @@ -234,6 +234,10 @@ event.Define {char/bag} {无参} {$MODULE} {look bag 命令运行完毕
char.backpack.set {Equip} {%%1} {%%2} {%%3 %%4} {%%5};
} {4.3};

#action {^{?:(?:(${汉字数词})颗)?}$GEM(%*)$} {
char.backpack.set {Gem} {%%1} {颗} {%%2} {%%3};
} {4.2};

#nop 其它物品;
#action {^{?:(${汉字数词})(${汉字量词})|}%S(%*)$} {
char.backpack.set {Item} {%%1} {%%2} {%%3} {%%4};
Expand Down Expand Up @@ -375,9 +379,11 @@ event.Define {char/bag} {无参} {$MODULE} {look bag 命令运行完毕
// 查询角色是否携带有某样物品。如果有,则返回 ID 和名称;否则返回空串。
// 查询范围:
// Item: 所有物品(但不包括包袱里的内容)
// Cash: 现金
// Wear: 穿戴
// Wield: 手持的装备(武器或盾牌)
// Equip: 携带的装备
// Gem: 背包里的宝石
// Autoload: Autoload 的装备
// ItemID: id 命令看到的数据
// Bag: 包袱里的物品
Expand All @@ -387,16 +393,27 @@ event.Define {char/bag} {无参} {$MODULE} {look bag 命令运行完毕
#local key {%2};
#local func {@default{%3;char.backpack.Query}};

#if { "$range" != "{Item|Cash|Wear|Wield|Equip|Autoload|ItemID}" } {
#if { "$range" != "{Item|Cash|Wear|Wield|Equip|Gem|Autoload|ItemID|Bag\s*\d+}" } {
xtt.Usage $func;
#return;
};

#local container {};

#if { "$range" == "Bag%s%d" } {
#local container {$range};
#replace container {^Bag%s%d$} {&2};
#local container {$char.Bag[$container]};
};
#else {
#local container {${char.$range}};
};

#local items {};
#local var {};
#local items {@table.Keys{char.$range;{$key/%*}}};
#local items {@table.Keys{container;{$key/%*}}};
#if { "$items" == "" } {
#local items {@table.Keys{char.$range;{%*/$key}}};
#local items {@table.Keys{container;{%*/$key}}};
};

#return {$items};
Expand Down Expand Up @@ -427,7 +444,18 @@ event.Define {char/bag} {无参} {$MODULE} {look bag 命令运行完毕
#local range {%1};
#local key {%2};

#local info {${char.${range}[$key]}};
#local container {};

#if { "$range" == "Bag%s%d" } {
#local container {$range};
#replace container {^Bag%s%d$} {&2};
#local container {$char.Bag[$container]};
};
#else {
#local container {${char.$range}};
};

#local info {$container[$key]};
#if { "$info" == "" } {
#local items {@char.backpack.Query{{$range};{$key}}};

Expand All @@ -441,7 +469,7 @@ event.Define {char/bag} {无参} {$MODULE} {look bag 命令运行完毕
#return -1;
};

#local info {${char.${range}[$items]}};
#return @char.backpack.Amount{$range;$items};
};

#return {@defaultNum{$info[amount];1}};
Expand Down
141 changes: 137 additions & 4 deletions mud/pkuxkx/plugins/basic/char/sachet.tin
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@ event.Define {char/sachet/remove} {无参} {$MODULE} {从宝石袋中取出
#local code {$gem.name2code[$name]};
#var gem.code2name[$code] {$name};
};

load-config gem;

#return {true};
};

#var char[锦囊] {};
Expand Down Expand Up @@ -212,7 +216,7 @@ VAR {锦囊当前已经存储的宝石数量} {char.sachet.Amount} {0};
#local gem {$gem};

#if { &gem[] == 0 } {
#return;
#return {};
};

#return {$gem.name2code[$gem[种类]]$gem.name2code[$gem[等级]]@str.ToUpper{$gem.name2code[$gem[阴阳]]}};
Expand All @@ -234,7 +238,7 @@ VAR {锦囊当前已经存储的宝石数量} {char.sachet.Amount} {0};
#local gem {$gem};

#if { &gem[] == 0 } {
#return;
#return {};
};

#return {$gem.name2id[$gem[等级]] $gem.name2id[$gem[种类]]};
Expand All @@ -256,7 +260,7 @@ VAR {锦囊当前已经存储的宝石数量} {char.sachet.Amount} {0};
#local gem {$gem};

#if { &gem[] == 0 } {
#return;
#return {};
};

#return {$gem.code2name[$gem[等级]]$gem.code2name[@str.ToLower{$gem[阴阳]}]$gem.code2name[$gem[种类]]};
Expand Down Expand Up @@ -325,7 +329,7 @@ VAR {锦囊最近一次操作的宝石名称} {char.sachet.Gem} {};
};

#alias {sachet.find.bug} {
#if { &char.sachet.bak[] == 0 } {
#if { &char.sachet.bak[] == 0 || $char.sachet.Max == 10 } {
#return;
};

Expand Down Expand Up @@ -354,3 +358,132 @@ VAR {锦囊最近一次操作的宝石名称} {char.sachet.Gem} {};
okLog 锦囊数据核对无误。锦囊管理模块非常完美!;
};
};

VAR {宝石金店价格表} {gem.Price} {};
VAR {宝石价格系数} {gem.PriceScale} {};

///=== {
// #@ gem.Value [ <中文名称> | <锦囊序号> ]
// 对宝石进行估值。如果省略参数,则估算整个锦囊中的所有宝石的价值总和。
// 参数可以是宝石的中文名称或锦囊序号。如天★木灵、M8B、m8b 都是可以的。
// 估值结果受宝石金店价格表和宝石价格系数的影响,此二者玩家皆可自定义配置。
// };
#func {gem.Value} {
#local gem {%1};

#if { "$gem" == "" } {
#return @gem.ValueAll{};
};

#if { "$gem" == "%+3w" } {
#local gem {@gem.CodeToName{$gem}};
};

#replace gem {$GEMLVL$GEMGEN{?: |}$GEMKIND} {
{等级}{&1}
{阴阳}{&2}
{种类}{&3}
};

#local gem {$gem};

#if { &gem[] == 0 } {
#return 0;
};

#local value {$gem.Price[$gem[等级]]};
#local scale {$gem.PriceScale[$gem[种类]]};
#math value {$value * $scale};
#if { "$gem[阴阳]/$gem[种类]" == "◎/{神龙骨|凤凰羽|麒麟角|玄武甲}" } {
#math value {$value * 2};
};

#return {$value};
};

///=== {
// #@ gem.ValueAll
// 估算整个锦囊中的所有宝石的价值总和。
// };
#func {gem.ValueAll} {
#local where {@str.Trim{%0}};

#local sum {0};

#if { "$where" == "" } {
#local code {};
#foreach {*char[锦囊][]} {code} {
#local value {@gem.Value{$code}};
#local amount {$char[锦囊][$code][数量]};
#math sum {$sum + $value * $amount};
};
#return $sum;
};

#local bag {};
#if { "$where" == "bag %d" } {
#replace where {^bag } {};
#local bag {$char.Bag[$where]};
};
#elseif { "$where" == "backpack" } {
#local bag {$char.Gem};
};

#local key {};
#foreach {*bag[]} {key} {
#local name {$bag[$key][name]};
#local amount {$bag[$key][amount]};
#local value {@gem.Value{$name}};
#math sum {$sum + $value * $amount};
};

#return {$sum};
};

///=== {
// ## gem.SafelyPack <宝石中文名称或锦囊序号>
// 将宝石放入宝石袋。
// 如果宝石囊已满,则会自动取出价值最低的宝石,好腾出空间放入新宝石。
// 参数可以是宝石的中文名称或锦囊序号。如天★木灵、M8B、m8b 都是可以的。
// 宝石价值按照宝石金店价格表和宝石价格系数计算。
// };
#alias {gem.SafelyPack} {
#local gem {%1};

#if { "$gem" == "%+3w" } {
#local gem {@gem.CodeToName{$gem}};
};

#local gem {@gem.NameToID{$gem}};
#if { "$gem" == "" } {
xtt.Usage %90;
#return;
};

#if { "$gem" == "" } {
xtt.Usage %90;
#return;
};

#if { $char.sachet.Amount < $char.sachet.Max } {
pack $gem;
#return;
};

#local minValue {999999};
#local minCode {};

#local code {};
#foreach {*char[锦囊][]} {code} {
#local value {@gem.Value{$code}};
#if { $value < $minValue } {
#local minValue {$value};
#local minCode {@str.ToLower{$code}};
};
};

#if { "$minCode" != "" } {
pickgem $minCode;
pack $gem;
};
};

0 comments on commit d772ed8

Please sign in to comment.