Untonyst
Умник
Здравствуйте, мне часто писали в ЛС в ВКонтакте с просьбой написать/переделать их систему доната. Я стал озадачен целью создания библиотеки, которая бы упростила бы вам жизнь, мои дорогие новички в скриптинге. На данный момент библиотека находятся находится в стадии бета разработки и имеет несколько функций:
Скрин счетчика
По традиции небольшой пример:
Напишем донат-панель с тримя пунктами: сменить имя, обменять донат-деньги на игровые и купить скин.
Автор: Untonyst
TextDraw:- UpdateDonateTextDraw(игрок) - обновляет донат-счетчик (TextDraw)
- HideDonateTextDraw(игрок) - скрывает донат-счетчик (TextDraw)
- ShowDonateTextDraw(игрок) - показывает донат-счетчик (TextDraw)
Деньги: - ResetPlayerDonateMoney(игрок) - обнуляет количество донат-денег
- SetPlayerDonateMoney(игрок, сумма) - устанавливает количество донат-денег
- GetPlayerDonateMoney(игрок) - получает количество донат-денег
- GivePlayerDonateMoney(игрок, сумма) - выдает донат-деньги
Скрин счетчика
По традиции небольшой пример:
Напишем донат-панель с тримя пунктами: сменить имя, обменять донат-деньги на игровые и купить скин.
PHP:
#include <dc_cmd>
#include <sscanf2>
#include <u_donate>
enum
e_PLAYERS
{
name[MAX_PLAYER_NAME],
money,
skin
};
new player[MAX_PLAYERS][e_PLAYERS];
COMMAND:donate(playerid)
{
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "Донат", "{FFFFFF}Изменить имя\nОбменять на деньги\nИзменить скин", "Выбрать", "Отмена");
}
COMMAND:give_donate(playerid, params[])
{
if(sscanf(params, "i", params[0]))
return 0;
GivePlayerDonateMoney(playerid, params[0]);
UpdateDonateTextDraw(playerid);
ShowDonateTextDraw(playerid);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case 0:
{
if(!response)
return 0;
if(response)
{
switch(listitem)
{
case 0:
{
if(GetPlayerDonateMoney(playerid) < 15)
{
SendClientMessage(playerid, -1, "У вас недостаточно донат-денег !");
return 0;
}
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "../изменить имя", "{FFFFFF}Введите новое имя.", "Купить", "Отмена");
}
case 1:
{
if(GetPlayerDonateMoney(playerid) <= 0)
{
SendClientMessage(playerid, -1, "Вам нечего менять ((99");
return 0;
}
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_MSGBOX, "../обменять на деньги", "{FFFFFF}Вы действительно хотите обменять донат-деньги?", "Да", "Нет");
}
case 2:
{
if(GetPlayerDonateMoney(playerid) < 75)
{
SendClientMessage(playerid, -1, "У вас недостаточно донат-денег !");
return 0;
}
ShowPlayerDialog(playerid, 3, DIALOG_STYLE_INPUT, "../изменить скин", "{FFFFFF}Укажите номер скина, который хотите получить.", "Да", "Нет");
}
}
}
}
case 1:
{
if(!response)
return 0;
if(response)
{
if(!strlen(inputtext))
return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "../изменить имя", "{FFFFFF}Введите новое имя.", "Купить", "Отмена");
if(strlen(inputtext) < MAX_PLAYER_NAME - 18 && strlen(inputtext) > MAX_PLAYER_NAME)
return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "../изменить имя", "{FFFFFF}Введите новое имя.", "Купить", "Отмена");
for(new i = strlen(inputtext) - 1; i != -1; i--)
if((inputtext[i] >= 'a' && inputtext[i] <= 'z') || (inputtext[i] >= 'A' && inputtext[i] <= 'Z') || (inputtext[i] == '_'))
continue;
else
return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "../изменить имя", "{FFFFFF}Введите новое имя.", "Купить", "Отмена");
sscanf(inputtext, "s[24]", player[playerid][name]);
SetPlayerName(playerid, player[playerid][name]);
static const
str[] = "Вы сменили имя на %s";
new
ftm_str[sizeof(str) + (-2) + MAX_PLAYER_NAME];
format(ftm_str, sizeof(ftm_str), str, player[playerid][name]);
SendClientMessage(playerid, -1, ftm_str);
SetPlayerDonateMoney(playerid, GetPlayerDonateMoney(playerid) - 15);
UpdateDonateTextDraw(playerid);
GameTextForPlayer(playerid, "~r~-$15", 2000, 5);
}
}
case 2:
{
if(!response)
return 0;
if(response)
{
static const
str[] = "~g~+$%i";
new
ftm_str[sizeof(str) + (-2) + 8];
format(ftm_str, sizeof(ftm_str), str, GetPlayerDonateMoney(playerid));
GameTextForPlayer(playerid, ftm_str, 2000, 5);
GivePlayerMoney(playerid, GetPlayerDonateMoney(playerid));
ResetPlayerDonateMoney(playerid);
UpdateDonateTextDraw(playerid);
SendClientMessage(playerid, -1, "Вы обменяли донат-деньги на игровые!");
}
}
case 3:
{
if(!response)
return 0;
if(response)
{
new
old_skin;
old_skin = player[playerid][skin];
sscanf(inputtext, "i", player[playerid][skin]);
if(old_skin == player[playerid][skin])
{
player[playerid][skin] = old_skin;
SetPlayerSkin(playerid, player[playerid][skin]);
return 0;
}
SetPlayerDonateMoney(playerid, GetPlayerDonateMoney(playerid) - 75);
GameTextForPlayer(playerid, "~r~-$75", 2000, 5);
UpdateDonateTextDraw(playerid);
SetPlayerSkin(playerid, player[playerid][skin]);
SendClientMessage(playerid, -1, "Вы изменили скин!");
}
}
}
return 1;
}
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Автор: Untonyst
Последнее редактирование:
