PDA

Просмотр полной версии : [Мануал] Система WEB-сайтов



#Djuga
04.05.2018, 23:17
Здравствуйте уважаемые пользователи портала.
Сегодня решил сделать для вас систему интернета.

Примечание: у системы интернета, которая будет описана ниже, есть несколько зависимостей от плагинов/инклудов:
MySQL R41-2+
Командный процессор (Pawn.CMD / DC_CMD / etc.)
CRP

Извиняйте за текстдравы, я не Бог в их рисовании(



И так, приступим.

Первоначально, в enum игрока (PlayerInfo, pData, PI...) добавляем pWeb.

pWeb - При создании сайта, игроку присваивается его ID.

Также, создаём таблицу в вашей базе данных:


CREATE TABLE IF NOT EXISTS `sites` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Domain` varchar(14) NOT NULL,
`Owner` varchar(24) NOT NULL,
`Info1` varchar(124) NOT NULL,
`Info2` varchar(124) NOT NULL,
`Info3` varchar(124) NOT NULL,
`Info4` varchar(124) NOT NULL,
`Header` varchar(15) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;



1. Ко всем переменным:


new
PlayerText:t_player_WebSite[MAX_PLAYERS][6],
Text:t_WebSite[6];


new
gDomain[MAX_PLAYERS][14],
gFirstString[MAX_PLAYERS][144],
gSecondString[MAX_PLAYERS][144],
gThirdString[MAX_PLAYERS][144],
gFourthString[MAX_PLAYERS][144];

2. Ко всем enum:


enum
{
DLG_SHOW_FUNC_LIST = 1, /*замените на свободный ID диалога*/
DLG_FIND_WEB_SITE,
DLG_CREATE_WEB_SITE,
DLG_CREATE_STRING_1,
DLG_CREATE_STRING_2,
DLG_CREATE_STRING_3,
DLG_CREATE_STRING_4,
DLG_CREATE_HEADER,
DLG_SHOW_SETTINGS,
DLG_EDIT_HEADER,
DLG_EDIT_LINE,
DLG_SHOW_LIST
};

3. В коллбэк OnGameModeInit:


t_WebSite[0] = TextDrawCreate(543.610229, 36.500000, "usebox");
TextDrawLetterSize(t_WebSite[0], 0.000000, 38.292018);
TextDrawTextSize(t_WebSite[0], 86.550506, 0.000000);
TextDrawAlignment(t_WebSite[0], 1);
TextDrawColor(t_WebSite[0], 255);
TextDrawUseBox(t_WebSite[0], true);
TextDrawBoxColor(t_WebSite[0], 255);
TextDrawSetShadow(t_WebSite[0], 0);
TextDrawSetOutline(t_WebSite[0], 0);
TextDrawFont(t_WebSite[0], 1);
TextDrawSetSelectable(t_WebSite[0], true);

t_WebSite[1] = TextDrawCreate(113.508087, 47.583343, "usebox");
TextDrawLetterSize(t_WebSite[1], 0.000000, -0.090189);
TextDrawTextSize(t_WebSite[1], 94.515380, 0.000000);
TextDrawAlignment(t_WebSite[1], 1);
TextDrawColor(t_WebSite[1], 0);
TextDrawUseBox(t_WebSite[1], true);
TextDrawBoxColor(t_WebSite[1], -1);
TextDrawSetShadow(t_WebSite[1], 0);
TextDrawSetOutline(t_WebSite[1], 0);
TextDrawFont(t_WebSite[1], 1);

t_WebSite[2] = TextDrawCreate(113.571044, 55.583343, "usebox");
TextDrawLetterSize(t_WebSite[2], 0.000000, -0.137042);
TextDrawTextSize(t_WebSite[2], 94.515380, 0.000000);
TextDrawAlignment(t_WebSite[2], 1);
TextDrawColor(t_WebSite[2], 0);
TextDrawUseBox(t_WebSite[2], true);
TextDrawBoxColor(t_WebSite[2], -1);
TextDrawSetShadow(t_WebSite[2], 0);
TextDrawSetOutline(t_WebSite[2], 0);
TextDrawFont(t_WebSite[2], 0);

t_WebSite[3] = TextDrawCreate(113.634002, 63.000007, "usebox");
TextDrawLetterSize(t_WebSite[3], 0.000000, -0.137042);
TextDrawTextSize(t_WebSite[3], 94.515380, 0.000000);
TextDrawAlignment(t_WebSite[3], 1);
TextDrawColor(t_WebSite[3], 0);
TextDrawUseBox(t_WebSite[3], true);
TextDrawBoxColor(t_WebSite[3], -1);
TextDrawSetShadow(t_WebSite[3], 0);
TextDrawSetOutline(t_WebSite[3], 0);
TextDrawFont(t_WebSite[3], 0);

t_WebSite[4] = TextDrawCreate(543.610351, 37.083335, "usebox");
TextDrawLetterSize(t_WebSite[4], 0.000000, 1.757407);
TextDrawTextSize(t_WebSite[4], 522.743652, 0.000000);
TextDrawAlignment(t_WebSite[4], 1);
TextDrawColor(t_WebSite[4], 0);
TextDrawUseBox(t_WebSite[4], true);
TextDrawBoxColor(t_WebSite[4], -2147483393);
TextDrawSetShadow(t_WebSite[4], 0);
TextDrawSetOutline(t_WebSite[4], 0);
TextDrawFont(t_WebSite[4], 0);

t_WebSite[5] = TextDrawCreate(528.960510, 36.750000, "X");
TextDrawLetterSize(t_WebSite[5], 0.377847, 1.547499);
TextDrawTextSize(t_WebSite[5], 537.862426, 61.249988);
TextDrawAlignment(t_WebSite[5], 1);
TextDrawColor(t_WebSite[5], -1);
TextDrawUseBox(t_WebSite[5], true);
TextDrawBoxColor(t_WebSite[5], 0);
TextDrawSetShadow(t_WebSite[5], 0);
TextDrawSetOutline(t_WebSite[5], 1);
TextDrawBackgroundColor(t_WebSite[5], 51);
TextDrawFont(t_WebSite[5], 2);
TextDrawSetProportional(t_WebSite[5], 1);
TextDrawSetSelectable(t_WebSite[5], true);

4. В коллбэк OnPlayerClickTextDraw:


if(clickedid == t_WebSite[5])
{
TextDrawHideForPlayer(playerid, t_WebSite[0]);
TextDrawHideForPlayer(playerid, t_WebSite[1]);
TextDrawHideForPlayer(playerid, t_WebSite[2]);
TextDrawHideForPlayer(playerid, t_WebSite[3]);
TextDrawHideForPlayer(playerid, t_WebSite[4]);
TextDrawHideForPlayer(playerid, t_WebSite[5]);

PlayerTextDrawHide(playerid, t_player_WebSite[playerid][0]);
PlayerTextDrawHide(playerid, t_player_WebSite[playerid][1]);
PlayerTextDrawHide(playerid, t_player_WebSite[playerid][2]);
PlayerTextDrawHide(playerid, t_player_WebSite[playerid][3]);
PlayerTextDrawHide(playerid, t_player_WebSite[playerid][4]);
PlayerTextDrawHide(playerid, t_player_WebSite[playerid][5]);

PlayerTextDrawDestroy(playerid, t_player_WebSite[playerid][0]);
PlayerTextDrawDestroy(playerid, t_player_WebSite[playerid][1]);
PlayerTextDrawDestroy(playerid, t_player_WebSite[playerid][2]);
PlayerTextDrawDestroy(playerid, t_player_WebSite[playerid][3]);
PlayerTextDrawDestroy(playerid, t_player_WebSite[playerid][4]);
PlayerTextDrawDestroy(playerid, t_player_WebSite[playerid][5]);

CancelSelectTextDraw(playerid);

cmd::internet(playerid);
}

5. В коллбэк OnDialogResponse:


case DLG_SHOW_FUNC_LIST:
{
if(0 == response)
return true;

switch(listitem)
{
case 0: ShowPlayerDialog(playerid, DLG_FIND_WEB_SITE, DIALOG_STYLE_INPUT, "Найти сайт", "Введите домен сайта", "Далее", "Отмена");
case 1:
{
if(/*PlayerInfo[playerid][pWeb]*/)
return SendClientMessage(playerid, -1, "У вас уже есть свой WEB сайт!");
ShowPlayerDialog(playerid, DLG_CREATE_WEB_SITE, DIALOG_STYLE_INPUT, "ownsite.net", "Хотите создать свой собственный сайт для бизнеса или личного блога?\nТогда вы попали по нужному адресу.\n\nЭто займёт всего пару минут.\nГотовы? Тогда впишите домен вашего сайта в строку!\nПример: pawno-info.ru, vk.com.", "Далее", "Отмена");
}
case 2:
{
if(!/*PlayerInfo[playerid][pWeb]*/)
return SendClientMessage(playerid, -1, "У вас нет своего WEB сайта!");

ShowPlayerDialog(playerid, DLG_SHOW_SETTINGS, DIALOG_STYLE_LIST, "Найстройки сайта", "1. Изменить линию 1\n2. Изменить линию 2\n3. Изменить линию 3\n4. Изменить линию 4\nИзменить заголовок сайта", "Далее", "Отмена");
}
}
}

case DLG_SHOW_SETTINGS:
{
if(0 == response)
return true;

if((0 <= listitem <= 3))
return ShowPlayerDialog(playerid, DLG_EDIT_LINE, DIALOG_STYLE_INPUT, "Новый текст", "Введите новый текст для линии", "Далее", "Отмена"), SetPVarInt(playerid, "listitem", listitem);

ShowPlayerDialog(playerid, DLG_EDIT_HEADER, DIALOG_STYLE_INPUT, "Новый заголовок", "Введите новый заголовок", "Далее", "Отмена");
}

case DLG_EDIT_LINE:
{
if(0 == response)
return true;

if(!(5 <= strlen(inputtext) <= 144))
return SendClientMessage(playerid, -1, !"Не меньше 5 и не больше 144 символов!");

new
query[46+144+11];

format(query, sizeof query, "UPDATE `sites` SET `Info%d` = '%s' WHERE `ID` = '%d'", GetPVarInt(playerid, "listitem")+1, inputtext, /*PlayerInfo[playerid][pWeb]*/);
mysql_query(/*ID подключения к MySQL*/, query, false);

SendClientMessage(playerid, -1, "Линия успешно изменена!");

DeletePVar(playerid, "listitem");
}

case DLG_EDIT_HEADER:
{
if(0 == response)
return true;

if(!(5 <= strlen(inputtext) <= 15))
return SendClientMessage(playerid, -1, !"Не меньше 5 и не больше 15 символов!");

new
query[48+26];

format(query, sizeof query, "UPDATE `sites` SET `Header` = '%s' WHERE `ID` = '%d'", inputtext, /*PlayerInfo[playerid][pWeb]*/);
mysql_query(/*ID подключения к MySQL*/, query, false);

SendClientMessage(playerid, -1, "заголовок успешно измененён!");

}

case DLG_FIND_WEB_SITE:
{
if(0 == response)
return true;

if(!(6 <= strlen(inputtext) <= 14))
return SendClientMessage(playerid, -1, !"Неверно введён домен.");

new
query[56];

format(query, sizeof query, "SELECT * FROM `sites` WHERE `Domain` = '%s'", inputtext);

mysql_tquery(/*ID подключения к MySQL*/, query, "@__FindWebSite", "ds", playerid, inputtext);
}

case DLG_CREATE_WEB_SITE:
{
if(0 == response)
return true;

// if(strfind(inputtext, ".com", true) == -1 || strfind(inputtext, ".ru", true) == -1 || strfind(inputtext, ".net", true) == -1)
// return SendClientMessage(playerid, -1, "Не верно введён домен. (.com, .ru, .net)");

if(!(6 <= strlen(inputtext) <= 14))
return SendClientMessage(playerid, -1, !"Неверно введён домен.");

new
query[42+14];

new
Cache:sql_query;

format(query, sizeof query, "SELECT * FROM `sites` WHERE `Domain` = '%s'", inputtext);
sql_query = mysql_query(/*ID подключения к MySQL*/, query, true);


if(cache_num_rows() > 0)
return SendClientMessage(playerid, -1, !"Данный домен уже занят!");

cache_delete(sql_query);

gDomain[playerid][0] = EOS;

strcat(gDomain[playerid], inputtext, 14);

ShowPlayerDialog(playerid, DLG_CREATE_STRING_1, DIALOG_STYLE_INPUT, "ownsite.net", "Отлично, вы выбрали домен! Теперь надо настроить информацию.\nВсего на сайте можно разместить 4 строки по 128 символов.\nВведите текст первой строки.", "Далее", "Отмена");
}

case DLG_CREATE_STRING_1:
{
if(0 == response)
return true;

if(!(5 <= strlen(inputtext) <= 144))
return SendClientMessage(playerid, -1, !"Не меньше 5 и не больше 144 символов!");

gFirstString[playerid][0] = EOS;

strcat(gFirstString[playerid], inputtext, 144);

ShowPlayerDialog(playerid, DLG_CREATE_STRING_2, DIALOG_STYLE_INPUT, "ownsite.net", "Отлично, вы ввели текст первой строки!\nВведите текст второй строки.", "Далее", "Отмена");
}

case DLG_CREATE_STRING_2:
{
if(0 == response)
return true;

if(!(5 <= strlen(inputtext) <= 144))
return SendClientMessage(playerid, -1, !"Не меньше 5 и не больше 144 символов!");

gSecondString[playerid][0] = EOS;

strcat(gSecondString[playerid], inputtext, 144);

ShowPlayerDialog(playerid, DLG_CREATE_STRING_3, DIALOG_STYLE_INPUT, "ownsite.net", "Отлично, вы ввели текст втророй строки!\nВведите текст третей строки.", "Далее", "Отмена");
}

case DLG_CREATE_STRING_3:
{
if(0 == response)
return true;

if(!(5 <= strlen(inputtext) <= 144))
return SendClientMessage(playerid, -1, !"Не меньше 5 и не больше 144 символов!");

gThirdString[playerid][0] = EOS;

strcat(gThirdString[playerid], inputtext, 144);

ShowPlayerDialog(playerid, DLG_CREATE_STRING_4, DIALOG_STYLE_INPUT, "ownsite.net", "Отлично, вы ввели текст третей строки!\nВведите текст четвёртой строки.", "Далее", "Отмена");
}

case DLG_CREATE_STRING_4:
{
if(0 == response)
return true;

if(!(5 <= strlen(inputtext) <= 144))
return SendClientMessage(playerid, -1, !"Не меньше 5 и не больше 144 символов!");

gFourthString[playerid][0] = EOS;

strcat(gFourthString[playerid], inputtext, 144);

ShowPlayerDialog(playerid, DLG_CREATE_HEADER, DIALOG_STYLE_INPUT, "ownsite.net", "Отлично, вы ввели текст четвёртой строки\nВведите заголовок для сайта", "Далее", "Отмена");

}

case DLG_CREATE_HEADER:
{
if(0 == response)
return true;

ShowPlayerDialog(playerid, DLG_SHOW_LIST, DIALOG_STYLE_MSGBOX, "ownsite.net", "Отлично, ваш сайт полностью готов и оформлен!\nПридётся подождать, пока обновятся DNS записи и сайт станет доступен.", "Далее", "Отмена");

new
query[152+MAX_PLAYER_NAME+144*4];

format(query, sizeof(query), "INSERT INTO `sites` (`Domain`, `Owner`, `Info1`, `Info2`, `Info3`, `Info4`, `Header`) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s')", gDomain[playerid], /*Перменная, которая хранит NickName игрока*/, gFirstString[playerid], gSecondString[playerid], gThirdString[playerid], gFourthString[playerid], inputtext);
mysql_query(/*ID подключения к MySQL*/, query, false);



new
Cache:sql_query;

format(query, sizeof query, "SELECT * FROM `sites` WHERE `Owner` = '%s'", /*Перменная, которая хранит NickName игрока*/);
sql_query = mysql_query(/*ID подключения к MySQL*/, query, true);


if(cache_num_rows() > 0) cache_get_value_name_int(0, "ID", /*PlayerInfo[playerid][pWeb]*/);

/*тут делаем ваше сохранение ID веб сайта*/

cache_delete(sql_query);
}

case DLG_SHOW_LIST: cmd::internet(playerid);

6. Ко всем коллбэкам:


@__FindWebSite(playerid, site[]);
@__FindWebSite(playerid, site[])
{
new
rows;

cache_get_row_count(rows);

if(!rows)
return SendClientMessage(playerid, -1, !"Данный WEB ресурс не найден!");

new
gHeader[15];

cache_get_value_name(0, "Info1", gFirstString[playerid], 144);

cache_get_value_name(0, "Info2", gSecondString[playerid], 144);

cache_get_value_name(0, "Info3", gThirdString[playerid], 144);

cache_get_value_name(0, "Info4", gFourthString[playerid], 144);

cache_get_value_name(0, "Header", gHeader, 15);

t_player_WebSite[playerid][0] = CreatePlayerTextDraw(playerid, 432.444671, 364.583404, ".");
PlayerTextDrawLetterSize(playerid, t_player_WebSite[playerid][0], 0.331464, 1.168333);
PlayerTextDrawAlignment(playerid, t_player_WebSite[playerid][0], 1);
PlayerTextDrawColor(playerid, t_player_WebSite[playerid][0], -1);
PlayerTextDrawSetShadow(playerid, t_player_WebSite[playerid][0], 0);
PlayerTextDrawSetOutline(playerid, t_player_WebSite[playerid][0], 1);
PlayerTextDrawBackgroundColor(playerid, t_player_WebSite[playerid][0], 51);
PlayerTextDrawFont(playerid, t_player_WebSite[playerid][0], 2);
PlayerTextDrawSetProportional(playerid, t_player_WebSite[playerid][0], 1);

t_player_WebSite[playerid][1] = CreatePlayerTextDraw(playerid, 241.288269, 110.833335, ".");
PlayerTextDrawLetterSize(playerid, t_player_WebSite[playerid][1], 0.409238, 1.535833);
PlayerTextDrawTextSize(playerid, t_player_WebSite[playerid][1], 385.124389, -36.166664);
PlayerTextDrawAlignment(playerid, t_player_WebSite[playerid][1], 1);
PlayerTextDrawColor(playerid, t_player_WebSite[playerid][1], -1);
PlayerTextDrawSetShadow(playerid, t_player_WebSite[playerid][1], 0);
PlayerTextDrawSetOutline(playerid, t_player_WebSite[playerid][1], 1);
PlayerTextDrawBackgroundColor(playerid, t_player_WebSite[playerid][1], 51);
PlayerTextDrawFont(playerid, t_player_WebSite[playerid][1], 2);
PlayerTextDrawSetProportional(playerid, t_player_WebSite[playerid][1], 1);

t_player_WebSite[playerid][2] = CreatePlayerTextDraw(playerid, 211.771560, 167.999969, ".");
PlayerTextDrawLetterSize(playerid, t_player_WebSite[playerid][2], 0.247130, 1.308333);
PlayerTextDrawAlignment(playerid, t_player_WebSite[playerid][2], 1);
PlayerTextDrawColor(playerid, t_player_WebSite[playerid][2], -1);
PlayerTextDrawSetShadow(playerid, t_player_WebSite[playerid][2], 0);
PlayerTextDrawSetOutline(playerid, t_player_WebSite[playerid][2], 1);
PlayerTextDrawBackgroundColor(playerid, t_player_WebSite[playerid][2], 51);
PlayerTextDrawFont(playerid, t_player_WebSite[playerid][2], 1);
PlayerTextDrawSetProportional(playerid, t_player_WebSite[playerid][2], 1);

t_player_WebSite[playerid][3] = CreatePlayerTextDraw(playerid, 211.834518, 209.833297, ".");
PlayerTextDrawLetterSize(playerid, t_player_WebSite[playerid][3], 0.247130, 1.308333);
PlayerTextDrawAlignment(playerid, t_player_WebSite[playerid][3], 1);
PlayerTextDrawColor(playerid, t_player_WebSite[playerid][3], -1);
PlayerTextDrawSetShadow(playerid, t_player_WebSite[playerid][3], 0);
PlayerTextDrawSetOutline(playerid, t_player_WebSite[playerid][3], 1);
PlayerTextDrawBackgroundColor(playerid, t_player_WebSite[playerid][3], 51);
PlayerTextDrawFont(playerid, t_player_WebSite[playerid][3], 1);
PlayerTextDrawSetProportional(playerid, t_player_WebSite[playerid][3], 1);

t_player_WebSite[playerid][4] = CreatePlayerTextDraw(playerid, 212.365997, 253.416625, ".");
PlayerTextDrawLetterSize(playerid, t_player_WebSite[playerid][4], 0.247130, 1.308333);
PlayerTextDrawAlignment(playerid, t_player_WebSite[playerid][4], 1);
PlayerTextDrawColor(playerid, t_player_WebSite[playerid][4], -1);
PlayerTextDrawSetShadow(playerid, t_player_WebSite[playerid][4], 0);
PlayerTextDrawSetOutline(playerid, t_player_WebSite[playerid][4], 1);
PlayerTextDrawBackgroundColor(playerid, t_player_WebSite[playerid][4], 51);
PlayerTextDrawFont(playerid, t_player_WebSite[playerid][4], 1);
PlayerTextDrawSetProportional(playerid, t_player_WebSite[playerid][4], 1);

t_player_WebSite[playerid][5] = CreatePlayerTextDraw(playerid, 212.428955, 299.333282, ".");
PlayerTextDrawLetterSize(playerid, t_player_WebSite[playerid][5], 0.247130, 1.308333);
PlayerTextDrawAlignment(playerid, t_player_WebSite[playerid][5], 1);
PlayerTextDrawColor(playerid, t_player_WebSite[playerid][5], -1);
PlayerTextDrawSetShadow(playerid, t_player_WebSite[playerid][5], 0);
PlayerTextDrawSetOutline(playerid, t_player_WebSite[playerid][5], 1);
PlayerTextDrawBackgroundColor(playerid, t_player_WebSite[playerid][5], 51);
PlayerTextDrawFont(playerid, t_player_WebSite[playerid][5], 1);
PlayerTextDrawSetProportional(playerid, t_player_WebSite[playerid][5], 1);

if(strlen(gFirstString[playerid]) > 50) strins(gFirstString[playerid], "~n~", 51);
if(strlen(gFirstString[playerid]) > 104) strins(gFirstString[playerid], "~n~", 100);

if(strlen(gSecondString[playerid]) > 50) strins(gSecondString[playerid], "~n~", 51);
if(strlen(gSecondString[playerid]) > 104) strins(gSecondString[playerid], "~n~", 100);

if(strlen(gThirdString[playerid]) > 50) strins(gThirdString[playerid], "~n~", 51);
if(strlen(gThirdString[playerid]) > 104) strins(gThirdString[playerid], "~n~", 100);

if(strlen(gFourthString[playerid]) > 50) strins(gFourthString[playerid], "~n~", 51);
if(strlen(gFourthString[playerid]) > 104) strins(gFourthString[playerid], "~n~", 100);

PlayerTextDrawSetString(playerid, t_player_WebSite[playerid][0], site);

PlayerTextDrawSetString(playerid, t_player_WebSite[playerid][1], gHeader);

PlayerTextDrawSetString(playerid, t_player_WebSite[playerid][2], gFirstString[playerid]);

PlayerTextDrawSetString(playerid, t_player_WebSite[playerid][3], gSecondString[playerid]);

PlayerTextDrawSetString(playerid, t_player_WebSite[playerid][4], gThirdString[playerid]);

PlayerTextDrawSetString(playerid, t_player_WebSite[playerid][5], gFourthString[playerid]);

TextDrawShowForPlayer(playerid, t_WebSite[0]);
TextDrawShowForPlayer(playerid, t_WebSite[1]);
TextDrawShowForPlayer(playerid, t_WebSite[2]);
TextDrawShowForPlayer(playerid, t_WebSite[3]);
TextDrawShowForPlayer(playerid, t_WebSite[4]);
TextDrawShowForPlayer(playerid, t_WebSite[5]);

PlayerTextDrawShow(playerid, t_player_WebSite[playerid][0]);
PlayerTextDrawShow(playerid, t_player_WebSite[playerid][1]);
PlayerTextDrawShow(playerid, t_player_WebSite[playerid][2]);
PlayerTextDrawShow(playerid, t_player_WebSite[playerid][3]);
PlayerTextDrawShow(playerid, t_player_WebSite[playerid][4]);
PlayerTextDrawShow(playerid, t_player_WebSite[playerid][5]);


SelectTextDraw(playerid, 0xFFFFFFFF);

return true;
}

7. Ко всем командам:


CMD:internet(playerid) return ShowPlayerDialog(playerid, DLG_SHOW_FUNC_LIST, DIALOG_STYLE_LIST, "Интернет", "1. Найти сайт\n2. Создать сайт\n3. Редактировать сайт", "Далее", "Отмена");




https://i.imgur.com/SDbI44Q.png
https://i.imgur.com/qjP0sIo.png
https://i.imgur.com/YEZKUrr.png
https://i.imgur.com/pJB8bwv.png




При размещении на другие порталы, указывайте автора - #Djuga

johnlaw
05.05.2018, 06:35
отлично, может есть скрины?

#Djuga
05.05.2018, 13:21
отлично, может есть скрины?

Добавил в тему