ClickTexDraw
#1

Вообщем, прошу прощения я уже наверное надоел вам на этом форуме со своими проблемами. В этой теме https://sampforum.blast.hk/showthread.php?tid=476939 мне помогли сделать то что я не мог. Ну теперь столкнулся с такой проблемой. Вот скрин

Бесконечно пишутся эти сообщения, тоесть функция постоянно выполняется и неостанавливается, но TexDraw исчезает, что мне и нужно было при нажатии ESC но мне вот блин нужно чтоб это действие срабатывало один раз, а не бесконечное количество.

Вот мой код) Я новичок мне больше кроме вас никто не поможет вот мой код писал сам. Я вас не заставляю мне переделать мой код и всё сделать за меня. Просто скажи что тут не так и приведи пример на моём коде пожалуйста))

PHP код:
public OnPlayerClickTextDraw(playeridText:clickedid)
{
      if(
JobWood[playerid] == 1)
      {
          if(
clickedid == WoodJob[1])
          {
              
TexDrawWood[playerid] += 1;
              
TextDrawHideForPlayer(playeridWoodJob[1]);
              if(
TexDrawWood[playerid] == 6)
              {
                  
TogglePlayerControllable(playerid1);
                  
TextDrawHideForPlayer(playeridWoodJob[0]);
                  
TextDrawHideForPlayer(playeridWoodJob[1]);
                  
TextDrawHideForPlayer(playeridWoodJob[2]);
                  
TextDrawHideForPlayer(playeridWoodJob[3]);
                  
TextDrawHideForPlayer(playeridWoodJob[4]);
                  
TextDrawHideForPlayer(playeridWoodJob[5]);
                  
TextDrawHideForPlayer(playeridWoodJob[6]);
                  
CancelSelectTextDraw(playerid);
                  
SetPlayerCheckpoint(playerid,-456.2800,-48.9314,59.9215,1.0);
                  
ApplyAnimation(playerid,"PED","IDLE_chat",4.1,0,0,0,1,3150);
                      
ResetPlayerWeapons(playerid);
                      
SetPlayerAttachedObject(playerid,214581, -1.0348441.116571, -0.06512476.48014875.781570280.9525450.5755990.6045540.624122);
                      
SetPlayerAttachedObject(playerid,314631, -0.2050071.545087, -0.014800171.40682996.1146160.0660090.4036671.0000001.021239 );
               }
          }
          else if(
clickedid == WoodJob[2])
          {
              
TexDrawWood[playerid] += 1;
              
TextDrawHideForPlayer(playeridWoodJob[2]);
              if(
TexDrawWood[playerid] == 6)
              {
                  
TogglePlayerControllable(playerid1);
                  
TextDrawHideForPlayer(playeridWoodJob[0]);
                  
TextDrawHideForPlayer(playeridWoodJob[1]);
                  
TextDrawHideForPlayer(playeridWoodJob[2]);
                  
TextDrawHideForPlayer(playeridWoodJob[3]);
                  
TextDrawHideForPlayer(playeridWoodJob[4]);
                  
TextDrawHideForPlayer(playeridWoodJob[5]);
                  
TextDrawHideForPlayer(playeridWoodJob[6]);
                  
CancelSelectTextDraw(playerid);
                  
SetPlayerCheckpoint(playerid,-456.2800,-48.9314,59.9215,1.0);
                  
ApplyAnimation(playerid,"PED","IDLE_chat",4.1,0,0,0,1,3150);
                  
ResetPlayerWeapons(playerid);
                  
SetPlayerAttachedObject(playerid,214581, -1.0348441.116571, -0.06512476.48014875.781570280.9525450.5755990.6045540.624122);
                  
SetPlayerAttachedObject(playerid,314631, -0.2050071.545087, -0.014800171.40682996.1146160.0660090.4036671.0000001.021239 );
               }
          }
          else if(
clickedid == WoodJob[3])
          {
              
TexDrawWood[playerid] += 1;
              
TextDrawHideForPlayer(playeridWoodJob[3]);
              if(
TexDrawWood[playerid] == 6)
              {
                  
TogglePlayerControllable(playerid1);
                  
TextDrawHideForPlayer(playeridWoodJob[0]);
                  
TextDrawHideForPlayer(playeridWoodJob[1]);
                  
TextDrawHideForPlayer(playeridWoodJob[2]);
                  
TextDrawHideForPlayer(playeridWoodJob[3]);
                  
TextDrawHideForPlayer(playeridWoodJob[4]);
                    
TextDrawHideForPlayer(playeridWoodJob[5]);
                    
TextDrawHideForPlayer(playeridWoodJob[6]);
                    
CancelSelectTextDraw(playerid);
                    
SetPlayerCheckpoint(playerid,-456.2800,-48.9314,59.9215,1.0);
                    
ApplyAnimation(playerid,"PED","IDLE_chat",4.1,0,0,0,1,3150);
                    
ResetPlayerWeapons(playerid);
                     
SetPlayerAttachedObject(playerid,214581, -1.0348441.116571, -0.06512476.48014875.781570280.9525450.5755990.6045540.624122);
                     
SetPlayerAttachedObject(playerid,314631, -0.2050071.545087, -0.014800171.40682996.1146160.0660090.4036671.0000001.021239 );
               }
          }
          else if(
clickedid == WoodJob[4])
          {
              
TexDrawWood[playerid] += 1;
              
TextDrawHideForPlayer(playeridWoodJob[4]);
              if(
TexDrawWood[playerid] == 6)
              {
                  
TogglePlayerControllable(playerid1);
                  
TextDrawHideForPlayer(playeridWoodJob[0]);
                  
TextDrawHideForPlayer(playeridWoodJob[1]);
                  
TextDrawHideForPlayer(playeridWoodJob[2]);
                  
TextDrawHideForPlayer(playeridWoodJob[3]);
                  
TextDrawHideForPlayer(playeridWoodJob[4]);
                  
TextDrawHideForPlayer(playeridWoodJob[5]);
                  
TextDrawHideForPlayer(playeridWoodJob[6]);
                  
CancelSelectTextDraw(playerid);
                  
SetPlayerCheckpoint(playerid,-456.2800,-48.9314,59.9215,1.0);
                  
ApplyAnimation(playerid,"PED","IDLE_chat",4.1,0,0,0,1,3150);
                    
ResetPlayerWeapons(playerid);
                    
SetPlayerAttachedObject(playerid,214581, -1.0348441.116571, -0.06512476.48014875.781570280.9525450.5755990.6045540.624122);
                    
SetPlayerAttachedObject(playerid,314631, -0.2050071.545087, -0.014800171.40682996.1146160.0660090.4036671.0000001.021239 );
               }
          }
          else if(
clickedid == WoodJob[5])
          {
              
TexDrawWood[playerid] += 1;
              
TextDrawHideForPlayer(playeridWoodJob[5]);
              if(
TexDrawWood[playerid] == 6)
              {
                  
TogglePlayerControllable(playerid1);
                  
TextDrawHideForPlayer(playeridWoodJob[0]);
                  
TextDrawHideForPlayer(playeridWoodJob[1]);
                  
TextDrawHideForPlayer(playeridWoodJob[2]);
                  
TextDrawHideForPlayer(playeridWoodJob[3]);
                  
TextDrawHideForPlayer(playeridWoodJob[4]);
                  
TextDrawHideForPlayer(playeridWoodJob[5]);
                  
TextDrawHideForPlayer(playeridWoodJob[6]);
                  
CancelSelectTextDraw(playerid);
                  
SetPlayerCheckpoint(playerid,-456.2800,-48.9314,59.9215,1.0);
                  
ApplyAnimation(playerid,"PED","IDLE_chat",4.1,0,0,0,1,3150);
                    
ResetPlayerWeapons(playerid);
                    
SetPlayerAttachedObject(playerid,214581, -1.0348441.116571, -0.06512476.48014875.781570280.9525450.5755990.6045540.624122);
                    
SetPlayerAttachedObject(playerid,314631, -0.2050071.545087, -0.014800171.40682996.1146160.0660090.4036671.0000001.021239 );
               }
          }
          else if(
clickedid == WoodJob[6])
          {
              
TexDrawWood[playerid] += 1;
              
TextDrawHideForPlayer(playeridWoodJob[6]);
              if(
TexDrawWood[playerid] == 6)
              {
                  
TogglePlayerControllable(playerid1);
                  
TextDrawHideForPlayer(playeridWoodJob[0]);
                  
TextDrawHideForPlayer(playeridWoodJob[1]);
                  
TextDrawHideForPlayer(playeridWoodJob[2]);
                  
TextDrawHideForPlayer(playeridWoodJob[3]);
                  
TextDrawHideForPlayer(playeridWoodJob[4]);
                  
TextDrawHideForPlayer(playeridWoodJob[5]);
                  
TextDrawHideForPlayer(playeridWoodJob[6]);
                  
CancelSelectTextDraw(playerid);
                  
SetPlayerCheckpoint(playerid,-456.2800,-48.9314,59.9215,1.0);
                  
ApplyAnimation(playerid,"PED","IDLE_chat",4.1,0,0,0,1,3150);
                    
ResetPlayerWeapons(playerid);
                    
SetPlayerAttachedObject(playerid,214581, -1.0348441.116571, -0.06512476.48014875.781570280.9525450.5755990.6045540.624122);
                    
SetPlayerAttachedObject(playerid,314631, -0.2050071.545087, -0.014800171.40682996.1146160.0660090.4036671.0000001.021239 );
               }
          }
      }
      if(
clickedid == Text:INVALID_TEXT_DRAW)
      {
          if(
JobWood[playerid] == 1)
          {
              
TogglePlayerControllable(playerid1);
              
TextDrawHideForPlayer(playeridWoodJob[0]);
              
TextDrawHideForPlayer(playeridWoodJob[1]);
              
TextDrawHideForPlayer(playeridWoodJob[2]);
              
TextDrawHideForPlayer(playeridWoodJob[3]);
              
TextDrawHideForPlayer(playeridWoodJob[4]);
              
TextDrawHideForPlayer(playeridWoodJob[5]);
              
TextDrawHideForPlayer(playeridWoodJob[6]);
              
CancelSelectTextDraw(playerid);
              
TexDrawWood[playerid] = 0;
              
ClearAnimations(playerid);
              
ResetPlayerWeapons(playerid);
              
DisablePlayerCheckpoint(playerid);
              if(
IsPlayerAttachedObjectSlotUsed(playerid,2)) RemovePlayerAttachedObject(playerid,2);
                if(
IsPlayerAttachedObjectSlotUsed(playerid,3)) RemovePlayerAttachedObject(playerid,3);
                
SendClientMessage(playerid,COLOR_RED,"Ошибка! Вы нарушили режим работы. Бегите переоденьтесь!");
          }
      }
      return 
true;

Reply
#2

В соседней теме вам ответили:
Quote:
Originally Posted by White_116
Посмотреть сообщение
Только желательно проверку ещё поставить, скрыт или не скрыт. Бывает данный калбек начинает флудить clickedid == 65535
Как это сделать.
1. Создать глобальную переменную:
pawn Код:
new bool:clicktd[MAX_PLAYERS];
2. Поставить проверку "показан ли textdraw" — добавить выделенные элементы в ваш код:
Код:
      if(clickedid == Text:INVALID_TEXT_DRAW) 
      { 
          if(JobWood[playerid] == 1 && clicktd[playerid] == true) 
          { 
              TogglePlayerControllable(playerid, 1); 
              TextDrawHideForPlayer(playerid, WoodJob[0]); 
              TextDrawHideForPlayer(playerid, WoodJob[1]); 
              TextDrawHideForPlayer(playerid, WoodJob[2]); 
              TextDrawHideForPlayer(playerid, WoodJob[3]); 
              TextDrawHideForPlayer(playerid, WoodJob[4]); 
              TextDrawHideForPlayer(playerid, WoodJob[5]); 
              TextDrawHideForPlayer(playerid, WoodJob[6]); 
              CancelSelectTextDraw(playerid); 
              TexDrawWood[playerid] = 0; 
              clicktd[playerid] = false;
              ClearAnimations(playerid); 
              ResetPlayerWeapons(playerid); 
              DisablePlayerCheckpoint(playerid); 
              if(IsPlayerAttachedObjectSlotUsed(playerid,2)) RemovePlayerAttachedObject(playerid,2); 
                if(IsPlayerAttachedObjectSlotUsed(playerid,3)) RemovePlayerAttachedObject(playerid,3); 
                SendClientMessage(playerid,COLOR_RED,"Ошибка! Вы нарушили режим работы. Бегите переоденьтесь!"); 
          } 
      }
3. Одновременно с показом кликабельного textdraw игроку выполнять данный код:
pawn Код:
clicktd[playerid] = true;
Reply
#3

Огромное вам человеческое спасибо! Всё объяснили теперь я понял как делать эту проверку!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)