Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Команда /pay [Передача денег] mxINI - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Scr ][ All ]
Команда /pay [Передача денег] mxINI
Оценка: ***** 1 Голосов

#1
Пользователь офлайн   klimat228 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Всем привет, я любитель скриптинга, и это моя первая тема..
И я покажу вам команду /pay, как вы знаете она используется на многих РП проектах (Evolve, Arizona и другие.)
Итак, начнём с нужных переменных и дефайнов без которых у вас будут ошибки..
#define COLOR_ERROR 0xFF0000AA
#define GPN(%0) GetPlayerName(%0, Player[%0][pName], MAX_PLAYER_NAME)
#define GN(%0) Player[%0][pName]
#define f( format(string,sizeof(string),
#define COLOR_GREY 0xAFAFAFFF
#define ISCM SendClientMessage(playerid, COLOR_ERROR, "[Ошибка]: {ffffff}Игрок не найден!");

Вот такие у вас дефайны должны расположится в начале мода под Include.
Теперь есть такой массив (enum) pInfo.. в него перекидываем pName[MAX_PLAYER_NAME]
enum pInfo
{
     pName[MAX_PLAYER_NAME],  
}

Теперь перейдём к команде.
CMD:pay(playerid, params[])
{
	new // Создаём переменные: ID игрока, Деньги которые будем передавать, и текст.
		id, // ID
	        money, // Деньги которые будем передавать
	        string[144]; // текст
        if(sscanf(params, "id", id, money)) return SendClientMessage(playerid, -1, "Используйте: /pay [ID] [Деньги]"); // Проверяем наличие нужных аргументов.
   	if(id == playerid) return SendClientMessage(playerid, COLOR_ERROR, "[Ошибка]: {ffffff}Вы указали свой ID!"); // Проверяем то, как игрок ввёл свой ид.
	if(!IsPlayerConnected(id)) return ISCM // Проверка на ID, На сервере игрок или нет.
	if(money < 1 || money > 50000) return SendClientMessage(playerid, COLOR_ERROR, "[Ошибка]: {ffffff}Сумма денег должна быть от 1 до 50000!"); // Проверка на количество // 
 // переданных денег, у нас это будет от 1 до 50000 вирт. 
	if(Player[playerid][pMoney] < money) return SendClientMessage(playerid, COLOR_ERROR, "[Ошибка]: {ffffff}У вас нехватает денег!"); // Проверка на то, хватает ли у нас денег.
	Player[playerid][pMoney] -= money; // Снимаем у нас переданное количество денег.
	Player[id][pMoney] += money; // Прибавляем переданные деньги нашему ID
        GivePlayerMoney(playerid,Player[id][pMoney]);
	GivePlayerMoney(id, Player[id][pMoney]); // Выдаём деньги по массиву.
	f("[PAY]:Игрок %s[%d] передал вам %d долларов.", GN(playerid), playerid, money); // Выводим текст при передаче нашему ID
	SendClientMessage(id, COLOR_GREY, string); // Выводим сообщение
	SendClientMessage(playerid, COLOR_GREY, "Вы передали игроку деньги."); // Уповещаем себя что мы передали деньги..
	return 1;
}

Ну вот такая команда у нас получилась! Пишите свои недочёты и баги.
Ой! Совсем забыл! Вставьте в паблик OnPlayerConnect
GPN(playerid);

А то не будет показывать никнейм игрока. Простите :)
Удачи!

Сообщение отредактировал klimat228: 14 декабря 2019 - 16:30

1

#2
Пользователь офлайн   klimat228 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
"Player" можете поменять на PlayerInfo. Или как у вас там стоит..
0

#3
Пользователь офлайн   Bredemar12 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию

Цитата

#define COLOR_ERROR 0xFF0000AA
#define GPN(%0) GetPlayerName(%0, Player[%0][pName], MAX_PLAYER_NAME)
#define GN(%0) Player[%0][pName]
#define f( format(string,sizeof(string),
#define COLOR_GREY 0xAFAFAFFF
#define ISCM SendClientMessage(playerid, COLOR_ERROR, "[Ошибка]: {ffffff}Игрок не найден!");

Смысл с этих дефайнов? Новичок придет и подумает, что на каждый цвет нужен обязательно свой макрос.


Цитата

Теперь есть такой массив (enum) pInfo.. в него перекидываем pName[MAX_PLAYER_NAME]

А если человек с нуля делает мод и понятия не имеет, что такое enum?)

Цитата

string[144];

Даже и 60 не используешь. :с


Где же РП? Игрок сможет передавать деньги человеку, который стоит на большом расстоянии....

Сообщение отредактировал Bredemar12: 14 декабря 2019 - 21:10

0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика