Jump to content

Graf

Community
  • Content Count

    595
  • Joined

  • Last visited

  • Days Won

    56

Everything posted by Graf

  1. К примеру в Аргенте такой код: InitTrigger() TriggerCondition( 1, HasAllBoatInBerth, 1 ) TriggerAction( 1, LuanchBerthList, 1, 2260,2829, 177 ) TriggerFailure( 1, JumpPage, 3 ) Text( 1, "Отправиться в путь ", MultiTrigger, GetMultiTrigger(), 1 ) А, можно просто координаты поменять и все)) У НПС. Спасибо большое) Работает. Тему можно закрыть.
  2. В NpcDefine.lua Это порты, судя по слову "Harbor"))) AddBerthPort(1,"Argent Harbor") AddBerthPort(2,"Thundoria Harbor") AddBerthPort(3,"Shaitan Harbor") AddBerthPort(4,"Icicle Harbor") AddBerthPort(5,"Zephyr Harbor") AddBerthPort(6,"Glacier Harbor") AddBerthPort(7,"Outlaw Harbor") AddBerthPort(8,"Harbor of Chill") AddBerthPort(9,"Canary Harbor") AddBerthPort(10,"Cupid Harbor") AddBerthPort(11,"Harbor of Fortune") AddBerthPort(12,"Mystery Harbor") AddBerthPort(13,"Spring Harbor") AddBerthPort(14,"Summer Southern Harbor") AddBerthPort(15,"Southern Summer Harbor") А в winterlandEnity.lua function InitGarnerEntity() CreateBerthEntity( "入港", 455, 2, 33714, 96511, -10, 34, 329, 951, 0 ) CreateBerthEntity( "入港", 455, 2, 70214, 72011, -10, 34, 697, 703, 0 ) CreateBerthEntity( "入港", 455, 2, 104314, 62911, -10, 34, 1040, 605, 0 ) CreateBerthEntity( "入港", 455, 2, 24614, 118511, -10, 34, 254, 1203, 0 ) CreateBerthEntity( "入港", 455, 2, 45214, 142211, -10, 34, 715,1140, 0 ) end Хм.. Поможешь дальше разобраться?)
  3. Где взять строки с бухтами и номерами пристаней? В том-то и проблема)) Знал бы, на примере сделал бы.
  4. И снова всем привет. Проблема такова: Добавил остров Зимы.(вернее острова). Как вы помните, там нужно переплывать между ними. Так вот. Поставил НПС спуска на воду. Аля "отправиться в путь" на корабле. Жму, а система выдает "Ship failed to Enter map".
  5. 8 - чамп, 9 - Воитель, 12 - шарп, 13 - клер, 14 - см, 16 - вой. Проверь.. Сам не могу, т.к. у меня айди 95 вещей другие)
  6. Нашел ответ)) Опыт корабля на 0))
  7. У просто диспетчера Синбада в Аргенте есть пункт "Улучшить корабль", но есть одно "НО". Взял я его с PKO 1.38 и ничего. Выбираю "Улучшить судно", затем "Название корабля" и окно закрывается, а характеристики корабля не меняются. Есть у кого идеи?) Код НПС: InitTrigger() TriggerCondition( 1, HasBoatInBerth, 1 ) TriggerAction( 1, BoatLevelBerthList, 1 ) TriggerFailure( 1, JumpPage, 3 ) Text( 1, "Улучшить корабль ", MultiTrigger, GetMultiTrigger(), 1 ) Код BoatLevelBerthList: function BoatLevelBerthList( character, npc, berth ) PRINT( "BoatLevelList: Show upgrade list of ships docked in this harbor!" ) local npcid = GetCharID( npc ) return BoatBerthList( character, npcid, BERTH_BOATLEVEL_LIST, berth, 0, 0, 0 ) end
  8. Can I get a link to the template?
  9. Хочу создать чертеж, да. И... "окно машин"??
  10. Хотел бы разобрать функцию чертежей. Как ими пользоваться. Ни разу ими не пользовался, так что эта тема для меня проблемна. Взял чертеж пачкули, у него функция 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
  11. https://piratia.su/topic/757-второе-перерождение/?hl=перерождение вот на piratia.su второе перерождение.. Плохо искал.
  12. В целом и сам разобрался)) Вот еще +1 фрукты elseif Elf_EXP>=Elf_MEXP and ItemUse_siliao_ID1==222 then --ID Fruit STR local j = TakeItem( role,0,222,1) if j==0 then SystemNotice ( role , "Не удалось использвать фрукт! " ) else SystemNotice ( role , "Уровень феи автоматически увеличен. " ) Lvup_Str ( role , Item_Num , Item_bg1 ) --STR end elseif Elf_EXP>=Elf_MEXP and ItemUse_siliao_ID1==223 then --ID Fruit AGI local j = TakeItem( role,0,223,1) if j==0 then SystemNotice ( role , "Не удалось использвать фрукт! " ) else SystemNotice ( role , "Уровень феи автоматически увеличен. " ) Lvup_Agi ( role , Item_Num , Item_bg1 ) --AGI end elseif Elf_EXP>=Elf_MEXP and ItemUse_siliao_ID1==224 then --ID Fruit ACC local j = TakeItem( role,0,224,1) if j==0 then SystemNotice ( role , "Не удалось использвать фрукт! " ) else SystemNotice ( role , "Уровень феи автоматически увеличен. " ) Lvup_Dex ( role , Item_Num , Item_bg1 ) --ACC end elseif Elf_EXP>=Elf_MEXP and ItemUse_siliao_ID1==225 then --ID Fruit CON local j = TakeItem( role,0,225,1) if j==0 then SystemNotice ( role , "Не удалось использвать фрукт! " ) else SystemNotice ( role , "Уровень феи автоматически увеличен. " ) Lvup_Con ( role , Item_Num , Item_bg1 ) --CON end elseif Elf_EXP>=Elf_MEXP and ItemUse_siliao_ID1==226 then --ID Fruit STA local j = TakeItem( role,0,226,1) if j==0 then SystemNotice ( role , "Не удалось использвать фрукт! " ) else SystemNotice ( role , "Уровень феи автоматически увеличен. " ) Lvup_Sta ( role , Item_Num , Item_bg1 ) --STA end
  13. Наверняка эта тема уже где-то появлялась, но толкового ответа я нигде не нашел. Как сделать автоматическое питание фруктами?
  14. В принципе мне нужно было "Параметр*Нужный процент/100". Как бы смешно не звучало) Спасибо
  15. К примеру есть эффект скилла local strsb_dif = 1 local strsb = StrSb( role ) - strsb_dif SetCharaAttr( strsb , role , ATTR_STATEV_STR ) local consb_dif = 1 local consb = ConSb( role ) - consb_dif SetCharaAttr( consb , role , ATTR_STATEV_CON ) local agisb_dif = 1 local agisb = ConSb( role ) + agisb_dif SetCharaAttr( consb , role , ATTR_STATEV_AGI ) local dexsb_dif = 1 local dexsb = ConSb( role ) + dexsb_dif SetCharaAttr( consb , role , ATTR_STATEV_DEX ) local stasb_dif = 1 local stasb = ConSb( role ) + stasb_dif SetCharaAttr( consb , role , ATTR_STATEV_STA ) ALLExAttrSet(role) Добавляет персонажу +1 силы, ловкости, телосложения, духа и точности. Какой должен ATTR_STATEV_***, чтобы прибавляло в процентах?
  16. Подскажите пжст, как "давать деньги"? А вернее как правильно это прописать.
  17. Как было реализованно... Внизу вопрос) \resource\script\MisScript\MisSdk.luа function Re_Born ( role ) local check=Get_Reset ( role ) if check==0 then SystemNotice( role, " Рекомендации ресета не выполнены " ) return end local cha_gd = GetChaAttr(role, ATTR_GD) local need_gd = 10000000 local final_gd = cha_gd - need_gd local cha_name = GetChaDefaultName ( role ) local cha_lv = GetChaAttr(role, ATTR_LV) local cha_job = GetChaAttr(role, ATTR_JOB) local Zs_Exp = GetChaAttr ( role , ATTR_CSAILEXP ) if cha_lv == 95 then local ap = GetChaAttr( role , ATTR_AP ) local cha_str = GetChaAttr(role, ATTR_BSTR ) local cha_dex = GetChaAttr(role, ATTR_BDEX ) local cha_agi = GetChaAttr(role, ATTR_BAGI ) local cha_con = GetChaAttr(role, ATTR_BCON ) local cha_sta = GetChaAttr(role, ATTR_BSTA ) local cha_skill_num=GetChaAttr(role, ATTR_TP ) end if cha_lv == 96 then local ap = GetChaAttr( role , ATTR_AP ) local cha_str = GetChaAttr(role, ATTR_BSTR ) local cha_dex = GetChaAttr(role, ATTR_BDEX ) local cha_agi = GetChaAttr(role, ATTR_BAGI ) local cha_con = GetChaAttr(role, ATTR_BCON ) local cha_sta = GetChaAttr(role, ATTR_BSTA ) end if cha_lv == 97 then local ap = GetChaAttr( role , ATTR_AP ) local cha_str = GetChaAttr(role, ATTR_BSTR ) local cha_dex = GetChaAttr(role, ATTR_BDEX ) local cha_agi = GetChaAttr(role, ATTR_BAGI ) local cha_con = GetChaAttr(role, ATTR_BCON ) local cha_sta = GetChaAttr(role, ATTR_BSTA ) end if cha_lv == 98 then local ap = GetChaAttr( role , ATTR_AP ) local cha_str = GetChaAttr(role, ATTR_BSTR ) local cha_dex = GetChaAttr(role, ATTR_BDEX ) local cha_agi = GetChaAttr(role, ATTR_BAGI ) local cha_con = GetChaAttr(role, ATTR_BCON ) local cha_sta = GetChaAttr(role, ATTR_BSTA ) end if cha_lv == 99 then local ap = GetChaAttr( role , ATTR_AP ) local cha_str = GetChaAttr(role, ATTR_BSTR ) local cha_dex = GetChaAttr(role, ATTR_BDEX ) local cha_agi = GetChaAttr(role, ATTR_BAGI ) local cha_con = GetChaAttr(role, ATTR_BCON ) local cha_sta = GetChaAttr(role, ATTR_BSTA ) end if cha_lv == 100 then local ap = GetChaAttr( role , ATTR_AP ) local cha_str = GetChaAttr(role, ATTR_BSTR ) local cha_dex = GetChaAttr(role, ATTR_BDEX ) local cha_agi = GetChaAttr(role, ATTR_BAGI ) local cha_con = GetChaAttr(role, ATTR_BCON ) local cha_sta = GetChaAttr(role, ATTR_BSTA ) end SetChaAttr(role, ATTR_CEXP,1 ) SyncChar(role,4) SetChaAttr(role, ATTR_LV,1 ) SyncChar(role,4) SetChaAttr(role,ATTR_GD,final_gd ) SyncChar(role,4) RefreshCha ( role ) Notice(" Поздравляем "..cha_name.." с полученым ресетом. ") return 1 end function Get_Reset ( role ) local cha_lv = GetChaAttr(role, ATTR_LV) local cha_gd = GetChaAttr(role, ATTR_GD) local need_gd = 10000000 local final_gd = cha_gd - need_gd local item_empty=IsEquip(role) if cha_gd < need_gd then SystemNotice( role,"Вам нужно "..need_gd.." голда для ресета") return 0 end if cha_lv < 95 then SystemNotice( role ,"Вам нужно быть 95лвл + для ресета") return 0 end if item_empty==LUA_TRUE then SystemNotice(role," Пожалуйста,снимите все вещи в инвентарь ") return 0 end RefreshCha ( role ) end После if item.func == JumpPage then return JumpPage( character, npc, page, item.p1 ) Вставляем elseif item.func == Re_Born then return Re_Born( character, npc ) \resource\script\MisScript\NpcScript function cha_reset() Talk( 1, " Я делаю ресет персонажа " ) Text( 1, " Про ресет... ", JumpPage, 2 ) Text( 1, " Сделать ресет сейчас ", Re_Born ) Text( 1, " Я передумал ", CloseTalk ) Talk( 2, " Рекомендуется лвл 95-100 и 10 миллионов монет за ресет,при этом вы получите бонус 20 стат и 5 скилл поинтов " ) end Ну и \resource\карта\картаnpc id Ресет Ангел 1 284 0 222300,276800 222300,276800 50 Argent City 1 0 cha_reset 0 Взято с maindev.ru Подскажите, как сделать запись в переменную. К примеру есть 1 кнопка. Text( 1, " Сделать ресет сейчас ", Re_Born ) Подошел, посмотрел у НПС, что нужно для 1 ресета, обменял вещи на ресет. Потом также подошел(имея 1 ресет) там написаны вещи под 2 ресет и меняешь вещи на 2 ресет. Я сонный, но надеюсь вы поняли, что я хочу реализовать) Возможно банально под конец функции ввести переменную.. lvRB==1 а дальше if (lvRB == 1) then и тут уже прописывать дальше... Надеюсь завтра что-нибудь увижу тут)
  18. Снова все привет) Появился новый вопрос. Как написать функцию выдачи денег раз в час? Допустим персонаж, выше 50уровня можно подойти к НПС и взять 500к. Допустим НПС function t_money () InitTrigger() TriggerAction( 1, PeremenMoney ) Start( GetMultiTrigger(),1 ) end Дальше прописывать в NpcSdk elseif item.func == PeremenMoney then return PeremenMoney(character) А вот функция.. Помогите с ней, пожалуйста) function PeremenMoney( role ) local money = HasMoney(role , 500000) --Это проверка денег(что знаю =)) if .... else BickerNotice( role ," Вы уже забрали свой приз ") --вывод красных букв на экран(что знаю=)) end
  19. Изначально немного неправильно написал, я добавлял с одинаковыми аргументами, но вы мне помогли. Спасибо большое) BickerNotice(The_Killer,"Вы получили +20 к репутации.")
  20. Взял код "добавляем репутации за убийство монстра" elseif map_name_atk == "garner" or map_name_def == "garner" then --карта local normal_monster = GetChaID(dead) if normal_monster == 103 then --id монстра BickerNotice(atk,"Вы получили +20 к репутации.") local r = 20 -- reputation AddCreditX(The_Killer, r) --calculation end end Добавил BickerNotice(atk,"Вы получили +20 к репутации.") Репутация дается, но красными буквами на экран ничего не выводит. Пишет ошибку в систему "lua function [lua BickerNotice] parameter unit or type error." Думаю, что ошибка в параметре ATK, но что с ним делать.. Не знаю. Помоги пожалуйста.
×
×
  • Create New...