[Plz Help]Problem with menus =S
#1

Hi!

I ahve these menus:

pawn Код:
shop = CreateMenu("Shop", 1, 210.0, 200.0, 150.0, 150.0);
  AddMenuItem(shop, 0, "Weapons");
  AddMenuItem(shop, 1, "Vehicles");
  AddMenuItem(shop, 2, "Other");

  weapons = CreateMenu("Weapons", 1, 210.0, 200.0, 150.0, 150.0);
  AddMenuItem(weapons, 0, "M4           $450");
  AddMenuItem(weapons, 2, "Sniper       $500");
  AddMenuItem(weapons, 3, "Grenade  $800");
  AddMenuItem(weapons, 4, "Minigun  $1000");
  AddMenuItem(weapons, 5, "Rockets  $1250");

  vehicles = CreateMenu("Vehicles", 1, 210.0, 200.0, 150.0, 150.0);
  AddMenuItem(vehicles, 0, "BMX     $250");
  AddMenuItem(vehicles, 1, "NRG-500 $500");
  AddMenuItem(vehicles, 2, "Rhino       $10000");
  AddMenuItem(vehicles, 3, "Hydra       $25000");
  AddMenuItem(vehicles, 4, "Hunter  $50000");

  other = CreateMenu("Other", 1, 210, 200.0, 150.0, 150.0);
  AddMenuItem(other, 0, "Health     $250");
  AddMenuItem(other, 1, "Armour     $350");
This is in my onplayerselectedmenurow:

pawn Код:
public OnPlayerSelectedMenuRow(playerid, row)
{
  new Menu:CurrentMenu = GetPlayerMenu(playerid);
  if (CurrentMenu == shop)
    {
    switch(row)
    {
        case 0: //Weapons
        {
                ShowMenuForPlayer(Menu:weapons,playerid);
        }
        case 1: //Vehicles
        {
        ShowMenuForPlayer(Menu:vehicles,playerid);
        }
        case 2: //Other
        {
                ShowMenuForPlayer(Menu:other,playerid);
            }
    }
    }
    if(CurrentMenu == weapons)
    {
      switch(row)
      {
        case 0: //M4 $450
        {
          GivePlayerWeapon(playerid,31,500);
          GivePlayerMoney(playerid,-450);
          SendClientMessage(playerid,COLOR_ORANGE,"Server: Enjoy your 'M4'");
          TogglePlayerControllable(playerid,1);
            }
            case 1: //Sniper $500
            {
              GivePlayerWeapon(playerid,34,500);
          GivePlayerMoney(playerid,-500);
          SendClientMessage(playerid,COLOR_ORANGE,"Server: Enjoy your 'Sniper'");
          TogglePlayerControllable(playerid,1);
            }
            case 2: //Greanades $800
        {
          GivePlayerWeapon(playerid,16,20);
          GivePlayerMoney(playerid,-800);
          SendClientMessage(playerid,COLOR_ORANGE,"Server: Enjoy your 'Grenades'");
          TogglePlayerControllable(playerid,1);
            }
            case 3: //Minigun $1000
            {
              GivePlayerWeapon(playerid,38,500);
          GivePlayerMoney(playerid,-1000);
          SendClientMessage(playerid,COLOR_ORANGE,"Server: Enjoy your 'Minigun'");
          TogglePlayerControllable(playerid,1);
            }
            case 4: //Rockets $1250
            {
              GivePlayerWeapon(playerid,35,20);
          GivePlayerMoney(playerid,-1250);
          SendClientMessage(playerid,COLOR_ORANGE,"Server: Enjoy your 'Rockets'");
          TogglePlayerControllable(playerid,1);
            }
        }
    }
    if(CurrentMenu == vehicles)
    {
      switch(row)
      {
            case 0: //BMX $250
            {
              new Float:angle;
              new Float:x,Float:y,Float:z;
                GetPlayerFacingAngle(playerid,angle);
                GetPlayerPos(playerid,x,y,z);
              CreateVehicle(481,x,y+2,z,angle,-1,-1,15);
              GivePlayerMoney(playerid,-250);
        SendClientMessage(playerid,COLOR_ORANGE,"Server: Enjoy your 'BMX'");
        TogglePlayerControllable(playerid,1);
            }
            case 1: //NRG-500 $500
            {
              new Float:angle,Float:x,Float:y,Float:z;
                GetPlayerFacingAngle(playerid,angle);
                GetPlayerPos(playerid,x,y,z);
              CreateVehicle(522,x,y+2,z,angle,-1,-1,15);
              GivePlayerMoney(playerid,-500);
        SendClientMessage(playerid,COLOR_ORANGE,"Server: Enjoy your 'NRG-500'");
        TogglePlayerControllable(playerid,1);
            }
            case 2: //Rhino $10000
            {
              new Float:angle,Float:x,Float:y,Float:z;
                GetPlayerFacingAngle(playerid,angle);
                GetPlayerPos(playerid,x,y,z);
              CreateVehicle(432,x,y+2,z,angle,-1,-1,15);
              GivePlayerMoney(playerid,-10000);
        SendClientMessage(playerid,COLOR_ORANGE,"Server: Enjoy your 'Rhino'");
        TogglePlayerControllable(playerid,1);
            }
            case 3: //Hydra $25000
            {
              new Float:angle,Float:x,Float:y,Float:z;
                GetPlayerFacingAngle(playerid,angle);
                GetPlayerPos(playerid,x,y,z);
              CreateVehicle(520,x,y+2,z,angle,-1,-1,15);
              GivePlayerMoney(playerid,-25000);
        SendClientMessage(playerid,COLOR_ORANGE,"Server: Enjoy your 'Hydra'");
        TogglePlayerControllable(playerid,1);

            }
            case 4: //Hunter $50000
            {
              new Float:angle,Float:x,Float:y,Float:z;
                GetPlayerFacingAngle(playerid,angle);
                GetPlayerPos(playerid,x,y,z);
              CreateVehicle(425,x,y+2,z,angle,-1,-1,15);
              GivePlayerMoney(playerid,-50000);
        SendClientMessage(playerid,COLOR_ORANGE,"Server: Enjoy your 'Hunter'");
        TogglePlayerControllable(playerid,1);
            }
        }
    }
    if(CurrentMenu == other)
    {
      switch(row)
      {
            case 0: //Health $250
            {
                SetPlayerHealth(playerid,100);
              GivePlayerMoney(playerid,-250);
        SendClientMessage(playerid,COLOR_ORANGE,"Server: You have been 'healed'");
        TogglePlayerControllable(playerid,1);
            }
            case 1: //Armour $350
            {
                SetPlayerArmour(playerid,100);
              GivePlayerMoney(playerid,-350);
        SendClientMessage(playerid,COLOR_ORANGE,"Server: You have been 'armoured'");
        TogglePlayerControllable(playerid,1);
            }
        }
    }
    return 1;
}

I read wiki but it confused me...


The problem is, when i do /shop, i only see a menu with the option "Weapons" and nothing else :S

plz help me
Reply
#2

Well, all items should be at column 0, not 0,2,3...
And use "else if" in your SelectedMenu callback, not only "if", otherwise it will cause bugs
Reply
#3

Quote:
Originally Posted by Scott[LT
]
Well, all items should be at column 0, not 0,2,3...
And use "else if" in your SelectedMenu callback, not only "if", otherwise it will cause bugs
I understand the last bit, but plesae explain more about the first bit
Reply
#4

A menu can only have 2 columns

pawn Код:
AddMenuItem(menu, 0, text);
Gives the item to menu 'menu' under column 1 and
pawn Код:
AddMenuItem(menu, 1, text);
gives under column 2

Note that if you want to use a menu with 2 columns, you need to set the second parameter in CreateMenu to 2
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)