Рекомендованные сообщения



Не найдено.

2 posts in this topic

Дарова, как сделать так что бы в диалоговое меню нельзя было вводить символы, что бы разрешено было вводить только цифры

Спойлер

/*
   Аренда авто [Rent a car] v 0.3 [Beta | Final]
   |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
   || Автор: Spirit                                                           ||
   || Благодарность за помощь: OFFREAL, OkStyle,InFluеNcе                     ||
   || Специально для: ~pawno.ru                                               ||
   |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
   || Удаление копирайтов запрещено.При копировании на другой ресурс,         ||
   || указывайте автора!                                                      ||
   |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/
#include <a_samp>
#include <zcmd>
//==============================================================================
#define R_F                                                                  943//Ид диалога
#define R_G_V                                                                944//--&&--
#define COLOR_WHITE                                                   0xFFFFFFAA//Цвет (белый)
#define MAX_RENT_VEH                                                          100//Максимум авто на аренду
//==============================================================================
enum RInfo
{
    Rcarid,
    Rprice,
    ROwned
};
new RentCar[MAX_RENT_VEH][RInfo];
new IsRentableVehicle[MAX_VEHICLES];
new OwnedName[MAX_PLAYER_NAME];
new RentedTime[MAX_PLAYERS];
new PlayerUseRentCar[MAX_PLAYERS];
new RentTimer;


public OnFilterScriptInit()
{
    print("=================================================");
	print("=[!]Rent Cars v0.3 by Spirit Sucsessfuly loaded!=");
	print("=================================================");
	SetTimer("CountRentedVehicles", 1000, 0);
/*    [Авто для аренды. Добавляйте свои ориентируясь на написанный ниже пример.] */
/*Параметры добавления: -AddRentVehicle(ид, модель, X, Y, Z, Rot, Цвет1, Цвет2, цена аренды за 1 минуту);*/
//AddRentVehicle(1,470,2029.19995117,1350.80004883,10.89999962,272.00000000,2,2,150,10); //Пример 1
//==============================================================================
//==============================Спавн===========================================
    AddRentVehicle(1,462,1160.9829000,-1729.1714000,13.3076000,10.800000190735,-1,-1,30); //Пример 1
    AddRentVehicle(2,462,1159.8400000,-1729.1714000,13.3076000,10.800000190735,-1,-1,30);
    AddRentVehicle(3,462,1158.7400000,-1729.1714000,13.3076000,10.800000190735,-1,-1,30);
    AddRentVehicle(4,462,1157.5400000,-1729.1714000,13.3076000,10.800000190735,-1,-1,30);
    AddRentVehicle(5,462,1156.4200000,-1729.1714000,13.3076000,10.800000190735,-1,-1,30);
    AddRentVehicle(6,462,1155.3400000,-1729.1714000,13.3076000,10.800000190735,-1,-1,30);
    AddRentVehicle(7,462,1154.2800000,-1729.1714000,13.3076000,10.800000190735,-1,-1,30);
    AddRentVehicle(8,462,1153.2000000,-1729.1714000,13.3076000,10.800000190735,-1,-1,30);
    AddRentVehicle(9,462,1152.0601000,-1729.1714000,13.3076000,10.800000190735,-1,-1,30);
    AddRentVehicle(10,462,1150.9000000,-1729.1714000,13.3076000,10.800000190735,-1,-1,30);
    AddRentVehicle(11,462,1149.7800000,-1729.1714000,13.3076000,10.800000190735,-1,-1,30);
    AddRentVehicle(12,462,1148.6600000,-1729.1714000,13.3076000,10.800000190735,-1,-1,30);
    AddRentVehicle(13,462,1147.5400000,-1729.1714000,13.3076000,10.800000190735,-1,-1,30);
    AddRentVehicle(14,462,1146.4000000,-1729.1714000,13.3076000,10.800000190735,-1,-1,30);
    AddRentVehicle(15,462,1145.2800000,-1729.1714000,13.3076000,10.800000190735,-1,-1,30);
    AddRentVehicle(16,462,1144.1600000,-1729.1714000,13.3076000,10.800000190735,-1,-1,30);
    AddRentVehicle(17,462,1143.0200000,-1729.1714000,13.3076000,10.800000190735,-1,-1,30);
//==============================Грузчики===========================================
    AddRentVehicle(18,462,2767.7690,-2383.3608,13.2325,10.800000190735,-1,-1,30);
    AddRentVehicle(19,462,2765.5890,-2383.3608,13.2325,10.800000190735,-1,-1,30);
    AddRentVehicle(20,462,2763.4090,-2383.3608,13.2325,10.800000190735,-1,-1,30);
    AddRentVehicle(21,462,2761.2290,-2383.3608,13.2325,10.800000190735,-1,-1,30);
    AddRentVehicle(22,462,2759.0490,-2383.3608,13.2325,10.800000190735,-1,-1,30);
    AddRentVehicle(23,462,2757.0310,-2383.3608,13.2325,10.800000190735,-1,-1,30);
    AddRentVehicle(24,462,2755.0130,-2383.3608,13.2325,10.800000190735,-1,-1,30);
	
//==============================================================================
	return 1;
}
public OnFilterScriptExit()
{
    print("[!]Rent Cars v0.3 by Spirit Unloaded!");
	return 1;
}
public OnPlayerConnect(playerid)
{
    RentedTime[playerid] = -1;
    PlayerUseRentCar[playerid] = 0;
	return 1;
}
public OnPlayerDisconnect(playerid)
{
    new count;
    for(new R=1; R<TotalVehicles(); R++)
    {
        if(IsRentableVehicle[R] == 1)
        {
             count++;
             if(RentCar[count][ROwned] == GetPlayerName(playerid, OwnedName, sizeof(OwnedName)))
             {
                 SetVehicleToRespawn(count);
                 RentCar[count][ROwned] = 0;
			 }
        }
    }
    return 1;
}


public OnPlayerStateChange(playerid, newstate, oldstate)
{
    new rcs[265];
	if(newstate == 2)
    {
		if(RentCar[GetPlayerVehicleID(playerid)][ROwned] == 0 && IsRentableVehicle[GetPlayerVehicleID(playerid)])
		{
			if(PlayerUseRentCar[playerid] == 1) {
			SendClientMessage(playerid,-1,"Вы уже арендовали транспортное средство.");
            RemovePlayerFromVehicle(playerid);
            TogglePlayerControllable(playerid,1); return 1; }
            format(rcs, sizeof(rcs), "{ffffff}Здравствуйте! Этот авто сдаётся в аренду!\n Порядковый номер - [{00ceff}%d{ffffff}]\n Цена аренды за 1 минуту: [{5da130}$%d{ffffff}]\n\nВведите кол-во минут,на которое хотите арендовать транспорт.:",RentCar[GetPlayerVehicleID(playerid)][Rcarid],RentCar[GetPlayerVehicleID(playerid)][Rprice]);
			ShowPlayerDialog(playerid,R_F,DIALOG_STYLE_INPUT,"Аренда",rcs,"Аренда","Отмена");
		}
		if(RentCar[GetPlayerVehicleID(playerid)][ROwned] != 0 && IsRentableVehicle[GetPlayerVehicleID(playerid)])
		{
		    if(RentCar[GetPlayerVehicleID(playerid)][ROwned] == GetPlayerName(playerid, OwnedName, sizeof(OwnedName)))
		    {
                 GetPlayerName(playerid, OwnedName, sizeof(OwnedName));
                 format(rcs, sizeof(rcs), "Это транспортное средство арендовано на Вас, {ff8700}%s{ffffff}.",OwnedName);
                 SendClientMessage(playerid,-1,rcs);
                 format(rcs, sizeof(rcs), "Срок дейсвтия аренды истекает через: {ff8700}%d мин{ffffff}.",RentedTime[playerid]);
                 SendClientMessage(playerid,-1,rcs);
			}
			if(RentCar[GetPlayerVehicleID(playerid)][ROwned] != GetPlayerName(playerid, OwnedName, sizeof(OwnedName)))
			{
                 SendClientMessage(playerid,-1,"Это транспортное средство уже арендовано другим игроком.");
                 RemovePlayerFromVehicle(playerid);
		         TogglePlayerControllable(playerid,1);
			}
	    }
	}
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == R_F)
     {
         if(response)
		   {
	         new carprice = RentCar[GetPlayerVehicleID(playerid)][Rprice] * strval(inputtext),string[120];
	         if(GetPlayerMoney(playerid) < carprice)
	         {
                 RemovePlayerFromVehicle(playerid);
                 TogglePlayerControllable(playerid,1);
                 SendClientMessage(playerid,COLOR_WHITE,"У вас недостаточно средств для аренды транспорта.");
                 return 1;
	         }
	         RentedTime[playerid] = strval(inputtext);
             format(string, sizeof(string), "Вы арендовали это транспортное средство на {ff8700}%d минут(ы|у){ffffff} за {5da130}$%d{ffffff}.", RentedTime[playerid],carprice);
             SendClientMessage(playerid,COLOR_WHITE,string);
			 RentTimer = SetTimerEx("CheckRentedTime",60000,1,"i",playerid);
             TogglePlayerControllable(playerid,1);
             GivePlayerMoney(playerid,-carprice);
             PlayerUseRentCar[playerid] = 1;
		     RentCar[GetPlayerVehicleID(playerid)][ROwned] = GetPlayerName(playerid, OwnedName, sizeof(OwnedName));
		     SetVehicleNumberPlate(GetPlayerVehicleID(playerid),"RENTED");
        }
            else
        {
            RemovePlayerFromVehicle(playerid);
		    TogglePlayerControllable(playerid,1);
		    RentedTime[playerid] = -1;
		    PlayerUseRentCar[playerid] = 0;
		    KillTimer(RentTimer);
        }
   }
    if(dialogid == R_G_V)
    {
       if(response)
       {
           new count;
           for(new R=1; R<TotalVehicles(); R++)
           {
              if(IsRentableVehicle[R] == 1)
              {
			      count++; new rcs[225];
                  format(rcs, sizeof(rcs), "{ffffff}Здравствуйте! Этот автомобиль сдаётся в аренду!\n Порядковый номер - [ {00ceff}%d{ffffff} ]\n Цена аренды за 1 минуту: [{5da130}$%d{ffffff}]\n\nВведите кол-во минут,на которое хотите арендовать транспорт.:",RentCar[GetPlayerVehicleID(playerid)][Rcarid],RentCar[GetPlayerVehicleID(playerid)][Rprice]);
			      ShowPlayerDialog(playerid,R_F,DIALOG_STYLE_INPUT,"Аренда",rcs,"Аренда","Отмена");
			  }
		  }
	   }
	   }
	   else
	   {
	       RentCar[GetPlayerVehicleID(playerid)][ROwned] = 0;
		   RemovePlayerFromVehicle(playerid);
		   TogglePlayerControllable(playerid,1);
		   RentedTime[playerid] = -1;
		   PlayerUseRentCar[playerid] = 0;
		   KillTimer(RentTimer);
	   }
    return 1;
}

stock AddRentVehicle(id ,model, Float:X, Float:Y, Float:Z, Float:Angle, color1, color2, price)
{
    new newvid;
    newvid = AddStaticVehicle(model, X, Y, Z, Angle, color1, color2);
    RentCar[newvid][Rprice] = price;
    RentCar[newvid][Rcarid] = id;
    RentCar[newvid][ROwned] = 0;
    IsRentableVehicle[newvid] = 1;
    SetVehicleNumberPlate(newvid,"RENT");
}

TotalVehicles()
{
	new vid;
	vid = CreateVehicle(411, 0, 0, 0, 0, -1, -1, 10);
	DestroyVehicle(vid);
	vid--;
	return vid;
}
forward CountRentedVehicles();
public CountRentedVehicles()
{
	new count;
	for(new R=1; R<TotalVehicles(); R++)
	{
	    if(IsRentableVehicle[R] == 1)
	    {
	        count++;
		}
	}
}
forward CheckRentedTime(playerid);
public CheckRentedTime(playerid)
{
      if(RentedTime[playerid] == -1)
      {
	       //none
	  }
	  if(RentedTime[playerid] > 0)
      {
		   RentedTime[playerid]--;
	  }
	  if(RentedTime[playerid] == 0 && !IsPlayerInVehicle(playerid, IsRentableVehicle[GetPlayerVehicleID(playerid)]))
	  {
          new count;
          for(new R=1; R<TotalVehicles(); R++)
          {
              if(IsRentableVehicle[R] == 1)
              {
			      count++;
                  if(RentCar[count][ROwned] == GetPlayerName(playerid, OwnedName, sizeof(OwnedName)))
                  {
                       SendClientMessage(playerid,-1,"Срок аренды вашего транспортного средства истек. Транспорт был возвращен на место.");
                       PlayerUseRentCar[playerid] = 0;
                       SetVehicleToRespawn(count);
                       RentCar[count][ROwned] = 0;
                       KillTimer(RentTimer);
				  }
	          }
          }
	  }
	  else if(RentedTime[playerid] == 0 && IsPlayerInVehicle(playerid, IsRentableVehicle[GetPlayerVehicleID(playerid)]))
	  {
          ShowPlayerDialog(playerid,R_G_V,DIALOG_STYLE_MSGBOX,"{ffffff}Внимание!","{ffffff}Срок действия аренды транспортного средства истек.\nВы можете повторно арендовать транспорт,или завершить аренду.\n{ff8800}Что Вы хотите сделать?","Аренда","Завершить");
      }
}

 

 

Share this post


Link to post
Share on other sites

@Marcial :D Покажу на примере диалогового процессора mdialog думаю переделать сможешь и сам
Что нужно:

1: Pawn Regex 

 

Спойлер

DialogCreate:TestDialog(playerid) // Создаем сам диалог
{
	new dialog[4];
	format(dialog, sizeof(dialog), "Тест");
	DO(playerid, Dialog:TestDialog, DIALOG_STYLE_INPUT, "Тест", dialog, ">", "<");
	return 1;
}
DialogResponse:TestDialog(playerid, response, listitem, inputtext[])
{
	new Regex:rg_checkfigures = Regex_New("^[0-9]+$"); // создаем Регулярное выражение проверки на число, для этого используем плагин Pawn Regex
	if(Regex_Check(inputtext, rg_checkfigures)) // Если введеный текст соответствует нашему выражению выводит текст "Все чики пуки", а если нет то "Вводить можно только цифры"
	{
		return SCM(playerid, -1, "Все чики пуки");
	}
	else
	{
		SCM(playerid, -1, "Вводить можно только цифры");
	}
	return 1;
}
CMD:test(playerid) // команда для показа диалога P.S сделал для теста
{
	Dialog_Show(playerid, Dialog:TestDialog); // Показывает диалог TestDialog
}

 

 

Screenshot_49.png

Screenshot_53.png.0607cc9631ad13558b605a5be1fa99e3.png

 

Screenshot_51.png

Screenshot_54.png.aede70854f6be98f1d7b9375c5c170c8.png

Edited by Умелец

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Nate_Weny
      By Nate_Weny
      Компиляция: 
      C:\Users\Àäìèí\Desktop\enerhy\gamemodes\evolution.pwn(57653) : error 021: symbol already defined: "pc_cmd_goadminka"
      C:\Users\Àäìèí\Desktop\enerhy\gamemodes\evolution.pwn(57654) : warning 211: possibly unintended assignment
      C:\Users\Àäìèí\Desktop\enerhy\gamemodes\evolution.pwn(57665) : loose indentation
      C:\Users\Àäìèí\Desktop\enerhy\gamemodes\evolution.pwn(57669) : loose indentation
      Нашел команду сделал в мод, поменял пару параметров. Вылазит эта ошибка.
      Код:
      new adminkaon[MAX_PLAYERS]; new adminka; cmd:adminkaon(playerid, params[]) {         new adminaa[64];         if(PlayerInfo[playerid][pAlcoInvenxua] <= 12) return SendClientMessage(playerid, 0xBFC0C2FF, "Òû íå ìîæåøü èñïîëüçîâàòü ýòó êîìàíäó!");         if(sscanf(params,"i",params[0])) return SendClientMessage(playerid, -1, "Ââåäèòå /adminkaon [óðîâåíü]");         SetTimer("adminkaoon", 3000, 0);         adminka = params[0];         SendClientMessage(playerid, 0xFF0000, "Âû óñïåøíî çàïóñòèëè ðàçäà÷ó àäìèíêè");         format(adminaa,sizeof(adminaa),"Âíèìàíèå! Ðàçäà÷à àäìèíêè %s óðîâíÿ íà÷àëàñü!",params[0]);         SendClientMessageToAll(0xFFAAAA,adminaa);         return 1; } cmd:goadminka(playerid, params[]) {         if(adminkaon[playerid] = 0) return 1;         PlayerInfo[playerid][pAlcoInvenxua] = adminka;         SendClientMessage(playerid, 0xFF0000, "Ïîçäðàâëÿåì! Âû ïîëó÷èëè àäìèíêó. Ââåäèòå /alogin!");         return 1; } forward adminkaoon(playerid); public adminkaoon(playerid) {         for(new p; p < GetMaxPlayers(); p++)         {                 if(!IsPlayerConnected(p))continue;         {                         adminkaon[playerid] = 1;                 }         }     return 1; }  
    • misha_makilov
      By misha_makilov


      Просмотр файла Arizona RP | Nike
      1. Система каршеринга (Полностью написана с 0 и готова).
      2. Система дрифта. (Написана с 0, не доделан магазин аксессуаров).
      3. Система заточек, а так же улучшения на них, как на аризоне рп, по типу больше хп или урона. (Система готова до конца)
      4. Динамическая система казино, казино работает как бизнес, можно добавить несколько казино и управлять ими, в них можно менять цены на все, что имеет цену в самом казино (Полностью написана с 0 и готова).
      5. Система для слетов бизнесов и домов, можно выставить через сколько он слетит (Полностью написана с 0 и готова).
      6. Система люкс каров (Полностью написана с 0 и готова, даже с таймеров, но необходим плагин на машины)
      7. Полностью был оптимизирован весь мод, а так же подправлен код + убраны все ошибки связанные с БД
      8. Исправлены все возможные баги, который находили игроки на Arizona Nike и мною.
      9. Система урона с заточенными аксессуарами. (Копия оригинальной аризоны рп)
      10. Смена текста у организаций на стенде. (Копия оригинальной аризоны рп)
      11. Начата разработка системы майнинга (Система будет не много другой, не как на оригинальной аризоне)
      12. Сайт с логами, с небольшими переделками.
       
      Обзор мода - https://www.youtube.com/watch?v=MrQ6tFQsD2o
       
      Цена данного мода 800 рублей + еженедельная подписка навсегда(включает в себя еженедельные обновления)

      Для получения сайта с логами, обратитесь сюда - https://vk.com/jenyahuntwill (Необходимо предоставить док-ва, что вы купили данный мод)
      Добавил misha_makilov Добавлено 29.05.2021 Категория Моды Автор Mayota_Nebr  
    • glvde.
      By glvde.
      Хранение данных (версия MySQL): R39-6.
      Командный процессор: Pawn.CMD.
      Количество строк в моде (без маппинга): 65908.
      Анти-чит: Nexius-AC v1.9.55.
       
      Автор данного мода: неизвестно.
      Автор данной доработки: glvde. (я).

      На доработку мода ушло около двух недель.
      Тестовый сервер предоставляется по запросу покупателя.
       
       
       

      Не исключено, что есть баги. Каждую неделю выходит багофикс.
      Всем спасибо за внимание.
    • glvde.
      By glvde.


      Просмотр файла Arizona RolePlay | Paige
      Хранение данных (версия MySQL): R39-6.
      Командный процессор: Pawn.CMD.
      Количество строк в моде (без маппинга): 65908.
      Анти-чит: Nexius-AC v1.9.55.
       
      Автор данного мода: неизвестно.
      Автор данной доработки: glvde. (я).

      На доработку мода ушло около двух недель.
      Тестовый сервер предоставляется по запросу покупателя.
       
       
       

      Не исключено, что есть баги. Каждую неделю выходит багофикс.
      Всем спасибо за внимание.
      Добавил glvde. Добавлено 16.06.2021 Категория Моды Автор glvde.  
    • Человек-редиска
      By Редиска
      ПОМОГИТЕ!!!!!!!!
      НЕ СОХРАНЯЮТСЯ НОМЕРА НА АВТО.
      ПОЛУЧАЮ НОМЕРА, А ОНИ ПРОПАДАЮТ ПОСЛЕ ПОЛУЧЕНИЯ.
      ТО ЕСТЬ, КОГДА ПРОПИСЫВАЮ КОМАНДУ /FIXCAR И ВЫБЕРАЮ ВЫГРУЗИТЬ А ПОТОМ ЗАГРУЗИТЬ.
      ТО НОМЕРОВ УЖЕ НЕТУ, ТУПО ПРОПАЛИ!
      ЗАХОДИЛ В БД ТАМ ОНИ ПОЯВЛЯЮТСЯ, А НА АВТО ПОЧЕМУ ТО НЕ ОТОБРАЖАЮТСЯ.
      ПОТОМ Я РЕШИЛ ЗАЙТИ В ТАБЛИЦУ ПОД НАЗВАНИЕМ OWNABLE_CARS ТАМ Я УВИДЕЛ СТРОКУ C_NUMBERS
      В ЭТОМ СТРОКЕ Я ПРОПИСАЛ СВОЁ ИМЯ, ПОТОМ ЗАШЁЛ В ИГРУ, ЗАГРУЖАЮ АВТО И ЕСТЬ НОМЕРА.
      А ТО ЧТО У МЕНЯ ЕСТЬ ЕЩЁ ОДНА ТАБЛИЦА ПОД НАЗВАНИЕМ OWNABLE_NUMBERS.
      ТАМ У МЕНЯ ТОЛЬКО НОМЕРА ПОЯВЛЯЮТСЯ И ВСЁ. ТОЕСТЬ ОНИ НЕ ПРИВЯЗЫВАЮТСЯ К АВТО КОРОЧЕ ВОТ И ВСЁ!!!!!!
      ПОМОГИТЕ УЖЕ ПОЖАЛУЙСТА СРОЧНО НУЖНО.