Русское сообщество по скриптингу

Получение многомерного массива нативом  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Re: Получение многомерного массива нативом

Сообщение RevCrew » 16 дек 2017, 22:26

OtherWorld, у вас в статусе
Опыт программирования: Больше трех лет
и за 3 года вы не поняли почему не стоит делать многомерные массивы?
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown

Re: Получение многомерного массива нативом

Сообщение OtherWorld » 16 дек 2017, 22:59

RevCrew писал(а):OtherWorld, у вас в статусе
Опыт программирования: Больше трех лет
и за 3 года вы не поняли почему не стоит делать многомерные массивы?


Опыт программирования: Больше трех лет
Языки программирования: PHP

P.S. То на что нужно обратить внимание, выделено...

Добавлено спустя 18 минут 28 секунд:
Mistrick писал(а):OtherWorld, у вас есть определение слова массив? Это набор однородных данных, то что пишите вы нормальным вариантом использования не назвать.
С enum вы сделаете массив из что-то вроде структуры, т.е. набор одинаковых данных, где каждый элемент "структура", и в ней уже неоднородные данные.


Не знал, спасибо! Чтобы я без "учителей" делал :yahoo: И если такой вариант передачи данных "плохой" то почему есть возможность так их передавать?? :dntknw: C enum дела не имел по этому можно пример конкретно по массиву в ПП?
Аватара пользователя
OtherWorld
 
Сообщения: 78
Зарегистрирован: 01 сен 2017, 08:41
Благодарил (а): 39 раз.
Поблагодарили: 1 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Получение многомерного массива нативом

Сообщение RevCrew » 16 дек 2017, 23:10

OtherWorld, к счастью, вам вопрос актуален не только в pawn, вы можете прочитать в гугле или на хабре, почему плоха многомерная логика (многомерные массивы). К сожаленью, в Pawn, чтобы упростить эту логику есть только enum.
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown

Re: Получение многомерного массива нативом

Сообщение OtherWorld » 16 дек 2017, 23:20

RevCrew писал(а):OtherWorld, к счастью, вам вопрос актуален не только в pawn, вы можете прочитать в гугле или на хабре, почему плоха многомерная логика (многомерные массивы). К сожаленью, в Pawn, чтобы упростить эту логику есть только enum.


Ну на заборе тоже пишут что "Коля козёл" но это же не значит что так на самом деле... :dntknw: Каждый делает так как умеет или как ему удобно (скорее всего это совместимо)...

RevCrew писал(а):OtherWorld, как-нибудь так. Но идея изначально плохая, думаю если вы расскажите что вы хотите в итоге получить, и зачем вам 3-мерный массив, то можно переделать по другому, более простому варианту
Код: Выделить всё

native test
()

new test[][][] = test(); 


Ошибки...
Код: Выделить всё
error 001: expected token: "{", but found "-identifier-"
Аватара пользователя
OtherWorld
 
Сообщения: 78
Зарегистрирован: 01 сен 2017, 08:41
Благодарил (а): 39 раз.
Поблагодарили: 1 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Получение многомерного массива нативом

Сообщение Mistrick » 16 дек 2017, 23:29

OtherWorld,
Код: Выделить всё
new im_array[][][] = { { 1,"Два",}, { 4,"Five",} };

enum Test {
    int_one,
    str[16],
    int_two
};

new enum_array[][Test] = {
    { 1, "Два", 3 },
    { 4, "Five", 6 }
};


// native copy(index, arr[], size);
public native_copy(plugin, params) {
    enum { arg_index = 1, arg_array, arg_size };
    
    set_array
(arg_array, enum_array[get_param(arg_index)], get_param(arg_size));
}

Работоспособность нативы не проверял, возможно не работает такой вариант.
Аватара пользователя
Mistrick
Скриптер
 
Сообщения: 2940
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 43 раз.
Поблагодарили: 1247 раз.
Языки программирования: PAWN
С/С++(few above zero)

Re: Получение многомерного массива нативом

Сообщение Subb98 » 16 дек 2017, 23:32

OtherWorld писал(а):Не знал, спасибо! Чтобы я без "учителей" делал :yahoo:

И зачем вам вообще отвечать после такого откровенного хамства? Это вам нужна помощь или кому-то из нас? Или это вы чего-то не знаете / не понимаете или кто-то из нас? Вроде, вы. А ведёте себя так, будто всё с точностью до наоборот.

OtherWorld писал(а):И если такой вариант передачи данных "плохой" то почему есть возможность так их передавать?? :dntknw:

А почему этой возможности быть не должно? Если так сделать можно, это не значит, что это хорошая практика. Иначе понятия "говнокод" не существовало бы вовсе.

OtherWorld писал(а):C enum дела не имел по этому можно пример конкретно по массиву в ПП?

Не надо вам примеров, вы и сами решите, что для вас хорошо, а что нет.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Получение многомерного массива нативом  [Решено]

Сообщение OtherWorld » 17 дек 2017, 01:33

Subb98 писал(а):
OtherWorld писал(а):Не знал, спасибо! Чтобы я без "учителей" делал :yahoo:

И зачем вам вообще отвечать после такого откровенного хамства? Это вам нужна помощь или кому-то из нас? Или это вы чего-то не знаете / не понимаете или кто-то из нас? Вроде, вы. А ведёте себя так, будто всё с точностью до наоборот.

OtherWorld писал(а):И если такой вариант передачи данных "плохой" то почему есть возможность так их передавать?? :dntknw:

А почему этой возможности быть не должно? Если так сделать можно, это не значит, что это хорошая практика. Иначе понятия "говнокод" не существовало бы вовсе.

OtherWorld писал(а):C enum дела не имел по этому можно пример конкретно по массиву в ПП?

Не надо вам примеров, вы и сами решите, что для вас хорошо, а что нет.


Если человек в этом разбирается он не будет спорить и доказывать что-то, а вопрос был конкретным "как получить многомерный массив нативом"... ответил только RevCrew по делу и я не спрашивал "как лучше"...

Добавлено спустя 19 минут 30 секунд:
Subb98 писал(а):А почему этой возможности быть не должно? Если так сделать можно, это не значит, что это хорошая практика. Иначе понятия "говнокод" не существовало бы вовсе.


По моему вы не совсем понимаете значение слова "говнокод"

Говнокод — это код не похожий на код оппонента. Понять чужой код — это долгая и нудная работа. А если код написан так, как будто ты его написал, то ты его понимаешь и это экономит время на доработку и отладку.

Любой начинающий программист первым делом бросается переписывать чужие программы. Даже если они абсолютно работоспособны, даже если после переписывания пропадет часть функционала и появятся баги.

Это сказано с долей юмора конечно.

Говнокод — это применение не самых лучших (с точки зрения большинства) решений проблемы. Ну к примеру говнокодом назовут выход из цикла установкой счетчика в максимальное значение.

for(i=0; i<1000; i++)
i=INT_MAX;


Это полностью работоспособное решение, не тормозное, не громоздкое. Но лучше применять для этих целей break. Потому что так все привыкли. Так же говнокодом является повторение функционала стандартной библиотеки, например string или auto_ptr. А так же структура (архитектура) программы, отличная от любимой у оппонента. Например, не использование MVC при разработке программы.

К примеру, я использую конструкцию:

void main() {
// ...
void init_dialog(); init_dialog();
void init_referenceControl(); init_referenceControl();
void init_functionsHelp(); init_functionsHelp();
void init_new_style(); init_new_style();
// ...
}
</souce>

Вместо определения функций в .H файлах, я это сделал прямо на месте. Говнокод. Можно было бы создать кучу .H файлов, использовать одну из множества библиотек выполняющих инициализацию. Но это максимально простой способ, способ без использования доп классов, функций и программ; так легче отлаживать, так наглядно изображена последовательность инициализации, так не надо писать кучу #include, и кроме функции MAIN, функции инициализации ни от куда не вызвать.

Говнокод - потому что люди бы не так написали.


Добавлено спустя 1 час 25 минут 56 секунд:
Ясно, ответа на вопрос из первого поста никто не знает... ладно, сам разберусь.
Аватара пользователя
OtherWorld
 
Сообщения: 78
Зарегистрирован: 01 сен 2017, 08:41
Благодарил (а): 39 раз.
Поблагодарили: 1 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Получение многомерного массива нативом

Сообщение Subb98 » 17 дек 2017, 07:11

OtherWorld писал(а):Если человек в этом разбирается он не будет спорить и доказывать что-то, а вопрос был конкретным "как получить многомерный массив нативом"... ответил только RevCrew по делу и я не спрашивал "как лучше"...

Ну да, это старая песня, "я не просил советовать, как сделать лучше". Привыкайте, это форум, тут свободные дискуссии, а не только ответы на поставленные вопросы.

OtherWorld писал(а):По моему вы не совсем понимаете значение слова "говнокод"

Вы, по какой-то причине, спроецировали это слово сразу же на свой код (хотя я явно на это не указывал). В вашем случае, да, данное определение не подходит. В вашем случае это "быдлокод", но суть моего замечания не меняется.

OtherWorld писал(а):Ясно, ответа на вопрос из первого поста никто не знает... ладно, сам разберусь.

Не, никто не знает, сами давайте.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Пред.

Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15