Question

Здравствуйте, такая проблема первый раз инвентарь "Y" открывает , на второй раз открывается и сразу закрывается ... вот код я думаю что тут я не правильно что-то сделал . Заранее спасибо

if(_:clickedid == INVALID_TEXT_DRAW)
	{
		for(new i; i < 16; i++) {
			TextDrawHideForPlayer(playerid, inv_global[i]);
		}
		for(new i; i < 60; i++) {
			PlayerTextDrawHide(playerid, inv_player[playerid][i]);
		}
	 	CancelSelectTextDraw(playerid);
	 	return 1;

 

Share this post


Link to post

11 answers to this question

  • 0

@Drummer1993 чтобы закрыть, нажми кнопку "Вопрос решён" около ответа, который тебе помог

Share this post


Link to post
  • 0
}
	if(PRESSED(KEY_NO)) { // KEY_NO
		ShowInventory(playerid);
		for(new i=0; i<16; i++) {
			TextDrawShowForPlayer(playerid, inv_global[i]);
		}
		for(new i; i < 60; i++) {
			PlayerTextDrawShow(playerid, inv_player[playerid][i]);
		}
		SelectTextDraw(playerid, 0xEA363FFF);
  		return 1;

 

Share this post


Link to post
  • 0

Возможно, ты ESC нажимаешь, просто этого не замечаешь? Глупо конечно.. но, как вариант

Share this post


Link to post
  • 0

подниму!
просто кнопка KEY_NO работает один раз , второй раз жму "N" открылось и резко закрылось .. не могу понять что не так сделал

Share this post


Link to post
  • 0

@Drummer1993 весь паблик с клавишами скинь. Или все, что там есть у тебя с инвентарем

Share this post


Link to post
  • 0
8 часов назад, SCRIPTMAN сказал:

@Drummer1993 весь паблик с клавишами скинь. Или все, что там есть у тебя с инвентарем

https://pastebin.com/AMs6HnMp это все что есть инвентарь 
https://pastebin.com/tyurB1rb public OnPlayerKeyStateChange

Share this post


Link to post
  • 0
if(PRESSED(KEY_NO)) { // KEY_NO
		for(new A; A != 15; A++)//15
    	{
        	PlayerTextDrawSetPreviewModel(playerid, inv_player[playerid][59], GetPlayerSkin(playerid));//59
        	PlayerTextDrawShow(playerid, inv_player[playerid][A]);
    	}
		for(new i=0; i<16; i++) {
			TextDrawShowForPlayer(playerid, inv_global[i]);
		}
		for(new i; i < 60; i++) {
			PlayerTextDrawShow(playerid, inv_player[playerid][i]);
		}
		SelectTextDraw(playerid, 0xEA363FFF);
  		SetPVarInt(playerid, "inventory_td_check", 1);
  		return 1;

Сделай так, но, пока я это всё это писал, появилась идея, то, замени первый код на этот:

if(_:clickedid == INVALID_TEXT_DRAW && GetPVarInt(playerid, "inventory_td_check") == 1)
	{
		for(new i; i < 16; i++) {
			TextDrawHideForPlayer(playerid, inv_global[i]);
		}
		for(new i; i < 60; i++) {
			PlayerTextDrawHide(playerid, inv_player[playerid][i]);
		}
	 	CancelSelectTextDraw(playerid);
  		DeletePVar(playerid, "inventory_td_check");
	 	return 1;

Не стоит конечно юхать пвары, но, попробуй.

Вкратце объясню: у тебя идёт проверка: если игрок нажал ESC, то TD скрываются, но не указано, какой тд открыт, я добавил, что бы кроме нажатия кнопки, была проверка, а тот ли TD сейчас показывается у игрока.

Share this post


Link to post
  • 0
28 минут назад, SCRIPTMAN сказал:

if(PRESSED(KEY_NO)) { // KEY_NO
		for(new A; A != 15; A++)//15
    	{
        	PlayerTextDrawSetPreviewModel(playerid, inv_player[playerid][59], GetPlayerSkin(playerid));//59
        	PlayerTextDrawShow(playerid, inv_player[playerid][A]);
    	}
		for(new i=0; i<16; i++) {
			TextDrawShowForPlayer(playerid, inv_global[i]);
		}
		for(new i; i < 60; i++) {
			PlayerTextDrawShow(playerid, inv_player[playerid][i]);
		}
		SelectTextDraw(playerid, 0xEA363FFF);
  		SetPVarInt(playerid, "inventory_td_check", 1);
  		return 1;

Сделай так, но, пока я это всё это писал, появилась идея, то, замени первый код на этот:


if(_:clickedid == INVALID_TEXT_DRAW && GetPVarInt(playerid, "inventory_td_check") == 1)
	{
		for(new i; i < 16; i++) {
			TextDrawHideForPlayer(playerid, inv_global[i]);
		}
		for(new i; i < 60; i++) {
			PlayerTextDrawHide(playerid, inv_player[playerid][i]);
		}
	 	CancelSelectTextDraw(playerid);
  		DeletePVar(playerid, "inventory_td_check");
	 	return 1;

Не стоит конечно юхать пвары, но, попробуй.

Вкратце объясню: у тебя идёт проверка: если игрок нажал ESC, то TD скрываются, но не указано, какой тд открыт, я добавил, что бы кроме нажатия кнопки, была проверка, а тот ли TD сейчас показывается у игрока.

спасибо, сейчас это заменю аа в public OnPlayerKeyStateChange у меня все в порядке? просто еще вопрос 
кнопка "Н" Заехать в гараж или открыть шлагбаум очень долго нужно жать ... я где то слишал эту проблему но вспомнить не могу

Share this post


Link to post
  • 0
56 минут назад, SCRIPTMAN сказал:

if(PRESSED(KEY_NO)) { // KEY_NO
		for(new A; A != 15; A++)//15
    	{
        	PlayerTextDrawSetPreviewModel(playerid, inv_player[playerid][59], GetPlayerSkin(playerid));//59
        	PlayerTextDrawShow(playerid, inv_player[playerid][A]);
    	}
		for(new i=0; i<16; i++) {
			TextDrawShowForPlayer(playerid, inv_global[i]);
		}
		for(new i; i < 60; i++) {
			PlayerTextDrawShow(playerid, inv_player[playerid][i]);
		}
		SelectTextDraw(playerid, 0xEA363FFF);
  		SetPVarInt(playerid, "inventory_td_check", 1);
  		return 1;

Сделай так, но, пока я это всё это писал, появилась идея, то, замени первый код на этот:


if(_:clickedid == INVALID_TEXT_DRAW && GetPVarInt(playerid, "inventory_td_check") == 1)
	{
		for(new i; i < 16; i++) {
			TextDrawHideForPlayer(playerid, inv_global[i]);
		}
		for(new i; i < 60; i++) {
			PlayerTextDrawHide(playerid, inv_player[playerid][i]);
		}
	 	CancelSelectTextDraw(playerid);
  		DeletePVar(playerid, "inventory_td_check");
	 	return 1;

Не стоит конечно юхать пвары, но, попробуй.

Вкратце объясню: у тебя идёт проверка: если игрок нажал ESC, то TD скрываются, но не указано, какой тд открыт, я добавил, что бы кроме нажатия кнопки, была проверка, а тот ли TD сейчас показывается у игрока.

все работает спасибо огромное ! 

Share this post


Link to post
  • 0

@Drummer1993 

pc_cmd_how

предоставь

MyButtonSystem(playerid)

и это

Share this post


Link to post
  • 0
13 минут назад, SCRIPTMAN сказал:

@Drummer1993 


pc_cmd_how

предоставь


MyButtonSystem(playerid)

и это

уже исправил спасибо ) 

Можно закрыть. я создам новую тему есть еще проблема одна

Share this post


Link to post
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

    • By def
      arizona.pwn(23374) : error 012: invalid function call, not a valid address
      arizona.pwn(23374) : error 001: expected token: ";", but found ")"
      arizona.pwn(23374) : error 029: invalid expression, assumed zero
      arizona.pwn(23374) : fatal error 107: too many error messages on one line
      жалуется на данную строчку:
       
      %s{cccccc}Для продолжения нажмите 'Далее'",PN(playerid),playerid,ItemsInfo[itemid][ItemName2],hours,cost*hours,Inventory[playerid][2][slot], AksColorName(Inventory[playerid][4][slot]), Inventory[playerid][5][slot] ? GetNameStripe(Inventory[playerid][5][slot]) : "");