Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Ограничение игры в одном городе - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Scr ][ All ]
Ограничение игры в одном городе
Оценка: -----

#1
Пользователь офлайн   substantive. 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Приветствую, уважаемые юзеры.
Совсем недавно начал изучать PAWNO и сразу решил, что делать это буду на практике, а именно при создании своего мода.
Очень много проектов берут за основу идею с использование ограниченной карты San Andreas, то есть ограничение игры только в одном городе/деревне. Взяв эту идею и начав искать на ру-ресурсах - не смог найти ничего стоящего, кроме SetPlayerWorldBound, что меня не устроило по функционалу.


Для примера мы возьмем мою ситуацию с ограничением игры только на территории города Лос-Сантос и его округа.

Из инклудов нам нам понадобится только streamer. Добавим в начало кода:
#include <streamer>

Задефайним кол-во наших зон MAX_ZONES:
#define MAX_ZONES 1 // Значение "1" меняем в зависимости от кол-ва созданных вами зон.

Ко всем переменным добавим:
new zones[MAX_ZONES]; // Наша переменная 
new Float:zones_points_0[] = { // Координаты X,Y, которые создают динамическую зону на карте, которая в свою очередь описывают круг вокруг Лос-Сантос
	-1025.0,-89.0,-941.0,99.0,-825.0,295.0,-521.0,359.0,-177.0,359.0,147.0,291.0,403.
0,415.0,879.0,543.0,1067.0,635.0,1287.0,607.0,
	1635.0,523.0,2303.0,471.0,2691.0,495.0,2959.0,351.0,2995.0,-561.0,3015.0,-1529.0,
2991.0,-2457.0,2939.0,-2921.0,1927.0,-3005.0,807.0,-2917.0,
	223.0,-2897.0,-45.0,-2173.0,-45.0,-1689.0,23.0,-1565.0,19.0,-1433.0,19.0,-1093.0,
-17.0,-917.0,-121.0,-885.0,-257.0,-761.0,-321.0,-413.0,
	-369.0,-333.0,-705.0,-337.0,-1017.0,-345.0,-1025.0,-89.0
        };

В public OnGameModeInit:
zones[0] = CreateDynamicPolygon(zones_points_0); // Присваиваем зоне с id 0 нашу функцию из стримера с созданием динамической зоны.

В public OnPlayerEnterDynamicArea (если нет такого - создаем. forward не нужен - это public streamer'а.):
for (new zone=0; zone<MAX_ZONES; zone++) 
                {
		        if (areaid==zones[zone]) SendClientMessage(playerid, 0xFFFFFFFF, "Вы находитесь в г.Лос-Сантос."); // Проверка на нахождение в нашей ограниченной зоне. Если да - пишем текст.
		}

В public OnPlayerLeaveDynamicArea (если нет такого - создаем. forward не нужен - это public streamer'а.):
for (new zone=0; zone<MAX_ZONES; zone++) 
                {
		        if (areaid==zones[zone]) SendClientMessage(playerid, 0xFFFFFFFF, "Вы покинули в г.Лос-Сантос."); // Проверка на выезд с нашей ограниченной зоне. Если выехали - пишем текст.
		}

При желании в обе проверки (при нахождении в зоне и при её покидании) можно добавить что хотите. Выдача денег, убавление ХП и прочее.
Для большей наглядности покажу снял видео. Чтобы было понятно, да и для себя, на карте созданы гангзоны, которые показывают наше созданное ограничение.


3

#2
Пользователь офлайн   zazais 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
спасибо, хороший урок)) :yes:
0

#3
Пользователь офлайн   Egor Sifon 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Крутой урок!
Только для того, что бы игрокам было понятно можно сделать через видимые объекты
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика