Jump to content
Sign in to follow this  
Graf

Чертежи и все все все)

Recommended Posts

Хотел бы разобрать функцию чертежей. Как ими пользоваться. Ни разу ими не пользовался, так что эта тема для меня проблемна.

Взял чертеж пачкули, у него функция ItemUse_MHDTZ.

А там...

--Чертеж Пачкули (ID 1000)
function ItemUse_MHDTZ( role , Item ) 							
 	local Item_CanGet = GetChaFreeBagGridNum ( role )
	 if Item_CanGet < 1 then
		SystemNotice(role ,"\215\242\238\225\251 \240\224\241\239\229\247\224\242\224\242\252 \247\229\240\242\229\230 \239\238 \234\240\224\233\237\229\233 \236\229\240\229 \242\240\229\225\243\229\242\241\255 1 \241\226\238\225\238\228\237\251\233 \241\235\238\242 \226 \194\224\248\229\236 \232\237\226\229\237\242\224\240\229")
		UseItemFailed ( role )
		return
	end  	
	local r1 = 0
	local r2 = 0
	local item_ID=GetItemID(Item)
	local Itemnew_ID=2300
	local rad_ID=math.random ( 1, 100 )
	if rad_ID<=40 then
		Itemnew_ID=2300 
	elseif rad_ID>=41 and rad_ID<=81 then
		Itemnew_ID=2302
	else
		Itemnew_ID=2301
	end
	r1, r2 = MakeItem ( role , Itemnew_ID  , 1 , 4 )
	local Itemnew = GetChaItem ( role , 2 , r2 )


	local rad_energy=math.random ( 1, 100 )
	local energy = 1
	if item_ID==1000 then
		energy=1
	elseif item_ID==1001 then
		if rad_energy<=5 then
			energy=4
		elseif  rad_energy<=30 and rad_energy>=6 then
			energy=3
		else
			energy=2
		end
	elseif item_ID==1002 then
		if rad_energy<=5 then
			energy=6
		elseif  rad_energy<=30 and rad_energy>=6 then
			energy=5
		else
			energy=4
		end
	elseif item_ID==1003 then
		if rad_energy<=5 and Itemnew_ID~=2301 then
			energy=8
		elseif  rad_energy<=30 and rad_energy>=6 then
			energy=7
		else
			energy=6
		end
	end	

	local final_ID=1849 
	local final_LV=20
	local final_ID1=3116
	local final_ID2=3116
	local final_ID3=3116
	local General = 0  
	local ItemId =3124
	if Itemnew_ID==2300 then
		local STAR_BEGIN=ZHIZAO_Mxcount*(energy-1)/10+1
		local STAR_END=ZHIZAO_Mxcount*energy/10

		for i = STAR_BEGIN , STAR_END , 1 do 
		    General = ZHIZAO__Rad[ i ] + General		
		end 
		local a = math.random ( 1, General )
		local b = 0
		local d = 0 
		local k = 0 
		local c = -1
		for k = STAR_BEGIN , STAR_END , 1 do
			d = ZHIZAO__Rad[ k ] + b
			if a <= d and a > b then
				c = k
				break 
			end 
			b = d 
		end 
		if c == -1 then
			c =STAR_BEGIN
		end
		final_ID=ZHIZAO_ID[c]
		final_LV=ZHIZAO_LV[c]
		final_ID1=ZHIZAO_ID1[c]
		final_ID2=ZHIZAO_ID2[c]
		final_ID3=ZHIZAO_ID3[c]

	end
	if Itemnew_ID==2301 then
		local STAR_BEGIN=1
		local STAR_END=77
		if energy==1 then
			STAR_BEGIN=1
			STAR_END=77
		elseif energy==2 then
			STAR_BEGIN=78
			STAR_END=166
		elseif energy==3 then
			STAR_BEGIN=167
			STAR_END=278
		elseif energy==4 then
			STAR_BEGIN=279
			STAR_END=434
		elseif energy==5 then
			STAR_BEGIN=435
			STAR_END=596
		elseif energy==6 then
			STAR_BEGIN=597
			STAR_END=732
		elseif energy==7 then
			STAR_BEGIN=733
			STAR_END=871
		elseif energy==8 then
			STAR_BEGIN=895
			STAR_END=902
		end

		for i = STAR_BEGIN , STAR_END , 1 do 
		    General = ZHUZAO__Rad[ i ] + General		
		end 
		local a = math.random ( 1, General )
		local b = 0
		local d = 0 
		local k = 0 
		local c = -1
		for k = STAR_BEGIN , STAR_END , 1 do
			d = ZHUZAO__Rad[ k ] + b
			if a <= d and a > b then
				c = k
				break 
				end 
			b = d 
		end 
		if c == -1 then
			c =STAR_BEGIN
		end
		final_ID=ZHUZAO_ID[c]
		final_LV=ZHUZAO_LV[c]
		final_ID1=ZHUZAO_ID1[c]
		final_ID2=ZHUZAO_ID2[c]
		final_ID3=ZHUZAO_ID3[c]		
		local final_type=GetItemType2(final_ID)
		local check=0
		local i = 0
		for i = 0 , Item_CanJinglian_Num  , 1 do
			if final_type == Item_CanJinglian_ID [i] then
				check=1
			end
		end

		if  check==1 then
			local check_rad=math.random ( 1, 1000 )
			if check_rad==1 then
				final_LV=70
			elseif check_rad>=2 and check_rad<=11 then
				final_LV=60
			elseif check_rad>=12 and check_rad<=21 then
				final_LV=50
			elseif check_rad>=22 and check_rad<=221 then
				final_LV=40
			elseif check_rad>=222 and check_rad<=421 then
				final_LV=30
			elseif check_rad>=422 and check_rad<=621 then
				final_LV=20
			else
				final_LV=10				
			end
			if final_LV>70 then
				final_LV=70
			end

			if final_LV~=10 and final_LV~=0 then
				local tmd=(energy-1)*6+final_LV*0.1-1
				final_ID3=TESHU_ID[tmd]
			end
		end
	end
	if Itemnew_ID==2302 then
		local STAR_BEGIN=1
		local STAR_END=80
		if energy==1 then
			STAR_BEGIN=1
			STAR_END=7
		elseif energy==2 then
			STAR_BEGIN=8
			STAR_END=12
		elseif energy==3 then
			STAR_BEGIN=13
			STAR_END=17
		elseif energy==4 then
			STAR_BEGIN=18
			STAR_END=26
		elseif energy==5 then
			STAR_BEGIN=27
			STAR_END=31
		elseif energy==6 then
			STAR_BEGIN=32
			STAR_END=36
		else
			STAR_BEGIN=energy+30
			STAR_END=energy+30             
		end
		for i = STAR_BEGIN , STAR_END , 1 do 
		    General = ZHIZAO__Rad[ i ] + General		
		end 
		local a = math.random ( 1, General )
		local b = 0
		local d = 0 
		local k = 0 
		local c = -1
		for k = STAR_BEGIN , STAR_END , 1 do
			d = PENGREN__Rad[ k ] + b
			if a <= d and a > b then
				c = k
				break 
			end 
			b = d 
		end 
		if c == -1 then
			c =STAR_BEGIN
		end
		final_ID=PENGREN_ID[c]
		final_LV=PENGREN_LV[c]
		final_ID1=PENGREN_ID1[c]
		final_ID2=PENGREN_ID2[c]
		final_ID3=PENGREN_ID3[c]		
	end

	local star_number=energy*10
	local yingbi_num=math.random ( 10, star_number )
	if energy<=3 then
		SetItemAttr(Itemnew, ITEMATTR_MAXURE, energy )
		SetItemAttr(Itemnew, ITEMATTR_URE, energy )		
	else
		SetItemAttr(Itemnew, ITEMATTR_MAXURE, yingbi_num )
		SetItemAttr(Itemnew, ITEMATTR_URE, energy )
	end
	local sta =math.random ( 1, 10 )
	if Itemnew_ID==2301 then
		sta=sta*0.5
		sta=math.max(1,sta)
	end
	SetItemAttr(Itemnew, ITEMATTR_VAL_STA, sta )
	local qulity=math.floor(final_LV*0.1)+100
	SetItemAttr(Itemnew, ITEMATTR_MAXENERGY, qulity )

	local ure=10-final_LV*0.1
	SetItemAttr(Itemnew, ITEMATTR_ENERGY, ure )

	SetItemAttr(Itemnew, ITEMATTR_VAL_STR, final_ID1 )
	SetItemAttr(Itemnew, ITEMATTR_VAL_CON, final_ID2 )
	SetItemAttr(Itemnew, ITEMATTR_VAL_DEX, final_ID3 )
	SetItemAttr(Itemnew, ITEMATTR_VAL_AGI, final_ID )

	local Num_new = GetItemForgeParam ( Itemnew , 1 )
	local Part2_new = GetNum_Part2 ( Num_new )	
	local Part4_new = GetNum_Part4 ( Num_new )
	local Part6_new = GetNum_Part6 ( Num_new )
	Part2_new = math.random ( 3, 20 ) 
	Part4_new = math.random ( 2, 9 )
	Part6_new = math.random ( 1, 3 )
	Part6_new = Part6_new*math.max(1,(energy-2))
	Num_new = SetNum_Part2 ( Num_new , Part2_new )
	Num_new = SetNum_Part4 ( Num_new , Part4_new )
	Num_new = SetNum_Part6 ( Num_new , Part6_new )
	SetItemForgeParam ( Itemnew , 1 , Num_new )

end 

Я так понимаю это рандомное "выдавание"(мозги не соображают, как правильно сказать =)).

Всего в iteminfo 3 чертежа. Кулинарии, производства и ремесла.

У них функций нет.

Я, конечно, нашел тему 

https://pkodev.net/index.php?/topic/276-%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7/#comment-1501

Но там очень поверхностно.

Помогите пожалуйста)) 

 

Нашел еще мануфактуру(в forge.lua), но не понимаю её)))

function can_manufacture_item (...)
    local ItemBagCount = arg[2]
    local Length = ItemBagCount+3
    if arg.n ~= Length then
        Notice("parameter value illegal"..arg.n)
        return 0
    end    
    local Check = 0
    Check = can_manufacture_item_main ( arg )
    if Check == 1 then        
        return 1
    else
        return 0
    end
end
function can_manufacture_item_main ( Table )
    local role = 0
    local ItemBag = {}                                        
    local ItemBagCount = 0                                        
    role , ItemBag , ItemBagCount = Read_manufacture ( Table )
    local Item_CanGet = GetChaFreeBagGridNum ( role )    
    if Item_CanGet < 1 then
        SystemNotice(role ,"Вам нужно иметь 1 свободный слот в инвентаре ")
        UseItemFailed ( role )
        return
    end
    local i = 0
    local Item = {}
    local ItemID = {}
    local ItemType = {}
    for i = 1 , ItemBagCount , 1 do                            
        Item = GetChaItem ( role , 2 , ItemBag )            
        ItemID = GetItemID ( Item )                        
        ItemType = GetItemType ( Item )                     
    end
    if ItemType[1] ~= 59 then
        SystemNotice( role ,"Нужно поместить фею для начала ")
        return 0
    end
    local URE_JLone = GetItemAttr( Item[1] ,ITEMATTR_URE )        
    if URE_JLone<=0 then
        SystemNotice( role ,"Покорми свою фею. Уж очень она голодна.")
        return 0    
    end
    local Num_JL = GetItemForgeParam ( Item[1] , 1 )
    Num_JL = TansferNum ( Num_JL )
    local Part1_JL = GetNum_Part1 ( Num_JL )    
    local Part2_JL = GetNum_Part2 ( Num_JL )    
    local Part3_JL = GetNum_Part3 ( Num_JL )
    local Part4_JL = GetNum_Part4 ( Num_JL )
    local Part5_JL = GetNum_Part5 ( Num_JL )
    local Part6_JL = GetNum_Part6 ( Num_JL )
    local Part7_JL = GetNum_Part7 ( Num_JL )
    local JL_jineng=0
    local JL_jineng_lv=0
    local life_lv = 0
    if ItemID[2]==2300 then 
        if Part2_JL==13 then
            JL_jineng=Part2_JL
            JL_jineng_lv=Part3_JL
        elseif Part4_JL==13 then
            JL_jineng=Part4_JL
            JL_jineng_lv=Part5_JL
        elseif Part6_JL==13 then
            JL_jineng=Part6_JL
            JL_jineng_lv=Part7_JL
        end
        life_lv=GetSkillLv( role , SK_ZHIZAO )    
    end
    if ItemID[2]==2301 then 
        if Part2_JL==14 then
            JL_jineng=Part2_JL
            JL_jineng_lv=Part3_JL
        elseif Part4_JL==14 then
            JL_jineng=Part4_JL
            JL_jineng_lv=Part5_JL
        elseif Part6_JL==14 then
            JL_jineng=Part6_JL
            JL_jineng_lv=Part7_JL
        end    
        life_lv=GetSkillLv( role , SK_ZHUZAO )    
    end
    if ItemID[2]==2302 then 
        if Part2_JL==16 then
            JL_jineng=Part2_JL
            JL_jineng_lv=Part3_JL
        elseif Part4_JL==16 then
            JL_jineng=Part4_JL
            JL_jineng_lv=Part5_JL
        elseif Part6_JL==16 then
            JL_jineng=Part6_JL
            JL_jineng_lv=Part7_JL
        end
        life_lv=GetSkillLv( role , SK_PENGREN )    
    end
    if ItemID[3]~=1067 and ItemID[3]~=1068 and ItemID[3]~=1069 then
        SystemNotice( role ,"Пожалуйста используйте инструменты ")
        return 0    
    end
    if ItemID[3]==1067 or ItemID[3]==1068 or ItemID[3]==1069 or ItemID[3]==1070 then
        local Gj_ure=GetItemAttr ( Item[3] , ITEMATTR_URE )
        if Gj_ure<=0 then
            Gj_ure=0
        SystemNotice( role ,"Прочность инструмента низка. Используйте Вечный очаг в Веснограде, чтобы починить частицу ")
            return 0
        end
        if ItemID[3]==1068 and  ItemID[2]~=2300 then
        SystemNotice( role ,"Уровень инструмента не подходит для этого чертежа ")
            return 0            
        end
        if ItemID[3]==1069 and  ItemID[2]~=2301 then
        SystemNotice( role ,"Уровень инструмента не подходит для этого чертежа ")
            return 0            
        end    
        if ItemID[3]==1067 and ItemID[2]~=2302 then
        SystemNotice( role ,"Уровень инструмента не подходит для этого чертежа ")
            return 0            
        end
        local Gj_lv=GetItemAttr ( Item[3] , ITEMATTR_VAL_STR )
        JL_jineng_lv=3*JL_jineng_lv+1
        if JL_jineng_lv<Gj_lv then
        SystemNotice( role ,"Уровень феи не соответствует уровню инструмента ")
            return 0            
        end
    end
    if ItemType[2] ~= 69 then
        SystemNotice( role ,"Как вы смеете использовать поддельный чертеж!")
        return 0
    end
    local paper_lv = GetItemAttr(Item[2], ITEMATTR_URE )
    if life_lv<paper_lv then
        SystemNotice( role ,"Уровень навыка не соответствует уровню чертежа ")
        return 0
    end
    local paper_id1=GetItemAttr(Item[2], ITEMATTR_VAL_STR )
    local paper_id2=GetItemAttr(Item[2], ITEMATTR_VAL_CON )
    local paper_id3=GetItemAttr(Item[2], ITEMATTR_VAL_DEX )
    if ItemID[4]~=paper_id1 or  ItemID[5]~=paper_id2 or  ItemID[6]~=paper_id3 then
        SystemNotice( role ,"Проверьте необходимый материал в чертеже и его наличие ")
        return 0        
    end
    local Num_paper = GetItemForgeParam ( Item[2] , 1 )
    Num_paper = TansferNum ( Num_paper )
    local Part1_paper = GetNum_Part1 ( Num_paper )    
    local Part2_paper = GetNum_Part2 ( Num_paper )    
    local Part3_paper = GetNum_Part3 ( Num_paper )    
    local Part4_paper = GetNum_Part4 ( Num_paper )    
    local Part5_paper = GetNum_Part5 ( Num_paper )
    local Part6_paper = GetNum_Part6 ( Num_paper )    
    local Part7_paper = GetNum_Part7 ( Num_paper )
    local i1 = CheckBagItem( role, ItemID[4] )            
    local i2 = CheckBagItem( role, ItemID[5] )            
    local i3 = CheckBagItem( role, ItemID[6] )            
    if i1 < Part2_paper or i2 < Part4_paper or i3 < Part6_paper  then
        SystemNotice( role ,"Проверьте ингридиенты или оставшееся кол-во использования ")
        return 0
    end
    local paper_num=GetItemAttr(Item[2], ITEMATTR_VAL_STA )
    if paper_num==0 then
        SystemNotice( role ,"Чертеж невозможно использовать бесконечно. Возьмите новый чертеж ")
        return 0
    end
    local a1 = CheckBagItem( role, 855 )            
    local a1_num=GetItemAttr(Item[2], ITEMATTR_MAXURE )
    if a1< a1_num then
        SystemNotice( role ,"У вас не хватает Монет фей ")
        return 0
    end
    return 1
end
function Read_manufacture ( Table )
    local role = Table [1]                                        
    local ItemBagCount = Table [2]                                
    local ItemBag = {}                                        
    local i = 0
    if ItemBagCount==0 then
        return role , ItemBag , ItemBagCount
    end
    for i = 1 , ItemBagCount , 1 do
        local ReadNow = i + 2
        ItemBag = Table [ReadNow]
    end
    return role , ItemBag , ItemBagCount
end
function begin_manufacture_item (...)
    local role = 0
    local ItemBag = {}                                            
    local ItemBagCount = 0                                        
    role , ItemBag , ItemBagCount = Read_manufacture ( arg )
    local Check1 = can_manufacture_item_main ( arg )
    if Check1 ~= 1 then
        return 0
    end
    local i = 0
    local j = 0
    local Item = {}
    local ItemID = {}
    local ItemType = {}
    for j = 1 , ItemBagCount , 1 do
        Item[j] = GetChaItem ( role , 2 , ItemBag [j] )            
        ItemID[j] = GetItemID ( Item[j] )                        
        ItemType[j] = GetItemType ( Item[j] )                    
    end
    local Gj_lv= 0
    if ItemID[3]==1068 then
        Gj_lv=GetItemAttr ( Item[3] , ITEMATTR_VAL_STR )
    end
    local life_lv=GetSkillLv( role , SK_ZHIZAO )    
    local paper_lv = GetItemAttr(Item[2], ITEMATTR_URE )
    local paper_energy = GetItemAttr(Item[2], ITEMATTR_MAXENERGY )-100
    local star_good=(math.min(life_lv,paper_lv)*0.03+Gj_lv*0.05+(100-paper_energy*10)*0.01)*100
    local star_radom = math.random ( 1, 100 )
    local eleven=2
    local a1 = star_radom+7
    local a2 = star_radom+14
    local a3 = star_radom+21
    local a4  = star_radom+28
    local a5  = star_radom+35
    local a6  = star_radom+42
    local a7  = star_radom+49
    local a8  = star_radom+56
    local a9  = star_radom+63
    if star_good<star_radom then
        eleven=1
    elseif star_good>=98 then
        eleven=11
    elseif star_good>=a9 then
        eleven=10
    elseif star_good>=a8 then
        eleven=9
    elseif star_good>=a7 then
        eleven=8
    elseif star_good>=a6 then
        eleven=7
    elseif star_good>=a5 then
        eleven=6
    elseif star_good>=a4 then
        eleven=5
    elseif star_good>=a3 then
        eleven=4
    elseif star_good>=a2 then
        eleven=3
    elseif star_good>=a1 then
        eleven=2
    end
    local star_begin=3*(1+paper_lv)
    local star_end=5*(1+paper_lv)
    local star=math.random ( star_begin , star_end )
    if star>64 then
        star=64
    end
    local run_time = star
    return 2,run_time,eleven
end
function begin_manufacture1_item (...)
    local role = 0
    local ItemBag = {}                                            
    local ItemBagCount = 0                                        
    role , ItemBag , ItemBagCount = Read_manufacture ( arg )
    local Check1 = can_manufacture_item_main ( arg )
    if Check1 ~= 1 then
        return 0
    end
    local i = 0
    local j = 0
    local Item = {}
    local ItemID = {}
    local ItemType = {}
    for j = 1 , ItemBagCount , 1 do
        Item[j] = GetChaItem ( role , 2 , ItemBag [j] )            
        ItemID[j] = GetItemID ( Item[j] )                        
        ItemType[j] = GetItemType ( Item[j] )                    
    end
    local paper_lv = GetItemAttr(Item[2], ITEMATTR_URE )
    local star_begin=3*(1+paper_lv)
    local star_end=5*(1+paper_lv)
    local star=math.random ( star_begin , star_end )
    if star>64 then
        star=64
    end
    local run_time = star
    local WORD1 =math.random ( 1, 6 )
    local WORD2 =math.random ( 1, 6 )
    local WORD3 =math.random ( 1, 6 )
    local str =""..WORD1..","..WORD2..","..WORD3
    return 2,run_time,str
end
function begin_manufacture2_item (...)
    local role = 0
    local ItemBag = {}                                            
    local ItemBagCount = 0                                        
    role , ItemBag , ItemBagCount = Read_manufacture ( arg )
    local Check1 = can_manufacture_item_main ( arg )
    if Check1 ~= 1 then
        return 0
    end
    local i = 0
    local j = 0
    local Item = {}
    local ItemID = {}
    local ItemType = {}
    for j = 1 , ItemBagCount , 1 do
        Item[j] = GetChaItem ( role , 2 , ItemBag [j] )            
        ItemID[j] = GetItemID ( Item[j] )                        
        ItemType[j] = GetItemType ( Item[j] )                    
    end
    local paper_lv = GetItemAttr(Item[2], ITEMATTR_URE )
    local star_begin=3*(1+paper_lv)
    local star_end=4*(1+paper_lv)
    local star=math.random ( star_begin , star_end )
    if star>64 then
        star=64
    end
    local run_time = star
    local star_ok = 12
    return 2,run_time,star_ok
end
function begin_manufacture3_item (...)
    local role = 0
    local ItemBag = {}                                            
    local ItemBagCount = 0                                        
    role , ItemBag , ItemBagCount = Read_manufacture ( arg )
    local Check1 = can_fenjie_item_main ( arg )
    if Check1 ~= 1 then
        return 0
    end
    local i = 0
    local j = 0
    local Item = {}
    local ItemID = {}
    local ItemType = {}
    for j = 1 , ItemBagCount , 1 do
        Item[j] = GetChaItem ( role , 2 , ItemBag [j] )            
        ItemID[j] = GetItemID ( Item[j] )                        
        ItemType[j] = GetItemType ( Item[j] )                    
    end
    local Item_Lv =  GetItemLv ( Item[3] )
    if ItemID[3]>=5000 then
        local tmd_rad=math.random ( 1 , 10 )
        if tmd_rad==1 then
            Item_Lv=80
        elseif tmd_rad==2 then
            Item_Lv=70
        elseif tmd_rad==3 then
            Item_Lv=60
        elseif tmd_rad==4 then
            Item_Lv=50
        elseif tmd_rad==5 then
            Item_Lv=40
        elseif tmd_rad==6 then
            Item_Lv=30
        elseif tmd_rad==7 then
            Item_Lv=20
        else
            Item_Lv=10
        end
    end
    local base_rad=0
    base_rad=math.max((80-math.max(Item_Lv,10))*0.01,0.15)
    local Num_JL = GetItemForgeParam ( Item[1] , 1 )
    Num_JL = TansferNum ( Num_JL )
    local Part1_JL = GetNum_Part1 ( Num_JL )    
    local Part2_JL = GetNum_Part2 ( Num_JL )    
    local Part3_JL = GetNum_Part3 ( Num_JL )
    local Part4_JL = GetNum_Part4 ( Num_JL )
    local Part5_JL = GetNum_Part5 ( Num_JL )
    local Part6_JL = GetNum_Part6 ( Num_JL )
    local Part7_JL = GetNum_Part7 ( Num_JL )
    local JL_jineng=0
    local JL_jineng_lv=0
    if Part2_JL==16 then
        JL_jineng=Part2_JL
        JL_jineng_lv=Part3_JL
    elseif Part4_JL==16 then
        JL_jineng=Part4_JL
        JL_jineng_lv=Part5_JL
    elseif Part6_JL==16 then
        JL_jineng=Part6_JL
        JL_jineng_lv=Part7_JL
    end
    local Gj_lv=0
    if  ItemID[2]==1070 then
        Gj_lv=GetItemAttr ( Item[2] , ITEMATTR_VAL_STR )
    end
    local life_lv = 0
    life_lv=GetSkillLv( role , SK_FENJIE )    
    local run_time = math.random ( 4, 8 )
    local word_test = math.floor((JL_jineng_lv*0.05+life_lv*0.02+Gj_lv*0.03+base_rad)*100000)
    if word_test>99999 then
        word_test=99999    
    end
    local word_radom = math.random ( 10000, 99999 )
    local str =""..word_test..","..word_radom
    return 2,run_time,str
end
function end_manufacture_item (...)
    local role = 0
    local ItemBag = {}                                            
    local ItemBagCount = 0                                        
    role , ItemBag , ItemBagCount = Read_manufacture ( arg )
    local i = 0
    local j = 0
    local star_check=0 
    star_check=arg[arg.n] 
    local Item = {}
    local ItemID = {}
    local ItemType = {}
    local check = {}
    for j = 1 , ItemBagCount , 1 do
        Item[j] = GetChaItem ( role , 2 , ItemBag [j] )            
        ItemID[j] = GetItemID ( Item[j] )                        
        ItemType[j] = GetItemType ( Item[j] )                    
    end
    local paper_id1=GetItemAttr(Item[2], ITEMATTR_VAL_STR )
    local paper_id2=GetItemAttr(Item[2], ITEMATTR_VAL_CON )
    local paper_id3=GetItemAttr(Item[2], ITEMATTR_VAL_DEX )
    local Num_paper = GetItemForgeParam ( Item[2] , 1 )
    Num_paper = TansferNum ( Num_paper )
    local Part2_paper = GetNum_Part2 ( Num_paper )    
    local Part4_paper = GetNum_Part4 ( Num_paper )    
    local Part6_paper = GetNum_Part6 ( Num_paper )    
    local life_lv = 0
    local Gj_lv= 0
    local paper_lv = GetItemAttr(Item[2], ITEMATTR_URE )
    local num_x=1
    local star_num_qulity=4
    if ItemID[2]==2300 then 
        life_lv=GetSkillLv( role , SK_ZHIZAO )    
        if star_check==1 then
            num_x=0
        elseif star_check==2 or star_check==3 or star_check==4 then
            num_x=1
        elseif star_check==5 or star_check==6 or star_check==7 then 
            num_x=2
        elseif star_check==8 or star_check==9 or star_check==10 then 
            num_x=3
        elseif star_check==11 then
            num_x=4            
        end
    end
    if ItemID[2]==2301 then 
        life_lv=GetSkillLv( role , SK_ZHUZAO )    
    end
    if ItemID[2]==2302 then 
        life_lv=GetSkillLv( role , SK_PENGREN )    
        local differ_check=math.abs(star_check-75)
        if differ_check==0 then
            num_x=5
        elseif differ_check==1 then
            num_x=4
        elseif differ_check==2  then
            num_x=3
        elseif differ_check>=3 and differ_check<=6 and star_check<=77 then
            num_x=2
        elseif differ_check>=7 and differ_check<=25 and star_check<=77 then
            num_x=1        
        else
            num_x=0
        end
    end
    if ItemID[3]==1067 or ItemID[3]==1068 or ItemID[3]==1069 or ItemID[3]==1070 then
        Gj_lv=GetItemAttr ( Item[3] , ITEMATTR_VAL_STR )
    end
    local i1 = 0
    local i2 = 0
    local i3 = 0
    i1 =TakeItem( role, 0, paper_id1, Part2_paper)
    i2 =TakeItem( role, 0, paper_id2, Part4_paper)
    i3 =TakeItem( role, 0, paper_id3, Part6_paper)
    if i1 == 0 or  i2 == 0 or  i3 == 0 then
        LG( "Hecheng_BS" , "Удалить предмет не удалось " )
    end
    local a1_num=GetItemAttr(Item[2], ITEMATTR_MAXURE )
    local a1=TakeItem( role, 0, 855, a1_num )               
    if a1==0  then
        SystemNotice ( role ,"Не удалось удалить Монету Феи ")
        return
    end 
    local new_num = GetItemAttr(Item[2], ITEMATTR_VAL_AGI )
    if ItemID[2]==2300 then 
        if new_num==1067 or  new_num==1068 or new_num==1069 or new_num==1070 or  new_num==2236 then
            num_x=1
        end
    end
    local paper_energy = GetItemAttr(Item[2], ITEMATTR_MAXENERGY )-100
    local star_good=(math.min(life_lv,paper_lv)*0.03+Gj_lv*0.05+(100-paper_energy*10)*0.01)*100
    local star_radom = math.random ( 1, 100 )
    local m1 = -1
    local m2 = -1    
    if ItemID[2]==2300 then 
        if star_check>=2 then
            star_good=100
            star_radom=1
        else
            star_good=1
            star_radom=100
        end
    end
    local star_check_chenggong=0
    if star_check~=0 and star_good >star_radom and num_x~=0 then
        star_check_chenggong=1
        m1, m2 = MakeItem ( role , new_num  , num_x , star_num_qulity )
        local Itemfinal = GetChaItem ( role , 2 , m2 )
        if ItemID[2]==2301 and CheckItem_CanJinglian(Itemfinal)==1 then 
            local Itemfinal_energy=GetItemAttr ( Itemfinal ,ITEMATTR_ENERGY) 
            local itemfinal_maxenergy =GetItemAttrRange(new_num , ITEMATTR_MAXENERGY , 1 )
            local itemfinal_minenergy = GetItemAttrRange(new_num ,ITEMATTR_MAXENERGY , 0 )
            if paper_energy>7 then
                paper_energy=7
            end 
            if itemfinal_maxenergy~=itemfinal_minenergy then 
                Itemfinal_energy=math.mod(Itemfinal_energy,1000)+paper_energy*1000
                SetItemAttr ( Itemfinal ,ITEMATTR_MAXENERGY , Itemfinal_energy)
                SetItemAttr ( Itemfinal ,ITEMATTR_ENERGY , Itemfinal_energy)
            end
        end
        local item_final_ID=GetItemID(Itemfinal)
        if item_final_ID==1067 or item_final_ID==1068 or item_final_ID==1069 or item_final_ID==1070 then
            SetItemAttr(Itemfinal, ITEMATTR_VAL_STR ,1)
            SetItemAttr(Itemfinal, ITEMATTR_MAXENERGY ,10000)
            SetItemAttr(Itemfinal, ITEMATTR_ENERGY ,1)        
        end
        if item_final_ID==2236 then
            SetItemAttr(Itemfinal, ITEMATTR_VAL_STR ,paper_lv)
        end
    else
        SystemNotice( role , "Действие завершилось неудачей. Наверное вы что-то неверно делали ")
    end
    local paper_num=GetItemAttr(Item[2], ITEMATTR_VAL_STA )
    paper_num=paper_num-1
        SetItemAttr(Item[2], ITEMATTR_VAL_STA , paper_num )
    local Gj_ure=0
    if ItemID[3]==1067 or ItemID[3]==1068 or ItemID[3]==1069 or ItemID[3]==1070 then
        Gj_ure=GetItemAttr ( Item[3] , ITEMATTR_URE )
        local star_gjlv_num=GetItemAttr ( Item[3] , ITEMATTR_VAL_STR )
        Gj_ure=Gj_ure-50*star_gjlv_num
        if Gj_ure<=0 then
            Gj_ure=0
        end
        local star_lv_num = GetItemAttr( Item[3] ,ITEMATTR_ENERGY )       
        if star_check_chenggong==1 then
            star_lv_num=star_lv_num+paper_lv
        else                        
            star_lv_num=star_lv_num+1            
        end
        if star_lv_num>=10000 then
            star_lv_num=10000
        end
         SystemNotice( role , "Ваш инструмент получил "..star_lv_num.." очков опыта ")
        if star_lv_num>=star_gjlv_num*star_gjlv_num*100 then 
            star_gjlv_num=star_gjlv_num+1
            SetItemAttr ( Item[3] , ITEMATTR_VAL_STR ,star_gjlv_num)
             SystemNotice( role , "Поздравляем, уровень вашего инструмента повышен!")
            star_lv_num=0
        end
        SetItemAttr (  Item[3] , ITEMATTR_ENERGY , star_lv_num )
        SetItemAttr ( Item[3] , ITEMATTR_URE ,Gj_ure)
    end
    local cha_name = GetChaDefaultName ( role )
    LG( "star_SHENGHUO_lg" ,cha_name, star_check , ItemID[2] , paper_lv , paper_id1 , Part2_paper ,  paper_id2 , Part4_paper ,  paper_id3 , Part6_paper , ItemID[3] , Gj_lv ,  life_lv )
    SynChaKitbag(role,13)
    return m2
end
function can_manufacture_item (...)
	local ItemBagCount = arg[2]
	local Length = ItemBagCount+3
	if arg.n ~= Length then
		Notice("parameter value illegal"..arg.n)
		return 0
	end	
	local Check = 0
	Check = can_manufacture_item_main ( arg )
	if Check == 1 then		
		return 1
	else
		return 0
	end
end

function can_manufacture_item_main ( Table )
	local role = 0
	local ItemBag = {}										
	local ItemBagCount = 0										
	role , ItemBag , ItemBagCount = Read_manufacture ( Table )
	local Item_CanGet = GetChaFreeBagGridNum ( role )	
	if Item_CanGet < 1 then
		SystemNotice(role ,"Вам нужно иметь 1 свободный слот в инвентаре ")
		UseItemFailed ( role )
		return
	end
	local i = 0
	local Item = {}
	local ItemID = {}
	local ItemType = {}
	for i = 1 , ItemBagCount , 1 do							
		Item[i] = GetChaItem ( role , 2 , ItemBag [i] )			
		ItemID[i] = GetItemID ( Item[i] )						
		ItemType[i] = GetItemType ( Item[i] )					 
	end
	if ItemType[1] ~= 59 then
		SystemNotice( role ,"Нужно поместить фею для начала ")
		return 0
	end
	local URE_JLone = GetItemAttr( Item[1] ,ITEMATTR_URE )		
	if URE_JLone<=0 then
		SystemNotice( role ,"Покорми свою фею. Уж очень она голодна.")
		return 0	
	end
	local Num_JL = GetItemForgeParam ( Item[1] , 1 )
	Num_JL = TansferNum ( Num_JL )
	local Part1_JL = GetNum_Part1 ( Num_JL )	
	local Part2_JL = GetNum_Part2 ( Num_JL )	
	local Part3_JL = GetNum_Part3 ( Num_JL )
	local Part4_JL = GetNum_Part4 ( Num_JL )
	local Part5_JL = GetNum_Part5 ( Num_JL )
	local Part6_JL = GetNum_Part6 ( Num_JL )
	local Part7_JL = GetNum_Part7 ( Num_JL )
	local JL_jineng=0
	local JL_jineng_lv=0
	local life_lv = 0
	if ItemID[2]==2300 then 
		if Part2_JL==13 then
			JL_jineng=Part2_JL
			JL_jineng_lv=Part3_JL
		elseif Part4_JL==13 then
			JL_jineng=Part4_JL
			JL_jineng_lv=Part5_JL
		elseif Part6_JL==13 then
			JL_jineng=Part6_JL
			JL_jineng_lv=Part7_JL
		end
		life_lv=GetSkillLv( role , SK_ZHIZAO )	
	end
	if ItemID[2]==2301 then 
		if Part2_JL==14 then
			JL_jineng=Part2_JL
			JL_jineng_lv=Part3_JL
		elseif Part4_JL==14 then
			JL_jineng=Part4_JL
			JL_jineng_lv=Part5_JL
		elseif Part6_JL==14 then
			JL_jineng=Part6_JL
			JL_jineng_lv=Part7_JL
		end	
		life_lv=GetSkillLv( role , SK_ZHUZAO )	
	end
	if ItemID[2]==2302 then 
		if Part2_JL==16 then
			JL_jineng=Part2_JL
			JL_jineng_lv=Part3_JL
		elseif Part4_JL==16 then
			JL_jineng=Part4_JL
			JL_jineng_lv=Part5_JL
		elseif Part6_JL==16 then
			JL_jineng=Part6_JL
			JL_jineng_lv=Part7_JL
		end
		life_lv=GetSkillLv( role , SK_PENGREN )	
	end
	if ItemID[3]~=1067 and ItemID[3]~=1068 and ItemID[3]~=1069 then
		SystemNotice( role ,"Пожалуйста используйте инструменты ")
		return 0	
	end
	if ItemID[3]==1067 or ItemID[3]==1068 or ItemID[3]==1069 or ItemID[3]==1070 then
		local Gj_ure=GetItemAttr ( Item[3] , ITEMATTR_URE )
		if Gj_ure<=0 then
			Gj_ure=0
		SystemNotice( role ,"Прочность инструмента низка. Используйте Вечный очаг в Веснограде, чтобы починить частицу ")
			return 0
		end
		if ItemID[3]==1068 and  ItemID[2]~=2300 then
		SystemNotice( role ,"Уровень инструмента не подходит для этого чертежа ")
			return 0			
		end
		if ItemID[3]==1069 and  ItemID[2]~=2301 then
		SystemNotice( role ,"Уровень инструмента не подходит для этого чертежа ")
			return 0			
		end	
		if ItemID[3]==1067 and ItemID[2]~=2302 then
		SystemNotice( role ,"Уровень инструмента не подходит для этого чертежа ")
			return 0			
		end
		local Gj_lv=GetItemAttr ( Item[3] , ITEMATTR_VAL_STR )
		JL_jineng_lv=3*JL_jineng_lv+1
		if JL_jineng_lv<Gj_lv then
		SystemNotice( role ,"Уровень феи не соответствует уровню инструмента ")
			return 0			
		end
	end
	if ItemType[2] ~= 69 then
		SystemNotice( role ,"Как вы смеете использовать поддельный чертеж!")
		return 0
	end
	local paper_lv = GetItemAttr(Item[2], ITEMATTR_URE )
	if life_lv<paper_lv then
		SystemNotice( role ,"Уровень навыка не соответствует уровню чертежа ")
		return 0
	end
	local paper_id1=GetItemAttr(Item[2], ITEMATTR_VAL_STR )
	local paper_id2=GetItemAttr(Item[2], ITEMATTR_VAL_CON )
	local paper_id3=GetItemAttr(Item[2], ITEMATTR_VAL_DEX )
	if ItemID[4]~=paper_id1 or  ItemID[5]~=paper_id2 or  ItemID[6]~=paper_id3 then
		SystemNotice( role ,"Проверьте необходимый материал в чертеже и его наличие ")
		return 0		
	end
	local Num_paper = GetItemForgeParam ( Item[2] , 1 )
	Num_paper = TansferNum ( Num_paper )
	local Part1_paper = GetNum_Part1 ( Num_paper )	
	local Part2_paper = GetNum_Part2 ( Num_paper )	
	local Part3_paper = GetNum_Part3 ( Num_paper )	
	local Part4_paper = GetNum_Part4 ( Num_paper )	
	local Part5_paper = GetNum_Part5 ( Num_paper )
	local Part6_paper = GetNum_Part6 ( Num_paper )	
	local Part7_paper = GetNum_Part7 ( Num_paper )
	local i1 = CheckBagItem( role, ItemID[4] )			
	local i2 = CheckBagItem( role, ItemID[5] )			
	local i3 = CheckBagItem( role, ItemID[6] )			
	if i1 < Part2_paper or i2 < Part4_paper or i3 < Part6_paper  then
		SystemNotice( role ,"Проверьте ингридиенты или оставшееся кол-во использования ")
		return 0
	end
	local paper_num=GetItemAttr(Item[2], ITEMATTR_VAL_STA )
	if paper_num==0 then
		SystemNotice( role ,"Чертеж невозможно использовать бесконечно. Возьмите новый чертеж ")
		return 0
	end
	local a1 = CheckBagItem( role, 855 )			
	local a1_num=GetItemAttr(Item[2], ITEMATTR_MAXURE )
	if a1< a1_num then
		SystemNotice( role ,"У вас не хватает Монет фей ")
		return 0
	end
	return 1
end

function Read_manufacture ( Table )
	local role = Table [1]										
	local ItemBagCount = Table [2]								
	local ItemBag = {}										
	local i = 0
	if ItemBagCount==0 then
		return role , ItemBag , ItemBagCount
	end
	for i = 1 , ItemBagCount , 1 do
		local ReadNow = i + 2
		ItemBag [i] = Table [ReadNow]
	end
	return role , ItemBag , ItemBagCount
end

function begin_manufacture_item (...)
	local role = 0
	local ItemBag = {}											
	local ItemBagCount = 0										
	role , ItemBag , ItemBagCount = Read_manufacture ( arg )
	local Check1 = can_manufacture_item_main ( arg )
	if Check1 ~= 1 then
		return 0
	end
	local i = 0
	local j = 0
	local Item = {}
	local ItemID = {}
	local ItemType = {}
	for j = 1 , ItemBagCount , 1 do
		Item[j] = GetChaItem ( role , 2 , ItemBag [j] )			
		ItemID[j] = GetItemID ( Item[j] )						
		ItemType[j] = GetItemType ( Item[j] )					
	end
	local Gj_lv= 0
	if ItemID[3]==1068 then
		Gj_lv=GetItemAttr ( Item[3] , ITEMATTR_VAL_STR )
	end
	local life_lv=GetSkillLv( role , SK_ZHIZAO )	
	local paper_lv = GetItemAttr(Item[2], ITEMATTR_URE )
	local paper_energy = GetItemAttr(Item[2], ITEMATTR_MAXENERGY )-100
	local star_good=(math.min(life_lv,paper_lv)*0.03+Gj_lv*0.05+(100-paper_energy*10)*0.01)*100
	local star_radom = math.random ( 1, 100 )
	local eleven=2
	local a1 = star_radom+7
	local a2 = star_radom+14
	local a3 = star_radom+21
	local a4  = star_radom+28
	local a5  = star_radom+35
	local a6  = star_radom+42
	local a7  = star_radom+49
	local a8  = star_radom+56
	local a9  = star_radom+63
	if star_good<star_radom then
		eleven=1
	elseif star_good>=98 then
		eleven=11
	elseif star_good>=a9 then
		eleven=10
	elseif star_good>=a8 then
		eleven=9
	elseif star_good>=a7 then
		eleven=8
	elseif star_good>=a6 then
		eleven=7
	elseif star_good>=a5 then
		eleven=6
	elseif star_good>=a4 then
		eleven=5
	elseif star_good>=a3 then
		eleven=4
	elseif star_good>=a2 then
		eleven=3
	elseif star_good>=a1 then
		eleven=2
	end
	local star_begin=3*(1+paper_lv)
	local star_end=5*(1+paper_lv)
	local star=math.random ( star_begin , star_end )
	if star>64 then
		star=64
	end
	local run_time = star
	return 2,run_time,eleven
end

function begin_manufacture1_item (...)
	local role = 0
	local ItemBag = {}											
	local ItemBagCount = 0										
	role , ItemBag , ItemBagCount = Read_manufacture ( arg )
	local Check1 = can_manufacture_item_main ( arg )
	if Check1 ~= 1 then
		return 0
	end
	local i = 0
	local j = 0
	local Item = {}
	local ItemID = {}
	local ItemType = {}
	for j = 1 , ItemBagCount , 1 do
		Item[j] = GetChaItem ( role , 2 , ItemBag [j] )			
		ItemID[j] = GetItemID ( Item[j] )						
		ItemType[j] = GetItemType ( Item[j] )					
	end
	local paper_lv = GetItemAttr(Item[2], ITEMATTR_URE )
	local star_begin=3*(1+paper_lv)
	local star_end=5*(1+paper_lv)
	local star=math.random ( star_begin , star_end )
	if star>64 then
		star=64
	end
	local run_time = star
	local WORD1 =math.random ( 1, 6 )
	local WORD2 =math.random ( 1, 6 )
	local WORD3 =math.random ( 1, 6 )
	local str =""..WORD1..","..WORD2..","..WORD3
	return 2,run_time,str
end

function begin_manufacture2_item (...)
	local role = 0
	local ItemBag = {}											
	local ItemBagCount = 0										
	role , ItemBag , ItemBagCount = Read_manufacture ( arg )
	local Check1 = can_manufacture_item_main ( arg )
	if Check1 ~= 1 then
		return 0
	end
	local i = 0
	local j = 0
	local Item = {}
	local ItemID = {}
	local ItemType = {}
	for j = 1 , ItemBagCount , 1 do
		Item[j] = GetChaItem ( role , 2 , ItemBag [j] )			
		ItemID[j] = GetItemID ( Item[j] )						
		ItemType[j] = GetItemType ( Item[j] )					
	end
	local paper_lv = GetItemAttr(Item[2], ITEMATTR_URE )
	local star_begin=3*(1+paper_lv)
	local star_end=4*(1+paper_lv)
	local star=math.random ( star_begin , star_end )
	if star>64 then
		star=64
	end
	local run_time = star
	local star_ok = 12
	return 2,run_time,star_ok
end

function begin_manufacture3_item (...)
	local role = 0
	local ItemBag = {}											
	local ItemBagCount = 0										
	role , ItemBag , ItemBagCount = Read_manufacture ( arg )
	local Check1 = can_fenjie_item_main ( arg )
	if Check1 ~= 1 then
		return 0
	end
	local i = 0
	local j = 0
	local Item = {}
	local ItemID = {}
	local ItemType = {}
	for j = 1 , ItemBagCount , 1 do
		Item[j] = GetChaItem ( role , 2 , ItemBag [j] )			
		ItemID[j] = GetItemID ( Item[j] )						
		ItemType[j] = GetItemType ( Item[j] )					
	end
	local Item_Lv =  GetItemLv ( Item[3] )
	if ItemID[3]>=5000 then
		local tmd_rad=math.random ( 1 , 10 )
		if tmd_rad==1 then
			Item_Lv=80
		elseif tmd_rad==2 then
			Item_Lv=70
		elseif tmd_rad==3 then
			Item_Lv=60
		elseif tmd_rad==4 then
			Item_Lv=50
		elseif tmd_rad==5 then
			Item_Lv=40
		elseif tmd_rad==6 then
			Item_Lv=30
		elseif tmd_rad==7 then
			Item_Lv=20
		else
			Item_Lv=10
		end
	end
	local base_rad=0
	base_rad=math.max((80-math.max(Item_Lv,10))*0.01,0.15)
	local Num_JL = GetItemForgeParam ( Item[1] , 1 )
	Num_JL = TansferNum ( Num_JL )
	local Part1_JL = GetNum_Part1 ( Num_JL )	
	local Part2_JL = GetNum_Part2 ( Num_JL )	
	local Part3_JL = GetNum_Part3 ( Num_JL )
	local Part4_JL = GetNum_Part4 ( Num_JL )
	local Part5_JL = GetNum_Part5 ( Num_JL )
	local Part6_JL = GetNum_Part6 ( Num_JL )
	local Part7_JL = GetNum_Part7 ( Num_JL )
	local JL_jineng=0
	local JL_jineng_lv=0
	if Part2_JL==16 then
		JL_jineng=Part2_JL
		JL_jineng_lv=Part3_JL
	elseif Part4_JL==16 then
		JL_jineng=Part4_JL
		JL_jineng_lv=Part5_JL
	elseif Part6_JL==16 then
		JL_jineng=Part6_JL
		JL_jineng_lv=Part7_JL
	end
	local Gj_lv=0
	if  ItemID[2]==1070 then
		Gj_lv=GetItemAttr ( Item[2] , ITEMATTR_VAL_STR )
	end
	local life_lv = 0
	life_lv=GetSkillLv( role , SK_FENJIE )	
	local run_time = math.random ( 4, 8 )
	local word_test = math.floor((JL_jineng_lv*0.05+life_lv*0.02+Gj_lv*0.03+base_rad)*100000)
	if word_test>99999 then
		word_test=99999	
	end
	local word_radom = math.random ( 10000, 99999 )
	local str =""..word_test..","..word_radom
	return 2,run_time,str
end

function end_manufacture_item (...)
	local role = 0
	local ItemBag = {}											
	local ItemBagCount = 0										
	role , ItemBag , ItemBagCount = Read_manufacture ( arg )
	local i = 0
	local j = 0
	local star_check=0 
	star_check=arg[arg.n] 
	local Item = {}
	local ItemID = {}
	local ItemType = {}
	local check = {}
	for j = 1 , ItemBagCount , 1 do
		Item[j] = GetChaItem ( role , 2 , ItemBag [j] )			
		ItemID[j] = GetItemID ( Item[j] )						
		ItemType[j] = GetItemType ( Item[j] )					
	end
	local paper_id1=GetItemAttr(Item[2], ITEMATTR_VAL_STR )
	local paper_id2=GetItemAttr(Item[2], ITEMATTR_VAL_CON )
	local paper_id3=GetItemAttr(Item[2], ITEMATTR_VAL_DEX )
	local Num_paper = GetItemForgeParam ( Item[2] , 1 )
	Num_paper = TansferNum ( Num_paper )
	local Part2_paper = GetNum_Part2 ( Num_paper )	
	local Part4_paper = GetNum_Part4 ( Num_paper )	
	local Part6_paper = GetNum_Part6 ( Num_paper )	
	local life_lv = 0
	local Gj_lv= 0
	local paper_lv = GetItemAttr(Item[2], ITEMATTR_URE )
	local num_x=1
	local star_num_qulity=4
	if ItemID[2]==2300 then 
		life_lv=GetSkillLv( role , SK_ZHIZAO )	
		if star_check==1 then
			num_x=0
		elseif star_check==2 or star_check==3 or star_check==4 then
			num_x=1
		elseif star_check==5 or star_check==6 or star_check==7 then 
			num_x=2
		elseif star_check==8 or star_check==9 or star_check==10 then 
			num_x=3
		elseif star_check==11 then
			num_x=4			
		end
	end
	if ItemID[2]==2301 then 
		life_lv=GetSkillLv( role , SK_ZHUZAO )	
	end
	if ItemID[2]==2302 then 
		life_lv=GetSkillLv( role , SK_PENGREN )	
		local differ_check=math.abs(star_check-75)
		if differ_check==0 then
			num_x=5
		elseif differ_check==1 then
			num_x=4
		elseif differ_check==2  then
			num_x=3
		elseif differ_check>=3 and differ_check<=6 and star_check<=77 then
			num_x=2
		elseif differ_check>=7 and differ_check<=25 and star_check<=77 then
			num_x=1		
		else
			num_x=0
		end
	end
	if ItemID[3]==1067 or ItemID[3]==1068 or ItemID[3]==1069 or ItemID[3]==1070 then
		Gj_lv=GetItemAttr ( Item[3] , ITEMATTR_VAL_STR )
	end
	local i1 = 0
	local i2 = 0
	local i3 = 0
	i1 =TakeItem( role, 0, paper_id1, Part2_paper)
	i2 =TakeItem( role, 0, paper_id2, Part4_paper)
	i3 =TakeItem( role, 0, paper_id3, Part6_paper)
	if i1 == 0 or  i2 == 0 or  i3 == 0 then
		LG( "Hecheng_BS" , "Удалить предмет не удалось " )
	end
	local a1_num=GetItemAttr(Item[2], ITEMATTR_MAXURE )
	local a1=TakeItem( role, 0, 855, a1_num )			   
	if a1==0  then
		SystemNotice ( role ,"Не удалось удалить Монету Феи ")
		return
	end 
	local new_num = GetItemAttr(Item[2], ITEMATTR_VAL_AGI )
	if ItemID[2]==2300 then 
		if new_num==1067 or  new_num==1068 or new_num==1069 or new_num==1070 or  new_num==2236 then
			num_x=1
		end
	end
	local paper_energy = GetItemAttr(Item[2], ITEMATTR_MAXENERGY )-100
	local star_good=(math.min(life_lv,paper_lv)*0.03+Gj_lv*0.05+(100-paper_energy*10)*0.01)*100
	local star_radom = math.random ( 1, 100 )
	local m1 = -1
	local m2 = -1	
	if ItemID[2]==2300 then 
		if star_check>=2 then
			star_good=100
			star_radom=1
		else
			star_good=1
			star_radom=100
		end
	end
	local star_check_chenggong=0
	if star_check~=0 and star_good >star_radom and num_x~=0 then
		star_check_chenggong=1
		m1, m2 = MakeItem ( role , new_num  , num_x , star_num_qulity )
		local Itemfinal = GetChaItem ( role , 2 , m2 )
		if ItemID[2]==2301 and CheckItem_CanJinglian(Itemfinal)==1 then 
			local Itemfinal_energy=GetItemAttr ( Itemfinal ,ITEMATTR_ENERGY) 
			local itemfinal_maxenergy =GetItemAttrRange(new_num , ITEMATTR_MAXENERGY , 1 )
			local itemfinal_minenergy = GetItemAttrRange(new_num ,ITEMATTR_MAXENERGY , 0 )
			if paper_energy>7 then
				paper_energy=7
			end 
			if itemfinal_maxenergy~=itemfinal_minenergy then 
				Itemfinal_energy=math.mod(Itemfinal_energy,1000)+paper_energy*1000
				SetItemAttr ( Itemfinal ,ITEMATTR_MAXENERGY , Itemfinal_energy)
				SetItemAttr ( Itemfinal ,ITEMATTR_ENERGY , Itemfinal_energy)
			end
		end
		local item_final_ID=GetItemID(Itemfinal)
		if item_final_ID==1067 or item_final_ID==1068 or item_final_ID==1069 or item_final_ID==1070 then
			SetItemAttr(Itemfinal, ITEMATTR_VAL_STR ,1)
			SetItemAttr(Itemfinal, ITEMATTR_MAXENERGY ,10000)
			SetItemAttr(Itemfinal, ITEMATTR_ENERGY ,1)		
		end
		if item_final_ID==2236 then
			SetItemAttr(Itemfinal, ITEMATTR_VAL_STR ,paper_lv)
		end
	else
		SystemNotice( role , "Действие завершилось неудачей. Наверное вы что-то неверно делали ")
	end
	local paper_num=GetItemAttr(Item[2], ITEMATTR_VAL_STA )
	paper_num=paper_num-1
		SetItemAttr(Item[2], ITEMATTR_VAL_STA , paper_num )
	local Gj_ure=0
	if ItemID[3]==1067 or ItemID[3]==1068 or ItemID[3]==1069 or ItemID[3]==1070 then
		Gj_ure=GetItemAttr ( Item[3] , ITEMATTR_URE )
		local star_gjlv_num=GetItemAttr ( Item[3] , ITEMATTR_VAL_STR )
		Gj_ure=Gj_ure-50*star_gjlv_num
		if Gj_ure<=0 then
			Gj_ure=0
		end
		local star_lv_num = GetItemAttr( Item[3] ,ITEMATTR_ENERGY )       
		if star_check_chenggong==1 then
			star_lv_num=star_lv_num+paper_lv
		else						
			star_lv_num=star_lv_num+1			
		end
		if star_lv_num>=10000 then
			star_lv_num=10000
		end
	 	SystemNotice( role , "Ваш инструмент получил "..star_lv_num.." очков опыта ")
		if star_lv_num>=star_gjlv_num*star_gjlv_num*100 then 
			star_gjlv_num=star_gjlv_num+1
			SetItemAttr ( Item[3] , ITEMATTR_VAL_STR ,star_gjlv_num)
	 		SystemNotice( role , "Поздравляем, уровень вашего инструмента повышен!")
			star_lv_num=0
		end
		SetItemAttr (  Item[3] , ITEMATTR_ENERGY , star_lv_num )
		SetItemAttr ( Item[3] , ITEMATTR_URE ,Gj_ure)
	end
	local cha_name = GetChaDefaultName ( role )
	LG( "star_SHENGHUO_lg" ,cha_name, star_check , ItemID[2] , paper_lv , paper_id1 , Part2_paper ,  paper_id2 , Part4_paper ,  paper_id3 , Part6_paper , ItemID[3] , Gj_lv ,  life_lv )
	SynChaKitbag(role,13)
	return m2
end

 

Edited by Graf

Share this post


Link to post
Share on other sites

Ты сначала скажи что хочешь сделать. Я у себя добавил новые чертежи. Когда открываешь пачкули он рандомно генерирует один из 3х чертежей (сначала всё генерируется и уже потом записывается в выдаваемый предмет - поэтому на рецептах и нет функции, всё делается при открытии пачкули), а так же по заданным критериям сам рецепт составляющих которые хранятся в variable. На самом деле очень просто, разбей по частям и посмотри, единственное насколько помню ты можешь создать новые запечатанные чертежи, а вот сами id рецептов зашиты в game.exe то есть если сделаешь другие то в окно машин не вставить. Тогда можно будет при помощи "молоточка" делать крафты, как с алтарём. 

Share this post


Link to post
Share on other sites
47 минут назад, BETEP/macs509 сказал:

Ты сначала скажи что хочешь сделать. Я у себя добавил новые чертежи. Когда открываешь пачкули он рандомно генерирует один из 3х чертежей (сначала всё генерируется и уже потом записывается в выдаваемый предмет - поэтому на рецептах и нет функции, всё делается при открытии пачкули), а так же по заданным критериям сам рецепт составляющих которые хранятся в variable. На самом деле очень просто, разбей по частям и посмотри, единственное насколько помню ты можешь создать новые запечатанные чертежи, а вот сами id рецептов зашиты в game.exe то есть если сделаешь другие то в окно машин не вставить. Тогда можно будет при помощи "молоточка" делать крафты, как с алтарём. 

Хочу создать чертеж, да. И... "окно машин"??

Edited by Graf

Share this post


Link to post
Share on other sites

Крафта. Дублирую функцию, переименовывай, создавай предмет, привязывай к нему функцию, добавляй нужные массивы в variable и используй уже существующие чертежи. Всё зависит от чертежа, текущий код можно сократить раз в 5. Окно машин, это куда ты предмет вставляешь для крафта.

Share this post


Link to post
Share on other sites
3 часа назад, BETEP/macs509 сказал:

Крафта. Дублирую функцию, переименовывай, создавай предмет, привязывай к нему функцию, добавляй нужные массивы в variable и используй уже существующие чертежи. Всё зависит от чертежа, текущий код можно сократить раз в 5. Окно машин, это куда ты предмет вставляешь для крафта.

Спасибо

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...