Jump to content
Sign in to follow this  
WVWMK

[Скрипт]Счетчик смертей мобов и игроков по всем ГС

Recommended Posts

У нас данная функция была реализована для повышения опыта и дропа.
Трабл с которым тогда не разобрались - одновременно на разных гс может быть разное кол-во убитых мобов и игроков. Поэтому после каждого релога сервера перезаписывалось суммарное кол-во смертей в переменные 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

 

  • Like 1

Делай добро и бросай его в воду

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

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

×   Your previous content has been restored.   Clear editor

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

Sign in to follow this  

×
×
  • Create New...