PDA

Просмотр полной версии : [Вопрос] Переполнение стека



Klip*
04.12.2013, 13:04
Ребятки, вот столкнулся с такой проблемой:
Добавил в OnPlayerDoalogResponse:
http://s6.hostingkartinok.com/uploads/images/2013/12/44510da2c3b71ac0fd3bc2902bcbef86.png
И вот что вышло при компиляции.
Если убираю case 6646, то все норм
http://s5.hostingkartinok.com/uploads/images/2013/12/87b0ed2103dbd88a1fd7a27e3771e90f.png

Ребят, подскажите, что то я не так сделал?

Salvacore
04.12.2013, 17:22
Переполнение стека.

Klip*
04.12.2013, 17:36
Что делать?
Я боюсь увеличивать #pragma dynamic, другие варианты есть?

Mr_David
04.12.2013, 18:25
Конечно не по теме,но почемy //buycar1
А чтобы убрать переполнение , или увеличь прагму или чисти мод от ненужного хлама.

Klip*
04.12.2013, 18:32
Конечно не по теме,но почемy //buycar1
А чтобы убрать переполнение , или увеличь прагму или чисти мод от ненужного хлама.

В спешке так ввел.

Salvacore
04.12.2013, 18:34
Попробуй стринги уменьшить,должно помочь.

Klip*
04.12.2013, 18:48
Попробуй стринги уменьшить,должно помочь.

Все?

Mr_David
04.12.2013, 18:55
Все?

Ну смотри зачем использовать string[256]; в этом случае


new name[MAX_PLAYER_NAME],
new string[256];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "Ваш ник:%s", name );
SendClientMessageToAll(-1, string);

Если длина ник (24) максимум +
ваш ник: (8) и + 1 символ (окончание формата).
т.е new string[33];

Klip*
04.12.2013, 19:24
Что то я не понял?

Daniel_Cortez
04.12.2013, 20:19
Из-за того, что вызываешь функцию OnPlayerCommandText из самой себя, возникает рекурсия. Избавиться от неё можно несколькими способами: вынести содержимое команд /buycar1, /buycar2 и /buycar3 в отдельные функции, перевести команды на другой командный процессор (ZCMD/DC_CMD) и т.п.

Хотя... если вдуматься в названия команд и посмотреть общие требования мода к памяти (8Мб), самым простым решением будет выкинуть RLS.

Kot™
07.12.2013, 00:16
Вопрос решён?

Salvacore
07.12.2013, 00:42
Closed.