Jump to content

WVWMK

Community
  • Content Count

    507
  • Joined

  • Last visited

  • Days Won

    26

Everything posted by WVWMK

  1. я помню что у меня не было точно и у тебя, вроде, так как обмен на звания делали без ОХ, но я могу ошибаться. вот на подобии этой функции можно сделать и проверка там есть. function HasHonorPoint(character,value) --SystemNotice( character , "HasHonorPoint" ) local i= CheckBagItem( character, 3849 ) --SystemNotice( character , "i=="..i) if i~=1 then SystemNotice( character , "Пожалуйста проверьте, если у Вас Медаль отваги ") return LUA_FALSE end local DEFER_RYZ1 = GetChaItem2 ( character , 2 , 3849 ) local HonorPoint = GetItemAttr ( DEFER_RYZ1 , ITEMATTR_VAL_STR) if value > HonorPoint then return LUA_FALSE else return LUA_TRUE end end
  2. Пример на коленке без проверок(а они нужны): Добавляем эту функцию в любой файл, лучше в forge.lua Функция получения очков чести и обмена на предмет с ID 1 function chaos_point(role,npc) local Medal = GetChaItem2 ( role , 2 , 3849 ) -- получаем медаль отваги local chaos_point = GetItemAttr ( Medal , ITEMATTR_MAXENERGY ) --получаем значение очков хаоса if chaos_point > 5 then -- если хаос поинтов больше 5 то chaos_point = chaos_point - 5 -- отнимаем 5 очков GiveItem ( role , 0 , 1 , 1 , 4 ) -- выдаем предмет SetItemAttr ( Medal , ITEMATTR_MAXENERGY , chaos_point) -- обновляем кол-во ОХ end end Добавляем эту функцию в NPCScript.lua function MsgProc( character, npc, rpk, page, trade, missionlist, exchangeData ) ... if item.func == JumpPage then return JumpPage( character, npc, page, item.p1 ) --после этой строчки elseif item.func == chaos_point then return chaos_point(character,npc) ... end Используем функцию у нпс function leo_talkzz() Talk( 1, "Если утебя много ОХ я обменяю их на предмет с ID 1.") Text( 1, "Обменять очки Хаоса",chaos_point) end Я не помню есть ли уже написанные функции, мб они и есть, копаться не стал.
  3. Не знаю как вы решали, мне было бы интересно увидеть, но у нас ошибка заключалась в серверном времени, и ошибка была именно из-за Windows(: О каком кол-ве фоловеров идет речь?
  4. @Матрос раскрутка по ца или накрутка? Или введение + раскрутка? @V3ct0r я вроде рассказывал как фиксить, или не успел? Насколько я помню, у меня получилось и дело там совсем не в ГС или действиях игроков.
  5. У нас данная функция была реализована для повышения опыта и дропа. Трабл с которым тогда не разобрались - одновременно на разных гс может быть разное кол-во убитых мобов и игроков. Поэтому после каждого релога сервера перезаписывалось суммарное кол-во смертей в переменные variable, поэтому логируем переменные. Скрипт не доделан для квестов, не помню с какими трудностями столкнулись, но там тоже все должно быть просто. exp_and_level.lua function GetExp_PKM( dead , atk ) ... --Счетчик мобов local mob_id = GetChaTypeID ( dead ) local lvl = Lv(dead) if lvl >= 30 then for gs,map in ipairs(GameServer1) do if GetChaMapName(dead) == map then razrazrazraz = razrazrazraz + 1 end end for gs,map in ipairs(GameServer2) do if GetChaMapName(dead) == map then dvadvadvadva = dvadvadvadva + 1 end end for gs,map in ipairs(GameServer3) do if GetChaMapName(dead) == map then tritritritri = tritritritri + 1 end end for gs,map in ipairs(GameServer4) do if GetChaMapName(dead) == map then chetchetchetchetche = chetchetchetchetche + 1 end end end ... local EXP_EV_MOB = 1 if SCHET_MOB > 0 and SCHET_MOB < SCORE_MB_1 then EXP_EV_MOB = 1 elseif SCHET_MOB > SCORE_MB_1 and SCHET_MOB < SCORE_MB_2 then EXP_EV_MOB = 1.02 elseif SCHET_MOB > SCORE_MB_2 and SCHET_MOB < SCORE_MB_3 then EXP_EV_MOB = 1.12 elseif SCHET_MOB > SCORE_MB_3 and SCHET_MOB < SCORE_MB_4 then EXP_EV_MOB = 1.22 elseif SCHET_MOB > SCORE_MB_4 and SCHET_MOB < SCORE_MB_5 then EXP_EV_MOB = 1.42 elseif SCHET_MOB > SCORE_MB_5 and SCHET_MOB < SCORE_MB_6 then EXP_EV_MOB = 1.84 elseif SCHET_MOB > SCORE_MB_6 and SCHET_MOB < SCORE_MB_7 then EXP_EV_MOB = 2.12 elseif SCHET_MOB > SCORE_MB_7 and SCHET_MOB < SCORE_MB_8 then EXP_EV_MOB = 2.22 elseif SCHET_MOB > SCORE_MB_8 and SCHET_MOB < SCORE_MB_9 then EXP_EV_MOB = 2.44 elseif SCHET_MOB > SCORE_MB_9 and SCHET_MOB < SCORE_MB_10 then EXP_EV_MOB = 2.88 elseif SCHET_MOB > SCORE_MB_10 and SCHET_MOB < SCORE_MB_11 then EXP_EV_MOB = 3.00 end local dead_exp = GetChaAttrI( dead , ATTR_CEXP ) * EXP_EV_MOB ... enв variable.lua SCORE_MB_1 = 1000 SCORE_MB_2 = 10000 SCORE_MB_3 = 100000 SCORE_MB_4 = 1000000 SCORE_MB_5 = 10000000 SCORE_MB_6 = 20000000 SCORE_MB_7 = 30000000 SCORE_MB_8 = 60000000 SCORE_MB_9 = 80000000 SCORE_MB_10 = 10000000 SCORE_MB_11 = 20000000 SCORE_PL_1 = 1000 SCORE_PL_2 = 10000 SCORE_PL_3 = 100000 SCORE_PL_4 = 1000000 SCORE_PL_5 = 10000000 SCORE_PL_6 = 20000000 SCORE_PL_7 = 30000000 SCORE_PL_8 = 60000000 SCORE_PL_9 = 80000000 SCORE_PL_10 = 10000000 SCORE_PL_11 = 20000000 --Ивент Мобы\Игроки\Квесты\Морские моб razrazrazraz = 0 dvadvadvadva = 0 tritritritri = 0 chetchetchetchetche =0 SCHET = 0 -- персонажи SCHET_MOB = 0 -- мобы SCHET_QUEST = 0 -- квексты GameServer1 = {} GameServer1[1] = "garner" GameServer1[2] = "eastgoaf" GameServer1[3] = "lonetower" GameServer1[4] = "teampk" GameServer1[5] = "puzzleworld" GameServer1[6] = "puzzleworld2" GameServer2 = {} GameServer2[1] = "magicsea" GameServer2[2] = "jialebi" GameServer2[3] = "abandonedcity" GameServer2[4] = "abandonedcity2" GameServer2[5] = "abandonedcity3" GameServer2[6] = "darkswamp" GameServer2[7] = "leteria" GameServer3 = {} GameServer3[1] = "darkblue" GameServer3[2] = "winterland" GameServer3[3] = "shalan2" GameServer3[4] = "binglang2" GameServer3[5] = "leiting2" GameServer3[6] = "heilong" GameServer3[7] = "heilong2" GameServer4 = {} GameServer4[1] = "garner2" GameServer4[2] = "07xmas2" GameServer4[3] = "hell" GameServer4[4] = "hell2" GameServer4[5] = "hell3" GameServer4[6] = "hell4" GameServer4[7] = "hell5" GameServer4[8] = "darkblue2" GameServer4[9] = "bountypk" function.lua function after_player_kill_player( ATKER, DEFER ) ... local lvl = Lv(DEFER) if lvl>30 then SCHET = SCHET + 1 end ... end function cha_timer(role, freq, time) ... local tim = 1800 if math.mod(now_tick, tim) == 0 then local shet_pl = 0 local shet_mb = 0 SCHET_MOB = tritritritri + chetchetchetchetche + razrazrazraz + dvadvadvadva if SCHET_MOB >= 0 and SCHET_MOB < SCORE_MB_1 then shet_mb = SCORE_MB_1 - SCHET_MOB elseif SCHET_MOB >= SCORE_MB_1 and SCHET_MOB < SCORE_MB_2 then shet_mb = SCORE_MB_2 - SCHET_MOB elseif SCHET_MOB >= SCORE_MB_2 and SCHET_MOB < SCORE_MB_3 then shet_mb = SCORE_MB_3 - SCHET_MOB elseif SCHET_MOB >= SCORE_MB_3 and SCHET_MOB < SCORE_MB_4 then shet_mb = SCORE_MB_4 - SCHET_MOB elseif SCHET_MOB > SCORE_MB_4 and SCHET_MOB < SCORE_MB_5 then shet_mb = SCORE_MB_5 - SCHET_MOB elseif SCHET_MOB > SCORE_MB_5 and SCHET_MOB < SCORE_MB_6 then shet_mb = SCORE_MB_6 - SCHET_MOB elseif SCHET_MOB > SCORE_MB_6 and SCHET_MOB < SCORE_MB_7 then shet_mb = SCORE_MB_7 - SCHET_MOB elseif SCHET_MOB > SCORE_MB_7 and SCHET_MOB < SCORE_MB_8 then shet_mb = SCORE_MB_8 - SCHET_MOB elseif SCHET_MOB > SCORE_MB_8 and SCHET_MOB < SCORE_MB_9 then shet_mb = SCORE_MB_9 - SCHET_MOB elseif SCHET_MOB > SCORE_MB_9 and SCHET_MOB < SCORE_MB_10 then shet_mb = SCORE_MB_10 - SCHET_MOB elseif SCHET_MOB > SCORE_MB_10 and SCHET_MOB < SCORE_MB_11 then shet_mb = SCORE_MB_11 - SCHET_MOB end if SCHET >= 0 and SCHET < SCORE_PL_1 then shet_pl = SCORE_PL_1 - SCHET elseif SCHET > SCORE_PL_1 and SCHET < SCORE_PL_2 then shet_pl = SCORE_PL_2 - SCHET elseif SCHET > SCORE_PL_2 and SCHET < SCORE_PL_3 then shet_pl = SCORE_PL_3 - SCHET elseif SCHET > SCORE_PL_3 and SCHET < SCORE_PL_4 then shet_pl = SCORE_PL_4 - SCHET elseif SCHET > SCORE_PL_4 and SCHET < SCORE_PL_5 then shet_pl = SCORE_PL_5 - SCHET elseif SCHET > SCORE_PL_5 and SCHET < SCORE_PL_6 then shet_pl = SCORE_PL_6 - SCHET elseif SCHET > SCORE_PL_6 and SCHET < SCORE_PL_7 then shet_pl = SCORE_PL_7 - SCHET elseif SCHET > SCORE_PL_7 and SCHET < SCORE_PL_8 then shet_pl = SCORE_PL_8 - SCHET elseif SCHET > SCORE_PL_8 and SCHET < SCORE_PL_9 then shet_pl = SCORE_PL_9 - SCHET elseif SCHET > SCORE_PL_9 and SCHET < SCORE_PL_10 then shet_pl = SCORE_PL_10 - SCHET elseif SCHET > SCORE_PL_10 and SCHET < SCORE_PL_11 then shet_pl = SCORE_PL_11 - SCHET end SystemNotice(role,"Для повышения получаемого опыта нужно убить еще "..shet_mb.. " существ") SystemNotice(role,"Для повышения шанса выпадения предметов нужно убить еще "..shet_pl.. " игроков") LG("Логирование переменных", "\nКолличество убитых игроков - "..SCHET.. "\nКолличество убитых мобов - "..SCHET_MOB.. "\nКолличество выполненых квестов - "..SCHET_QUEST.. "\nПоследняя карта "..map_name.. "\n -------------------") end skilleffect.lua function Check_Baoliao(ATKER, DEFER, ... ) ... local RAID_EV_PL = 1 if SCHET >= 0 and SCHET < SCORE_PL_1 then RAID_EV_PL = 1 elseif SCHET > SCORE_PL_1 and SCHET < SCORE_PL_2 then RAID_EV_PL = 2.02 elseif SCHET > SCORE_PL_2 and SCHET < SCORE_PL_3 then RAID_EV_PL = 2.12 elseif SCHET > SCORE_PL_3 and SCHET < SCORE_PL_4 then RAID_EV_PL = 2.22 elseif SCHET > SCORE_PL_4 and SCHET < SCORE_PL_5 then RAID_EV_PL = 2.42 elseif SCHET > SCORE_PL_5 and SCHET < SCORE_PL_6 then RAID_EV_PL = 2.84 elseif SCHET > SCORE_PL_6 and SCHET < SCORE_PL_7 then RAID_EV_PL = 3.12 elseif SCHET > SCORE_PL_7 and SCHET < SCORE_PL_8 then RAID_EV_PL = 4.22 elseif SCHET > SCORE_PL_8 and SCHET < SCORE_PL_9 then RAID_EV_PL = 4.44 elseif SCHET > SCORE_PL_9 and SCHET < SCORE_PL_10 then RAID_EV_PL = 5.88 elseif SCHET > SCORE_PL_10 and SCHET < SCORE_PL_11 then RAID_EV_PL = 6.00 end ... mf = math.min ( 1, 100 / arg[i] * ( bsmf / 100 ) ) ... * RAID_EV_PL ... end
  6. Суть: у вас есть гильдия, за фарм мобов вашими соги вы получаете бонус. exp_and_lvl.lua function DeductGuildItem(role,Guild_type) ... local file = io.open("guild/"..GetChaGuildID(role)..".txt", "w+") if file ~= nil then file:write (GetRoleID(role)) file:close() end ... end function GetExp_PKM( dead , atk ) ... --Награда главе за убийство мобов local Guild_ID = GetChaGuildID(atk) -- получаем ИД гильдии local Guild_ATKER = GetGuildName( Guild_ID ) -- получаем название гильдии local Leader = GetGuildLeaderID ( Guild_ID ) -- главу гильдии local rand_item = math.random(1,90) -- шанс выпадения предмету главе гильдии if rand_item == 1 then if Leaders[Leader] == nil then Leaders[Leader] = {vaule = 1} end Leaders[Leader].vaule = Leaders[Leader].vaule + 1 end ... end variable.lua Leaders = {} function.lua function cha_timer(role, freq, time) ... --Награда главе за убийство мобов local tick_kkk = 100 if math.mod(now_tick, tick_kkk) == 0 then -- проверка раз в 100 секунд local Guild_ID = GetChaGuildID(role) local ID_leader = GetRoleID(role) if (Guild_ID ~= 0) then if (Leaders[ID_leader] ~= nil) and ( Leaders[ID_leader].vaule ~= nil or Leaders[ID_leader].vaule~= 0) then BickerNotice (role, "Во временный мешок добавлена награда за онлайн гильдии") GiveItemX ( role , 0 , ID_ITEM , Leaders[ID_leader].vaule , 4 ) -- ID предмета, который выдается главе Leaders[ID_leader].vaule = 0 end end end ... end --Получение главы гильдии function GetGuildLeaderID(guild_id) local leader_id = 0 local file = io.open("guild/" .. guild_id.. ".txt", "r") if (file ~= nil) then leader_id = file:read("*n") file:close() end return leader_id end Вроде ничего не забыл.
  7. ItemEffect.txt function Jz_Script_arg(role, Item ) local i = CheckBagItem(role,ID_ITEM) -- ВАШ ID local k = ChaIsBoat(role) local hp = Hp(role) local mxhp = Mxhp(role) local sp = Sp(role) local mxsp = Mxsp(role) if k == 0 then if i > 0 then local j = DelBagItem(role,ID_ITEM,1)-- ВАШ ID if j == 1 then MoveCity(role,"Argent City") -- Куда телепортироваться return end end else UseItemFailed ( role ) end end Аналогичен обычному телепорту, просто вырезали проверку на здоровье и ману. Создавался для VIP игроков, которые не любят умирать в данжах.
  8. ItemInfo.txt 8605 Билет на о.Зефир n1173 10130005 0 0 0 0 0 0 36 0 0 0 0 0 1 1 1 1 200 0 20000 -1 0 -1 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 Jz_Script_zef 0 0 0 0,0 0 0 Телепортирует вас на остров 0 8606 Билет на о.Отверженых n1173 10130005 0 0 0 0 0 0 36 0 0 0 0 0 1 1 1 1 200 0 20000 -1 0 -1 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 Jz_Script_otv 0 0 0 0,0 0 0 Телепортирует вас на остров 0 8607 Билет на о.Ледяной n1173 10130005 0 0 0 0 0 0 36 0 0 0 0 0 1 1 1 1 200 0 20000 -1 0 -1 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 Jz_Script_led 0 0 0 0,0 0 0 Телепортирует вас на остров 0 8608 Билет на о.Удачи n1173 10130005 0 0 0 0 0 0 36 0 0 0 0 0 1 1 1 1 200 0 20000 -1 0 -1 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 Jz_Script_yda 0 0 0 0,0 0 0 Телепортирует вас на остров 0 8609 Билет на о.Канарейки n1173 10130005 0 0 0 0 0 0 36 0 0 0 0 0 1 1 1 1 200 0 20000 -1 0 -1 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 Jz_Script_kan 0 0 0 0,0 0 0 Телепортирует вас на остров 0 8610 Билет на о.Купидона n1173 10130005 0 0 0 0 0 0 36 0 0 0 0 0 1 1 1 1 200 0 20000 -1 0 -1 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 Jz_Script_kyp 0 0 0 0,0 0 0 Телепортирует вас на остров 0 8611 Билет на о.Стужи n1173 10130005 0 0 0 0 0 0 36 0 0 0 0 0 1 1 1 1 200 0 20000 -1 0 -1 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 Jz_Script_stu 0 0 0 0,0 0 0 Телепортирует вас на остров 0 ItemEffect.lua --Билеты на острова function Jz_Script_zef(role, Item ) local i = CheckBagItem(role,8605) local k = ChaIsBoat(role) local hp = Hp(role) local mxhp = Mxhp(role) local sp = Sp(role) local mxsp = Mxsp(role) if sp < mxsp or hp < mxhp then SystemNotice (role, "Телепортация - утомительный процесс. Пожалуйста, восстанови полностью ЖЗ и МН") UseItemFailed ( role ) return end if k == 0 then if i > 0 then local j = DelBagItem(role,8605,1) if j == 1 then MoveCity(role,"Zephyr Isle") return end end else UseItemFailed ( role ) return end end function Jz_Script_otv(role, Item ) local i = CheckBagItem(role,8606) local k = ChaIsBoat(role) local hp = Hp(role) local mxhp = Mxhp(role) local sp = Sp(role) local mxsp = Mxsp(role) if sp < mxsp or hp < mxhp then SystemNotice (role, "Телепортация - утомительный процесс. Пожалуйста, восстанови полностью ЖЗ и МН") UseItemFailed ( role ) return end if k == 0 then if i > 0 then local j = DelBagItem(role,8606,1) if j == 1 then MoveCity(role,"Outlaw Isle") return end end else UseItemFailed ( role ) end end function Jz_Script_led(role, Item ) local i = CheckBagItem(role,8607) local k = ChaIsBoat(role) local hp = Hp(role) local mxhp = Mxhp(role) local sp = Sp(role) local mxsp = Mxsp(role) if sp < mxsp or hp < mxhp then SystemNotice (role, "Телепортация - утомительный процесс. Пожалуйста, восстанови полностью ЖЗ и МН") UseItemFailed ( role ) return end if k == 0 then if i > 0 then local j = DelBagItem(role,8607,1) if j == 1 then MoveCity(role,"Glacier Isle") return end end else UseItemFailed ( role ) end end function Jz_Script_yda(role, Item ) local i = CheckBagItem(role,8608) local k = ChaIsBoat(role) local hp = Hp(role) local mxhp = Mxhp(role) local sp = Sp(role) local mxsp = Mxsp(role) if sp < mxsp or hp < mxhp then SystemNotice (role, "Телепортация - утомительный процесс. Пожалуйста, восстанови полностью ЖЗ и МН") UseItemFailed ( role ) return end if k == 0 then if i > 0 then local j = DelBagItem(role,8608,1) if j == 1 then MoveCity(role,"Isle of Fortune") return end end else UseItemFailed ( role ) end end function Jz_Script_kan(role, Item ) local i = CheckBagItem(role,8609) local k = ChaIsBoat(role) local hp = Hp(role) local mxhp = Mxhp(role) local sp = Sp(role) local mxsp = Mxsp(role) if sp < mxsp or hp < mxhp then SystemNotice (role, "Телепортация - утомительный процесс. Пожалуйста, восстанови полностью ЖЗ и МН") UseItemFailed ( role ) return end if k == 0 then if i > 0 then local j = DelBagItem(role,8609,1) if j == 1 then MoveCity(role,"Canary Isle") return end end else UseItemFailed ( role ) end end function Jz_Script_kyp(role, Item ) local i = CheckBagItem(role,8610) local k = ChaIsBoat(role) local hp = Hp(role) local mxhp = Mxhp(role) local sp = Sp(role) local mxsp = Mxsp(role) if sp < mxsp or hp < mxhp then SystemNotice (role, "Телепортация - утомительный процесс. Пожалуйста, восстанови полностью ЖЗ и МН") UseItemFailed ( role ) return end if k == 0 then if i > 0 then local j = DelBagItem(role,8610,1) if j == 1 then MoveCity(role,"Cupid Isle") return end end else UseItemFailed ( role ) end end function Jz_Script_stu(role, Item ) local i = CheckBagItem(role,8611) local k = ChaIsBoat(role) local hp = Hp(role) local mxhp = Mxhp(role) local sp = Sp(role) local mxsp = Mxsp(role) if sp < mxsp or hp < mxhp then SystemNotice (role, "Телепортация - утомительный процесс. Пожалуйста, восстанови полностью ЖЗ и МН") UseItemFailed ( role ) return end if k == 0 then if i > 0 then local j = DelBagItem(role,8611,1) if j == 1 then MoveCity(role,"Isle of Chill") return end end else UseItemFailed ( role ) end end
  9. ItemEffect.lua --Мануфакт --1 function ItemUse_Mano( role, Item ) local ItemCanGetSlot = GetChaFreeBagGridNum ( role ) if ItemCanGetSlot < 1 then SystemNotice(role, "У вас не хватает слотов в инвентаре для распаковки сундука!") UseItemFailed ( role ) return end a = math.random(1,24) if a == 1 then GiveItem ( role , 0 , 1135 , 10 , 4 ) elseif a == 2 then GiveItem ( role , 0 , 1136 , 10 , 4 ) elseif a == 3 then GiveItem ( role , 0 , 1137 , 10 , 4 ) elseif a == 4 then GiveItem ( role , 0 , 1138 , 10 , 4 ) elseif a == 5 then GiveItem ( role , 0 , 1139 , 10 , 4 ) elseif a == 6 then GiveItem ( role , 0 , 1140 , 10 , 4 ) elseif a == 7 then GiveItem ( role , 0 , 1141 , 10 , 4 ) elseif a == 8 then GiveItem ( role , 0 , 1142 , 10 , 4 ) elseif a == 9 then GiveItem ( role , 0 , 1143 , 10 , 4 ) elseif a == 10 then GiveItem ( role , 0 , 1144 , 10 , 4 ) elseif a == 11 then GiveItem ( role , 0 , 1145 , 5 , 4 ) elseif a == 12 then GiveItem ( role , 0 , 1146 , 10 , 4 ) elseif a == 13 then GiveItem ( role , 0 , 1147 , 10 , 4 ) elseif a == 14 then GiveItem ( role , 0 , 1148 , 10 , 4 ) elseif a == 15 then GiveItem ( role , 0 , 1149 , 10 , 4 ) elseif a == 16 then GiveItem ( role , 0 , 1150 , 10 , 4 ) elseif a == 17 then GiveItem ( role , 0 , 1151 , 10 , 4 ) elseif a == 18 then GiveItem ( role , 0 , 1152 , 10 , 4 ) elseif a == 19 then GiveItem ( role , 0 , 2673 , 10 , 4 ) elseif a == 20 then GiveItem ( role , 0 , 2674 , 10 , 4 ) elseif a == 21 then GiveItem ( role , 0 , 2675 , 10 , 4 ) elseif a == 22 then GiveItem ( role , 0 , 2676 , 10 , 4 ) elseif a == 23 then GiveItem ( role , 0 , 2677 , 10 , 4 ) elseif a == 24 then GiveItem ( role , 0 , 2678 , 10 , 4 ) end end --2 function ItemUse_Mand( role, Item ) local ItemCanGetSlot = GetChaFreeBagGridNum ( role ) if ItemCanGetSlot < 1 then SystemNotice(role, "У вас не хватает слотов в инвентаре для распаковки сундука!") UseItemFailed ( role ) return end a = math.random(1,24) if a == 1 then GiveItem ( role , 0 , 2719 , 10 , 4 ) elseif a == 2 then GiveItem ( role , 0 , 2720 , 10 , 4 ) elseif a == 3 then GiveItem ( role , 0 , 2721 , 10 , 4 ) elseif a == 4 then GiveItem ( role , 0 , 2722 , 10 , 4 ) elseif a == 5 then GiveItem ( role , 0 , 2723 , 10 , 4 ) elseif a == 6 then GiveItem ( role , 0 , 2724 , 10 , 4 ) elseif a == 7 then GiveItem ( role , 0 , 2725 , 10 , 4 ) elseif a == 8 then GiveItem ( role , 0 , 2726 , 10 , 4 ) elseif a == 9 then GiveItem ( role , 0 , 2727 , 10 , 4 ) elseif a == 10 then GiveItem ( role , 0 , 2728 , 10 , 4 ) elseif a == 11 then GiveItem ( role , 0 , 2729 , 4 , 4 ) elseif a == 12 then GiveItem ( role , 0 , 2730 , 10 , 4 ) elseif a == 13 then GiveItem ( role , 0 , 2731 , 10 , 4 ) elseif a == 14 then GiveItem ( role , 0 , 2732 , 10 , 4 ) elseif a == 15 then GiveItem ( role , 0 , 2733 , 10 , 4 ) elseif a == 16 then GiveItem ( role , 0 , 2734 , 10 , 4 ) elseif a == 17 then GiveItem ( role , 0 , 2735 , 10 , 4 ) elseif a == 18 then GiveItem ( role , 0 , 2736 , 10 , 4 ) elseif a == 19 then GiveItem ( role , 0 , 2737 , 10 , 4 ) elseif a == 20 then GiveItem ( role , 0 , 2738 , 10 , 4 ) elseif a == 21 then GiveItem ( role , 0 , 2739 , 10 , 4 ) elseif a == 22 then GiveItem ( role , 0 , 2740 , 10 , 4 ) elseif a == 23 then GiveItem ( role , 0 , 2741 , 10 , 4 ) elseif a == 24 then GiveItem ( role , 0 , 2742 , 10 , 4 ) end end --3 function ItemUse_Mant( role, Item ) local ItemCanGetSlot = GetChaFreeBagGridNum ( role ) if ItemCanGetSlot < 1 then SystemNotice(role, "У вас не хватает слотов в инвентаре для распаковки сундука!") UseItemFailed ( role ) return end a = math.random(1,24) if a == 1 then GiveItem ( role , 0 , 2743 , 10 , 4 ) elseif a == 2 then GiveItem ( role , 0 , 2744 , 10 , 4 ) elseif a == 3 then GiveItem ( role , 0 , 2745 , 10 , 4 ) elseif a == 4 then GiveItem ( role , 0 , 2746 , 10 , 4 ) elseif a == 5 then GiveItem ( role , 0 , 2747 , 10 , 4 ) elseif a == 6 then GiveItem ( role , 0 , 2748 , 10 , 4 ) elseif a == 7 then GiveItem ( role , 0 , 2749 , 10 , 4 ) elseif a == 8 then GiveItem ( role , 0 , 2750 , 10 , 4 ) elseif a == 9 then GiveItem ( role , 0 , 2751 , 10 , 4 ) elseif a == 10 then GiveItem ( role , 0 , 2753 , 3 , 4 ) elseif a == 11 then GiveItem ( role , 0 , 2754 , 10 , 4 ) elseif a == 12 then GiveItem ( role , 0 , 2755 , 10 , 4 ) elseif a == 13 then GiveItem ( role , 0 , 2756 , 10 , 4 ) elseif a == 14 then GiveItem ( role , 0 , 2757 , 10 , 4 ) elseif a == 15 then GiveItem ( role , 0 , 2758 , 10 , 4 ) elseif a == 16 then GiveItem ( role , 0 , 2759 , 10 , 4 ) elseif a == 17 then GiveItem ( role , 0 , 2760 , 10 , 4 ) elseif a == 18 then GiveItem ( role , 0 , 2761 , 10 , 4 ) elseif a == 19 then GiveItem ( role , 0 , 2762 , 10 , 4 ) elseif a == 20 then GiveItem ( role , 0 , 2763 , 10 , 4 ) elseif a == 21 then GiveItem ( role , 0 , 2764 , 10 , 4 ) elseif a == 22 then GiveItem ( role , 0 , 2765 , 10 , 4 ) elseif a == 23 then GiveItem ( role , 0 , 2766 , 10 , 4 ) elseif a == 24 then GiveItem ( role , 0 , 2752 , 10 , 4 ) end end --4 function ItemUse_Manc( role, Item ) local ItemCanGetSlot = GetChaFreeBagGridNum ( role ) if ItemCanGetSlot < 1 then SystemNotice(role, "У вас не хватает слотов в инвентаре для распаковки сундука!") UseItemFailed ( role ) return end a = math.random(1,24) if a == 1 then GiveItem ( role , 0 , 2767 , 10 , 4 ) elseif a == 2 then GiveItem ( role , 0 , 2768 , 10 , 4 ) elseif a == 3 then GiveItem ( role , 0 , 2769 , 10 , 4 ) elseif a == 4 then GiveItem ( role , 0 , 2770 , 10 , 4 ) elseif a == 5 then GiveItem ( role , 0 , 2771 , 10 , 4 ) elseif a == 6 then GiveItem ( role , 0 , 2772 , 10 , 4 ) elseif a == 7 then GiveItem ( role , 0 , 2773 , 10 , 4 ) elseif a == 8 then GiveItem ( role , 0 , 2774 , 10 , 4 ) elseif a == 9 then GiveItem ( role , 0 , 2775 , 10 , 4 ) elseif a == 10 then GiveItem ( role , 0 , 2776 , 10 , 4 ) elseif a == 11 then GiveItem ( role , 0 , 2777 , 2 , 4 ) elseif a == 12 then GiveItem ( role , 0 , 2778 , 10 , 4 ) elseif a == 13 then GiveItem ( role , 0 , 2779 , 10 , 4 ) elseif a == 14 then GiveItem ( role , 0 , 2780 , 10 , 4 ) elseif a == 15 then GiveItem ( role , 0 , 2781 , 10 , 4 ) elseif a == 16 then GiveItem ( role , 0 , 2782 , 10 , 4 ) elseif a == 17 then GiveItem ( role , 0 , 2783 , 10 , 4 ) elseif a == 18 then GiveItem ( role , 0 , 2784 , 10 , 4 ) elseif a == 19 then GiveItem ( role , 0 , 2785 , 10 , 4 ) elseif a == 20 then GiveItem ( role , 0 , 2786 , 10 , 4 ) elseif a == 21 then GiveItem ( role , 0 , 2787 , 10 , 4 ) elseif a == 22 then GiveItem ( role , 0 , 2788 , 10 , 4 ) elseif a == 23 then GiveItem ( role , 0 , 2789 , 10 , 4 ) elseif a == 24 then GiveItem ( role , 0 , 2790 , 10 , 4 ) end end --5 function ItemUse_Manv( role, Item ) local ItemCanGetSlot = GetChaFreeBagGridNum ( role ) if ItemCanGetSlot < 1 then SystemNotice(role, "У вас не хватает слотов в инвентаре для распаковки сундука!") UseItemFailed ( role ) return end a = math.random(1,24) if a == 1 then GiveItem ( role , 0 , 2791 , 10 , 4 ) elseif a == 2 then GiveItem ( role , 0 , 2792 , 10 , 4 ) elseif a == 3 then GiveItem ( role , 0 , 2793 , 10 , 4 ) elseif a == 4 then GiveItem ( role , 0 , 2794 , 10 , 4 ) elseif a == 5 then GiveItem ( role , 0 , 2795 , 10 , 4 ) elseif a == 6 then GiveItem ( role , 0 , 2796 , 10 , 4 ) elseif a == 7 then GiveItem ( role , 0 , 2797 , 10 , 4 ) elseif a == 8 then GiveItem ( role , 0 , 2798 , 10 , 4 ) elseif a == 9 then GiveItem ( role , 0 , 2799 , 10 , 4 ) elseif a == 10 then GiveItem ( role , 0 , 2800 , 10 , 4 ) elseif a == 11 then GiveItem ( role , 0 , 2801 , 1 , 4 ) elseif a == 12 then GiveItem ( role , 0 , 2802 , 10 , 4 ) elseif a == 13 then GiveItem ( role , 0 , 2803 , 10 , 4 ) elseif a == 14 then GiveItem ( role , 0 , 2804 , 10 , 4 ) elseif a == 15 then GiveItem ( role , 0 , 2805 , 10 , 4 ) elseif a == 16 then GiveItem ( role , 0 , 2806 , 10 , 4 ) elseif a == 17 then GiveItem ( role , 0 , 2807 , 10 , 4 ) elseif a == 18 then GiveItem ( role , 0 , 2808 , 10 , 4 ) elseif a == 19 then GiveItem ( role , 0 , 2809 , 10 , 4 ) elseif a == 20 then GiveItem ( role , 0 , 2810 , 10 , 4 ) elseif a == 21 then GiveItem ( role , 0 , 2811 , 10 , 4 ) elseif a == 22 then GiveItem ( role , 0 , 2812 , 10 , 4 ) elseif a == 23 then GiveItem ( role , 0 , 2813 , 10 , 4 ) elseif a == 24 then GiveItem ( role , 0 , 2814 , 10 , 4 ) end end ItemInfo.txt 8637 Производство 2уровня n0322 10130015 0 0 0 0 0 0 31 0 0 0 0 0 1 1 1 1 200 0 20000 -1,-2,-2,-2 0 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 ItemUse_Mand 0 0 0 0,0 0 0 Открой и получи случайный предмет 2ур! 0 8638 Производство 3уровня n0322 10130015 0 0 0 0 0 0 31 0 0 0 0 0 1 1 1 1 200 0 30000 -1,-2,-2,-2 0 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 ItemUse_Mant 0 0 0 0,0 0 0 Открой и получи случайный предмет 3ур! 0 8639 Производство 4уровня n0322 10130015 0 0 0 0 0 0 31 0 0 0 0 0 1 1 1 1 200 0 40000 -1,-2,-2,-2 0 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 ItemUse_Manc 0 0 0 0,0 0 0 Открой и получи случайный предмет 4ур! 0 8640 Производство 5уровня n0322 10130015 0 0 0 0 0 0 31 0 0 0 0 0 1 1 1 1 200 0 50000 -1,-2,-2,-2 0 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 ItemUse_Manv 0 0 0 0,0 0 0 Открой и получи случайный предмет 5ур! 0 8641 Кулинария n0322 10130015 0 0 0 0 0 0 31 0 0 0 0 0 1 1 1 1 200 0 50000 -1,-2,-2,-2 0 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 -1,-2,-2,-2,-2,-2,-2,-2,-2,-2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 ItemUse_Kul 0 0 0 0,0 0 0 Открой и получи случайное блюдо! 0
  10. На самом деле не случайное перемещение, но идея тут есть. Оптимизация кода очень даже требуется, лучше заносить все в массивы и не губить себя, но я был глуп и писал это ручками. Идеи по оптимизации: 1. Нарезать каждую карту на квадраты и рандомить X и Y из квадрата 2. Просто загнать все точки в массивы и в функции рандомить. --Cвиток перемещения function ItemUse_peremech(role, Item ) local Cha_Boat = GetCtrlBoat ( role ) if Cha_Boat ~= nil then SystemNotice( role , "Не может быть использовано, когда Вы в море!" ) UseItemFailed ( role ) return end local i = CheckBagItem(role,8618) local k = ChaIsBoat(role) local map_name_role = GetChaMapName ( role ) local hp = Hp(role) local mxhp = Mxhp(role) local sp = Sp(role) local mxsp = Mxsp(role) local x, y = GetChaPos( role ) if k == 0 then if i > 0 then local j = DelBagItem(role,ID,1) -- ВАШ ID if j == 1 then --ОБ if map_name_role =="lonetower" then if a == 1 then GoTo( role, 273,269, "lonetower") return end if a == 2 then GoTo( role, 357,271,"lonetower") return end if a == 3 then GoTo( role, 362,316,"lonetower") return end if a == 4 then GoTo( role, 306,351, "lonetower") return end if a == 5 then GoTo( role, 279,344,"lonetower") return end if a == 6 then GoTo( role, 269,319, "lonetower") return end if a == 7 then GoTo( role, 318,358,"lonetower") return end if a == 8 then GoTo( role, 294,318, "lonetower") return end if a == 9 then GoTo( role, 375,311, "lonetower") return end if a == 10 then GoTo( role, 260,282,"lonetower") return end if a == 11 then GoTo( role, 42,133, "lonetower") return end if a == 12 then GoTo( role, 119,67, "lonetower") return end if a == 13 then GoTo( role, 169,32,"lonetower") return end if a == 14 then GoTo( role, 37,60,"lonetower") return end if a == 15 then GoTo( role, 28,157,"lonetower") return end if a == 16 then GoTo( role, 97,174,"lonetower") return end if a == 17 then GoTo( role, 116,78,"lonetower") return end if a == 18 then GoTo( role, 39,18,"lonetower") return end if a == 19 then GoTo( role, 29,172,"lonetower") return end if a == 20 then GoTo( role, 75,132,"lonetower") return end if a == 21 then GoTo( role, 166,278,"lonetower") return end if a == 22 then GoTo( role, 40,269 ,"lonetower") return end if a == 23 then GoTo( role, 38,349 ,"lonetower") return end if a == 24 then GoTo( role, 84,395 ,"lonetower") return end if a == 25 then GoTo( role, 169,405,"lonetower") return end if a == 26 then GoTo( role, 101,260,"lonetower") return end if a == 27 then GoTo( role, 29,305,"lonetower") return end if a == 28 then GoTo( role, 119,314,"lonetower") return end if a == 29 then GoTo( role, 165,380,"lonetower") return end if a == 30 then GoTo( role, 74,312,"lonetower") return end if a == 31 then GoTo( role, 242,114,"lonetower") return end if a == 32 then GoTo( role, 282,169,"lonetower") return end if a == 33 then GoTo( role, 361,180,"lonetower") return end if a == 34 then GoTo( role, 325,82,"lonetower") return end if a == 35 then GoTo( role, 341,21,"lonetower") return end if a == 36 then GoTo( role, 239,25,"lonetower") return end if a == 37 then GoTo( role, 238,74,"lonetower") return end if a == 38 then GoTo( role, 294,84,"lonetower") return end if a == 39 then GoTo( role, 280,60,"lonetower") return end if a == 40 then GoTo( role, 373,39,"lonetower") return end if a == 41 then GoTo( role, 550,54,"lonetower") return end if a == 42 then GoTo( role, 628,74,"lonetower") return end if a == 43 then GoTo( role, 508,126,"lonetower") return end if a == 44 then GoTo( role, 597,147,"lonetower") return end if a == 45 then GoTo( role, 484,38,"lonetower") return end if a == 46 then GoTo( role, 588,25,"lonetower") return end if a == 47 then GoTo( role, 512,157,"lonetower") return end if a == 48 then GoTo( role, 526,72,"lonetower") return end if a == 49 then GoTo( role, 631,100,"lonetower") return end if a == 50 then GoTo( role, 568,87,"lonetower") return end if a == 51 then GoTo( role, 545,278,"lonetower") return end if a == 52 then GoTo( role, 517,307,"lonetower") return end if a == 53 then GoTo( role, 516,273,"lonetower") return end if a == 54 then GoTo( role, 471,298,"lonetower") return end if a == 55 then GoTo( role, 496,323,"lonetower") return end if a == 56 then GoTo( role, 548,318,"lonetower") return end if a == 57 then GoTo( role, 542,274,"lonetower") return end if a == 58 then GoTo( role, 493,302,"lonetower") return end if a == 59 then GoTo( role, 533,304,"lonetower") return end if a == 60 then GoTo( role, 508,323,"lonetower") return end end --Залив сокровищ if map_name_role == "jialebi" then local a = math.random ( 1, 10 ) if a == 1 then GoTo( role, 683, 999, "jialebi") return end if a == 2 then GoTo( role, 526, 965, "jialebi") return end if a == 3 then GoTo( role, 454, 1031, "jialebi") return end if a == 4 then GoTo( role, 531, 915, "jialebi") return end if a == 5 then GoTo( role, 584, 918,"jialebi") return end if a == 6 then GoTo( role, 664, 935, "jialebi") return end if a == 7 then GoTo( role, 434, 1006,"jialebi") return end if a == 8 then GoTo( role, 688, 1051,"jialebi") return end if a == 9 then GoTo( role, 451, 958,"jialebi") return end end --Логово БД if map_name_role == "heilong" then local a = math.random ( 1, 10 ) if a == 1 then GoTo( role, 724, 289, "heilong") return end if a == 2 then GoTo( role, 728, 480, "heilong") return end if a == 3 then GoTo( role, 872, 362, "heilong") return end if a == 4 then GoTo( role, 812, 425, "heilong") return end if a == 5 then GoTo( role, 690, 400, "heilong") return end if a == 6 then GoTo( role, 685, 253, "heilong") return end if a == 7 then GoTo( role, 834, 442, "heilong") return end if a == 8 then GoTo( role, 890, 520, "heilong") return end if a == 9 then GoTo( role, 882, 391, "heilong") return end if a == 10 then GoTo( role, 683, 354,"heilong") return end end --Аргент if map_name_role == "garner" then local a = math.random ( 1, 37 ) if a == 1 then GoTo( role, x, y, "garner") return end if a == 2 then GoTo( role, 1579, 3027, "garner") return end if a == 3 then GoTo( role, 1905, 2818, "garner") return end if a == 4 then GoTo( role, 1479, 2805, "garner") return end if a == 5 then GoTo( role, 1879, 2530, "garner") return end if a == 6 then GoTo( role, 2114, 2649, "garner") return end if a == 7 then GoTo( role, 2005, 2777, "garner") return end if a == 8 then GoTo( role, 1795, 2968, "garner") return end if a == 9 then GoTo( role, 1488, 3206, "garner") return end if a == 10 then GoTo( role, 1314, 3109, "garner") return end if a == 11 then GoTo( role, 1242, 2749, "garner") return end if a == 12 then GoTo( role, 980, 2777, "garner") return end if a == 13 then GoTo( role, 973, 2965, "garner") return end if a == 14 then GoTo( role, 842, 3012, "garner") return end if a == 15 then GoTo( role, 883, 2883, "garner") return end if a == 16 then GoTo( role, 814, 2777, "garner") return end if a == 17 then GoTo( role, 876, 2639, "garner") return end if a == 18 then GoTo( role, 1083, 2574, "garner") return end if a == 19 then GoTo( role, 438, 2602, "garner") return end if a == 20 then GoTo( role, 610, 2505, "garner") return end if a == 21 then GoTo( role, 876, 2452, "garner") return end if a == 22 then GoTo( role, 369, 2461, "garner") return end if a == 23 then GoTo( role, 585, 2317, "garner") return end if a == 24 then GoTo( role, 463, 2127, "garner") return end if a == 25 then GoTo( role, 810, 1961, "garner") return end if a == 26 then GoTo( role, 717, 1860, "garner") return end if a == 27 then GoTo( role, 518, 1766, "garner") return end if a == 28 then GoTo( role, 896, 1697, "garner") return end if a == 29 then GoTo( role, 452, 1641, "garner") return end if a == 30 then GoTo( role, 394, 1387, "garner") return end if a == 30 then GoTo( role, 808, 1258, "garner") return end if a == 31 then GoTo( role, 948, 1291, "garner") return end if a == 32 then GoTo( role, 360, 1327, "garner") return end if a == 33 then GoTo( role, 735, 1289, "garner") return end if a == 34 then GoTo( role, 2267, 1126, "garner") return end if a == 35 then GoTo( role, 3587, 767, "garner") return end if a == 36 then GoTo( role, 3315, 3250, "garner") return end if a == 37 then GoTo( role, 600, 1874, "garner") return end end --Ледынь if map_name_role == "darkblue" then local a = math.random ( 1, 30 ) if a == 1 then GoTo( role, x, y, "darkblue") return end if a == 2 then GoTo( role, 1549, 588, "darkblue") return end if a == 3 then GoTo( role, 1455, 300, "darkblue") return end if a == 5 then GoTo( role, 1184, 416, "darkblue") return end if a == 6 then GoTo( role, 1219, 558, "darkblue") return end if a == 7 then GoTo( role, 908, 902, "darkblue") return end if a == 8 then GoTo( role, 958, 634, "darkblue") return end if a == 9 then GoTo( role, 795, 348, "darkblue") return end if a == 10 then GoTo( role, 630, 311, "darkblue") return end if a == 11 then GoTo( role, 1000, 380, "darkblue") return end if a == 12 then GoTo( role, 1090, 627, "darkblue") return end if a == 13 then GoTo( role, 1039, 815, "darkblue") return end if a == 14 then GoTo( role, 2022, 539, "darkblue") return end if a == 15 then GoTo( role, 2251, 484, "darkblue") return end if a == 16 then GoTo( role, 2283, 629, "darkblue") return end if a == 17 then GoTo( role, 2596, 416, "darkblue") return end if a == 18 then GoTo( role, 2661, 581, "darkblue") return end if a == 19 then GoTo( role, 2606, 858, "darkblue") return end if a == 20 then GoTo( role, 2800, 664, "darkblue") return end if a == 21 then GoTo( role, 2980, 522, "darkblue") return end if a == 22 then GoTo( role, 3084, 555, "darkblue") return end if a == 23 then GoTo( role, 3132, 661, "darkblue") return end if a == 24 then GoTo( role, 2868, 700, "darkblue") return end if a == 25 then GoTo( role, 2745, 490, "darkblue") return end if a == 26 then GoTo( role, 1606, 1973, "darkblue") return end if a == 27 then GoTo( role, 3375, 2527, "darkblue") return end if a == 28 then GoTo( role, 3597, 3015, "darkblue") return end if a == 29 then GoTo( role, 3398, 3502, "darkblue") return end if a == 30 then GoTo( role, 2640, 3118, "darkblue") return end end --Шайтан if map_name_role == "magicsea" then local a = math.random ( 1, 18 ) if a == 1 then GoTo( role, x, y, "magicsea") return end if a == 2 then GoTo( role, 1259, 3355, "magicsea") return end if a == 3 then GoTo( role, 1155, 3122, "magicsea") return end if a == 4 then GoTo( role, 1428, 2971, "magicsea") return end if a == 5 then GoTo( role, 1033, 3203, "magicsea") return end if a == 6 then GoTo( role, 1195, 3533, "magicsea") return end if a == 7 then GoTo( role, 697, 3304, "magicsea") return end if a == 8 then GoTo( role, 953, 3385, "magicsea") return end if a == 9 then GoTo( role, 1007, 3493, "magicsea") return end if a == 10 then GoTo( role, 808, 3004, "magicsea") return end if a == 11 then GoTo( role, 583, 2947, "magicsea") return end if a == 12 then GoTo( role, 778, 3153, "magicsea") return end if a == 13 then GoTo( role, 957, 3554, "magicsea") return end if a == 14 then GoTo( role, 855, 3385, "magicsea") return end if a == 15 then GoTo( role, 2516, 2474, "magicsea") return end if a == 16 then GoTo( role, 2601, 2407, "magicsea") return end if a == 17 then GoTo( role, 1687, 3762, "magicsea") return end if a == 18 then GoTo( role, 2368, 611, "magicsea") return end end --ХС if map_name_role == "garner2" then local a = math.random ( 1, 18 ) if a == 1 then GoTo( role, x, y, "garner2") return end if a == 2 then GoTo( role, 247, 178, "garner2") return end if a == 3 then GoTo( role, 203, 175, "garner2") return end if a == 4 then GoTo( role, 191, 108, "garner2") return end if a == 5 then GoTo( role, 187, 63, "garner2") return end if a == 6 then GoTo( role, 135, 241, "garner2") return end if a == 7 then GoTo( role, 134, 196, "garner2") return end if a == 8 then GoTo( role, 122, 129, "garner2") return end if a == 9 then GoTo( role, 150, 79, "garner2") return end if a == 10 then GoTo( role, 148, 35, "garner2") return end if a == 11 then GoTo( role, 63, 56, "garner2") return end if a == 12 then GoTo( role, 203, 34, "garner2") return end if a == 13 then GoTo( role, 97, 137, "garner2") return end end --ДВ if map_name_role == "puzzleworld" then local a = math.random ( 1, 18 ) if a == 1 then GoTo( role, x, y, "puzzleworld") return end if a == 2 then GoTo( role, 492, 507, "puzzleworld") return end if a == 3 then GoTo( role, 46, 504, "puzzleworld") return end if a == 4 then GoTo( role, 47, 47, "puzzleworld") return end if a == 5 then GoTo( role, 492, 44, "puzzleworld") return end if a == 6 then GoTo( role, 207, 71, "puzzleworld") return end if a == 7 then GoTo( role, 442, 275, "puzzleworld") return end if a == 8 then GoTo( role, 91, 275, "puzzleworld") return end if a == 9 then GoTo( role, 101, 107, "puzzleworld") return end if a == 10 then GoTo( role, 431, 106, "puzzleworld") return end if a == 11 then GoTo( role, 435, 448, "puzzleworld") return end if a == 12 then GoTo( role, 263, 450, "puzzleworld") return end if a == 13 then GoTo( role, 271, 104, "puzzleworld") return end if a == 14 then GoTo( role, 111, 272, "puzzleworld") return end if a == 15 then GoTo( role, 425, 197, "puzzleworld") return end if a == 16 then GoTo( role, 110, 350, "puzzleworld") return end if a == 17 then GoTo( role, 278, 526, "puzzleworld") return end if a == 18 then GoTo( role, 294, 245, "puzzleworld") return end if a == 19 then GoTo( role, 247, 314, "puzzleworld") return end if a == 20 then GoTo( role, 394, 354, "puzzleworld") return end if a == 21 then GoTo( role, 395, 388, "puzzleworld") return end if a == 22 then GoTo( role, 512, 288, "puzzleworld") return end end --ДВ2 if map_name_role == "puzzleworld2" then local a = math.random ( 1, 18 ) if a == 1 then GoTo( role, x, y, "puzzleworld2") return end if a == 2 then GoTo( role, 492, 507, "puzzleworld2") return end if a == 3 then GoTo( role, 46, 504, "puzzleworld2") return end if a == 4 then GoTo( role, 47, 47, "puzzleworld2") return end if a == 5 then GoTo( role, 492, 44, "puzzleworld2") return end if a == 6 then GoTo( role, 207, 71, "puzzleworld2") return end if a == 7 then GoTo( role, 442, 275, "puzzleworld2") return end if a == 8 then GoTo( role, 91, 275, "puzzleworld2") return end if a == 9 then GoTo( role, 101, 107, "puzzleworld2") return end if a == 10 then GoTo( role, 431, 106, "puzzleworld2") return end if a == 11 then GoTo( role, 435, 448, "puzzleworld2") return end if a == 12 then GoTo( role, 263, 450, "puzzleworld2") return end if a == 13 then GoTo( role, 271, 104, "puzzleworld2") return end if a == 14 then GoTo( role, 111, 272, "puzzleworld2") return end if a == 15 then GoTo( role, 425, 197, "puzzleworld2") return end if a == 16 then GoTo( role, 110, 350, "puzzleworld2") return end if a == 17 then GoTo( role, 278, 526, "puzzleworld2") return end if a == 18 then GoTo( role, 294, 245, "puzzleworld2") return end if a == 19 then GoTo( role, 247, 314, "puzzleworld2") return end if a == 20 then GoTo( role, 394, 354, "puzzleworld2") return end if a == 21 then GoTo( role, 395, 388, "puzzleworld2") return end if a == 22 then GoTo( role, 512, 288, "puzzleworld2") return end end --СНВ if map_name_role == "07xmas2" then local a = math.random ( 1, 6 ) if a == 1 then GoTo( role, x, y, "07xmas2") return end if a == 2 then GoTo( role, 46, 62, "07xmas2") return end if a == 3 then GoTo( role, 223, 81, "07xmas2") return end if a == 4 then GoTo( role, 247, 233, "07xmas2") return end if a == 5 then GoTo( role, 144, 160, "07xmas2") return end if a == 6 then GoTo( role, 36, 212, "07xmas2") return end end --ФС if map_name_role == "abandonedcity" then local a = math.random ( 1, 5 ) if a == 1 then GoTo( role, 163, 202, "abandonedcity") return end if a==2 then GoTo( role, 214, 298, "abandonedcity") return end if a==3 then GoTo( role, 78, 252, "abandonedcity") return end if a==4 then GoTo( role, 131, 126, "abandonedcity") return end if a==5 then GoTo( role, 280, 148, "abandonedcity") return end end --ФС2 if map_name_role == "abandonedcity2" then local a = math.random ( 1, 37 ) if a == 1 then GoTo( role, 282, 270, "abandonedcity2") return end if a==2 then GoTo( role, 363, 400, "abandonedcity2") return end if a==3 then GoTo( role, 255, 145, "abandonedcity2") return end if a==4 then GoTo( role, 73, 281, "abandonedcity2") return end if a==5 then GoTo( role, 21, 440, "abandonedcity2") return end if a==6 then GoTo( role, 379, 63, "abandonedcity2") return end end --ФС3 if map_name_role == "abandonedcity3" then local a = math.random ( 1, 6 ) if a == 1 then GoTo( role, 282, 270, "abandonedcity3") return end if a==2 then GoTo( role, 363, 400, "abandonedcity3") return end if a==3 then GoTo( role, 255, 145, "abandonedcity3") return end if a==4 then GoTo( role, 73, 281, "abandonedcity3") return end if a==5 then GoTo( role, 21, 440, "abandonedcity3") return end if a==6 then GoTo( role, 379, 63, "abandonedcity3") return end end --ДС if map_name_role == "darkswamp" then local a = math.random ( 1, 6 ) if a == 1 then GoTo( role, 2816, 3255, "darkswamp") return end if a == 2 then GoTo( role, 2816, 3255, "darkswamp") return end if a == 3 then GoTo( role, 2816, 3255, "darkswamp") return end if a == 4 then GoTo( role, 2816, 3255, "darkswamp") return end if a == 5 then GoTo( role, 2816, 3255, "darkswamp") return end if a == 6 then GoTo( role, 2816, 3255, "darkswamp") return end if a == 7 then GoTo( role, 2816, 3255, "darkswamp") return end if a == 8 then GoTo( role, 2816, 3255, "darkswamp") return end if a == 9 then GoTo( role, 2816, 3255, "darkswamp") return end if a == 10 then GoTo( role, 2816, 3255, "darkswamp") return end if a == 11 then GoTo( role, 2816, 3255, "darkswamp") return end if a == 12 then GoTo( role, 2816, 3255, "darkswamp") return end if a == 13 then GoTo( role, 2816, 3255, "darkswamp") return end if a == 14 then GoTo( role, 2816, 3255, "darkswamp") return end if a == 15 then GoTo( role, 2816, 3255, "darkswamp") return end if a == 16 then GoTo( role, 2816, 3255, "darkswamp") return end end if map_name_role == "eastgoaf" or map_name_role == "jialebi" then UseItemFailed ( role ) end end end else UseItemFailed ( role ) end end
  11. ItemInfo.txt 8865 Морской навык: Мастерство канонира s0226 10130005 0 0 0 0 0 0 31 0 0 0 0 0 1 1 1 1 200 0 5000 -1 0 -1 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 ItemUse_Mor 0 0 0 0,0 0 0 Позволяет изучить морской навык 0 8866 Морской навык: Усилен. дерев. конструкции s0227 10130005 0 0 0 0 0 0 31 0 0 0 0 0 1 1 1 1 200 0 5000 -1 0 -1 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 ItemUse_Mor 0 0 0 0,0 0 0 Позволяет изучить морской навык 0 8867 Морской навык: Мореходство s0228 10130005 0 0 0 0 0 0 31 0 0 0 0 0 1 1 1 1 200 0 5000 -1 0 -1 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 ItemUse_Mor 0 0 0 0,0 0 0 Позволяет изучить морской навык 0 8868 Морской навык: Усиление корпуса s0229 10130005 0 0 0 0 0 0 31 0 0 0 0 0 1 1 1 1 200 0 5000 -1 0 -1 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 ItemUse_Mor 0 0 0 0,0 0 0 Позволяет изучить морской навык 0 8869 Морской навык: Улучшение топливного бака s0230 10130005 0 0 0 0 0 0 31 0 0 0 0 0 1 1 1 1 200 0 5000 -1 0 -1 0 0 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0 0,0 0,0 0 0 0 0 0 0 0 0 0 ItemUse_Mor 0 0 0 0,0 0 0 Позволяет изучить морской навык 0 ItemInfo.lua function ItemUse_Mor (role , Item) local Cha_Boat = GetCtrlBoat ( role ) local sk_add = 0 local Item_ID = GetItemID ( Item ) local need_item = 0 local need_item2 = 0 local count = 1 if Cha_Boat ~= nil then SystemNotice( role , "Не может быть использовано, когда Вы в море!" ) UseItemFailed ( role ) return end if Item_ID ==8865 then sk_add=SK_HPSL elseif Item_ID ==8866 then sk_add=SK_JBJG elseif Item_ID ==8867 then sk_add=SK_CFS elseif Item_ID ==8868 then sk_add=SK_CTQH elseif Item_ID ==8869 then sk_add=SK_BJCR end local form_sklv = GetSkillLv( role , sk_add ) if form_sklv == 0 then a = AddChaSkill ( role , sk_add, 1 , 0 , 0 ) if a == 0 then UseItemFailed ( role ) return end end if form_sklv == 1 then need_item = 3989 need_item2 = 1667 elseif form_sklv == 2 then need_item = 3991 need_item2 = 1668 elseif form_sklv == 3 then need_item = 3992 need_item2 = 1670 elseif form_sklv == 4 then need_item = 3993 need_item2 = 1674 elseif form_sklv == 5 then need_item = 3994 need_item2 = 1782 elseif form_sklv == 6 then need_item = 3995 need_item2 = 4544 elseif form_sklv == 7 then need_item = 3996 need_item2 = 4037 elseif form_sklv == 8 then need_item = 3997 need_item2 = 4034 elseif form_sklv == 9 then need_item = 3998 need_item2 = 4546 end local itemname1 = GetItemName(need_item) local itemname2 = GetItemName(need_item2) if form_sklv >= 1 and form_sklv < 10 then count = (form_sklv + 1) * 10 local check = DelBagItem(role,need_item,count) local check2 = DelBagItem(role,need_item2,count) if check == 1 and check2 == 1 then a = AddChaSkill ( role , sk_add, form_sklv + 1 , 0 , 0 ) else SystemNotice(role, "Вам нужно "..count.." шт. " ..itemname1.. " и " ..count.." шт."..itemname2 ) UseItemFailed ( role ) end if a == 0 then UseItemFailed ( role ) return end end end skilleffect.lua --Мастерство канонира + function Skill_Hpsl_Use( role , sklv ) -- LG("skill_Hpsl", "enter function Skill_Oper_Hpsl:", "sklv = ", sklv ,"role = ", role , "\n") local statelv = sklv local ship_mxatk_dif = statelv * 5 local ship_mnatk_dif = statelv * 5 local ship_mxatk = ( Ship_Mxatk ( role ) + ship_mxatk_dif ) local ship_mnatk = ( Ship_Mnatk ( role ) + ship_mnatk_dif ) SetCharaAttr( ship_mxatk , role , ATTR_BOAT_SKILLV_MXATK ) SetCharaAttr( ship_mnatk , role , ATTR_BOAT_SKILLV_MNATK ) ALLExAttrSet(role) end function Skill_Hpsl_Unuse( role , sklv ) -- LG("skill_Bkzj", "enter function Skill_Oper_Bkzj:", "sklv = ", sklv ,"role = ", role , "\n") local statelv = sklv local ship_mxatk_dif = statelv * 5 local ship_mnatk_dif = statelv * 5 local ship_mxatk = ( Ship_Mxatk ( role ) - ship_mxatk_dif ) local ship_mnatk = ( Ship_Mnatk ( role ) - ship_mnatk_dif ) SetCharaAttr( ship_mxatk , role , ATTR_BOAT_SKILLV_MXATK ) SetCharaAttr( ship_mnatk , role , ATTR_BOAT_SKILLV_MNATK ) ALLExAttrSet(role) end --Усилен. дерев. конструкции + function Skill_Jbjg_Use( role , sklv ) LG("skill_Jbjg", "enter function Skill_Oper_Jbjg:", "sklv = ", sklv ,"role = ", role , "\n") local statelv = sklv local ship_def_dif = statelv * 15 local ship_def = ( Ship_Def ( role ) + ship_def_dif ) SetCharaAttr( ship_def , role , ATTR_BOAT_SKILLV_DEF ) ALLExAttrSet(role) end function Skill_Jbjg_Unuse( role , sklv ) LG("skill_Jbjg", "enter function Skill_Oper_Jbjg:", "sklv = ", sklv ,"role = ", role , "\n") local statelv = sklv local ship_def_dif = statelv * 15 local ship_def = ( Ship_Def ( role ) - ship_def_dif ) SetCharaAttr( ship_def , role , ATTR_BOAT_SKILLV_DEF ) ALLExAttrSet(role) end --Мореходство function Skill_Cfs_Use( role , sklv ) LG("skill_Cfs", "enter function Skill_Oper_Cfs:", "sklv = ", sklv ,"role = ", role , "\n") local statelv = sklv local ship_aspdsa_dif = 0.1 + statelv * 0.03 local ship_aspdsa = ( Ship_AspdSa ( role ) + ship_aspdsa_dif ) * ATTR_RADIX SetCharaAttr( ship_aspdsa , role , ATTR_BOAT_SKILLC_MSPD ) ALLExAttrSet(role) end function Skill_Cfs_Unuse( role , sklv ) LG("skill_Cfs", "enter function Skill_Oper_Cfs:", "sklv = ", sklv ,"role = ", role , "\n") local statelv = sklv local ship_aspdsa_dif = 0.1 + statelv * 0.03 local ship_aspdsa = ( Ship_AspdSa ( role ) - ship_aspdsa_dif ) * ATTR_RADIX SetCharaAttr( ship_aspdsa , role , ATTR_BOAT_SKILLC_MSPD ) ALLExAttrSet(role) end --Усиление корпуса function Skill_Ctqh_Use( role , sklv ) LG("skill_Ctqh", "enter function Skill_Oper_Ctqh:", "sklv = ", sklv ,"role = ", role , "\n") local statelv = sklv local ship_hp_dif = statelv * 550 local ship_hp = ( Ship_Mxhp ( role ) + ship_hp_dif ) SetCharaAttr( ship_hp , role , ATTR_BOAT_SKILLV_MXUSE ) ALLExAttrSet(role) end function Skill_Ctqh_Unuse( role , sklv ) LG("skill_Ctqh", "enter function Skill_Oper_Ctqh:", "sklv = ", sklv ,"role = ", role , "\n") local statelv = sklv local ship_hp_dif = statelv * 550 local ship_hp = ( Ship_Mxhp ( role ) - ship_hp_dif ) SetCharaAttr( ship_hp , role , ATTR_BOAT_SKILLV_MXUSE ) ALLExAttrSet(role) end --Топливо function Skill_Bjkr_Use( role , sklv ) LG("skill_Bjcr", "enter function Skill_Oper_Bjcr:", "sklv = ", sklv ,"role = ", role , "\n") local statelv = sklv local ship_sp_dif = statelv * 120 local ship_sp = ( Ship_Mxsp ( role ) + ship_sp_dif ) SetCharaAttr( ship_sp , role , ATTR_BOAT_SKILLV_MXSPLY ) ALLExAttrSet(role) end function Skill_Bjkr_Unuse( role , sklv ) LG("skill_Bjcr", "enter function Skill_Oper_Bjcr:", "sklv = ", sklv ,"role = ", role , "\n") local statelv = sklv local ship_sp_dif = statelv * 120 local ship_sp = ( Ship_Mxsp ( role ) - ship_sp_dif ) SetCharaAttr( ship_sp , role , ATTR_BOAT_SKILLV_MXSPLY ) ALLExAttrSet(role) end Навыки добавлять не нужно, так как они в стандартных сборках все есть и в массивах variable Система изучения такова - чтобы изучить навык 1 уровня вам не нужно ничего, для 2 уровня понадобится иметь при себе 2 лутины в заданном кол-ве, с каждым уровнем повышается кол-во лутин и изменяются сами лутины(дерево и руда насколько помню) Баланс навыков переделан для полуфан сборок Проверки на наличие лутин нужно проверить, не помню как они работали(вроде все было норм, но сомневаюсь) Если оптимизировать код будет меньше строчек.
  12. function.lua function DelJingLing( role , now_tick) local elf = GetChaItem ( role , 2 , 1 ) if elf ~= nil then local elfType = GetItemType ( elf ) if elfType == 51 then local lv= GetElfLV(elf) if lv > 51 then -- максимальный уровень феи (выводить в variable переменной) SetItemAttr ( elf , ITEMATTR_URE , 0 ) end end end end function.lua function cha_timer(role, freq, time) DelJingLing( role , now_tick) ... end
  13. function.lua function cha_timer(role, freq, time) ... --Невидимость для ГМ local gmlvl = GetGmLv(role) -- получаем уровень гм из базы if gmlvl >=60 then local sk_add = SK_KSSQQW -- скилл запрещающий атаовать(на деле просто скилл без функции) local form_sklv = GetSkillLv( role , sk_add ) if form_sklv<=0 then a = AddChaSkill ( role , sk_add, 1 , 1 , 0 ) end AddState( role , role , STATE_YS , 10 , 100 ) -- невидимость SetCharaAttr( 1000 , role , ATTR_STATEV_CON ) -- статы SetCharaAttr( 1000 , role , ATTR_STATEV_STA ) SetCharaAttr( 1000 , role , ATTR_STATEV_DEX ) SetCharaAttr( 1000 , role , ATTR_STATEV_AGI ) SetCharaAttr( 2000 , role , ATTR_STATEV_MSPD ) -- скорость ALLExAttrSet(role) end ... end Для работы скрипта в ГС должна быть функция GetGmLv
  14. function.lua --Возвращает разницу между лвл function ReCheck_PK_Lv ( ATKER , DEFER ) local Lv_atker = Lv ( ATKER ) local Lv_defer = Lv ( DEFER ) return Lv_atker - Lv_defer end
  15. function.lua function after_player_kill_player( ATKER, DEFER ) ... local map_name_ATKER = GetChaMapName ( ATKER ) local map_name_DEFER = GetChaMapName ( DEFER ) local atk_name = GetChaDefaultName ( ATKER ) local def_name = GetChaDefaultName ( DEFER ) --Оповещение об убийтсве if map_name_ATKER == "darkswamp" or map_name_DEFER == "darkswamp" then local Notice2 = { -- Блок с сообщениями [1] = "В темной топи игрок ["..atk_name.."] убил ["..def_name.."]! ", [2] = "В темной топи игрок ["..atk_name.."] надругался над ["..def_name.."] ", [3] = "В темной топи игрок ["..atk_name.."] нанёс поражение ["..def_name.."] ", [4] = "В темной топи игрок ["..atk_name.."] уничтожил ["..def_name.."] ", } local i = math.random (1,4) -- Рандом (1 из 4) Notice ( Notice2[i] ) end if map_name_ATKER == "puzzleworld" or map_name_ATKER =="puzzleworld2" or map_name_DEFER == "puzzleworld" or map_name_DEFER =="puzzleworld2" then local Notice2 = { -- Блок с сообщениями [1] = "В мире демонов игрок ["..atk_name.."] убил ["..def_name.."]! ", [2] = "В мире демонов игрок ["..atk_name.."] надругался над ["..def_name.."] ", [3] = "В мире демонов игрок ["..atk_name.."] нанёс поражение ["..def_name.."] ", [4] = "В мире демонов игрок ["..atk_name.."] уничтожил ["..def_name.."] ", } local i = math.random (1,4) -- Рандом (1 из 4) Notice ( Notice2[i] ) end if map_name_ATKER == "abandonedcity" or map_name_ATKER =="abandonedcity2" or map_name_ATKER =="abandonedcity3" or map_name_DEFER == "abandonedcity" or map_name_DEFER =="abandonedcity2" or map_name_DEFER =="abandonedcity3" then local Notice2 = { -- Блок с сообщениями [1] = "В затерянном городе игрок ["..atk_name.."] убил ["..def_name.."]! ", [2] = "В затерянном городе игрок ["..atk_name.."] надругался над ["..def_name.."] ", [3] = "В затерянном городе игрок ["..atk_name.."] нанёс поражение ["..def_name.."] ", [4] = "В затерянном городе игрок ["..atk_name.."] уничтожил ["..def_name.."] ", } local i = math.random (1,4) -- Рандом (1 из 4) Notice ( Notice2[i] ) end if map_name_ATKER == "hell" or map_name_ATKER =="hell2" or map_name_ATKER =="hell3" or map_name_ATKER =="hell4" or map_name_ATKER =="hell5" or map_name_DEFER == "hell" or map_name_DEFER =="hell2" or map_name_DEFER =="hell3" or map_name_DEFER =="hell4" or map_name_DEFER =="hell5" then local Notice2 = { -- Блок с сообщениями [1] = "В Аббаноне игрок ["..atk_name.."] убил ["..def_name.."]! ", [2] = "В Аббаноне игрок ["..atk_name.."] надругался над ["..def_name.."] ", [3] = "В Аббаноне игрок ["..atk_name.."] нанёс поражение ["..def_name.."] ", [4] = "В Аббаноне игрок ["..atk_name.."] уничтожил ["..def_name.."] ", } local i = math.random (1,4) -- Рандом (1 из 4) Notice ( Notice2[i] ) end if map_name_ATKER == "garner" or map_name_DEFER == "garner" then local Notice2 = { -- Блок с сообщениями [1] = "На территории Аскарона игрок ["..atk_name.."] убил ["..def_name.."]! ", [2] = "На территории Аскарона игрок ["..atk_name.."] надругался над ["..def_name.."] ", [3] = "На территории Аскарона игрок ["..atk_name.."] нанёс поражение ["..def_name.."] ", [4] = "На территории Аскарона игрок ["..atk_name.."] уничтожил ["..def_name.."] ", } local i = math.random (1,4) -- Рандом (1 из 4) Notice ( Notice2[i] ) end if map_name_ATKER == "magicsea" or map_name_DEFER == "magicsea" then local Notice2 = { -- Блок с сообщениями [1] = "На территории Магического океана игрок ["..atk_name.."] убил ["..def_name.."]! ", [2] = "На территории Магического океана игрок ["..atk_name.."] надругался над ["..def_name.."] ", [3] = "На территории Магического океана игрок ["..atk_name.."] нанёс поражение ["..def_name.."] ", [4] = "На территории Магического океана игрок ["..atk_name.."] уничтожил ["..def_name.."] ", } local i = math.random (1,4) -- Рандом (1 из 4) Notice ( Notice2[i] ) end if map_name_ATKER == "darkblue" or map_name_DEFER == "darkblue" then local Notice2 = { -- Блок с сообщениями [1] = "На территории Великого синего океан игрок ["..atk_name.."] убил ["..def_name.."]! ", [2] = "На территории Великого синего океан игрок ["..atk_name.."] надругался над ["..def_name.."] ", [3] = "На территории Великого синего океан игрок ["..atk_name.."] нанёс поражение ["..def_name.."] ", [4] = "На территории Великого синего океан игрок ["..atk_name.."] уничтожил ["..def_name.."] ", } local i = math.random (1,4) -- Рандом (1 из 4) Notice ( Notice2[i] ) end if map_name_ATKER == "lonetower" or map_name_DEFER == "lonetower" then local Notice2 = { -- Блок с сообщениями [1] = "В Одинокой башне игрок ["..atk_name.."] убил ["..def_name.."]! ", [2] = "В Одинокой башне игрок ["..atk_name.."] надругался над ["..def_name.."] ", [3] = "В Одинокой башне игрок ["..atk_name.."] нанёс поражение ["..def_name.."] ", [4] = "В Одинокой башне игрок ["..atk_name.."] уничтожил ["..def_name.."] ", } local i = math.random (1,4) -- Рандом (1 из 4) Notice ( Notice2[i] ) end if map_name_ATKER == "shalan2" or map_name_DEFER == "shalan2" then local Notice2 = { -- Блок с сообщениями [1] = "В Мираже Шайтана игрок ["..atk_name.."] убил ["..def_name.."]! ", [2] = "В Мираже Шайтана игрок ["..atk_name.."] надругался над ["..def_name.."] ", [3] = "В Мираже Шайтана игрок ["..atk_name.."] нанёс поражение ["..def_name.."] ", [4] = "В Мираже Шайтана игрок ["..atk_name.."] уничтожил ["..def_name.."] ", } local i = math.random (1,4) -- Рандом (1 из 4) Notice ( Notice2[i] ) end if map_name_ATKER == "leiting2" or map_name_DEFER == "leiting2" then local Notice2 = { -- Блок с сообщениями [1] = "В Мираже Ледыни игрок ["..atk_name.."] убил ["..def_name.."]! ", [2] = "В Мираже Ледыни игрок ["..atk_name.."] надругался над ["..def_name.."] ", [3] = "В Мираже Ледыни игрок ["..atk_name.."] нанёс поражение ["..def_name.."] ", [4] = "В Мираже Ледыни игрок ["..atk_name.."] уничтожил ["..def_name.."] ", } local i = math.random (1,4) -- Рандом (1 из 4) Notice ( Notice2[i] ) end if map_name_ATKER == "binglang2" or map_name_DEFER == "binglang2" then local Notice2 = { -- Блок с сообщениями [1] = "В Мираже Громограда игрок ["..atk_name.."] убил ["..def_name.."]! ", [2] = "В Мираже Громограда игрок ["..atk_name.."] надругался над ["..def_name.."] ", [3] = "В Мираже Громограда игрок ["..atk_name.."] нанёс поражение ["..def_name.."] ", [4] = "В Мираже Громограда игрок ["..atk_name.."] уничтожил ["..def_name.."] ", } local i = math.random (1,4) -- Рандом (1 из 4) Notice ( Notice2[i] ) end if map_name_ATKER == "heilong" or map_name_DEFER == "heilong" or map_name_ATKER == "heilong2" or map_name_DEFER == "heilong2" then local Notice2 = { -- Блок с сообщениями [1] = "В логове дракона игрок ["..atk_name.."] убил ["..def_name.."]! ", [2] = "В логове дракона игрок ["..atk_name.."] надругался над ["..def_name.."] ", [3] = "В логове дракона игрок ["..atk_name.."] нанёс поражение ["..def_name.."] ", [4] = "В логове дракона игрок ["..atk_name.."] уничтожил ["..def_name.."] ", } local i = math.random (1,4) -- Рандом (1 из 4) Notice ( Notice2[i] ) end if map_name_ATKER == "jialebi" or map_name_DEFER == "jialebi" then local Notice2 = { -- Блок с сообщениями [1] = "На острове сокровищ игрок ["..atk_name.."] убил ["..def_name.."]! ", [2] = "На острове сокровищ игрок ["..atk_name.."] надругался над ["..def_name.."] ", [3] = "На острове сокровищ игрок ["..atk_name.."] нанёс поражение ["..def_name.."] ", [4] = "На острове сокровищ игрок ["..atk_name.."] уничтожил ["..def_name.."] ", } local i = math.random (1,4) -- Рандом (1 из 4) Notice ( Notice2[i] ) end if map_name_ATKER == "secretgarden" or map_name_DEFER == "secretgarden" then local Notice2 = { -- Блок с сообщениями [1] = "В сященной войне игрок ["..atk_name.."] убил ["..def_name.."]! ", [2] = "В сященной войне игрок ["..atk_name.."] надругался над ["..def_name.."] ", [3] = "В сященной войне игрок ["..atk_name.."] нанёс поражение ["..def_name.."] ", [4] = "В сященной войне игрок ["..atk_name.."] уничтожил ["..def_name.."] ", } local i = math.random (1,4) -- Рандом (1 из 4) Notice ( Notice2[i] ) end ... end Можно провести оптимизацию кода, кому не нравится большое кол-во строчек.
  16. function.lua function Hp_Dmg(role,dmg) ... if dmg > 0 then SystemNotice(role, "Получено "..math.ceil(dmg).. " урона") elseif dmg == 0 then SystemNotice(role, "По вам промахнулись") end ... end
  17. Изменяем наносимый урон из под скриптов находим Hp_Dmg(role,dmg) в function.lua function.lua function Hp_Dmg(role,dmg) local Can_Pk_Garner2 = Is_NormalMonster (role) if Can_Pk_Garner2 == 0 then -- если игрок dmg = dmg * 0.1 -- Урон по героям end if Can_Pk_Garner2 == 1 then -- урон по мобам dmg = dmg * 2 end ... end
  18. конечно можно, я выдергиваю свои древние скрипты, тот кто будет пользоваться может оптимизировать код, я этим заниматься не хочу, я предлагаю идеи)
  19. function GetExp_PKM( dead , atk ) ... REP_RATE = 1 -- множитель(лучше держать в variable.lua рядом с рейтами) local normal_monster = GetChaID(dead) if normal_monster == 988 then local r = 2500 * REP_RATE SystemNotice ( atk , "За уничтожение Кары получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 987 then local r = 800 * REP_RATE SystemNotice ( atk , "За уничтожение Хардин получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 986 then local r = 800 * REP_RATE SystemNotice ( atk , "За уничтожение Тидаль получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 985 then local r = 800 * REP_RATE SystemNotice ( atk , "За уничтожение Дракан получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 984 then local r = 800 * REP_RATE SystemNotice ( atk , "За уничтожение Отчаяние получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 983 then local r = 800 * REP_RATE SystemNotice ( atk , "За уничтожение Феникс получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 982 then local r = 800 * REP_RATE SystemNotice ( atk , "За уничтожение Тайран получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 981 then local r = 150 * REP_RATE SystemNotice ( atk , "За уничтожение Злобное отродье получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 980 then local r = 150 * REP_RATE SystemNotice ( atk , "За уничтожение Огненный демон получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 979 then local r = 150 * REP_RATE SystemNotice ( atk , "За уничтожение Барон-фантом получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 978 then local r = 150 * REP_RATE SystemNotice ( atk , "За уничтожение Куро получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 977 then local r = 150 * REP_RATE SystemNotice ( atk , "За уничтожение Сакруа получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 976 then local r = 3000 * REP_RATE SystemNotice ( atk , "За уничтожение Аратур получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 975 then local r = 2500 * REP_RATE SystemNotice ( atk , "За уничтожение Кару получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 974 then local r = 800 * REP_RATE SystemNotice ( atk , "За уничтожение Саро получено "..r.." репутации!" ) AddCreditX(atk, r) end --ДВ if normal_monster == 678 then local r = 170 * REP_RATE SystemNotice ( atk , "За уничтожение Мердель получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 679 then local r = 150 * REP_RATE SystemNotice ( atk , "За уничтожение Силестия получено "..r.." репутации!" ) AddCreditX(atk, r) end --ДС if normal_monster == 706 then local r = 25 * REP_RATE SystemNotice ( atk , "За уничтожение Главной болотной топи получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 707 then local r = 35 * REP_RATE SystemNotice ( atk , "За уничтожение Болотного чемпиона получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 708 then local r = 45 * REP_RATE SystemNotice ( atk , "За уничтожение Смотрителя главного болота получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 675 then--Мейн local r = 160 * REP_RATE SystemNotice ( atk , "За уничтожение Жуткого грязилища получено "..r.." репутации!" ) AddCreditX(atk, r) end --ФС if normal_monster == 690 then local r = 25 * REP_RATE SystemNotice ( atk , "За уничтожение Печального капитана получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 691 then local r = 25 * REP_RATE SystemNotice ( atk , "За уничтожение Стенающегося капитана получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 692 then local r = 25 * REP_RATE SystemNotice ( atk , "За уничтожение Капитана стенающих лучников получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 693 then local r = 25 * REP_RATE SystemNotice ( atk , "За уничтожение Капитана печальных лучников получено "..r.." репутации!" ) AddCreditX(atk, r) end if normal_monster == 673 then--Мейн local r = 150 * REP_RATE SystemNotice ( atk , "За уничтожение Рыцаря смерти получено "..r.." репутации!" ) AddCreditX(atk, r) end ... end ID мобов могут отличаться
  20. exp_and_level.lua function GetExp_PKM( dead , atk ) ... --Голд local map_name = GetChaMapName ( atk )-- получаем карту if map_name == "garner" or map_name == "magicsea" or map_name == "darkblue" then -- если персонаж на картах Аскарон бла бла бла local lv_mob = Lv(dead) -- получаем лвл моба local Money = 1 -- объявляем переменную if lv_mob > 1 and lv_mob<=10 then --если уровень моба с 1 по 10, то Money = math.random(1,30) -- мы получим от 1 до 30 монет elseif lv_mob > 11 and lv_mob<=20 then Money = math.random(1,100) elseif lv_mob > 21 and lv_mob<=30 then Money = math.random(1,300) elseif lv_mob > 31 and lv_mob<=40 then Money = math.random(1,500) elseif lv_mob > 41 and lv_mob<=50 then Money = math.random(1,700) elseif lv_mob > 51 and lv_mob<=60 then Money = math.random(1,900) elseif lv_mob > 61 and lv_mob<=70 then Money = math.random(1,1200) elseif lv_mob > 71 and lv_mob<=80 then Money = math.random(1,1500) end local Nulle = 0 AddMoney ( atk, Nulle , Money ) -- выдаем валюту ... end Проверки можно усложнять выпадение вещей будет зависеть от уровня персонажа и прочего.
  21. Этот скрипт пригодится если вам нужно организовать эвент, как это делают во всех нормальных ММО - при убийстве мобов вам падает определенный предмет, который в последствии вы можете обменять на ништяки. ext_and_level.lua function GetExp_PKM( dead , atk ) ... -- Жетоны за убийства local lvl = Lv(dead) ID_ITEM =0 -- ваш итем if lvl >= 35 then -- уровень моба больше 35 local cha_name = GetChaDefaultName ( atk ) -- для логирования получаем ник персонажа local rand1 = math.random(1,55) -- рандомим переменную rand1 local rand2 = math.random(1,45) -- рандомим переменную rand2 if rand1==rand2 then -- если равны выдаем приз GiveItem(atk, 0 , ID_ITEM , 1 , 4) LG("Жетоны" , "Имя получившего жетон - " , cha_name ) -- логирование end end ... end Проверки можно усложнять, например на карту, уровень персонажа, есть ли у персонажа определенный эффект или предмет.
  22. Ты до сих пор создаешь кучу аккаунтов и тебе никто ничего не говорит.
  23. В данном случае самое "страшное" цеплять вопрос из чата А что скажешь по трейд серверу?
  24. Посмотри в skillinfo Есть такая функция как hp_dmg, вот в ней вводить можно новое правило
  25. Можно конечно, но как реализовать правильно я вам сходу не смогу сказать. На maindeve был способ, залезьте в архив и посмотрите там.
×
×
  • Create New...