Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 2 из 2
  1. #1
    Аватар для underwoker
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.03.2014
    Сообщений
    331
    Репутация:
    47 ±

    Почему так работает?

    Доброго времени суток! Делал систему кое-чего с использованием чекпоинтов стримера координаты которых хранились в таком массиве
    PHP код:
    enum partinfo
    {
        
    Float:PartPos[3]
    }

    new 
    PartInfo[][partinfo] =
    {
        {
    1301.3738, -1301.145918.8723},
        {
    1301.3729, -1295.594118.8703},
        {
    1306.6167, -1301.168518.8723},
        {
    1306.6167, -1295.547018.8703},
        {
    1310.9929, -1300.916918.8723},
        {
    1310.9919, -1295.501318.8703},
        {
    1316.5524, -1300.893918.8723},
        {
    1316.5524, -1295.495018.8703}
    }; 
    И мне выдавало ошибки указывая на первую строчку координат в массиве:
    PHP код:
    C:\Users\\Desktop\Ìîä\\gamemodes\.pwn(441) : warning 227more initiallers than enum fields
    C
    :\Users\\Desktop\Ìîä\\gamemodes\.pwn(441) : warning 213tag mismatch
    C
    :\Users\\Desktop\Ìîä\\gamemodes\.pwn(441) : warning 227more initiallers than enum fields
    C
    :\Users\\Desktop\Ìîä\\gamemodes\.pwn(441) : warning 213tag mismatch
    C
    :\Users\\Desktop\Ìîä\\gamemodes\.pwn(441) : error 018initialization data exceeds declared size 
    Поискав в гугле, я даже не нашел варнинга 227 в списке всех ошибок и варнингов Pawn. Везде, хоть таких мест было мало, советовали сделать из
    PHP код:
    enum partinfo
    {
        
    Float:PartPos[3]

    PHP код:
    enum partinfo
    {
        
    Float:PartPosX,
        
    Float:PartPosY,
        
    Float:PartPosZ

    Так и правда, все начинало работать. Но я не мог с этим смириться, и решил добиться чего хотел. Методом проб и ошибок вышло так

    PHP код:
    enum partinfo
    {
        
    Float:PartPos[3]
    }

    new 
    PartInfo[][partinfo] =
    {
        {{
    1301.3738, -1301.145918.8723},},
        {{
    1301.3729, -1295.594118.8703},},
        {{
    1306.6167, -1301.168518.8723},},
        {{
    1306.6167, -1295.547018.8703},},
        {{
    1310.9929, -1300.916918.8723},},
        {{
    1310.9919, -1295.501318.8703},},
        {{
    1316.5524, -1300.893918.8723},},
        {{
    1316.5524, -1295.495018.8703}}
    }; 
    А главное - все работало и не выдавало варнингов и ошибок.

    Собсна вопрос: ПОЧЕМУ?
    "Власть, кровь, няш-мяш, кровь, власть, Крым наш!" - (c) Наталья Поклонская.

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

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    PHP код:
    enum partinfo
    {
        
    FloatPartPos_X,
        
    FloatPartPos_Y,
        
    FloatPartPos_Z
    }

    new 
    PartInfo[][partinfo] =
    {
        {
    1301.3738, -1301.145918.8723},
        {
    1301.3729, -1295.594118.8703},
        {
    1306.6167, -1301.168518.8723},
        {
    1306.6167, -1295.547018.8703},
        {
    1310.9929, -1300.916918.8723},
        {
    1310.9919, -1295.501318.8703},
        {
    1316.5524, -1300.893918.8723},
        {
    1316.5524, -1295.495018.8703}
    }; 
    Есть только так. Как вы собрались в одной ячейке массива использовать сразу 3 переменных?

    И да, так как здесь ничего особенного в массиве нет, то есть здесь присутствует только вещественный тип лучше сделать напрямую без энумератора ( если вам удобнее так - используйте так ).
    PHP код:
    new FloatPartInfo[][] =
    {
        {
    1301.3738, -1301.145918.8723},
        {
    1301.3729, -1295.594118.8703},
        {
    1306.6167, -1301.168518.8723},
        {
    1306.6167, -1295.547018.8703},
        {
    1310.9929, -1300.916918.8723},
        {
    1310.9919, -1295.501318.8703},
        {
    1316.5524, -1300.893918.8723},
        {
    1316.5524, -1295.495018.8703}
    }; 

 

 

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

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

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

Ваши права

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