Все вопросы по скриптингу для Metamod, помощь в редактировании плагинов.
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.
В данном разделе форума разрешено создавать темы, касающие только скриптинга для
Metamod.
Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник плагина.
StRiKeR.csF » 07 окт 2014, 00:15
- Код: Выделить всё
char* gMenuItems[32][10];
char* itemname = MF_GetAmxString(amx, params[2], 0, &Len);
for(int i = 0; i < 10; i++)
{
strcpy(gMenuItems[MenuId][i], itemname);
}
Далее краш
Подскажете, почему так?
P.S. Всё до strcpy работает 100%, отдебажил. Только вот ошибку не могу никак поймать
-
StRiKeR.csF
-
- Сообщения: 771
- Зарегистрирован: 03 июн 2011, 06:26
- Откуда: Кубань
- Благодарил (а): 126 раз.
- Поблагодарили: 181 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: C++
C#
JavaScript
PHP(+MySQL)
Assembler
-
Asmodai » 07 окт 2014, 00:51
У тебя gMenuItems[][] в никуда ведет. А если куда-то ведет и краш на выходе из функции, то размера строки не хватает.
-
Asmodai
-
- Сообщения: 466
- Зарегистрирован: 24 фев 2011, 20:48
- Благодарил (а): 0 раз.
- Поблагодарили: 393 раз.
- Языки программирования: Counter-Strike 1.6
StRiKeR.csF » 07 окт 2014, 00:58
Частично проблему решил, но вот сейчас такая трабла.
- Код: Выделить всё
char* itemname = MF_GetAmxString(amx, params[2], 0, &Len);
printf("[Log] string = %s\n", itemname); //Тут всё ок, выводит test11
strcat(itemname, "^n");
printf("[Log] new string = %s\n", itemname); //Выводит 1^n
Такая же трабла и с strcpy, также выводит 1
-
StRiKeR.csF
-
- Сообщения: 771
- Зарегистрирован: 03 июн 2011, 06:26
- Откуда: Кубань
- Благодарил (а): 126 раз.
- Поблагодарили: 181 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: C++
C#
JavaScript
PHP(+MySQL)
Assembler
-
Asmodai » 07 окт 2014, 01:30
Памяти скорее всего (наверно всегда при MF_GetAmxString) выделено ровно под длину строки и не добавишь ты туда просто так два символа.
-
Asmodai
-
- Сообщения: 466
- Зарегистрирован: 24 фев 2011, 20:48
- Благодарил (а): 0 раз.
- Поблагодарили: 393 раз.
- Языки программирования: Counter-Strike 1.6
6a6kin » 07 окт 2014, 02:32
Посмотри как указатель меняется (и меняется ли вообще), выводи содержимое памяти по указателю до strcat и после, глянь как память меняется.
И лучше, офк, использовать strncat, strncpy.
На заказ не пишу.
-
6a6kin
-
- Сообщения: 332
- Зарегистрирован: 09 мар 2010, 16:40
- Благодарил (а): 38 раз.
- Поблагодарили: 278 раз.
-
Вернуться в Скриптинг
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1