Jump to content
Sign in to follow this  
Mello

Рабочий Скрипт Награды

Recommended Posts

Всем привет Были проблемы со скриптами которые на форуме есть/  с наградами за проведенное  время в игре.

Вот с нашего проекта рабочий - мб кому пригодиться. 

 

    if IsPlayer(role) == 1 then
        --Город в котором считает 
		if GetChaMapName ( role ) == "AUST" then
			--Функция новичка, выдаем приз каждые newbie_now_tick минут
			local newbie_now_tick = 1
			--Конвертируем "Минуты" в с "Секунды"
			local newbie_now_min = newbie_now_tick * 3600 -- конвертация в секундах,собственно 3600 секунд - 1 час 
			if math.mod(now_tick + 1, newbie_now_min) == 0 then
				--Если игрок ниже 180 уровня или 180 уровень, то выдаем призы
				if Lv( role ) >= 180 then
					if GetChaFreeBagGridNum ( role ) >= 1 then
						GiveItemX ( role , 0 , 7705, math.random( 1, 1 ) , 1 )		--Айтем 7705  (от 1 до 2 шт.)	у нас стоит 1 из 1			
						PlayEffect (role, 275 )
					else
						BickerNotice(role, "\199\224 \253\242\232 30 \236\232\237\243\242 \239\240\232\231\251 \237\229 \237\224\247\232\241\235\232\237\251. \206\241\226\238\225\238\228\232\242\229 4 \241\235\238\242\224 \226\238 \226\240\229\236\229\237\237\238\236 \236\229\248\234\229")
					end
				end
			end
		end
	end

Основа взята с форума

Edited by Artstyle
  • Like 1
  • Thanks 1

12312.png.9b5f00a5a7d2b98ce5f9e4e8e4d9035b.png.ru

Share this post


Link to post
Share on other sites

Возможно я что-то забыл, но:

--Конвертируем "Минуты" в с "Секунды"

local newbie_now_min = newbie_now_tick * 3600

Минута - это 60 секунд, а не 3600.

Поправь, пожалуйста.

Edited by Graf
  • Like 1

Share this post


Link to post
Share on other sites
15 минут назад, Graf сказал:

Возможно я что-то забыл, но:

--Конвертируем "Минуты" в с "Секунды"

local newbie_now_min = newbie_now_tick * 3600

Минута - это 60 секунд, а не 3600.

Поправь, пожалуйста.

Изменил, конвертация идет в секундах собственно 3600 идет за час. Спасибо подметил ,многим пригодится!


12312.png.9b5f00a5a7d2b98ce5f9e4e8e4d9035b.png.ru

Share this post


Link to post
Share on other sites

Привет, @Artstyle!

 

1) Как скрипт себя поведет, если игрок сменит карту или перейдет на другой GameServer.exe?

2) Настройки скрипта очень сильно "зашиты" в код, пользователю сложно его модифицировать под себя. Карты, на которых работает скрипт, необходимое время в игре, уровень персонажа, список наград и так далее, то есть настройки скрипта, можно вынести в переменную, а код абстрагировать от конкретных значений его параметров.

3) Насколько я помню, функция GetChaFreeBagGridNum() возвращает число свободных ячеек в основном инвентаре персонажа, а функция GiveItemX() выдает предметы во временный мешок. Соответственно, следующий код вызывает вопросы:

if GetChaFreeBagGridNum ( role ) >= 1 then
    GiveItemX ( role , 0 , 7705, math.random( 1, 1 ) , 1 )		--Айтем 7705  (от 1 до 2 шт.)	у нас стоит 1 из 1			
    PlayEffect (role, 275 )
 else
    BickerNotice(role, "\199\224 \253\242\232 30 \236\232\237\243\242 \239\240\232\231\251 \237\229 \237\224\247\232\241\235\232\237\251. \206\241\226\238\225\238\228\232\242\229 4 \241\235\238\242\224 \226\238 \226\240\229\236\229\237\237\238\236 \236\229\248\234\229")
end

Если у персонажа есть свободные ячейки в основном инвентаре, то выдать предмет во временный мешок. А если у персонажа нет свободного места в инвентаре, но есть во временном мешке? Также в сообщении об отсутствии места в инвентаре упоминается 4 слота, а фактически нужен всего 1.


Share this post


Link to post
Share on other sites
18 часов назад, V3ct0r сказал:

Привет, @Artstyle!

 

1) Как скрипт себя поведет, если игрок сменит карту или перейдет на другой GameServer.exe?

2) Настройки скрипта очень сильно "зашиты" в код, пользователю сложно его модифицировать под себя. Карты, на которых работает скрипт, необходимое время в игре, уровень персонажа, список наград и так далее, то есть настройки скрипта, можно вынести в переменную, а код абстрагировать от конкретных значений его параметров.

3) Насколько я помню, функция GetChaFreeBagGridNum() возвращает число свободных ячеек в основном инвентаре персонажа, а функция GiveItemX() выдает предметы во временный мешок. Соответственно, следующий код вызывает вопросы:


if GetChaFreeBagGridNum ( role ) >= 1 then
    GiveItemX ( role , 0 , 7705, math.random( 1, 1 ) , 1 )		--Айтем 7705  (от 1 до 2 шт.)	у нас стоит 1 из 1			
    PlayEffect (role, 275 )
 else
    BickerNotice(role, "\199\224 \253\242\232 30 \236\232\237\243\242 \239\240\232\231\251 \237\229 \237\224\247\232\241\235\232\237\251. \206\241\226\238\225\238\228\232\242\229 4 \241\235\238\242\224 \226\238 \226\240\229\236\229\237\237\238\236 \236\229\248\234\229")
end

Если у персонажа есть свободные ячейки в основном инвентаре, то выдать предмет во временный мешок. А если у персонажа нет свободного места в инвентаре, но есть во временном мешке? Также в сообщении об отсутствии места в инвентаре упоминается 4 слота, а фактически нужен всего 1.

должно все хорошо адаптироваться!Да выдается не инвентарь а во временный мешок.


12312.png.9b5f00a5a7d2b98ce5f9e4e8e4d9035b.png.ru

Share this post


Link to post
Share on other sites

@Artstyle,

 

Думаю что функцию GetChaFreeBagGridNum() можно заменить на GetChaFreeTempBagGridNum():

if GetChaFreeTempBagGridNum ( role ) >= 1 then
    GiveItemX ( role , 0 , 7705, math.random( 1, 1 ) , 1 )		--Айтем 7705  (от 1 до 2 шт.)	у нас стоит 1 из 1			
    PlayEffect (role, 275 )
 else
    BickerNotice(role, "\199\224 \253\242\232 30 \236\232\237\243\242 \239\240\232\231\251 \237\229 \237\224\247\232\241\235\232\237\251. \206\241\226\238\225\238\228\232\242\229 4 \241\235\238\242\224 \226\238 \226\240\229\236\229\237\237\238\236 \236\229\248\234\229")
end

Иначе сейчас такая логика, что если у персонажа нет свободной ячейки в основном инвентаре, то предмет не будет выдан во временный, даже если во временном мешке есть свободное место.

  • Like 1

Share this post


Link to post
Share on other sites
7 минут назад, V3ct0r сказал:

@Artstyle,

 

Думаю что функцию GetChaFreeBagGridNum() можно заменить на GetChaFreeTempBagGridNum():


if GetChaFreeTempBagGridNum ( role ) >= 1 then
    GiveItemX ( role , 0 , 7705, math.random( 1, 1 ) , 1 )		--Айтем 7705  (от 1 до 2 шт.)	у нас стоит 1 из 1			
    PlayEffect (role, 275 )
 else
    BickerNotice(role, "\199\224 \253\242\232 30 \236\232\237\243\242 \239\240\232\231\251 \237\229 \237\224\247\232\241\235\232\237\251. \206\241\226\238\225\238\228\232\242\229 4 \241\235\238\242\224 \226\238 \226\240\229\236\229\237\237\238\236 \236\229\248\234\229")
end

Иначе сейчас такая логика, что если у персонажа нет свободной ячейки в основном инвентаре, то предмет не будет выдан во временный, даже если во временном мешке есть свободное место.

Спасибо,у людей будет выбор - как лучше сделать) будет альтернатива.

Edited by Artstyle

12312.png.9b5f00a5a7d2b98ce5f9e4e8e4d9035b.png.ru

Share this post


Link to post
Share on other sites
2 часа назад, V3ct0r сказал:

@Artstyle,

 

Думаю что функцию GetChaFreeBagGridNum() можно заменить на GetChaFreeTempBagGridNum():


if GetChaFreeTempBagGridNum ( role ) >= 1 then
    GiveItemX ( role , 0 , 7705, math.random( 1, 1 ) , 1 )		--Айтем 7705  (от 1 до 2 шт.)	у нас стоит 1 из 1			
    PlayEffect (role, 275 )
 else
    BickerNotice(role, "\199\224 \253\242\232 30 \236\232\237\243\242 \239\240\232\231\251 \237\229 \237\224\247\232\241\235\232\237\251. \206\241\226\238\225\238\228\232\242\229 4 \241\235\238\242\224 \226\238 \226\240\229\236\229\237\237\238\236 \236\229\248\234\229")
end

Иначе сейчас такая логика, что если у персонажа нет свободной ячейки в основном инвентаре, то предмет не будет выдан во временный, даже если во временном мешке есть свободное место.

только заметил как поведет скрипт он анулируется,тобишь мы получаем награду на самой карте и счетчик идет там


12312.png.9b5f00a5a7d2b98ce5f9e4e8e4d9035b.png.ru

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...