WVWMK 121 Report post Posted December 30, 2017 У нас данная функция была реализована для повышения опыта и дропа. Трабл с которым тогда не разобрались - одновременно на разных гс может быть разное кол-во убитых мобов и игроков. Поэтому после каждого релога сервера перезаписывалось суммарное кол-во смертей в переменные 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 1 Quote Делай добро и бросай его в воду Share this post Link to post Share on other sites