Вопросы

Новичок

Как сделать так, чтобы от 300 Textdraw закрывался и больше не открывался,а то большее 300 набирает и textdraw появляется! и.т.д остальные так же !

switch(pInfo[playerid][pHclass][0])
        {
            case 300: TextDrawHideForPlayer(playerid, TextClass_TD[0]);
            case 750: TextDrawHideForPlayer(playerid, TextClass_TD[1]);
            case 1500: TextDrawHideForPlayer(playerid, TextClass_TD[2]);
            case 2750: TextDrawHideForPlayer(playerid, TextClass_TD[3]);
            case 4500: TextDrawHideForPlayer(playerid, TextClass_TD[4]);
            case 8000: TextDrawHideForPlayer(playerid, TextClass_TD[5]);
        }

У меня получилось только вот так,а вот как это всё оптимизировать хз

if(pInfo[playerid][pHclass][0] >= 300) TextDrawHideForPlayer(playerid, TextClass_TD[0]);
         if(pInfo[playerid][pHclass][0] >= 750) TextDrawHideForPlayer(playerid, TextClass_TD[1]);
         if(pInfo[playerid][pHclass][0] >= 1500) TextDrawHideForPlayer(playerid, TextClass_TD[2]);
         if(pInfo[playerid][pHclass][0] >= 2750) TextDrawHideForPlayer(playerid, TextClass_TD[3]);
         if(pInfo[playerid][pHclass][0] >= 4500) TextDrawHideForPlayer(playerid, TextClass_TD[4]);
         if(pInfo[playerid][pHclass][0] >= 8000) TextDrawHideForPlayer(playerid, TextClass_TD[5]);

Такой способ не помогает!
Мне надо,чтобы после 300 TextDraw больше не появлялся и так остольные!

switch (pInfo[playerid][pHclass][0])
{
    case 300..749 : TextDrawHideForPlayer(playerid, TextClass_TD[0]);
    case 750..1499 : TextDrawHideForPlayer(playerid, TextClass_TD[1]);
    case 1500..2749 : TextDrawHideForPlayer(playerid, TextClass_TD[2]);
    case 2750..4499 : TextDrawHideForPlayer(playerid, TextClass_TD[3]);
    case 4500..7999 : TextDrawHideForPlayer(playerid, TextClass_TD[4]);
    case 8000..9999 : TextDrawHideForPlayer(playerid, TextClass_TD[5]);
}

 

Поделиться сообщением


Ссылка на сообщение

4 ответа на этот вопрос

  • 0
Cawfee
Великий Гуру
16 часов назад, Nister_Just сказал:

 


if(pInfo[playerid][pHclass][0] >= 300) TextDrawHideForPlayer(playerid, TextClass_TD[0]);
         if(pInfo[playerid][pHclass][0] >= 750) TextDrawHideForPlayer(playerid, TextClass_TD[1]);
         if(pInfo[playerid][pHclass][0] >= 1500) TextDrawHideForPlayer(playerid, TextClass_TD[2]);
         if(pInfo[playerid][pHclass][0] >= 2750) TextDrawHideForPlayer(playerid, TextClass_TD[3]);
         if(pInfo[playerid][pHclass][0] >= 4500) TextDrawHideForPlayer(playerid, TextClass_TD[4]);
         if(pInfo[playerid][pHclass][0] >= 8000) TextDrawHideForPlayer(playerid, TextClass_TD[5]);

 

 

Этот код работает как нужно?

Поделиться сообщением


Ссылка на сообщение
  • 0
Новичок
1 час назад, odosenok сказал:

 

Этот код работает как нужно?

Да,работает отлично!

Поделиться сообщением


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@Nister_Just, ну, если работает хорошо, зачем туда лезть?

 

Дело в том, что оптимизация в данном случае снизит читаемость кода, что, по-моему, гораздо важнее.

Спойлер

 


new pClass = pInfo[playerid][pHclass][0];
if (pClass >= 300) {
	TextDrawHideForPlayer(playerid, TextClass_TD[0]);
	if (pClass >= 750) {
		TextDrawHideForPlayer(playerid, TextClass_TD[1]);
		if (pClass >= 1500) {
			TextDrawHideForPlayer(playerid, TextClass_TD[2]);
			if (pClass >= 2750) {
				TextDrawHideForPlayer(playerid, TextClass_TD[3]);
				if (pClass >= 4500) {
					TextDrawHideForPlayer(playerid, TextClass_TD[4]);
					if (pClass >= 8000) {
						TextDrawHideForPlayer(playerid, TextClass_TD[5]);
					}
				}
			}
		}
	}
}

 

Спойлер

new pClass = pInfo[playerid][pHclass][0];
if (pClass >= 300) {
	TextDrawHideForPlayer(playerid, TextClass_TD[0]);
	if (pClass >= 750)
		TextDrawHideForPlayer(playerid, TextClass_TD[1]);
		if (pClass >= 1500)
			TextDrawHideForPlayer(playerid, TextClass_TD[2]);
			if (pClass >= 2750)
				TextDrawHideForPlayer(playerid, TextClass_TD[3]);
				if (pClass >= 4500)
					TextDrawHideForPlayer(playerid, TextClass_TD[4]);
					if (pClass >= 8000)
						TextDrawHideForPlayer(playerid, TextClass_TD[5]);
}

 

 

За счет внесенных выше изменений мы достигаем:

  • убраны лишние проверки. Если число меньше 300, не будем пробегать по значениям 750, 1500, 2750... Аналогично, если число меньше 2750, не будем пробегать по 4500, 8000.
  • уменьшено время работы с переменными. Дело в том, что массив pInfo создавался при запуске сервера, потому обращение к нему занимает больше времени (во-первых, обращение к массивам само по себе медленнее, во-вторых, массив находится "на дне" памяти. Это как колодец. Заполняется со дна и до верха. И черпать что-либо гораздо с самого верха, то есть с последних созданных переменных, нежели с самого низа, то есть переменных, созданных при старте сервера).

 

Учитывая второй абзац, я бы себе сделал так и не забивал голову:

Спойлер

 


new pClass = pInfo[playerid][pHclass][0];

if(pClass >= 300) TextDrawHideForPlayer(playerid, TextClass_TD[0]);
if(pClass >= 750) TextDrawHideForPlayer(playerid, TextClass_TD[1]);
if(pClass >= 1500) TextDrawHideForPlayer(playerid, TextClass_TD[2]);
if(pClass >= 2750) TextDrawHideForPlayer(playerid, TextClass_TD[3]);
if(pClass >= 4500) TextDrawHideForPlayer(playerid, TextClass_TD[4]);
if(pClass >= 8000) TextDrawHideForPlayer(playerid, TextClass_TD[5]);

 

 

Поделиться сообщением


Ссылка на сообщение
  • 0
Новичок
15 минут назад, odosenok сказал:

@Nister_Just, ну, если работает хорошо, зачем туда лезть?

 

Дело в том, что оптимизация в данном случае снизит читаемость кода, что, по-моему, гораздо важнее.

  Пример (закрыть спойлер)

 



new pClass = pInfo[playerid][pHclass][0];
if (pClass >= 300) {
	TextDrawHideForPlayer(playerid, TextClass_TD[0]);
	if (pClass >= 750) {
		TextDrawHideForPlayer(playerid, TextClass_TD[1]);
		if (pClass >= 1500) {
			TextDrawHideForPlayer(playerid, TextClass_TD[2]);
			if (pClass >= 2750) {
				TextDrawHideForPlayer(playerid, TextClass_TD[3]);
				if (pClass >= 4500) {
					TextDrawHideForPlayer(playerid, TextClass_TD[4]);
					if (pClass >= 8000) {
						TextDrawHideForPlayer(playerid, TextClass_TD[5]);
					}
				}
			}
		}
	}
}

 

  Пример 2 (закрыть спойлер)


new pClass = pInfo[playerid][pHclass][0];
if (pClass >= 300) {
	TextDrawHideForPlayer(playerid, TextClass_TD[0]);
	if (pClass >= 750)
		TextDrawHideForPlayer(playerid, TextClass_TD[1]);
		if (pClass >= 1500)
			TextDrawHideForPlayer(playerid, TextClass_TD[2]);
			if (pClass >= 2750)
				TextDrawHideForPlayer(playerid, TextClass_TD[3]);
				if (pClass >= 4500)
					TextDrawHideForPlayer(playerid, TextClass_TD[4]);
					if (pClass >= 8000)
						TextDrawHideForPlayer(playerid, TextClass_TD[5]);
}

 

 

За счет внесенных выше изменений мы достигаем:

  • убраны лишние проверки. Если число меньше 300, не будем пробегать по значениям 750, 1500, 2750... Аналогично, если число меньше 2750, не будем пробегать по 4500, 8000.
  • уменьшено время работы с переменными. Дело в том, что массив pInfo создавался при запуске сервера, потому обращение к нему занимает больше времени (во-первых, обращение к массивам само по себе медленнее, во-вторых, массив находится "на дне" памяти. Это как колодец. Заполняется со дна и до верха. И черпать что-либо гораздо с самого верха, то есть с последних созданных переменных, нежели с самого низа, то есть переменных, созданных при старте сервера).

 

Учитывая второй абзац, я бы себе сделал так и не забивал голову:

  Пример (закрыть спойлер)

 



new pClass = pInfo[playerid][pHclass][0];

if(pClass >= 300) TextDrawHideForPlayer(playerid, TextClass_TD[0]);
if(pClass >= 750) TextDrawHideForPlayer(playerid, TextClass_TD[1]);
if(pClass >= 1500) TextDrawHideForPlayer(playerid, TextClass_TD[2]);
if(pClass >= 2750) TextDrawHideForPlayer(playerid, TextClass_TD[3]);
if(pClass >= 4500) TextDrawHideForPlayer(playerid, TextClass_TD[4]);
if(pClass >= 8000) TextDrawHideForPlayer(playerid, TextClass_TD[5]);

 

 

Этот только 1 ,а у меня 5

if(pInfo[playerid][pHclass][0] >= 300) TextDrawHideForPlayer(playerid, TextClass_TD[0]);
         if(pInfo[playerid][pHclass][0] >= 750) TextDrawHideForPlayer(playerid, TextClass_TD[1]);
         if(pInfo[playerid][pHclass][0] >= 1500) TextDrawHideForPlayer(playerid, TextClass_TD[2]);
         if(pInfo[playerid][pHclass][0] >= 2750) TextDrawHideForPlayer(playerid, TextClass_TD[3]);
         if(pInfo[playerid][pHclass][0] >= 4500) TextDrawHideForPlayer(playerid, TextClass_TD[4]);
         if(pInfo[playerid][pHclass][0] >= 6000) TextDrawHideForPlayer(playerid, TextClass_TD[5]);
         if(pInfo[playerid][pHclass][0] >= 8000) TextDrawHideForPlayer(playerid, TextClass_TD[6]);
         //-----------------------------
         if(pInfo[playerid][pHclass][1] >= 300) TextDrawHideForPlayer(playerid, TextClass_TD[7]);
         if(pInfo[playerid][pHclass][1] >= 850) TextDrawHideForPlayer(playerid, TextClass_TD[8]);
         if(pInfo[playerid][pHclass][1] >= 1650) TextDrawHideForPlayer(playerid, TextClass_TD[9]);
         if(pInfo[playerid][pHclass][1] >= 2500) TextDrawHideForPlayer(playerid, TextClass_TD[10]);
         if(pInfo[playerid][pHclass][1] >= 3750) TextDrawHideForPlayer(playerid, TextClass_TD[11]);
         if(pInfo[playerid][pHclass][1] >= 4600) TextDrawHideForPlayer(playerid, TextClass_TD[12]);
         if(pInfo[playerid][pHclass][1] >= 7000) TextDrawHideForPlayer(playerid, TextClass_TD[13]);
        //-----------------------------
        if(pInfo[playerid][pHclass][2] >= 50) TextDrawHideForPlayer(playerid, TextClass_TD[14]);
        if(pInfo[playerid][pHclass][2] >= 150) TextDrawHideForPlayer(playerid, TextClass_TD[15]);
        if(pInfo[playerid][pHclass][2] >= 450) TextDrawHideForPlayer(playerid, TextClass_TD[16]);
        if(pInfo[playerid][pHclass][2] >= 850) TextDrawHideForPlayer(playerid, TextClass_TD[17]);
        if(pInfo[playerid][pHclass][2] >= 1300) TextDrawHideForPlayer(playerid, TextClass_TD[18]);
        if(pInfo[playerid][pHclass][2] >= 2000) TextDrawHideForPlayer(playerid, TextClass_TD[19]);
        if(pInfo[playerid][pHclass][2] >= 4000) TextDrawHideForPlayer(playerid, TextClass_TD[20]);
        //-----------------------------
        if(pInfo[playerid][pHclass][3] >= 100) TextDrawHideForPlayer(playerid, TextClass_TD[21]);
        if(pInfo[playerid][pHclass][3] >= 500) TextDrawHideForPlayer(playerid, TextClass_TD[22]);
        if(pInfo[playerid][pHclass][3] >= 1000) TextDrawHideForPlayer(playerid, TextClass_TD[23]);
        if(pInfo[playerid][pHclass][3] >= 1530) TextDrawHideForPlayer(playerid, TextClass_TD[24]);
        if(pInfo[playerid][pHclass][3] >= 2500) TextDrawHideForPlayer(playerid, TextClass_TD[25]);
        if(pInfo[playerid][pHclass][3] >= 3200) TextDrawHideForPlayer(playerid, TextClass_TD[26]);
        if(pInfo[playerid][pHclass][3] >= 5000) TextDrawHideForPlayer(playerid, TextClass_TD[27]);
        //-----------------------------
        if(pInfo[playerid][pHclass][4] >= 40) TextDrawHideForPlayer(playerid, TextClass_TD[28]);
        if(pInfo[playerid][pHclass][4] >= 140) TextDrawHideForPlayer(playerid, TextClass_TD[29]);
        if(pInfo[playerid][pHclass][4] >= 280) TextDrawHideForPlayer(playerid, TextClass_TD[30]);
        if(pInfo[playerid][pHclass][4] >= 650) TextDrawHideForPlayer(playerid, TextClass_TD[31]);
        if(pInfo[playerid][pHclass][4] >= 1200) TextDrawHideForPlayer(playerid, TextClass_TD[32]);
        if(pInfo[playerid][pHclass][4] >= 1800) TextDrawHideForPlayer(playerid, TextClass_TD[33]);
        if(pInfo[playerid][pHclass][4] >= 3000) TextDrawHideForPlayer(playerid, TextClass_TD[34]);

Получается так

 

new ds = pInfo[playerid][pHclass][0];
		if(ds >= 300) TextDrawHideForPlayer(playerid, TextClass_TD[0]);
	 	if(ds >= 750) TextDrawHideForPlayer(playerid, TextClass_TD[1]);
	 	if(ds >= 1500) TextDrawHideForPlayer(playerid, TextClass_TD[2]);
	 	if(ds >= 2750) TextDrawHideForPlayer(playerid, TextClass_TD[3]);
	 	if(ds >= 4500) TextDrawHideForPlayer(playerid, TextClass_TD[4]);
	 	if(ds >= 6000) TextDrawHideForPlayer(playerid, TextClass_TD[5]);
	 	if(ds >= 8000) TextDrawHideForPlayer(playerid, TextClass_TD[6]);
	 	
	 	new ds1 = pInfo[playerid][pHclass][1];
	 	if(ds1 >= 300) TextDrawHideForPlayer(playerid, TextClass_TD[7]);
	 	if(ds1 >= 850) TextDrawHideForPlayer(playerid, TextClass_TD[8]);
	 	if(ds1 >= 1650) TextDrawHideForPlayer(playerid, TextClass_TD[9]);
	 	if(ds1 >= 2500) TextDrawHideForPlayer(playerid, TextClass_TD[10]);
	 	if(ds1 >= 3750) TextDrawHideForPlayer(playerid, TextClass_TD[11]);
	 	if(ds1 >= 4600) TextDrawHideForPlayer(playerid, TextClass_TD[12]);
	 	if(ds1 >= 7000) TextDrawHideForPlayer(playerid, TextClass_TD[13]);
		
		new ds2 = pInfo[playerid][pHclass][2];
		if(ds2 >= 50) TextDrawHideForPlayer(playerid, TextClass_TD[14]);
		if(ds2 >= 150) TextDrawHideForPlayer(playerid, TextClass_TD[15]);
		if(ds2 >= 450) TextDrawHideForPlayer(playerid, TextClass_TD[16]);
		if(ds2 >= 850) TextDrawHideForPlayer(playerid, TextClass_TD[17]);
		if(ds2 >= 1300) TextDrawHideForPlayer(playerid, TextClass_TD[18]);
		if(ds2 >= 2000) TextDrawHideForPlayer(playerid, TextClass_TD[19]);
		if(ds2 >= 4000) TextDrawHideForPlayer(playerid, TextClass_TD[20]);
		
		new ds3 = pInfo[playerid][pHclass][3];
		if(ds3 >= 100) TextDrawHideForPlayer(playerid, TextClass_TD[21]);
		if(ds3 >= 500) TextDrawHideForPlayer(playerid, TextClass_TD[22]);
		if(ds3 >= 1000) TextDrawHideForPlayer(playerid, TextClass_TD[23]);
		if(ds3 >= 1530) TextDrawHideForPlayer(playerid, TextClass_TD[24]);
		if(ds3 >= 2500) TextDrawHideForPlayer(playerid, TextClass_TD[25]);
		if(ds3 >= 3200) TextDrawHideForPlayer(playerid, TextClass_TD[26]);
		if(ds3 >= 5000) TextDrawHideForPlayer(playerid, TextClass_TD[27]);
        
        new ds4 = pInfo[playerid][pHclass][4];
        if(ds4 >= 40) TextDrawHideForPlayer(playerid, TextClass_TD[28]);
        if(ds4 >= 140) TextDrawHideForPlayer(playerid, TextClass_TD[29]);
        if(ds4 >= 280) TextDrawHideForPlayer(playerid, TextClass_TD[30]);
        if(ds4 >= 650) TextDrawHideForPlayer(playerid, TextClass_TD[31]);
        if(ds4 >= 1200) TextDrawHideForPlayer(playerid, TextClass_TD[32]);
        if(ds4 >= 1800) TextDrawHideForPlayer(playerid, TextClass_TD[33]);
        if(ds4 >= 3000) TextDrawHideForPlayer(playerid, TextClass_TD[34]);

 

Отредактировано пользователем Nister_Just

Поделиться сообщением


Ссылка на сообщение
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • От DonK/Key
      Всем привет, помогите кто разбирается, так как я можно сказать начинающий сделать свой КРМП, буду благодарен. Напишите либо тут либо @evreI_sigma (Мой Telegram)
    • От OPCODERSSSS
      Прописал уже все инклуды,он мне все равно вот эту дрянь ну емае
       
       
      other.amx
      other.pwn
      hgsystem.amx
    • От Доналдо Фарекелка
      Приветствую, этот мод я нашёл на просторах интернета. 
      Скачал мод у автора:  Developer Stravinskiy
      Доработал мод: Donaldo_Farekelka
       
      Предупреждаю! Мод сырой, багов стало меньше, но они есть.
      Мод: Баня, Подвал, В некоторых местах маппинг, система коронавируса, 8 лвл админок.
       
      [01.11.2025] ВНИМАНИЕ! Не используйте бесплатные хостинги, если Вы не уверены в их работоспособности. Если запустили мод на бесплатном хостинге и он не работает, то просьба мне не писать! (Вина скорее всего, лежит на хостинге!). Исключение: dragon(Не реклама. Проверено на личном опыте).
      [29.11.2025] Спасибо! За 1000+ скачиваний. 
      [08.12.2025] ВНИМАНИЕ! Мод не рекомендуется к использованию для новичков. Мод признается старым.
       
      Информация:
      1) Dc_Cmd
      2) Mysql, mode, language - Всё настраивается теперь в pawno ( UPDATE: 1.1.0 )
      3) Административные права в данный момент можно выдать через /amakeadmin(Смотреть уроки) или БД ( UPDATE: 1.2.2 ).

      Всё что я делаю сейчас, смотрите в изменениях.
      Что сделал:
       

      Как установить мод на хостинг(Чтобы больше не было вопросов в ЛС):
      RUTUBE: https://rutube.ru/video/private/f74276be05e090652ee46bcbe2b4e27d/?p=6tWFvG_lTFk4sHVaCjheZQ
      YOUTUBE: https://youtu.be/z07sJUAVQpI
    • От Доналдо Фарекелка


      Скачать файл Arizona RolePlay || Ser
      Приветствую, этот мод я нашёл на просторах интернета. 
      Скачал мод у автора:  Developer Stravinskiy
      Доработал мод: Donaldo_Farekelka
       
      Предупреждаю! Мод сырой, багов стало меньше, но они есть.
      Мод: Баня, Подвал, В некоторых местах маппинг, система коронавируса, 8 лвл админок.
       
      [01.11.2025] ВНИМАНИЕ! Не используйте бесплатные хостинги, если Вы не уверены в их работоспособности. Если запустили мод на бесплатном хостинге и он не работает, то просьба мне не писать! (Вина скорее всего, лежит на хостинге!). Исключение: dragon(Не реклама. Проверено на личном опыте).
      [29.11.2025] Спасибо! За 1000+ скачиваний. 
      [08.12.2025] ВНИМАНИЕ! Мод не рекомендуется к использованию для новичков. Мод признается старым.
       
      Информация:
      1) Dc_Cmd
      2) Mysql, mode, language - Всё настраивается теперь в pawno ( UPDATE: 1.1.0 )
      3) Административные права в данный момент можно выдать через /amakeadmin(Смотреть уроки) или БД ( UPDATE: 1.2.2 ).

      Всё что я делаю сейчас, смотрите в изменениях.
      Что сделал:
       

      Как установить мод на хостинг(Чтобы больше не было вопросов в ЛС):
      RUTUBE: https://rutube.ru/video/private/f74276be05e090652ee46bcbe2b4e27d/?p=6tWFvG_lTFk4sHVaCjheZQ
      YOUTUBE: https://youtu.be/z07sJUAVQpI
      Добавил Доналдо Фарекелка Добавлено 13.04.2023 Категория Моды Автор shenol (vk.com/donaldo_farekelka)