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

Тема: colAndreas problem

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

    Статус
    Оффлайн
    Регистрация
    01.01.2018
    Сообщений
    36
    Репутация:
    0 ±

    colAndreas problem

    Обращаюсь за помощью, ситуация значит такая, нуждаюсь в проверке на нахождение игрока в воде,

    Подключил ColAndreas, через Wizard снегерировал ColAndreas.cadb, в логах все хорошо,
    проблема в одном,

    PHP код:
    stock IsPlayerInWater(playerid)
    {
        new 
    Float:xFloat:yFloat:zFloat:retx[10], Float:rety[10], Float:retz[10], Floatretdist[10], modelids[10];
        
    GetPlayerPos(playeridxyz);
        new 
    collisions CA_RayCastMultiLine(xyz+1000.0xyz-1000.0retxretyretzretdistmodelids10);
        if(
    collisions)
        {
            for(new 
    0collisionsi++)
            {
                if(
    modelids[i] == WATER_OBJECT)
                {
                    return 
    true;
                }
            }
        }
        return 
    0;

    collisions всегда равен 0, в чем может быть проблема, может кто то сталкивался? Спасибо

  2. #2
    Аватар для Alpano
    Пользователь

    Статус
    Оффлайн
    Регистрация
    06.02.2017
    Сообщений
    123
    Репутация:
    16 ±
    Ради этого целый плагин подключать?
    PHP код:
    boolbasseins(playerid);
    stock boolbasseins(playerid)
    {
        if(
    IsPlayerInRangeOfPoint(playerid,100,193.69999694824,-1232.5999755859,76.599998474121)) return true;
        if(
    IsPlayerInRangeOfPoint(playerid,20,1089.9260,-665.9568,111.4500)) return true;
        if(
    IsPlayerInRangeOfPoint(playerid,120,-893.29998779297,2387.8999023438,40)) return true;
        if(
    IsPlayerInRangeOfPoint(playerid,200,-1291.4000244141,2122.1000976563,40)) return true;
        if(
    IsPlayerInRangeOfPoint(playerid,30,1953.6931,-1194.0907,17.4500)) return true;
        if(
    IsPlayerInRangeOfPoint(playerid,30,2318.3306,-1415.2393,21.6150)) return true;
        if(
    IsPlayerInRangeOfPoint(playerid,30,1286.5262,-804.5318,86.1230)) return true;
        if(
    IsPlayerInRangeOfPoint(playerid,100,2582.8059,2384.6702,15.8500)) return true;
        return 
    false;
    }
    stock IsPlayerInWater(playerid)
    {
        new 
    Float:FXF_wpos;
        
    GetPlayerPos(playerid,FXF_wpos,FXF_wpos,FXF_wpos);
        return (
    FXF_wpos 1.00 || 39.0 FXF_wpos 41.0 || basseins(playerid))?true:false;

    Последний раз редактировалось Alpano; 03.01.2018 в 18:07.
    MyProject:
    DriftEmpire©

    Ленивые всё делают быстро, чтобы поскорее избавиться от работы.
    И делают качественно, чтобы потом не переделывать.

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

    Статус
    Оффлайн
    Регистрация
    01.01.2018
    Сообщений
    36
    Репутация:
    0 ±
    Цитата Сообщение от Alpano Посмотреть сообщение
    Ради этого целый плагин подключать?
    PHP код:
    boolbasseins(playerid);
    stock boolbasseins(playerid)
    {
        if(
    IsPlayerInRangeOfPoint(playerid,100,193.69999694824,-1232.5999755859,76.599998474121)) return true;
        if(
    IsPlayerInRangeOfPoint(playerid,20,1089.9260,-665.9568,111.4500)) return true;
        if(
    IsPlayerInRangeOfPoint(playerid,120,-893.29998779297,2387.8999023438,40)) return true;
        if(
    IsPlayerInRangeOfPoint(playerid,200,-1291.4000244141,2122.1000976563,40)) return true;
        if(
    IsPlayerInRangeOfPoint(playerid,30,1953.6931,-1194.0907,17.4500)) return true;
        if(
    IsPlayerInRangeOfPoint(playerid,30,2318.3306,-1415.2393,21.6150)) return true;
        if(
    IsPlayerInRangeOfPoint(playerid,30,1286.5262,-804.5318,86.1230)) return true;
        if(
    IsPlayerInRangeOfPoint(playerid,100,2582.8059,2384.6702,15.8500)) return true;
        return 
    false;
    }
    stock IsPlayerInWater(playerid)
    {
        new 
    Float:FXF_wpos;
        
    GetPlayerPos(playerid,FXF_wpos,FXF_wpos,FXF_wpos);
        return (
    FXF_wpos 1.00 || 39.0 FXF_wpos 41.0 || basseins(playerid))?true:false;

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

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    В CoolAndreas есть нативка
    PHP код:
    CA_IsPlayerInWater(playerid, &Float:depth, &Float:playerdepth

    Цитата Сообщение от Alpano Посмотреть сообщение
    Ради этого целый плагин подключать?
    Этому плагину можно найти миллион и одно применение, если захотеть.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    01.01.2018
    Сообщений
    36
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    В CoolAndreas есть нативка
    PHP код:
    CA_IsPlayerInWater(playerid, &Float:depth, &Float:playerdepth



    Этому плагину можно найти миллион и одно применение, если захотеть.

    скорее сток, только и он не отличается

    PHP код:
    // Checks if player is in the water
    stock CA_IsPlayerInWater(playerid, &Float:depth, &Float:playerdepth)
    {
        new 
    Float:xFloat:yFloat:zFloat:retx[10], Float:rety[10], Float:retz[10], Floatretdist[10], modelids[10];
        
    GetPlayerPos(playeridxyz);
        new 
    collisions CA_RayCastMultiLine(xyz+1000.0xyz-1000.0retxretyretzretdistmodelids10);
        if(
    collisions)
        {
            for(new 
    0collisionsi++)
            {
                if(
    modelids[i] == WATER_OBJECT)
                {
                    
    depth INFINITY;

                    for(new 
    0collisionsj++)
                    {
                        if(
    retz[j] < depth)
                            
    depth retz[j];
                    }

                    
    depth retz[i] - depth;
                    if(
    depth 0.001 && depth > -0.001)
                        
    depth 100.0;
                    
    playerdepth retz[i] - z;

                    if(
    playerdepth < -2.0)
                        return 
    0;

                    return 
    1;
                }
            }
        }
        return 
    0;

    collisions в этом стоке тоже равняется нулю.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Значит как-то с подключением ошибся, не? Перепроверяй, правильно ли карту составил и всё прочее
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    01.01.2018
    Сообщений
    36
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Значит как-то с подключением ошибся, не? Перепроверяй, правильно ли карту составил и всё прочее
    Да там вроде и проверять нечего, все как надо.

    1. Сгенерировал файл ColAndreas через программу https://imgur.com/cGAh6z7
    2. Подключил include, подключил плагин, сгенрированный файл кинул в /scriptfiles/colandreas/
    3. В .log все нормально:

    PHP код:
    [13:25:04]  Loading pluginSKY.so
    [13:25:04]   Loaded.
    [
    13:25:04]  Loading pluginColAndreas_static.so
    [13:25:04] *********************
    [
    13:25:04] ** Created By:     **
    [
    13:25:04] ** [uL]Chris42O    **
    [
    13:25:04] ** [uL]Slice       **
    [
    13:25:04] ** [uL]Pottus      **
    [
    13:25:04] *********************
    [
    13:25:16Loaded collision data.
    [
    13:25:16] *********************
    [
    13:25:16]   ColAndreas Loaded
    [13:25:16]    v1.3.0
    [13:25:16] *********************
    [
    13:25:16]   Loaded
    collision = 0 :(

  8. #8
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    По моему опыту скорее всего проблема в названии папки или файла .cadb. Название и папки, и файла в этой папке должно быть ровно таким: ColAndreas
    и никак иначе, потому что там вроде ещё и сам регистр играет роль.

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

    И да, сам скрипт должен подгружать эту карту коллизий через "CA_Init()", и в логах должно быть что-то типо того:
      Открыть/закрыть
    Последний раз редактировалось Nexius_Tailer; 04.01.2018 в 01:10.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  9. Пользователь сказал cпасибо:
    naxxyelite (04.01.2018)
  10. #9
    Аватар для naxxyelite
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.01.2018
    Сообщений
    36
    Репутация:
    0 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    По моему опыту скорее всего проблема в названии папки или файла .cadb. Название и папки, и файла в этой папке должно быть ровно таким: ColAndreas
    и никак иначе, потому что там вроде ещё и сам регистр играет роль.

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

    И да, сам скрипт должен подгружать эту карту коллизий через "CA_Init()", и в логах должно быть что-то типо того:
      Открыть/закрыть
    А вот и решение проблемы подъехало, спасибо большое, но папка все таки должна быть colandreas, иначе ошибка в логах, CA_Init() решил проблему, все отлично теперь

 

 

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

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

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

Ваши права

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