20:13
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: AXE, Weddew  
определение кол-ва игроков в определенной области
SanSayДата: Понедельник, 11.08.2008, 01:31 | Сообщение # 1
Долгожитель
Группа: Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус:
мод Пенсел.
есть определенная область... чтобы вы поняли приведу пример:
например заправка, как известно заправки имеют определенный радиус действия, так вот как например можно узнать кол-во игроков которые в данный момент находятся в радиусе действия заправки? По сути важно узнать даже не кол-во, а например принадлежность к классу или какую нить инфу (ник, цвет и т.п.) у каждого игрока, если игроков больше чем один.
Это как в ГТО, когда на точку кача заходит кто-то из другой банды, то игроку первому игроку об этом сообщается.
функция может есть какая нить?



simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с
PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2


Сообщение отредактировал SanSay - Понедельник, 11.08.2008, 07:00
OKStyle™Дата: Понедельник, 11.08.2008, 19:34 | Сообщение # 2
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус:
SanSay, нет, только ручками и PlayerToPoint... задаёшь радиус, нужный тебе и делаешь проверку не на игрока, а на цикл i...


Да потому что когда человек делает на заказ он не старается. © kRiSyo
Кланяимся нофаму королю анимаций =))))))) © Manusya
В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR
AVANGARDДата: Понедельник, 11.08.2008, 19:39 | Сообщение # 3
Уверенный в себе
Группа: Продвинутые
Сообщений: 197
Награды: 3
Город: Омск
Репутация: 51
Замечания: 0%
Статус:
Примерно так:
Code

for (new i=0; i < MAX_PLAYERS; i++)
   {
    if (IsPlayerConnected(i))
       {
     if(IsPlayerInSphere(i, X, Y, Z, RADIUS))
     {
      PlayersToPoint++;
                     return;
     }
    }
    }

Значение PlayersToPoint и будет количеством игроков находящихся в области с координатами X, Y, Z и радиусом RADIUS!


Респект пацанам из SAMP!
наш сайт http://www.joylife.ru/
[FS] ButtonEditor
[GM] BattleField2[changemap]
В разработке:
[FS] NEW_Alkatras


Сообщение отредактировал AVANGARD - Понедельник, 11.08.2008, 19:41
OKStyle™Дата: Понедельник, 11.08.2008, 21:36 | Сообщение # 4
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус:
AVANGARD, ну можно и радиус... просто PlayerToPoint более распространена, а с твоей ща будут просить её выложить =) В PTP есть же тоже радиус вокруг точки yes


Да потому что когда человек делает на заказ он не старается. © kRiSyo
Кланяимся нофаму королю анимаций =))))))) © Manusya
В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR
SanSayДата: Вторник, 12.08.2008, 00:23 | Сообщение # 5
Долгожитель
Группа: Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус:
сделал... но возникла проблема:
я сделал, чтобы проверка велась раз в секунду... отсюда вытекла проблема - он проверяет раз в секунду есть в зоне кто-нить или нет и если есть то прибавляет к PlayersToPoint единицу, а т.к. он проверяет это каждую секунду получается он одного и того же игрока и считает, т.е. кол-во игроков в точке постоянно растет, хотя стоит один игрок
вопрос: куда впихнуть эту проверку чтобы она происходила только когда новый игрок входит в эту облась?



simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с
PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2
OKStyle™Дата: Вторник, 12.08.2008, 08:35 | Сообщение # 6
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус:
SanSay, давай всем входящим переменную: inzone[playerid]=1, а по выходу: inzone[playerid]=0. А в проверке условие: if(inzone[i]==0) PlayersToPoint++;


Да потому что когда человек делает на заказ он не старается. © kRiSyo
Кланяимся нофаму королю анимаций =))))))) © Manusya
В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR


Сообщение отредактировал OKStyle™ - Вторник, 12.08.2008, 08:36
AVANGARDДата: Вторник, 12.08.2008, 09:03 | Сообщение # 7
Уверенный в себе
Группа: Продвинутые
Сообщений: 197
Награды: 3
Город: Омск
Репутация: 51
Замечания: 0%
Статус:
Скажи свою затею полностью тогда скажу как сделать а так не могу сообразить... Что то должно происходить когда в области будет определённое количество игроко?

Добавлено (12.08.2008, 09:01)
---------------------------------------------
OKStyle™, я такое же хотел написать, но тоже тупость получается... если игрок останется в области один хер  PlayersToPoint будет увеличиваться каждую секунду!

Добавлено (12.08.2008, 09:03)
---------------------------------------------
Тут событие нужно какое нибудь по достижении определённого значения PlayersToPoint! Тогда можно в цыкл вставить обнуление


Респект пацанам из SAMP!
наш сайт http://www.joylife.ru/
[FS] ButtonEditor
[GM] BattleField2[changemap]
В разработке:
[FS] NEW_Alkatras
OKStyle™Дата: Вторник, 12.08.2008, 09:07 | Сообщение # 8
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус:
Quote (AVANGARD)
если игрок останется в области

у него будет параметр 1, а подсчёт идёт на только-что вошедших с параметром 0. главное не перепутать очередность функций.



Да потому что когда человек делает на заказ он не старается. © kRiSyo
Кланяимся нофаму королю анимаций =))))))) © Manusya
В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR
AVANGARDДата: Вторник, 12.08.2008, 09:13 | Сообщение # 9
Уверенный в себе
Группа: Продвинутые
Сообщений: 197
Награды: 3
Город: Омск
Репутация: 51
Замечания: 0%
Статус:
Так он и будет раз за разом прибавлять тех у кого 1 или 0.... я запутался :)
Где этот автор вопроса?



Респект пацанам из SAMP!
наш сайт http://www.joylife.ru/
[FS] ButtonEditor
[GM] BattleField2[changemap]
В разработке:
[FS] NEW_Alkatras


Сообщение отредактировал AVANGARD - Вторник, 12.08.2008, 09:15
OKStyle™Дата: Вторник, 12.08.2008, 09:54 | Сообщение # 10
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус:
AVANGARD, там смысл в том, что:
Code
if(игрок зашел в зону)
{
inzone[playerid]=1;
if(inzone[playerid]==1)
{
PlayersToPoint++;
inzone[playerid]=0;
}
}



Да потому что когда человек делает на заказ он не старается. © kRiSyo
Кланяимся нофаму королю анимаций =))))))) © Manusya
В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR
AVANGARDДата: Вторник, 12.08.2008, 10:40 | Сообщение # 11
Уверенный в себе
Группа: Продвинутые
Сообщений: 197
Награды: 3
Город: Омск
Репутация: 51
Замечания: 0%
Статус:
Усё догнал я ход твоей мысли... надеюсь автор тоже поймёт о чом мы тут дискутировали :)


Респект пацанам из SAMP!
наш сайт http://www.joylife.ru/
[FS] ButtonEditor
[GM] BattleField2[changemap]
В разработке:
[FS] NEW_Alkatras
SpiritДата: Вторник, 12.08.2008, 11:17 | Сообщение # 12
Освоившийся
Группа: Продвинутые
Сообщений: 129
Награды: 1
Город: Омск
Репутация: 14
Замечания: 0%
Статус:
И так судя по последнему коду у нас будет всё таже ситуация только с ещё одним непонятным массивом, поясню, игрок зашёл в зону его посчитали что он в зоне и в массиве опять показали что он не в зоне следующая проверка его опять посчитали если он там оказался, примерно так.

Значит вообще если нам надо посчитать колличество игроков в области скажем по команде то таймером ничего делать не надо и необходимость в глобальной переменной отпадает пользуем код ниже.

Code

new PlayersToPoint;
for (new i=0; i < MAX_PLAYERS; i++)
{
      if (IsPlayerConnected(i)&&IsPlayerInSphere(i, X, Y, Z, RADIUS))
        PlayersToPoint++;
}
//Посчитали и ля-ля тополя дальше поехали

Если делаем таймером и глобальной переменной то

Code

PlayersToPoint = 0;//Каждый раз обнуляем
for (new i=0; i < MAX_PLAYERS; i++)
{
      if (IsPlayerConnected(i)&&IsPlayerInSphere(i, X, Y, Z, RADIUS))
        PlayersToPoint++;
}

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

Code

new inzone[MAX_PLAYERS];//Массив глобальный

for (new i=0; i < MAX_PLAYERS; i++)
{
      if (IsPlayerConnected(i))
      {
        if(IsPlayerInSphere(i, X, Y, Z, RADIUS))
        {
          inzone[i] = 1;
          //Ну типо игрок зашёл в зону, тревога грабят млядь!!!
          //Если считаем так колличество то PlayerToPoint++;
        }
        else if(inzone[i] == 1)
        {
          inzone[i] = 0;//Показываем что игрок из зоны вышел
          PlayerToPoint--;//Ну и раз на одного игрока в зоне стало меньше то это должно отразится на переменной
        }
      }
}



Любиш садизм люби и мазахизм :)

Сообщение отредактировал Spirit - Вторник, 12.08.2008, 11:41
SanSayДата: Среда, 13.08.2008, 00:46 | Сообщение # 13
Долгожитель
Группа: Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус:
парни нужно следующее:
первый игрок заходит в зону и сидит там, если заходит следующий игрок, то у него нужно проверить, например цвет, если совпадает с первым то ок, если нет то тревога.

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


simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с
PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2
SpiritДата: Среда, 13.08.2008, 10:02 | Сообщение # 14
Освоившийся
Группа: Продвинутые
Сообщений: 129
Награды: 1
Город: Омск
Репутация: 14
Замечания: 0%
Статус:
new zone = -1;//Щас зона никому не принадлежит
//И теперь пишем для таймера
new PlayerToPoint = 0 ;
new Team1, Team2;
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i)&&IsPlayerInSphere(i, X, Y, Z, RADIUS))
{
PlayerToPoint++;
if(zone == -1)
zone = PlayerTeam[i];//Зона как бы захвачена
if(PlayerTeam[i] == 0)
Team1++;
else
Team2++;
}
if(PlayerToPoint == 0&&zone != -1)
{
zone = -1;
}
if(zone == 0&&Team1 == 0&&Team 2 != 0)
zone = 1;
else if(zone == 1&&Team1 != 0&&Team 2 == 0)
zone =0;
if(zone == 0&&Team2 > 0)
//Тревога
else if(zone == 1&&Team1 > 0)
//Тревога
}

Примерно вот так, хотя должен быть способ проще.


Любиш садизм люби и мазахизм :)
SanSayДата: Среда, 13.08.2008, 20:12 | Сообщение # 15
Долгожитель
Группа: Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус:
короче сделал так:
for(new i = 0; i <= MAX_PLAYERS; i++)
{
new string[64];
if(IsPlayerConnected(i)&&IsPlayerInSphere(i, 2095.7,-1691.8,13.5,3))
{
if(zone == -1) //если зона ничья то ...
{
zone = PlayerInfo[i][значение]; //... то ее захват
SendClientMessage(i, COLOR_YELLOW, " вы захватили зону");
дейсвия разные
}
else if(zone == PlayerInfo[i][значение]) //если зона принадлежит твоей банде
{
теже действия что и выше
}
else if(zone != PlayerInfo[i][pJailed]) //если зона принадлежит не твоей банде
{
SendClientMessage(i, COLOR_YELLOW, " зона чужая, захватите ее");
for(new g = 0; g == zone; g++)
{
SendClientMessage(zone, COLOR_LIGHTBLUE, "посторонний в зоне!"); //сообщение для тех, чья зона на текущий момент
}
}
}
}
}
и вопрос, как теперь вернуть зону в "ничейное" состояние если из нее ушли "захватчики"?



simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с
PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2


Сообщение отредактировал SanSay - Среда, 13.08.2008, 20:46
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua