PDA

Просмотр полной версии : [Вопрос] Прошу помощи с командой.



Skyline
12.05.2017, 22:35
Здравствуйте ув. пользователи, при вводе команды /materials, можно использовать команду materials get и deliver.
В /materials get используется число от 1 - 30, но при вводе команды например /materials get 10, ничего не происходит и пакеты не берутся. Подскажите пожалуйста в чем ошибка.


CMD:materials(playerid, params[])
{
if(!player_is_authorized{playerid})
return SendClientMessage(playerid, COLOR_GREY, !"Вы не авторизировались.");

if(pInfo[playerid][pJob] != 2)
return SendClientMessage(playerid, COLOR_GREY, !"Ты не Гандиллер.");

new materials[15];
if(sscanf(params, "s[15]", materials))
return SendClientMessage(playerid, COLOR_GREY, !"Использование: /materials [get] | [deliver]");

if(strcmp(materials,"get",true) == 0)
{
if(!IsPlayerInRangeOfPoint(playerid, 3.0, 1256.4489,242.2705,19.5547))
return SendClientMessage(playerid, COLOR_GREY, !"Вы не у склада.");

new kolichestvo;
if(sscanf(params, "i", kolichestvo))
return SendClientMessage(playerid, COLOR_GREY, !"Использование: /materials get [Количество].");

if(pInfo[playerid][pGunSkill] >= 0 && pInfo[playerid][pGunSkill] <= 50)
{
if(kolichestvo < 1 || kolichestvo > 10)
return SendClientMessage(playerid, COLOR_GREY, !"От 1 - до 10.");
}
if(pInfo[playerid][pGunSkill] >= 51 && pInfo[playerid][pGunSkill] <= 100)
{
if(kolichestvo < 1 || kolichestvo > 15)
return SendClientMessage(playerid, COLOR_GREY, !"От 1 - до 15.");
}
if(pInfo[playerid][pGunSkill] >= 101 && pInfo[playerid][pGunSkill] <= 200)
{
if(kolichestvo < 1 || kolichestvo > 20)
return SendClientMessage(playerid, COLOR_GREY, !"От 1 - до 20.");
}
if(pInfo[playerid][pGunSkill] >= 201 && pInfo[playerid][pGunSkill] <= 400)
{
if(kolichestvo < 1 || kolichestvo > 25)
return SendClientMessage(playerid, COLOR_GREY, !"От 1 - до 25.");
}
if(pInfo[playerid][pGunSkill] >= 401)
{
if(kolichestvo < 1 || kolichestvo > 30)
return SendClientMessage(playerid, COLOR_GREY, !"От 1 - до 30.");
}
if(kolichestvo < 1 || kolichestvo > pInfo[playerid][pPacket])
return SendClientMessage(playerid, COLOR_GREY, !"У Вас нет столько пакетов.");

if(Packet_Get[playerid] > 0)
return SendClientMessage(playerid, COLOR_GREY, !"У вас уже есть пакеты, отвезите их.");

new string[35];
format(string, sizeof string, "Вы взяли %d пакетов со склада.", kolichestvo);
SendClientMessage(playerid, COLOR_LBLUE, string);
Packet_Get[playerid] += kolichestvo;
pInfo[playerid][pPacket] = pInfo[playerid][pPacket] -= kolichestvo;
return true;
}
if(strcmp(materials,"deliver",true) == 0)
{
if(!IsPlayerInRangeOfPoint(playerid, 3.0, -2119.8145, -177.7865, 35.3203))
return SendClientMessage(playerid, COLOR_GREY, "Вы не у переработки пакетов.");

if(Packet_Get[playerid] == 0)
SendClientMessage(playerid, COLOR_GREY, !"У вас нету пакетов.");

new string[50],
mats = 50 * Packet_Get[playerid];

format(string, sizeof string, "Вы получили %d материалов, из %d пакетов.", mats, Packet_Get[playerid]);
SendClientMessage(playerid, COLOR_LBLUE, string);

pInfo[playerid][pMats] += mats;
pInfo[playerid][pGunSkill] += 1;
Packet_Get[playerid] = 0;
}
return true;
}

wAx
12.05.2017, 23:39
CMD:materials(playerid, params[])
{
if(!player_is_authorized{playerid})
return SendClientMessage(playerid, COLOR_GREY, !"Вы не авторизировались.");

if(pInfo[playerid][pJob] != 2)
return SendClientMessage(playerid, COLOR_GREY, !"Ты не Гандиллер.");

new materials[7];;
if(sscanf(params, "s[7]", materials))
return SendClientMessage(playerid, COLOR_GREY, !"Использование: /materials [get] | [deliver]");

if(strcmp(materials,"get",true) == 0)
{
if(!IsPlayerInRangeOfPoint(playerid, 3.0, 1256.4489,242.2705,19.5547))
return SendClientMessage(playerid, COLOR_GREY, !"Вы не у склада.");

new kolichestvo;
if(sscanf(params, "s[7]i", materials, kolichestvo))
return SendClientMessage(playerid, COLOR_GREY, !"Использование: /materials get [Количество].");

if(pInfo[playerid][pGunSkill] >= 0 && pInfo[playerid][pGunSkill] <= 50)
{
if(kolichestvo < 1 || kolichestvo > 10)
return SendClientMessage(playerid, COLOR_GREY, !"От 1 - до 10.");
}
if(pInfo[playerid][pGunSkill] >= 51 && pInfo[playerid][pGunSkill] <= 100)
{
if(kolichestvo < 1 || kolichestvo > 15)
return SendClientMessage(playerid, COLOR_GREY, !"От 1 - до 15.");
}
if(pInfo[playerid][pGunSkill] >= 101 && pInfo[playerid][pGunSkill] <= 200)
{
if(kolichestvo < 1 || kolichestvo > 20)
return SendClientMessage(playerid, COLOR_GREY, !"От 1 - до 20.");
}
if(pInfo[playerid][pGunSkill] >= 201 && pInfo[playerid][pGunSkill] <= 400)
{
if(kolichestvo < 1 || kolichestvo > 25)
return SendClientMessage(playerid, COLOR_GREY, !"От 1 - до 25.");
}
if(pInfo[playerid][pGunSkill] >= 401)
{
if(kolichestvo < 1 || kolichestvo > 30)
return SendClientMessage(playerid, COLOR_GREY, !"От 1 - до 30.");
}
if(kolichestvo < 1 || kolichestvo > pInfo[playerid][pPacket])
return SendClientMessage(playerid, COLOR_GREY, !"У Вас нет столько пакетов.");

if(Packet_Get[playerid] > 0)
return SendClientMessage(playerid, COLOR_GREY, !"У вас уже есть пакеты, отвезите их.");

new string[35];
format(string, sizeof string, "Вы взяли %d пакетов со склада.", kolichestvo);
SendClientMessage(playerid, COLOR_LBLUE, string);
Packet_Get[playerid] += kolichestvo;
pInfo[playerid][pPacket] = pInfo[playerid][pPacket] -= kolichestvo;
return true;
}
if(strcmp(materials,"deliver",true) == 0)
{
if(!IsPlayerInRangeOfPoint(playerid, 3.0, -2119.8145, -177.7865, 35.3203))
return SendClientMessage(playerid, COLOR_GREY, "Вы не у переработки пакетов.");

if(Packet_Get[playerid] == 0)
SendClientMessage(playerid, COLOR_GREY, !"У вас нету пакетов.");

new string[50],
mats = 50 * Packet_Get[playerid];

format(string, sizeof string, "Вы получили %d материалов, из %d пакетов.", mats, Packet_Get[playerid]);
SendClientMessage(playerid, COLOR_LBLUE, string);

pInfo[playerid][pMats] += mats;
pInfo[playerid][pGunSkill] += 1;
Packet_Get[playerid] = 0;
}
return true;
}

попробуй так

DeimoS
12.05.2017, 23:59
Вряд ли сработает вариант выше, ибо для первого sscanf останутся лишние данные (хотя может и всё норм будет).
В любом случае можно обойтись вызовом одного sscanf

CMD:materials(playerid, params[])
{
if(!player_is_authorized{playerid})
return SendClientMessage(playerid, COLOR_GREY, !"Вы не авторизировались.");

if(pInfo[playerid][pJob] != 2)
return SendClientMessage(playerid, COLOR_GREY, !"Ты не Гандиллер.");

new materials[7],
kolichestvo;
if(sscanf(params, "s[7]I(-1)", materials, kolichestvo))
return SendClientMessage(playerid, COLOR_GREY, !"Использование: /materials [get (количество)] | [deliver]");

if(strcmp(materials,"get",true) == 0)
{
if(!IsPlayerInRangeOfPoint(playerid, 3.0, 1256.4489,242.2705,19.5547))
return SendClientMessage(playerid, COLOR_GREY, !"Вы не у склада.");

if(kolichestvo == -1)
return SendClientMessage(playerid, COLOR_GREY, !"Использование: /materials get [Количество].");

if(pInfo[playerid][pGunSkill] >= 0 && pInfo[playerid][pGunSkill] <= 50)
{
if(kolichestvo < 1 || kolichestvo > 10)
return SendClientMessage(playerid, COLOR_GREY, !"От 1 - до 10.");
}
if(pInfo[playerid][pGunSkill] >= 51 && pInfo[playerid][pGunSkill] <= 100)
{
if(kolichestvo < 1 || kolichestvo > 15)
return SendClientMessage(playerid, COLOR_GREY, !"От 1 - до 15.");
}
if(pInfo[playerid][pGunSkill] >= 101 && pInfo[playerid][pGunSkill] <= 200)
{
if(kolichestvo < 1 || kolichestvo > 20)
return SendClientMessage(playerid, COLOR_GREY, !"От 1 - до 20.");
}
if(pInfo[playerid][pGunSkill] >= 201 && pInfo[playerid][pGunSkill] <= 400)
{
if(kolichestvo < 1 || kolichestvo > 25)
return SendClientMessage(playerid, COLOR_GREY, !"От 1 - до 25.");
}
if(pInfo[playerid][pGunSkill] >= 401)
{
if(kolichestvo < 1 || kolichestvo > 30)
return SendClientMessage(playerid, COLOR_GREY, !"От 1 - до 30.");
}
if(kolichestvo < 1 || kolichestvo > pInfo[playerid][pPacket])
return SendClientMessage(playerid, COLOR_GREY, !"У Вас нет столько пакетов.");

if(Packet_Get[playerid] > 0)
return SendClientMessage(playerid, COLOR_GREY, !"У вас уже есть пакеты, отвезите их.");

new string[35];
format(string, sizeof string, "Вы взяли %d пакетов со склада.", kolichestvo);
SendClientMessage(playerid, COLOR_LBLUE, string);
Packet_Get[playerid] += kolichestvo;
pInfo[playerid][pPacket] = pInfo[playerid][pPacket] -= kolichestvo;
return true;
}
else if(strcmp(materials,"deliver",true) == 0)
{
if(!IsPlayerInRangeOfPoint(playerid, 3.0, -2119.8145, -177.7865, 35.3203))
return SendClientMessage(playerid, COLOR_GREY, "Вы не у переработки пакетов.");

if(Packet_Get[playerid] == 0)
SendClientMessage(playerid, COLOR_GREY, !"У вас нету пакетов.");

new string[50],
mats = 50 * Packet_Get[playerid];

format(string, sizeof string, "Вы получили %d материалов, из %d пакетов.", mats, Packet_Get[playerid]);
SendClientMessage(playerid, COLOR_LBLUE, string);

pInfo[playerid][pMats] += mats;
pInfo[playerid][pGunSkill] += 1;
Packet_Get[playerid] = 0;
}
return true;
}

Skyline
13.05.2017, 00:53
Спасибо DeimoS) Можно закрывать.