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

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

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

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

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

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

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

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

Сообщение OtherWorld » 16 дек 2017, 07:52

Подскажите как передать и получить многомерный массив нативом??

Передавать вроде так? А как получить данные в такой же массив с другого плагина??:dntknw:
Код: Выделить всё

new im_array
[][][] = { { 1,"Два",}, { 4,"Five",} };

register_native("test","native_test",1);

public native_test()
{
    return im_array;
}
Аватара пользователя
OtherWorld
 
Сообщения: 78
Зарегистрирован: 01 сен 2017, 08:41
Благодарил (а): 39 раз.
Поблагодарили: 1 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

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

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

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

native test
()

new 
test[][][] = test(); 
 
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown

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

Сообщение OtherWorld » 16 дек 2017, 17:14

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

native test
()

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


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

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

Сообщение Mistrick » 16 дек 2017, 17:21

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

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

Сообщение OtherWorld » 16 дек 2017, 17:27

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

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

Сообщение Mistrick » 16 дек 2017, 19:26

Mistrick писал(а):OtherWorld, вы зачем-то сделали самый худший вариант. Я вам уже говорил перепишите на enum, вы раза в 3 сократите расход памяти.

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

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

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

Mistrick писал(а):
Mistrick писал(а):OtherWorld, вы зачем-то сделали самый худший вариант. Я вам уже говорил перепишите на enum, вы раза в 3 сократите расход памяти.

Нерациональное использование памяти для вас не причина?


А по конкретнее... цифры (к примеру по данному new im_array[][][] = { { 1,"Два",3 }, { 4,"Five",6 } }; )? и как не нативом передать многомерный массив в другой плагин на выходе чтобы получить такой же массив?
Аватара пользователя
OtherWorld
 
Сообщения: 78
Зарегистрирован: 01 сен 2017, 08:41
Благодарил (а): 39 раз.
Поблагодарили: 1 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

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

Сообщение Mistrick » 16 дек 2017, 20:55

OtherWorld, 2 х 3 х размер максимальной строки, с enum получаем 2 х размер enum, где для вашего варианта будет 2 + размер максимальной строки.
Считаем для строки из 16 символов.
2 х 3 х 16 = 96
2 х (2 + 16) = 36
96/36 = 2.666

Для 32
2 х 3 х 32 = 192
2 х (2 + 32) = 68
192/68 = 2.823

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

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

Сообщение OtherWorld » 16 дек 2017, 21:47

не велика разница но за информацию спасибо и не совсем понятно что Вы имели ввиду... если мне нужен 3-мерный массив на выходе в котором информация как числовая так и строковая так и дробная, зачем из него делать двумерный? :dntknw:
Аватара пользователя
OtherWorld
 
Сообщения: 78
Зарегистрирован: 01 сен 2017, 08:41
Благодарил (а): 39 раз.
Поблагодарили: 1 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

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

Сообщение Mistrick » 16 дек 2017, 22:10

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

След.

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

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

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