Ну вот в следующий раз и нужно кидать код, который есть у тебя, а не какие-то вырезки.
Но всё ещё не понятно что ты хочешь этой функцией вывести? Ты грузишь одни данные, но, в итоге, работаешь с совершенно другими.
Ну вот в следующий раз и нужно кидать код, который есть у тебя, а не какие-то вырезки.
Но всё ещё не понятно что ты хочешь этой функцией вывести? Ты грузишь одни данные, но, в итоге, работаешь с совершенно другими.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Для чего каждый раз выгружать данные из skins?
Разве эта информация не будет использоваться всеми игроками и довольно часто?PHP код:
sscanf(skins[i], !"p<,>iiiii", tempid[0], id[1], id[2], id[3], id[4]);
Не лучше ли один раз выгрузить её при старте сервера и потом использовать? От этого было бы гораздо больше пользы, чем от бессмысленной паковки строки в sscanf.
Хотя не совсем понятно для чего её хранить в таблице вообще, если она далеко не индивидуальна и изменяться особо не будет. Да и сам код построен так, что проще было бы хранить её прямо в моде.
Теперь конкретно по твоему вопросу.
Так а ничего, что ты переменную, которая должна хранить количество нажатий, хранишь в стэке? Она у тебя каждый раз ровна -1, потому и дальше 0 не уходит. Хотя даже если бы и уходила, то после 10 нажатий у тебя просто случался бы выход за пределы массива.
Пробуй так (хотя я бы убрал постоянное насилование sscanf)
Только не забудь удалить pVar после того, как выбор скина закончится или игрок нажмёт на другой текстдрав.PHP код:
stock SSkin(playerid, gend, nat, age)
{
static
id[5],
idx,
specifier_buff[10+10+1];
if(isnull(specifier_buff))
format(specifier_buff, sizeof(specifier_buff), "p<,>a<i>[%d]", sizeof(id));
if((idx = GetPVarInt(playerid, "SkinArrayIndex")) >= sizeof(id))
idx = 0;
for(new i = 0; i < sizeof(skins); i++)
{
if(reg_gend{i} == gend && reg_nat{i} == nat && (age >= reg_minage{i} && age <= reg_maxage{i}))
{
sscanf(skins[i], specifier_buff, id);
format(s_string, sizeof(s_string), "%i", idx);
SendClientMessage(playerid, -1, s_string);
SetPlayerSkin(playerid, id[idx]);
SetPVarInt(playerid, "SkinArrayIndex", idx+1);
break;
}
}
return 1;
}
Последний раз редактировалось DeimoS; 15.05.2017 в 14:58. Причина: fix
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
crashdetect выдал ошибки тут:
Вот лог:PHP код:
SetPlayerSkin(playerid, id[idx]);
Код HTML:[debug] AMX backtrace: [debug] #0 000228c0 in SSkin(playerid=0, gen=1, nat=1, age=18) at D:\mode\gamemodes\inc\dev.inc:73 [debug] #1 00022a90 in public cmd_test (playerid=0, ... <1 argument>) at D:\mode\gamemodes\inc\dev.inc:83 [debug] #2 native DC_CMD () from dc_cmd.dll [debug] #3 000001a0 in public OnPlayerCommandText (playerid=0, cmdtext[]=@003ad02c "/test") at D:\mode\pawno\include\dc_cmd.inc:67
Последний раз редактировалось PawnoNoob; 15.05.2017 в 14:50.
Несколько строк выше дай. Там причина ошибки написана
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
PHP код:
stock SSkin(playerid, gend, nat, age)
{
static
id[5],
idx,
specifier_buff[10+10+1];
if(isnull(specifier_buff))
format(specifier_buff, sizeof(specifier_buff), "p<,>a<i>[%d]", sizeof(id));
if((idx = GetPVarInt(playerid, "SkinArrayIndex")) >= sizeof(id))
idx = 0;
for(new i = 0; i < sizeof(skins); i++)
{
if(reg_gend{i} == gend && reg_nat{i} == nat && (age >= reg_minage{i} && age <= reg_maxage{i}))
{
sscanf(skins[i], specifier_buff, id);
format(s_string, sizeof(s_string), "%i", idx);
SendClientMessage(playerid, -1, s_string);
SetPlayerSkin(playerid, id[idx]);
SetPVarInt(playerid, "SkinArrayIndex", idx+1);
break;
}
}
return 1;
}
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
PawnoNoob (15.05.2017)
Да, в LoadSkins.
Вместо твоего:
что-то вроде этого:PHP код:
cache_get_value_name(i, !"sid", skins[i], 26);
PHP код:
#define MAX_SKINS_COUNT 5
new skins[10][MAX_SKINS_COUNT];
// LoadSkins
cache_get_value_name(i, !"sid", temp);
sscanf(temp, !"p<,>a<i>[" #MAX_SKINS_COUNT "]", skins[i][0]);
PawnoNoob (15.05.2017)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)