Sign in to follow this  
Followers 0
Nister_Just

Textdraw - switch

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



Не найдено.

5 posts in this topic

Как сделать так, чтобы от 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]);
}

 

Share this post


Link to post
Share on other sites
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]);

 

 

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

Share this post


Link to post
Share on other sites
1 час назад, odosenok сказал:

 

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

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

Share this post


Link to post
Share on other sites

@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]);

 

 

Share this post


Link to post
Share on other sites

TS Posted (edited) · Report post

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]);

 

Edited by Nister_Just

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • warrion4ik
      By warrion4ik
      При телепорте по метке она тепает под текстуры и приходится перетелепортироваться, как это можно исправить?
      Видео: https://youtu.be/FLjer8lfGc0
    • glvde.
      By glvde.


      Просмотр файла Aurora RP (доработка)
      Хранение данных (версия MySQL): R41-3.
      Командный процессор: Pawn.CMD.
      Количество строк в моде (без маппинга): 65264.
      Анти-чит: Nexius-AC.

      Под доработку взята версия Aurora за декабрь 2018.
      Автор данного мода: oscar_floyd.
      Автор данной доработки: GLADE (я).

      На доработку мода ушло около одного месяца.

      Что было сделано:
       

      Так же, начал делать инвентарь (copy by Aurora), но так и не доделал.

      Дополнительные скриншоты:
       


      Не исключаю, что есть ещё баги.
      Спасибо за внимание.
      Добавил glvde. Добавлено 21.04.2020 Категория Моды Автор oscar_floyd  
    • E)/(IK
      By E)/(IK
      В моде Only RolePlay можно создать всего 612 машин,для сервера мне надо  700. Так как я буду добавлять в игру их. Просто нужно мне узнать,как сделать так,чтобы больше машин можно было спавинть. После написания команды /veh 613 0 0 пишет введите /veh [ID Машины] [цвет1] [цвет2] а если вводить меньше то все работает.