Jump to content

Recommended Posts

function PlayerInCity (role, PosX_min, PosY_min, PosX_max, PosY_max, map)
--[[
	@function Check player posisiton x, y
	@Description ru-RU: Функция проверяет, в заданных ли координатах находится игрок
						Если игрок в пределах заданных координат то вернет 1
						Если игрок за пределами заданных координат то вернет 0
	@Author: e1mer (Project: ZEST-Online)
	@Version: 1.1
]]
	local Pos_X, Pos_Y = GetChaPos(role)
	if (GetChaMapName(role) == map) then
		if (ChaIsBoat(role) == 0) then
			if ((Pos_X > PosX_min and Pos_X < PosX_max) and (Pos_Y > PosY_min and Pos_Y < PosY_max)) then
				return 1
			end
		else
			return 0
		end
	end
end

 

С помощью которой можно захватить определенный квадрат на карте и проверить, находиться ли игрок на этой территории.

PlayerInCity(character, x1, y1, x2, y2, map)

character - выбираем персонажа, можно выбрать члена отряда, либо юзать role.

x1, y1 - Начальные точки квадрата.

x2, y2 - Конечные точки квадрата.

map - Наша карта, необходимо указывать название карты а не региона (например: garner, darkblue).

 

С помощью данной функции можно реализовывать различные условия на картах, с помощью которых можно управлять персонажем, ограничения есть лишь в фантазии.

Я использовал данную функцию для реализации PvP системы, определял где город\деревни и устанавливал сейв\пвп зоны.

Edited by e1mer
  • Like 3

Share this post


Link to post
Share on other sites

@e1mer, еще можно написать функции для круга и ромба. Например, я использовал уравнение ромба для карты Захвата флага, чтобы определить, находится ли персонаж внутри площадки для флага.

  • Thanks 1

Share this post


Link to post
Share on other sites
if (IsChaInRegion(role, 2) == 1) then
	-- Персонаж в безопасной зоне (в городе)
else
	-- Персонаж вне безопасной зоны
end

 

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Google translate:

это круто, я играл еще одну игру давно. Во всяком случае, произошло такое событие: Событие начинается один раз в день. Каждый зарегистрированный игрок, который находится в сети, будет телепортирован на карту, которая является квадратной.

 

 

Почти полностью средняя часть карты - две цветные. Конечно, в углах есть некоторые специальные вещи, поэтому карта выглядит лучше, а половина карты - НЕТ ответа, а половина из карты - Да.

 

Когда событие запущено, возникают случайные вопросы об игре или что-то еще, время, в которое отвечает тот же день, даже темой ответа.

 

когда вы отвечаете неправильно, вы будете телепортированы из области, чтобы посмотреть, как это происходит с другими, если вы хотите это увидеть.

 

 

поэтому, когда осталось всего 3 игрока, все они получат приз, но последний из них получит высокий выигрыш. Я надеюсь снова увидеть эту карту в любой игре, и теперь она может быть в верхней части. Спасибо, что вы наслаждаетесь идеей карты.

 

 

English:

this is cool, i was playing one other game long time ago. Anyway there had an event like this:
Event start once a day. 
Every registration players that are online will teleported in map that is square.

Almost entirely middle part from the map is two colored.  Of course in corners are some special stuffs so map looks better and half of map is NO answer  and half from map is Yes answer.

When event is started there is random questions about the game or anything else, its just how the that day even theme is also answering is timed.

when answer wrong you will be teleported out from the area to look how it go with others if you like to see.

so when there is only 3 players left they will all get prize but last one ofc get high prize. i hope to see this map again in any game and now in top its possible. Thanks your time enjoy the map idea

Edited by Onioni
  • Like 1

Share this post


Link to post
Share on other sites
On 7/15/2018 at 6:20 AM, Onioni said:

Google translate:

это круто, я играл еще одну игру давно. Во всяком случае, произошло такое событие: Событие начинается один раз в день. Каждый зарегистрированный игрок, который находится в сети, будет телепортирован на карту, которая является квадратной.

 

 

Почти полностью средняя часть карты - две цветные. Конечно, в углах есть некоторые специальные вещи, поэтому карта выглядит лучше, а половина карты - НЕТ ответа, а половина из карты - Да.

 

Когда событие запущено, возникают случайные вопросы об игре или что-то еще, время, в которое отвечает тот же день, даже темой ответа.

 

когда вы отвечаете неправильно, вы будете телепортированы из области, чтобы посмотреть, как это происходит с другими, если вы хотите это увидеть.

 

 

поэтому, когда осталось всего 3 игрока, все они получат приз, но последний из них получит высокий выигрыш. Я надеюсь снова увидеть эту карту в любой игре, и теперь она может быть в верхней части. Спасибо, что вы наслаждаетесь идеей карты.

 

 

English:

this is cool, i was playing one other game long time ago. Anyway there had an event like this:
Event start once a day. 
Every registration players that are online will teleported in map that is square.

Almost entirely middle part from the map is two colored.  Of course in corners are some special stuffs so map looks better and half of map is NO answer  and half from map is Yes answer.

When event is started there is random questions about the game or anything else, its just how the that day even theme is also answering is timed.

when answer wrong you will be teleported out from the area to look how it go with others if you like to see.

so when there is only 3 players left they will all get prize but last one ofc get high prize. i hope to see this map again in any game and now in top its possible. Thanks your time enjoy the map idea

It already exists in Ultimate Pirates Online for almost 2 years. :P

Share this post


Link to post
Share on other sites

Here's my version of it:

Quote

function CheckPos(role,xi,xe,yi,ye)
    local x,y = GetChaPos(role)
    if x >= xi*100 and x <= xe*100 and y >= yi*100 and y <= ye*100 then
        return 1
    end
    return 0
end

The differences are:

  • It will also return 1 if the position is exactly the one required (in e1mer's version it will only return 1 if it's bigger than, I think it was mentioned by the 2nd commenter, but I can't understand anything in Russian).
  • You won't need to enter precise coordinates with the last 2 numbers, for example: 100.00,100.00 will become 100,100 because it's multiplying by 100.
  • It will work for ships (his script returns 0 if ChaIsBoat).
  • Doesn't need to specify map. This could go bad depending on how you're calling it, so it goes from how you write your scripts.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×