Форум Pawn.Wiki - Воплоти мечту в реальность!: Система управления деньгами игроков - Форум Pawn.Wiki - Воплоти мечту в реальность!

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

  • (5 Страниц) +
  • 1
  • 2
  • 3
  • Последняя »
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Система управления деньгами игроков money Оценка: ***** 1 Голосов

#1
Пользователь онлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию
С помощью данной системы вы можете легко управлять деньгами игроков. Подключать необходимо после стандартных библиотек.

#include <money>

Функции [Показать]

Особенности:

    ■   Защита денег от читов.

    ■   Дополнительные функции для работы с деньгами игроков.

    ■   Прямое подключение к базе данных MySQL R41. Автоматическая загрузка денег, а также сохранение и логирование всех действий.


    Для подключения системы к базе данных MySQL необходимо выполнить следующие действия: [Показать]



    ■   Возможность включить отображение полученной суммы.

    Изображение


    Для этого перед подключением инклуда необходимо создать макрос: [Показать]



    ■   Возможность включить звуковое сопровождение при изменении баланса игрока.


    Для этого перед подключением инклуда необходимо создать макрос: [Показать]



    ■   Автоматическое обновление данных в HUD игроков.

    ■   Автоматическая очистка данных при выходе игроков из игры.

    ■   Установленные константы по умолчанию для использования:

        MAX_MONEY_HUD (11)
        SIZE_MONEY_HUD (MAX_MONEY_HUD+1)

        MIN_MONEY_VALUE (0)
        MAX_MONEY_VALUE (999_999_999)

Скачать: money.inc [17,23К]

Сообщение отредактировал M I S T E V: 20 апреля 2025 - 00:21

11

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

  • Пользователь
  • Вставить ник
  • Раскрыть информацию
Лучший :)
0

#3
Пользователь онлайн   M I S T E V 

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

Просмотр сообщенияNiceXPlayer (04 июня 2022 - 14:28) писал:

Лучший :)

Спасибо :rolleyes:
0

#4
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию

Цитата

if(cent > 9) format(string, sizeof(string), "%i", cent);
else format(string, sizeof(string), "0%i", cent);


Почему не сделать так:
format(string, sizeof(string), "%01i", cent);

?

Цитата

PlayerTextDrawSetString(playerid, FMONEY_TD[playerid], string);
PlayerTextDrawShow(playerid, FMONEY_TD[playerid]);


А разве PlayerTextDrawSetString не отправляет автоматом все изменения клиенту? :) Зачем повторно показывать текстдрав?

Цитата

((FMONEY[playerid] / FMONEY_DIVIDER) * FMONEY_DIVIDER)


Это ещё что за имитация полезной деятельности?)



Ну и много всяких повторяющихся операций в функциях есть, которые можно спокойно сократить, записав различные промежуточные значения в переменные.

Сообщение отредактировал DeimoS: 09 июня 2022 - 10:12

1

#5
Пользователь онлайн   M I S T E V 

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

Просмотр сообщенияDeimoS (09 июня 2022 - 10:11) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Насчёт формата не знал, попробую
Видимо перепутал с глобальным, исправлю

Насчёт имитации посмотрю :wacko:

Сообщение отредактировал M I S T E V: 09 июня 2022 - 10:37

0

#6
Пользователь онлайн   M I S T E V 

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

Просмотр сообщенияDeimoS (09 июня 2022 - 10:11) писал:

Почему не сделать так:
format(string, sizeof(string), "%01i", cent);



*
%02i

:happy:

Сообщение отредактировал M I S T E V: 09 июня 2022 - 11:36

0

#7
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию

Цитата

	new sum = dollars * FMONEY_DIVIDER + cents;

	if(sum > FMONEY_MAX)
	{
		FMONEY[playerid] = FMONEY_MAX;
	}
	else if(sum < FMONEY_MIN)
	{
		FMONEY[playerid] = FMONEY_MIN;
	}
	else
	{
		FMONEY[playerid] = dollars * FMONEY_DIVIDER + cents;
	}


FMONEY[playerid] = dollars * FMONEY_DIVIDER + cents;

->
FMONEY[playerid] = sum;

?

Или ещё лучше:
stock SetPlayerFMoney(playerid, dollars, cents=0)
{
    if(!IsPlayerConnected(playerid)) return 0;

    new sum = dollars * FMONEY_DIVIDER + cents;

    if(sum > FMONEY_MAX)
    {
        sum = FMONEY_MAX;
    }
    else if(sum < FMONEY_MIN)
    {
        sum = FMONEY_MIN;
    }
    FMONEY[playerid] = sum;

    ResetPlayerMoney(playerid);

    #if FMONEY_DISPLAY_CENTS
        
        new string[2 +1];

        format(string, sizeof(string), "%02i", sum % FMONEY_DIVIDER);

        PlayerTextDrawSetString(playerid, FMONEY_TD[playerid], string);

        return GivePlayerMoney(playerid, sum);
    
    #else
        
        return GivePlayerMoney(playerid, (sum / FMONEY_DIVIDER));
    
    #endif
}


+- то же самое можно и с другими функциями сделать.


Цитата

#define FMONEY_DISPLAY_CENTS 1 // 1 - включить отображение центов, 0 - отключить


#if !defined FMONEY_DISPLAY_CENTS
    #define FMONEY_DISPLAY_CENTS 1 // 1 - включить отображение центов, 0 - отключить
#endif


Цитата

static const FMONEY_DIVIDER = 100;

Либо переделать просто на const, либо, если хочется ограничить область видимости константы файлом - define + undef в конце файла.

Сообщение отредактировал DeimoS: 09 июня 2022 - 20:39

2

#8
Пользователь онлайн   M I S T E V 

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

Просмотр сообщенияDeimoS (09 июня 2022 - 20:38) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Хорошо, спасибо за советы, чуть позже исправлю недочёты :yes:

Сообщение отредактировал M I S T E V: 09 июня 2022 - 20:55

0

#9
Пользователь онлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию
Обновлено

       Полностью переработаны алгоритмы системы и её возможности.
       Проведена большая оптимизация.


Отдельная благодарность DeimoS за помощь с оптимизацией!

Сообщение отредактировал M I S T E V: 11 ноября 2022 - 21:38

0

#10
Пользователь офлайн   Jek2010 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию
Полезно!
0

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


  • (5 Страниц) +
  • 1
  • 2
  • 3
  • Последняя »
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

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


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