Jump to content
Sign in to follow this  
V3ct0r

Рейты сервера

Recommended Posts

Рейты сервера

Привет!

В данной статье я расскажу как изменить рейты сервера. Рейты - это значения, на которые умножаются опыт, шанс выпадения предмета, рост феи.

 

Откройте файл variable.lua (папка GameServer\resource\script\calculate) и найдите следующие переменные:

EXP_RAID = 15             -- Рейт на опыт     
TeamExp_RAID = 30         -- Рейт на опыт в отряде      
MF_RAID = 25              -- Рейт на выпадение предметов из монстров 
Resource_RAID_ADJUST = 10 -- Рейт на выпадение ресурсов
ELEEXP_GETRAD = 1000      -- Рейт на рост феи

В данном случае:  15х кач соло, 30х кач в пати, 25х дроп, 10х дроп ресурсов, 1000х рост феи.

 

Изменяя значения этих переменных Вы можете настраивать рейты сервера. Не забудьте сохранить файл variable.lua и перезапустить все GameServer.exe после проделанных изменений. 

 

Так же Вы можете воспользоваться специальной программой:

 

Вы можете создать рейт для получения опыта корабля, по умолчанию он отсутствует в скриптах. Добавьте в variable.lua переменную для нового рейта, для примера назовем ее SHIP_RAID:

SHIP_RAID = 1

Затем откройте файл exp_and_level.lua (папка GameServer\resource\script\calculate) и найдите функцию GetExp_PKM(dead , atk), а в ней строку:

local ship_expadd = math.floor(math.min(7, (dead_lv / 10 + 2))) 

замените эту строку на следующую:

local ship_expadd = math.floor(math.min(7, (dead_lv / 10 + 2)) * SHIP_RAID) 

Теперь получаемый опыт в корабле будет умножаться на значение переменной SHIP_RAID.

 

В 24.10.2016 в 18:10, NMS3RR сказал:

Если вы хотите повысить опыт за квест или золото за квест то:

а)Опыт
1.Идем в папку GameServer\resource\script\MisSdk

2.Ищем   elseif actions.func == AddExp then

3.Добавляем EXP_QUEST_RAID как показано в примере.


			elseif actions[i].func == AddExp then
			PRINT( "ActionProc:AddExp, p1 = , p2 = ", actions[i].p1, actions[i].p2 )
			local retExpState = GetExpState(character)
			actions[i].p1 = (actions[i].p1  * GetExpState(character) /100)*EXP_QUEST_RAID
			actions[i].p2 = (actions[i].p2  * GetExpState(character) /100)*EXP_QUEST_RAID
			local ret = AddExp( character, npc, actions[i].p1, actions[i].p2 )
			if ret ~= LUA_TRUE then
				PRINT( "ActionProc: AddExp failed!" )
				SystemNotice( character, "ActionProc: AddExp Add Exp failed!" )
				return LUA_FALSE
			end

4. EXP_QUEST_RAID переменная из variable для рейтов.

 

б)Золото

1.Идем в папку GameServer\resource\script\MisSdk

2.Ищем   elseif actions.func == AddMoney then

3.Добавляем MONEY_QUEST_RAID как показано в примере.


elseif actions[i].func == AddMoney then
			PRINT( "ActionProc:AddMoney, p1 =", actions[i].p1 )
			local ret = AddMoney( character, npc, actions[i].p1 )* MONEY_QUEST_RAID
			if ret ~= LUA_TRUE then
				PRINT( "ActionProc: AddMoney failed!param1 = %d", actions[i].p1 )
				SystemNotice( character, "ActionProc: AddMoney failed!" )
				return LUA_FALSE
			end

4. MONEY_QUEST_RAID переменная из variable для рейтов.

 

См. также:

[FYI] Разному времени суток - разный дроп

  • Like 1

Share this post


Link to post
Share on other sites

Добавлю сам.
Если вы хотите повысить опыт за квест или золото за квест то:

а)Опыт
1.Идем в папку GameServer\resource\script\MisSdk

2.Ищем   elseif actions.func == AddExp then

3.Добавляем EXP_QUEST_RAID как показано в примере.

			elseif actions[i].func == AddExp then
			PRINT( "ActionProc:AddExp, p1 = , p2 = ", actions[i].p1, actions[i].p2 )
			local retExpState = GetExpState(character)
			actions[i].p1 = (actions[i].p1  * GetExpState(character) /100)*EXP_QUEST_RAID
			actions[i].p2 = (actions[i].p2  * GetExpState(character) /100)*EXP_QUEST_RAID
			local ret = AddExp( character, npc, actions[i].p1, actions[i].p2 )
			if ret ~= LUA_TRUE then
				PRINT( "ActionProc: AddExp failed!" )
				SystemNotice( character, "ActionProc: AddExp Add Exp failed!" )
				return LUA_FALSE
			end

4. EXP_QUEST_RAID переменная из variable для рейтов.

 

б)Золото

1.Идем в папку GameServer\resource\script\MisSdk

2.Ищем   elseif actions.func == AddMoney then

3.Добавляем MONEY_QUEST_RAID как показано в примере.

elseif actions[i].func == AddMoney then
			PRINT( "ActionProc:AddMoney, p1 =", actions[i].p1 )
			local ret = AddMoney( character, npc, actions[i].p1 )* MONEY_QUEST_RAID
			if ret ~= LUA_TRUE then
				PRINT( "ActionProc: AddMoney failed!param1 = %d", actions[i].p1 )
				SystemNotice( character, "ActionProc: AddMoney failed!" )
				return LUA_FALSE
			end

4. MONEY_QUEST_RAID переменная из variable для рейтов.

  • Like 1

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

Share this post


Link to post
Share on other sites

Спасибо, @NMS3RR. Добавил в гайд


Share this post


Link to post
Share on other sites

@V3ct0r Еще один Апдейт для ленивых :

Каждой локации свой шанс выпадения.

 

1.Идем в файл skilleffect.lua и ищем function Check_Baoliao

2.Вставляем в начало функции

local map_name_ATKER = GetChaMapName ( ATKER )
local RAID_MAP=1

3.Вставляем перед if IsPlayer(Defer) == 1 then

if map_name_ATKER =="abandonedcity" or map_name_ATKER=="abandonedcity2" or map_name_ATKER="abandonedcity3" then 
		RAID_MAP=хх -- Шанс в ФС
	elseif map_name_ATKER == "darkswamp" then
		RAID_MAP=хх -- Шанс в ДС
	elseif map_name_ATKER == "garner2" then
		RAID_MAP=хх -- Шанс в ХС
	elseif map_name_ATKER == "07xmas" then
		RAID_MAP=хх -- Шанс в СНВ
	elseif map_name_ATKER == "puzzleworld" or map_name_ATKER == "puzzleworld2"  then
		RAID_MAP=хх -- Шанс в ДВ
		
	else 
		RAID_MAP=хх -- Не данж 
	end

4. Добавляем нашу переменную RAID_MAP

mf = math.min ( 1, 100 / arg[i] * ( bsmf / 100 ) ) * ... * RAID_MAP * ...

Теперь мы можем контролировать шанс выпадения на разных картах не переписывая CharacterInfo

Edited by NMS3RR

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

Share this post


Link to post
Share on other sites

Если карты "данж" и "не данж" на одном ГСе, то игроки на разных картах будут друг другу переписывать рейты. Надо делать отдельные переменные на каждую карту либо в массив их сложить

Share this post


Link to post
Share on other sites

@NMS3RR можно сделать что-то вроде такого:

 

variable.lua

-- Массив <карта> = дополнительный рейт на дроп
MAP_RAID = {}
MAP_RAID["abandonedcity"]  = 1
MAP_RAID["abandonedcity2"] = 2
MAP_RAID["abandonedcity3"] = 3
MAP_RAID["darkswamp"]  = 15
MAP_RAID["07xmas"] = 25
MAP_RAID["puzzleworld"] = 50
MAP_RAID["puzzleworld2"] = 20

Начало функции Check_Baoliao() из skilleffect.lua:

local raid = 1
local map_name = GetChaMapName(ATKER)
if (MAP_RAID[map_name] ~= nil) then
	raid = MAP_RAID[map_name]
end

Редактируем формулу, та же функция и файл:

mf = math.min(1, 100 / arg[i] * bsmf) * MF_RAID * MF_RAID_STATE * raid

 

Либо просто сделать переменную RAID_MAP локальной в контексте функции Check_Baoliao(), т.е. не выносить ее в variable.lua

local RAID_MAP = 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...