Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: PlayerToKvadrat

  1. #1
    Аватар для lonin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.04.2013
    Адрес
    Очаков, UA
    Сообщений
    25
    Репутация:
    4 ±

    PlayerToKvadrat

    Здравствуйте уважаемые форумчане!

    Возникла проблема с использованием функции PlayerToKvadrat(playerid,Float:min_x,Float:min_y,F loat:max_x,Float:max_y)

    В общем у меня есть 3 глобальные переменные координат, в которые неважно каким образом, записываются координаты зараженной радиацией зоны:

    PHP код:
    new Float:posJad[MAX_PLAYERS][3]; 
    Где posJad[playerid][0] - ось Х, posJad[playerid][1] - ось У и posJad[playerid][2] - ось Z.

    Сделал системку которая при попадании человека в зону Хmin, Ymin, Xmax, Ymax будет отниматься по 0,5 ХП в секунду (использую паблик OnPlayerUpdate):

    PHP код:
    for(new 0MAX_PLAYERSx++)
        {
            if(
    PlayerToKvadrat(x,posJad[x][0]+30posJad[x][1]+30,posJad[x][0]-30posJad[x][1]-30) && radionucT 0)
            {
                new 
    Float:health;
                
    radionucT -=1;
                
    GetPlayerHealth(playeridhealth);
                
    SetPlayerHealth(playeridhealth 0.5);
            }
        } 
    Результат равен нулю, помогите советом! Благодарность обеспечена!

  2. #2
    Аватар для #Vito
    #define

    Статус
    Оффлайн
    Регистрация
    14.09.2013
    Адрес
    Одесса
    Сообщений
    129
    Репутация:
    38 ±
    паблик OnPlayerUpdate обновляется 25 раз в секунду, а Вы там еще цикл всех игроков используете
    Skype: vitya.saveliev


  3. #3
    Аватар для lonin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.04.2013
    Адрес
    Очаков, UA
    Сообщений
    25
    Репутация:
    4 ±
    Цитата Сообщение от #Vito Посмотреть сообщение
    паблик OnPlayerUpdate обновляется 25 раз в секунду, а Вы там еще цикл всех игроков используете
    Спасибо за помощь! Но я не спрашивал, сколько он раз обновляется в секунду :D Я не использую его, для примера написал)

  4. #4
    Аватар для #Vito
    #define

    Статус
    Оффлайн
    Регистрация
    14.09.2013
    Адрес
    Одесса
    Сообщений
    129
    Репутация:
    38 ±
    Ну тогда, в
    PHP код:
    PlayerToKvadrat 
    нужно вводить координаты не игрока, а GangZone
    Skype: vitya.saveliev


  5. #5
    Аватар для lonin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.04.2013
    Адрес
    Очаков, UA
    Сообщений
    25
    Репутация:
    4 ±
    Ты вообще мой первый пост читал? У меня там не координаты игрока :D

    - - - Добавлено - - -

    И да, PlayerToKvadrat это не обязательно GangZona, это просто ф-ция проверяющая игрока в квадрате.

    - - - Добавлено - - -

    там координаты минимальные по Х,У и максимальные по тем же осям.

  6. #6
    Аватар для #Vito
    #define

    Статус
    Оффлайн
    Регистрация
    14.09.2013
    Адрес
    Одесса
    Сообщений
    129
    Репутация:
    38 ±
    А что тогда?
    PHP код:
    new Float:posJad[MAX_PLAYERS][3]; 
    if(
    PlayerToKvadrat(x,posJad[x][0]+30posJad[x][1]+30,posJad[x][0]-30posJad[x][1]-30) && radionucT 0
    И, мб, ты квадрат не создал..
    Skype: vitya.saveliev


  7. #7
    Аватар для lonin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.04.2013
    Адрес
    Очаков, UA
    Сообщений
    25
    Репутация:
    4 ±
    Цитата Сообщение от #Vito Посмотреть сообщение
    А что тогда?
    PHP код:
    new Float:posJad[MAX_PLAYERS][3]; 
    if(
    PlayerToKvadrat(x,posJad[x][0]+30posJad[x][1]+30,posJad[x][0]-30posJad[x][1]-30) && radionucT 0
    И, мб, ты квадрат не создал..
    posJad[playerid][0] - ось Х, posJad[playerid][1] - ось У и posJad[playerid][2] - ось Z.

    В PlayerToKvadrat:

    posJad[x][0]+30 - Xmin, posJad[x][1]+30 - Ymin, posJad[x][0]-30 - Xmax, posJad[x][1]-30 - Ymax; Это глобальные переменные в которые, ранние были записаны координаты...

    На сколько я помню для функции PlayerToKvadrat, не нужно создавать никаких "квадратов", вот сток:
    PHP код:
    stock PlayerToKvadrat(playerid,Float:min_x,Float:min_y,Float:max_x,Float:max_y)
    {
        new 
    Float:xxp,Float:yyp,Float:zzp;
        
    GetPlayerPos(playeridxxpyypzzp);
        if((
    xxp <= max_x && xxp >= min_x) && (yyp <= max_y && yyp >= min_y)) return 1;
        return 
    0;

    Вот какие нужны координаты(верхняя левая и нижняя правая квадрата) :

    Вот пример применения:

    PHP код:
    if(strcmp(cmdtext,"/primer",true)==0)
    {
     if(!
    PlayerToKvadrat(playerid,-322.671722, -1436.344726, -154.671722, -1308.344726)) return SendClientMessage(playeridCOLOR_WHITE"Вы не в квадрате!");


  8. #8
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Эмм, разве не так должно быть?
    PHP код:
    for(new 0MAX_PLAYERSx++)
    {
        if(
    PlayerToKvadrat(xposJad[x][0]-30posJad[x][1]+30posJad[x][0]-30posJad[x][1]+30) && radionucT 0)
        {
            new 
    Float:health;
            
    radionucT -=1;
            
    GetPlayerHealth(playeridhealth);
            
    SetPlayerHealth(playeridhealth 0.5);
        }

    Если не сработает, просто сделайте логирование и посмотрите какие значения выдаёт массив
    PHP код:
    for(new 0MAX_PLAYERSx++)
    {
        
    printf("%f, %f, %f, %f"posJad[x][0]-30posJad[x][1]+30posJad[x][0]-30posJad[x][1]+30);
        if(
    PlayerToKvadrat(xposJad[x][0]-30posJad[x][1]+30posJad[x][0]-30posJad[x][1]+30) && radionucT 0)
        {
            new 
    Float:health;
            
    radionucT -=1;
            
    GetPlayerHealth(playeridhealth);
            
    SetPlayerHealth(playeridhealth 0.5);
        }

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

    P.S. И да, надеюсь вы и правда не собирались вставлять цикл на всех игроков в коллбэк, который вызывается индивидуально для каждого игрока туеву тучу раз.
    Последний раз редактировалось DeimoS; 15.09.2014 в 07:26.
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  9. #9
    Аватар для lonin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.04.2013
    Адрес
    Очаков, UA
    Сообщений
    25
    Репутация:
    4 ±
    Проблема решена, ответы в теме были пустые Всем спасибо, все свободны

  10. #10
    Аватар для OKStyle
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    12.05.2013
    Сообщений
    205
    Репутация:
    49 ±
    Цитата Сообщение от lonin Посмотреть сообщение
    maxY будет вверху.

 

 
Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •