Этот склад я больше предпочитаю чем общаги,потому что такой тайник будет доступен для всех игроков в одном месте,итак начну урок: 1.Нам нужно будет добавить несколько "define"(конечно же в самое начало мода,примерно где ваши дефайны туда добавляем эти):
Тут наверно понятно что цифры обозначают ид диалогов,продолжим:
2.Далее добавляем Пикап+3DТекст в OnGameModeInit:
Code
AddStaticPickup(1239,23,121.9291,-294.3183,1.5781,0); // 1239 - Модель пикапа, 23 - тип пикапа, 121.9291,-294.3183,1.5781 - координаты пикапа, 0 - виртуальны мир. Create3DTextLabel("Используй /sklad",COLOR_WHITE, 121.9291,-294.3183,1.5781, 20,0,1);
3.Далее создаём саму команду для вызова диалога склада(public OnPlayerCommandText):
Code
if(strcmp(cmd, "/sklad", true) == 0) //Сама команда, название можете указать своё { if(IsPlayerConnected(playerid)) { if(IsPlayerInRangeOfPoint(playerid, 5.0, 121.9291,-294.3183,1.5781)) //Проверка на Координаты игрока (Можете указать те же, которые были указаны в координатах пикапа { ShowPlayerDialog(playerid,DIALOG_TSAVE,DIALOG_STYLE_LIST,"Выберите функцию из списка (Хранилище):","* Информация\n* Положить вещи в хранилище\n* Достать вещи из хранилища","ACCEPT","CANCEL"); //Сам диалог. DIALOG_TSAVE - ID диалога, который мы указали в #define, DIALOG_STYLE_LIST - Стиль (Тип) диалога. Далее идёт само меню } } return 1; }
4.Итак, создаём сами диалоги в OnDialogResponse:
Code
if(dialogid == DIALOG_TSAVE) //ID диалога из #define { if(response) { if(listitem == 0) { new dptMats = PlayerInfo[playerid][ptMats]; //Объявляем новые переменны для ptMats и ptDrugs (Их можно и не добавлять) new dptDrugs = PlayerInfo[playerid][ptDrugs]; format(string,sizeof(string),"Количество Материалов на Складе: %d\n\nКоличество Наркотиков на Складе: %d", dptMats,dptDrugs); ShowPlayerDialog(playerid,DIALOG_TINFO,DIALOG_STYLE_MSGBOX,"Информация о Складе",string,"ACCEPT",""); } if(listitem == 1) { ShowPlayerDialog(playerid,DIALOG_TINPUT,DIALOG_STYLE_INPUT,"Положить вещи в Склад","Введите наименование вещи (Наркотики/Материалы)","DONE","BACK"); } if(listitem == 2) { ShowPlayerDialog(playerid,DIALOG_TOUTPUT,DIALOG_STYLE_INPUT,"Взять вещи из Склада","Введите наименование вещи (Наркотики/Материалы)","DONE","BACK"); } } }
Code
if(dialogid == DIALOG_TINPUT) { if(response) { if(!strlen(inputtext)) //Если ничего не введено, то... { ShowPlayerDialog(playerid,DIALOG_TINPUT,DIALOG_STYLE_INPUT,"Положить вещи в Склад","Введите наименование вещи (Наркотики/Материалы)","DONE","BACK"); } else if(!strcmp(inputtext, "Материалы", true)) //Если введено Материалы, то... { ShowPlayerDialog(playerid,DIALOG_TINMATS,DIALOG_STYLE_INPUT,"Положить Материалы на Склад","Введите кол-во материалов, которое вы хотите положить на склад","ACCEPT","BACK"); } else if(!strcmp(inputtext, "Наркотики", true))//Если введено Наркотики, то... { ShowPlayerDialog(playerid,DIALOG_TINDRUGS,DIALOG_STYLE_INPUT,"Положить Наркотики на Склад","Введите кол-во наркотиков, которое вы хотите положить на склад","ACCEPT","BACK"); } else //Если введена какая-то чушь, то.... { ShowPlayerDialog(playerid,DIALOG_TINPUT,DIALOG_STYLE_INPUT,"Положить вещи в Склад","Введите наименование вещи (Наркотики/Материалы)","DONE","BACK"); } } else ShowPlayerDialog(playerid,DIALOG_TSAVE,DIALOG_STYLE_LIST,"Выберите функцию из списка (Хранилище):","* Информация\n* Положить вещи в хранилище\n* Достать вещи из хранилища","ACCEPT","CANCEL"); } if(dialogid == DIALOG_TOUTPUT) { if(response) { if(!strlen(inputtext)) { S howPlayerDialog(playerid,DIALOG_TOUTPUT,DIALOG_STYLE_INPUT,"Взять вещи из Склада","Введите наименование вещи (Наркотики/Материалы)","DONE","BACK"); } else if(!strcmp(inputtext, "Материалы", true)) { ShowPlayerDialog(playerid,DIALOG_TOUTMATS,DIALOG_STYLE_INPUT,"Взять Материалы со Склада","Введите кол-во материалов, которое вы хотите взять со склада","ACCEPT","BACK"); } else if(!strcmp(inputtext, "Наркотики", true)) { ShowPlayerDialog(playerid,DIALOG_TOUTDRUGS,DIALOG_STYLE_INPUT,"Взять Наркотики со Склада","Введите кол-во наркотиков, которое вы хотите взять на склада","ACCEPT","BACK"); } else { ShowPlayerDialog(playerid,DIALOG_TOUTPUT,DIALOG_STYLE_ INPUT,"В зять вещи из Склада","Введите наименование вещи (Наркотики/Материалы)","DONE","BACK"); } } else ShowPlayerDialog(playerid,DIALOG_TSAVE,DIALOG_STYLE_LIST,"Выберите функцию из списка (Хранилище):","* Информация\n* Положить вещи в хранилище\n* Достать вещи из хранилища","ACCEPT","CANCEL"); }
Code
if(dialogid == DIALOG_TINMATS) { if(response) { if(!strlen(inputtext)) { S howPlayerDialog(playerid,DIALOG_TINMATS,DIALOG_STYLE_INPUT,"Положить Материалы на Склад","Введите кол-во материалов, которое вы хотите положить на склад","ACCEPT","BACK"); } new input = strval(inputtext); //Объявляем переменной input введённый текст if(input > PlayerInfo[playerid][pMats] || input < 1) //Если введённый текст больше реального кол-во материалов у персонажа, то будет писать об ошибке { ShowPlayerDialog(playerid,DIALOG_TINMATS,DIALOG_STYLE_INPUT,"Положить Материалы на Склад","У вас нету столько Материалов. Повторите попытку","ACCEPT",""); } else { PlayerInfo[playerid][pMats] -= input; //Отнимаем наркотики PlayerInfo[playerid][ptMats] += input; //Добавляем их на склад format(string,sizeof(string),"* Вы успешно положили %d материалов на склад. Всего материалов: %d", input,PlayerInfo[playerid][ptMats]); SendClientMessage(playerid,COLOR_WHITE, string); //Сообщение об успешной опреции } } else ShowPlayerDialog(playerid,DIALOG_TINPUT,DIALOG_STYLE_INPUT,"Положить вещи в Склад","Введите наименование вещи (Наркотики/Материалы)","DONE","BACK"); }
Code
if(dialogid == DIALOG_TINDRUGS) { if(response) { if(!strlen(inputtext)) { S howPlayerDialog(playerid,DIALOG_TINDRUGS,DIALOG_STYLE_INPUT,"Положить Наркотики на Склад","Введите кол-во наркотиков, которое вы хотите положить на склад","ACCEPT","BACK"); } new input = strval(inputtext); if(input > PlayerInfo[playerid][pDrugs] || input < 1) { ShowPlayerDialog(playerid,DIALOG_TINDRUGS,DIALOG_STYLE_INPUT,"Положить Наркотики на Склад","У вас нету столько Наркотиков. Повторите попытку","ACCEPT",""); } else { PlayerInfo[playerid][pDrugs] -= input; PlayerInfo[playerid][ptDrugs] += input; format(string,sizeof(string),"* Вы успешно положили %d наркотиков на склад. Всего наркотиков: %d", input,PlayerInfo[playerid][ptDrugs]); SendClientMessage(playerid,COLOR_WHITE, string); } } else ShowPlayerDialog(playerid,DIALOG_TINPUT,DIALOG_STYLE_INPUT,"Положить вещи в Склад","Введите наименование вещи (Наркотики/Материалы)","DONE","BACK"); }
Code
if(dialogid == DIALOG_TOUTMATS) { if(response) { if(!strlen(inputtext)) { S howPlayerDialog(playerid,DIALOG_TOUTMATS,DIALOG_STYLE_INPUT,"Взять Материалы со Склада","Введите кол-во материалов, которое вы хотите взять со склада","ACCEPT","BACK"); } new input = strval(inputtext); if(input > PlayerInfo[playerid][ptMats] || input < 1) //Если введёные цифры больше того, сколько на складе, выдаст ошибку { ShowPlayerDialog(playerid,DIALOG_TOUTMATS,DIALOG_STYLE_INPUT,"Взять Материалы со Склада","У вас нету столько Материалов на Складе. Повторите Попытку","ACCEPT",""); } else { PlayerInfo[playerid][pMats] += input; //Прибавляем материалов PlayerInfo[playerid][ptMats] -= input; //Отнимает их со склада format(string,sizeof(string),"* Вы успешно взяли %d материалов со склада. Материалов Осталось: %d", input,PlayerInfo[playerid][ptMats]); SendClientMessage(playerid,COLOR_WHITE, string); //Сообщение об успешной операции } } else ShowPlayerDialog(playerid,DIALOG_TOUTPUT,DIALOG_STYLE_INPUT,"Взять вещи из Склада","Введите наименование вещи (Наркотики/Материалы)","DONE","BACK"); }
Code
if(dialogid == DIALOG_TOUTDRUGS) { if(response) { if(!strlen(inputtext)) { S howPlayerDialog(playerid,DIALOG_TOUTDRUGS,DIALOG_STYLE_INPUT,"Взять Наркотики со Склада","Введите кол-во наркотиков, которое вы хотите взять на склада","ACCEPT","BACK"); } new input = strval(inputtext); if(input > PlayerInfo[playerid][ptDrugs] || input < 1) { ShowPlayerDialog(playerid,DIALOG_TOUTDRUGS,DIALOG_STYLE_INPUT,"Взять Наркотики со Склада","У вас нету столько Наркотиков на Складе. Повторите Попытку","ACCEPT",""); } else { PlayerInfo[playerid][pDrugs] += input; PlayerInfo[playerid][ptDrugs] -= input; format(string,sizeof(string),"* Вы успешно взяли %d наркотиков со склада. Наркотиков Осталось: %d", input,PlayerInfo[playerid][ptDrugs]); SendClientMessage(playerid,COLOR_WHITE, string); } } else ShowPlayerDialog(playerid,DIALOG_TOUTPUT,DIALOG_STYLE_INPUT,"Взять вещи из Склада","Введите наименование вещи (Наркотики/Материалы)","DONE","BACK"); }