Habel15
Дебютант
И так, ребята это вообще мой первый пост на pawno-info, по этому не судите строго :bz:
Сегодня я вам расскажу подробно и разжеванно о работе командного процессора ZCMD.
Допустим вы решили, создать комманду на передачу денег, если ее писать на стандартном процессоре, эта команда займет довольно много кода, и не факт что вы еще раз 10 не вернетесь к ней, дабы исправить неожиданные баги:cg:
Тут же, все довольно просто :by:
возможно где то было, но все написано лично мной, просто не видел похожих уроков, возможно кому-нибудь пригодится..
Сегодня я вам расскажу подробно и разжеванно о работе командного процессора ZCMD.
Допустим вы решили, создать комманду на передачу денег, если ее писать на стандартном процессоре, эта команда займет довольно много кода, и не факт что вы еще раз 10 не вернетесь к ней, дабы исправить неожиданные баги:cg:
Тут же, все довольно просто :by:
Код:
CMD:givemoney(playerid, params[])
{
new plID,money; //объявляем 2 целочисленные переменные т.е они будут принимать значения типа INT
if(sscanf(params,"dd",plID,money)) // проверяем "если игрок ввел команду, но не ввел хотябы одно значение, то выдадим ему строку возврата, "dd" означает что игрок должен ввести 2 целочисленные переменные, в нашем случае это plID и money, "dd" можно так же представить как %d%d т.е вместо "dd" может быть и "ss", "sd" и т.д
return SendClientMessage(playerid, 0xFF0000AA, "Ведите: /givemoney [id][money]"); // это свойственно, возврат ошибки если персонаж ввел неверное кол-во значений
if(GetPlayerMoney(playerid) >= money) // это проверка, "если у игрока денег больше или ровно столько сколько он хочет передать, то выполнится следующий код" (GetPlayerMoney(playerid) эта функция узнает количество денег у игрока, в нашем случае, мы узнали кол. во денег игрока и сравнили с тем что он хочет передать.
{
Player[playerid][pMoney] = GetPlayerMoney(playerid) - money; // тут мы сохраняем в нашем enum, думаю вы вкурсе что это, сохраняем тут разность имеющихся у персонажа денег до обмена, с теми которые он хочет передать.
ResetPlayerMoney(playerid); // эта функция сбрасывает деньги того кто хочет передать другому персонажу денег чтобы не размножать деньги
GivePlayerMoney(plID,money); // эта функция передаст количество денег заданное в веденной игроком команде, другому игроку
GivePlayerMoney(playerid,Player[playerid][pMoney]); // здесь мы возвращаем остаток денег от которых вы отняли и передали другому игроку, чтобы обьяснить более простым языком представьте - вот у меня 1000$, я хочу вам передать 200$, и иду в банк, даю им 1000$, они берут и отправляют вам 200$ и возвращают мне сдачи 800$, т.е я в миг лишаюсь денег, и потом получаю заранее сохраненный остаток от них обратно.
}
else // а если мы введем количество денег которое превышает нашу сумму, то выдадим сообщение
{
SendClientMessage(playerid,COLOR_RED,"У вас недостаточно денег!");
}
return 1;
}
