PDA

Просмотр полной версии : [Вопрос] AddMenuItem



[ForD]
26.05.2014, 12:05
#include <a_samp>

#define COLOR_GREEN 0x33AA33AA

new Pickap_R;
new Menu:R_Menu;

//----
main();
public OnGameModeInit()
{
SetGameModeText("12345");
AddPlayerClass(115,2290.9331,1536.7549,10.6719,224.3528,0,0,0,0,0,0);

//
Pickap_R = CreatePickup(1313,8,2306.7813,1521.8285,10.8203,-1);

//
R_Menu = CreateMenu("My menu",1, 200.0, 145.0, 170.0);
AddMenuItem(R_Menu,0,"lala1");
AddMenuItem(R_Menu,0,"lala2");
AddMenuItem(R_Menu,0,"EXIT");
return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == Pickap_R)
{
TogglePlayerControllable(playerid, 0);
ShowMenuForPlayer(Race_Menu,playerid);
}
return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
if(GetPlayerMenu(playerid) == R_Menu)
{
switch(row)
{
case 0:
{
SendClientMessage(playerid,COLOR_GREEN,"lala1");
}
case 1:
{
SendClientMessage(playerid,COLOR_GREEN,"lala2");
}
case 2:
{
SendClientMessage(playerid,COLOR_GREEN,"exit");
HideMenuForPlayer (R_Menu,playerid);
}
}
}
return 1;
}

public OnPlayerExitedMenu(playerid)
{
TogglePlayerControllable(playerid, 1);
return 1;
}

Проблема в том что при выборе любого из пунктов не происходит действие,т.е. не выводит сообщение в чат :pardon:

Just_Fenix
26.05.2014, 12:38
Ты на enter видимо нажимаешь?

[ForD]
26.05.2014, 12:47
Ты на enter видимо нажимаешь?

Хмм..
ну да,на пробел все работает..

В чем проблема с энтером?

Just_Fenix
26.05.2014, 12:51
;39662']Хмм..
ну да,на пробел все работает..

В чем проблема с энтером?
Проблемы с ним нету) Я не знаю как это объяснить, просто ENTER - стандартная клавиша отключения меню.
Если она тебе так сильно нужна, попробуй сделать так:
Добавь в OnPlayerKeyStateChange следующее:

if(newkeys & 16)
{
TogglePlayerControllable(playerid, 0);
ShowMenuForPlayer(Race_Menu,playerid);
return 1;
}
И всё) При нажатие на клавишу ENTER снова будет вызываться меню.

[ForD]
26.05.2014, 13:14
Проблемы с ним нету) Я не знаю как это объяснить, просто ENTER - стандартная клавиша отключения меню.
Если она тебе так сильно нужна, попробуй сделать так:
Добавь в OnPlayerKeyStateChange следующее:

if(newkeys & 16)
{
TogglePlayerControllable(playerid, 0);
ShowMenuForPlayer(Race_Menu,playerid);
return 1;
}
И всё) При нажатие на клавишу ENTER снова будет вызываться меню.

Хорошо,попробуем так,спасибо.

- - - Добавлено - - -

Эмм.. а нету проверки на то открыт диалог или нет?
Просто теперь при нажатии на F\ENTER открывается меню..

DeimoS
26.05.2014, 13:54
;39665']Хорошо,попробуем так,спасибо.

- - - Добавлено - - -

Эмм.. а нету проверки на то открыт диалог или нет?
Просто теперь при нажатии на F\ENTER открывается меню..


new menu_is_opened[MAX_PLAYERS char];

При открытии меню

menu_is_opened{playerid} = 1;
При закрытии меню

menu_is_opened{playerid} = 0;
И код:

if(newkeys & 16 && menu_is_opened{playerid})
{
TogglePlayerControllable(playerid, 0);
ShowMenuForPlayer(Race_Menu,playerid);
return 1;
}

[ForD]
26.05.2014, 13:58
я примерно так и сделал уже,только чутка по другому,но все ровно спасибо.