📄 forge.lua
字号:
end
else
SystemNotice ( cha , "You must have Refining Gem Voucher in your inventory to redeem" )
end
if y_give ==1 then
return 1
else
return 0
end
end
--一个宝石兑换券
function Transfer_OneDiamondScript ( role )
local cha = TurnToCha ( role )
local x_give = 0
local y_give = 0
local script_count = CheckBagItem ( cha , 3886 ) --检查背包中兑换券数量
local DiamondId = Roll_DiamondId ( cha ) --随机兑换宝石的种类
if script_count >= 1 then
x_del = DelBagItem ( cha , 3886 , 1 )
if x_del == 1 then
x_give = GiveItem ( cha , 0 , DiamondId , 1 , 101 ) --兑换宝石
else
SystemNotice ( cha , "Unable to deduct Gem Voucher" )
end
else
SystemNotice ( cha , "You need to have a Gem Voucher in order to redeem" )
end
if x_give == 1 then
return 1
else
return 0
end
end
--精炼内容负值转换
function TansferNum ( Num )
if Num < 0 then
Num = Num + 4294967296
end
return Num
end
--打磨内容相关脚本
--是否可以打磨
function can_milling_item (...)
-- Notice("Starts to determine")
if arg.n ~= 12 then
-- Notice("parameter value illegal"..arg.n)
return 0
end
local kkk = 0
-- for kkk = 2 , arg.n ,1 do
-- SystemNotice ( arg[1] , arg[kkk])
-- end
local Check = 0
-- SystemNotice( arg[1] , "transfer combine test main function")
Check = can_milling_item_main ( arg )
if Check == 1 then
-- SystemNotice (arg[1] , "Return 1")
return 1
else
-- SystemNotice (arg[1] , "Return 0")
return 0
end
end
--是否可以打磨主函数
function can_milling_item_main ( Table )
local role = 0
local ItemBag = {} --道具背包位置
local ItemCount = {} --道具数量
local ItemBagCount = {} --道具对象数量
local Get_Count = 4
local ItemReadCount = 0
local ItemReadNow = 1
local ItemReadNext = 0
local ItemBag_Now = 0
local ItemCount_Now = 0
local ItemBagCount_Num = 0
-- SystemNotice( arg[1] , "start transfer parameter analysis")
role , ItemBag , ItemCount , ItemBagCount , ItemBag_Now , ItemCount_Now , ItemBagCount_Num = Read_Table ( Table )
local ItemBag_damo = ItemBag [0]
local Item_damo = GetChaItem ( role , 2 , ItemBag_damo ) --读取打磨道具的指针
local Item_Cailiao1 = GetChaItem ( role , 2 , ItemBag [1] ) --读取打磨材料1的指针
local Item_Cailiao2 = GetChaItem ( role , 2 , ItemBag [2] ) --读取打磨材料2的指针
local Check_Cailiao1 = 0
local Check_Cailiao2 = 0
Check_Cailiao1 = Check_Jiaguji ( Item_Cailiao1 , Item_Cailiao2 )
Check_Cailiao2 = Check_Cuihuafen ( Item_Cailiao1 , Item_Cailiao2 )
if Check_Cailiao1 == 0 then
SystemNotice ( role , "Fusion requires Equipment Stabilizer" )
return 0
end
if Check_Cailiao2 == 0 then
SystemNotice ( role , "Requires Equipment Catalyst for fusion" )
return 0
end
local Check_Hole = 0
Check_Hole = Check_HasHole ( Item_damo )
if Check_Hole >= 3 then
SystemNotice ( role , "Socket slots are max. Unable to continue Fusion" )
return 0
end
local Money_Need = get_milling_money_main ( Table )
local Money_Have = GetChaAttr ( role , ATTR_GD )
if Money_Need > Money_Have then
SystemNotice( role ,"Insufficient gold. Unable to undergo fusion")
return 0
end
return 1
end
--计算打磨费用
function get_item_milling_money(...)
-- Notice("Fee calculation")
local Money = get_milling_money_main ( arg )
return Money
end
--计算打磨费用主函数
function get_milling_money_main ( Table )
local role = 0
local ItemBag = {} --道具背包位置
local ItemCount = {} --道具数量
local ItemBagCount = {} --道具对象数量
local Get_Count = 4
local ItemReadCount = 0
local ItemReadNow = 1
local ItemReadNext = 0
local ItemBag_Num = 0
local ItemCount_Num = 0
local ItemBagCount_Num = 0
role , ItemBag , ItemCount , ItemBagCount , ItemBag_Num , ItemCount_Num , ItemBagCount_Num = Read_Table ( Table )
local ItemBag_damo = ItemBag [0]
local Item_damo = GetChaItem ( role , 2 , ItemBag_damo )
local Hole_Num = 0
local Num = GetItemForgeParam ( Item_damo , 1 )
Num = TansferNum ( Num )
Hole_Num = GetNum_Part1 ( Num )
local Money_Need = ( Hole_Num + 1 ) * 50000
-- Notice("Calculation completed")
return Money_Need
end
--开始打磨
function begin_milling_item (...)
-- Notice("Start to forge")
local Check_CanMilling = 0
Check_CanMilling = can_milling_item_main ( arg )
if Check_CanMilling == 0 then
return 0
end
local role = 0
local ItemBag = {} --道具背包位置
local ItemCount = {} --道具数量
local ItemBagCount = {} --道具对象数量
local Get_Count = 4
local ItemReadCount = 0
local ItemReadNow = 1
local ItemReadNext = 0
local ItemBag_Num = 0
local ItemCount_Num = 0
local ItemBagCount_Num = 0
role , ItemBag , ItemCount , ItemBagCount , ItemBag_Num , ItemCount_Num , ItemBagCount_Num = Read_Table ( arg )
local ItemBag_damo = ItemBag [0]
local Item_damo = GetChaItem ( role , 2 , ItemBag_damo )
local Item_cailiao1 = GetChaItem ( role , 2 , ItemBag [1] )
local Item_cailiao2 = GetChaItem ( role , 2 , ItemBag [2] )
local Money_Need = get_milling_money_main ( arg )
local Money_Have = GetChaAttr ( role , ATTR_GD )
-- Notice ("Currently there are"..Money_Have.."So much gold")
-- Notice ("Must deduct"..Money_Need.."So much gold")
Money_Have = Money_Have - Money_Need
SetCharaAttr ( Money_Have , role , ATTR_GD )
ALLExAttrSet( role )
local ItemID_Cailiao1 = GetItemID ( Item_cailiao1 )
local ItemID_Cailiao2 = GetItemID ( Item_cailiao2 )
local R1 = 0
local R2 = 0
R1 = RemoveChaItem ( role , ItemID_Cailiao1 , 1 , 2 , ItemBag [1] , 2 , 1 , 0 ) --移除材料1
R2 = RemoveChaItem ( role , ItemID_Cailiao2 , 1 , 2 , ItemBag [2] , 2 , 1 , 0 ) --移除材料2
if R1 == 0 or R2 == 0 then
LG( "Damo" , "Delete resource failed" )
end
local Sklv = 1
local b = Check_CG_damo ( Item_damo , Sklv )
if b == 0 then
Damo_Shibai ( role , Item_damo )
return 2
end
-- Notice("Forging completed")
Damo_ChengGong ( role , Item_damo )
local cha_name = GetChaDefaultName ( role )
LG( "JingLian_ShiBai" , "Player"..cha_name.."Fusion successful" )
return 1
end
--打磨相关函数
--检查是否有加固剂
function Check_Jiaguji ( Item_Cailiao1 , Item_Cailiao2 )
local ItemID_Cailiao1 = GetItemID ( Item_Cailiao1 )
local ItemID_Cailiao2 = GetItemID ( Item_Cailiao2 )
if ItemID_Cailiao1 == 890 then
return 1
elseif ItemID_Cailiao2 == 890 then
return 1
end
return 0
end
--检查是否有催化粉
function Check_Cuihuafen ( Item_Cailiao1 , Item_Cailiao2 )
local ItemID_Cailiao1 = GetItemID ( Item_Cailiao1 )
local ItemID_Cailiao2 = GetItemID ( Item_Cailiao2 )
if ItemID_Cailiao1 == 891 then
return 1
elseif ItemID_Cailiao2 == 891 then
return 1
end
return 0
end
--检查孔数
function Check_HasHole ( Item_damo )
local Num = GetItemForgeParam ( Item_damo , 1 )
Num = TansferNum ( Num )
local Hole_Num = GetNum_Part1 ( Num )
return Hole_Num
end
--判断打磨是否成功
function Check_CG_damo ( Item_damo , Sklv )
local a = 0
local Hole_Num = Check_HasHole ( Item_damo )
if Hole_Num == 0 then
a = 1
end
if Hole_Num == 1 then
a = 1
end
if Hole_Num == 2 then
a = 1
end
if Hole_Num == 3 then
a = 1
end
local b = Percentage_Random ( a )
return b
end
--打磨失败
function Damo_Shibai ( role , Item_damo )
-- local Num = GetItemForgeParam ( Item_damo , 1 )
-- local i = 0
-- Num = TansferNum ( Num )
-- local Hole_Num = GetNum_Part1 ( Num )
-- if Hole_Num >= 1 then
-- local a = 0.7
-- local b = Percentage_Random ( a )
-- if b == 0 then
-- SystemNotice ( role , "Fusion failed. Existing socket in equipment disappeared!" )
-- Hole_Num = Hole_Num - 1
-- Delete_Forge_Eff ( role , Item_damo )
-- else
-- SystemNotice ( role , "Fusion failed. Luckily item is still intact" )
-- end
-- else
local cha_name = GetChaDefaultName ( role )
LG( "JingLian_ShiBai" , "Player"..cha_name.."Fusion failed" )
SystemNotice ( role , "Fusion failed. Luckily item is still intact" )
-- end
-- Num = SetNum_Part1 ( Num , Hole_Num )
-- i = SetItemForgeParam ( Item_damo , 1 , Num )
-- if i == 0 then
-- LG( "Damo" , "set forging content failed" )
-- end
end
--打磨成功
function Damo_ChengGong ( role , Item_damo )
local Num = GetItemForgeParam ( Item_damo , 1 )
local i = 0
Num = TansferNum ( Num )
local Hole_Num = GetNum_Part1 ( Num )
if Hole_Num <= 3 then
SystemNotice ( role , "Fusion successful. Obtain new socket in equipment." )
Hole_Num = Hole_Num + 1
else
SystemNotice ( role , "Item sockets max. Unable to make new socket" )
end
Num = SetNum_Part1 ( Num , Hole_Num )
i = SetItemForgeParam ( Item_damo , 1 , Num )
if i == 0 then
LG( "Damo" , "set forging content failed" )
end
end
--去处装备上一个精炼效果
function Delete_Forge_Eff ( role , Item_damo )
local Jinglian_Lv = GetItem_JinglianLv ( Item_damo )
if Jinglian_Lv == 0 then
return
end
local Num = GetItemForgeParam ( Item_damo , 1 )
local Item_Stone = {}
local Item_StoneLv = {}
Item_Stone[0] = GetNum_Part2 ( Num )
Item_Stone[1] = GetNum_Part4 ( Num )
Item_Stone[2] = GetNum_Part6 ( Num )
Item_StoneLv[0] = GetNum_Part3 ( Num )
Item_StoneLv[1] = GetNum_Part5 ( Num )
Item_StoneLv[2] = GetNum_Part7 ( Num )
local j = 0
local Del = 0
for j = 2 , 0 , -1 do
if Del == 0 then
if Item_Stone [j] ~= 0 or Item_StoneLv[j] ~= 0 then
Item_Stone[j] = 0
Item_StoneLv[j] = 0
Del = 1
end
end
end
Num = SetNum_Part2( Num , Item_Stone[0] )
Num = SetNum_Part4( Num , Item_Stone[1] )
Num = SetNum_Part6( Num , Item_Stone[2] )
Num = SetNum_Part3( Num , Item_StoneLv[0] )
Num = SetNum_Part5( Num , Item_StoneLv[1] )
Num = SetNum_Part7( Num , Item_StoneLv[2] )
local i = 0
i = SetItemForgeParam ( Item_damo , 1 , Num )
if i == 0 then
LG( "Damo" , "set forging content failed" )
end
SystemNotice ( role , "Forging bonus effect ended" )
end
--熔合
--判断是否能够熔合,熔合函数入口
function can_fusion_item(...)
-- Notice ( "See if it can be smelt")
if arg.n ~= 12 and arg.n ~= 14 then
SystemNotice ( arg[1] , "parameter value illegal"..arg.n )
return 0
end
-- local kkk = 0
-- for kkk = 2 , arg.n ,1 do
-- SystemNotice ( arg[1] , arg[kkk])
-- end
local Check = 0
Check = can_fusion_item_main ( arg )
if Check == 1 then
return 1
else
return 0
end
end
--检测是否可以熔合主函数
function can_fusion_item_main ( Table )
local role = 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -