GTA.cz

SA:MP - Pawno - [TUT] Ako na menu Roman Lipka | 22.08.2008

na menu je potrebne vediet o tychto publikoch/prikazoch:

Public OnPlayerSelectedMenuRow(playerid, row) sa spusti vtedy, ked hrac stlaci shift pocas zapnuteho nejakeho menu (teda ked vybral nejaky riadok s id "row")
Tento public vracia hodnoty playerid (id hraca, ktory "aktivoval" tento publik) a row (cislo riadku aktivneho menu - prvy riadok ma hodnotu 0)
 
public OnPlayerSelectedMenuRow(playerid, row)
{
  return 1;
}

 
 
 
Public OnPlayerExitedMenu(playerid) sa spusti vtedy, ked hrac stlaci enter pocas zapnuteho nejakeho menu (teda ked chce odist z menu)
kedze medzi ( ) ma iba playerid, vracia iba tuto hodnotu ( id hraca, ktory "aktivoval" tento publik)
 
public OnPlayerExitedMenu(playerid)
{
   return 1;
}

 
 

POZOR: V mode nemozu byt 2 publici s rovnakym nazvom!
Kazde menu moze mat svoje id, toto id sa moze priradit Menu:premennej, ktora musi byt takto zadefinovana:
 
new Menu:Menu1;
 
 

Na zistenie id aktualneho mena otvoreneho urcitemu hracovi sa pouziva prikaz Menu:GetPlayerMenu(playerid);.
 
Menu1=GetPlayerMenu(playerid);
 
 

Prikaz CreateMenu(nazov[], pocetstlpcov, Float:polohaX, Float:polohaY, Float:sirka1stlpca, Float:sirka2stlpca); sa pouziva na vytvorenie menu (zakladu). Tento prikaz vracia hodnotu > id ( Napr. Menu1=CreateMenu(... a tym Menu1 ma hodnotu rovnajucej id vytvoreneho mena), za nazov[] sa dosadzuje bud nejaky "string" (radova premenna) alebo rovno "text" (funguju v nom atributy ~r~, ~g~, ~b~, ~w~, ~y~, ~p~ ... na zmenu farby), za pocetstlpcov sa dosadzuje bud obycajna premenna alebo pocet cislo(pocet stlpcov), za polohaX bud premennu typu Float alebo cislo, ktore udava polohu mena na X osi, polohaY to iste ako polohaX ibaze na Y-osi, za sirka1stlpca bud premennu "Float" alebo cislo udavajuce sirku prveho stlpca v menu ...
 
Menu1 = CreateMenu("text", 1, 150.0, 150.0, 150.0, 0);
 
 

Prikaz DestroyMenu(Menu:menuid); sa pouziva na znicenie menu.
Do zatvorky sa prida bud Menu:premenna (vyjadrujuca id urciteho menu) alebo cislo (neprakticke).
 
DestroyMenu(Menu1);
 
 

prikaz SetMenuColumnHeader(Menu:menuid, stlpec, nazov[]); prida stlpec do menu. Za menuid sa dava id urciteho menu, kde chcete pridat ten stlpec. Za stlpec sa dava id stlpca, ktore bude mat pri pridavani riadkov. A za nazov[] sa dava nazov, napr. "cena".
 
SetMenuColumnHeader(Menu1, 0, "cena");
 
 

prikaz AddMenuItem(Menu:menuid, stlpec, text[]); sa pouziva na pridanie riadka (tlacitka) do urciteho menu a stlpca. Za stlpec sa dava cislo stlpca, v ktorom ma byt riadok (ak menu ma iba jeden stlpec, tak tam ma byt 0). A za text[] sa pise bud string[] alebo "text" ktory sa zobrazi na tom riadku.
 
AddMenuItem(Menu1, 0, "teleport");
 
 

prikaz ShowMenuForPlayer(Menu:menuid, idhraca); sa pouziva na zobrazenie menu pre urciteho hraca.Tento prikaz je dolezity, bez neho ziadny hrac neuvidi vytvorene menu.Za idhraca sa zadava id hraca, ktoremu sa ma urcite menu s menuid zobrazit.
 
ShowMenuForPlayer(Menu1, playerid);
 
 

prikaz HideMenuForPlayer(Menu:menuid, idhraca); je vlastne opakom prikazu ShowMenuForPlayer, teda skrije urcite menu urcitemu hracovi.
 
HideMenuForPlayer(Menu1, playerid);
 
 

Prikaz IsValidMenu(Menu:menuid); vracia hodnotu podla toho, ci urcite menu existuje. Tento prikaz je dost dolezity v tom, aby sa nahodou neprekrizovali hracovi 2 menu (pretoze ak bude hrac mat 2 menu, hra mu moze padat).
 
 if(IsValidMenu(Menu1)) // prikazy sa vykonaju ak zadane menu existuje 
 
 

alebo
 
 if(!IsValidMenu(Menu1)) // prikazy sa vykonaju ak zadane menu neexistuje
 
 

POZOR: Nemozu byt vytvorene jednemu hracovi 2 menu naraz!

Priklad
Je vela sposobov, ako vytvorit menu, tu je zopar moznosti v tomto jednom systeme:
Tento system objavil programmator Magor a je podla mna najlepsi ako len moze byt...
 
forward vytvorhlavnemenu(playerid);
forward vytvorprvemenu(playerid);
forward vytvordruhemenu(playerid);
 
 
 
new Menu:hlavnemenu;
new Menu:prvemenu;
new Menu:druhemenu; 
 
 
 
public vytvorhlavnemenu(playerid)
{
  new Menu:current;
  TogglePlayerControllable(playerid, 0);
  current = GetPlayerMenu(playerid);
  if(IsValidMenu(current)) HideMenuForPlayer(current, playerid);
  if(IsValidMenu(hlavnemenu))
  {
      ShowMenuForPlayer(hlavnemenu, playerid);
      return 1;
  }
  hlavnemenu=CreateMenu("~r~menu",1, 20.0, 150.5, 100.0, 0.0);
  AddMenuItem(hlavnemenu, 0, "PrveMenu");
  AddMenuItem(hlavnemenu, 0, "DruheMenu");
  AddMenuItem(hlavnemenu, 0, "Zrusit");
  ShowMenuForPlayer(hlavnemenu, playerid);
  return 1;
}
public vytvorprvemenu(playerid)
{
  new Menu:current;
  current = GetPlayerMenu(playerid);
  if(IsValidMenu(current)) HideMenuForPlayer(current, playerid);
  if(IsValidMenu(prvemenu))
  {
      ShowMenuForPlayer(prvemenu, playerid);
      return 1;
  }
  prvemenu=CreateMenu("~b~prve~w~ menu",2, 20.0, 150.5, 70.0, 0.0);
  SetMenuColumnHeader(prvemenu, 0, "~r~kupit");
  SetMenuColumnHeader(prvemenu, 1, "~g~cena");
  AddMenuItem(prvemenu, 0, "Tec9");
  AddMenuItem(prvemenu, 1, "500$");
  AddMenuItem(prvemenu, 0, "Spat");
  AddMenuItem(prvemenu, 1, "zadarmo");
  ShowMenuForPlayer(prvemenu, playerid);
  return 1;
}
public vytvordruhemenu(playerid)
{
  new Menu:current;
  current = GetPlayerMenu(playerid);
  if(IsValidMenu(current)) HideMenuForPlayer(current, playerid);
  if(IsValidMenu(druhemenu))
  {
      ShowMenuForPlayer(druhemenu, playerid);
      return 1;
  }
  druhemenu=CreateMenu("~b~druhe~w~ menu",1,20.0,150.5,170.0,0.0);
  AddMenuItem(druhemenu, 0, "Piratska Lod");
  AddMenuItem(druhemenu, 0, "Wang cars");
  AddMenuItem(druhemenu, 0, "US Bank Tower");
  AddMenuItem(druhemenu, 0, "hora Chilliad");
  AddMenuItem(druhemenu, 0, "Spat");
  ShowMenuForPlayer(druhemenu, playerid);
  return 1;
}
 
 
 
public OnPlayerSelectedMenuRow(playerid, row)
{
 new Menu:current;
 current = GetPlayerMenu(playerid);
 if(current == hlavnemenu)
 {
     switch(row)
     {
         case 0: vytvorprvemenu(playerid);
         case 1: vytvordruhemenu(playerid);
         case 2: TogglePlayerControllable(playerid, 1);
     }
     return 1;
 }
 if(current == prvemenu)
 {
     switch(row)
     {
        case 0: {
            GivePlayerMoney(playerid, 0-500);
            GivePlayerWeapon(playerid, 32, 100);
            vytvorprvemenu(playerid);
                    }
        case 1: vytvorhlavnemenu(playerid);
     }
     return 1;
 }
 if(current == druhemenu)
 {
         if(row!=4){
             if(row==0)SetPlayerPos(playerid,2025.1257,1545.0879,10.3481);
             if(row==1)SetPlayerPos(playerid,-1980.8552,253.6175,35.3494);
             if(row==2)SetPlayerPos(playerid,1540.3540,-1359.2543,329.4631);
             if(row==3)SetPlayerPos(playerid,-2235.8953,-1735.8722,480.7959);
             TogglePlayerControllable(playerid, 1);}
         else vytvorhlavnemenu(playerid);
         return 1;
 }
 return 1;
}
 
 
 
public OnPlayerExitedMenu(playerid)
{
   new Menu:current;
   current = GetPlayerMenu(playerid);
   if(current == hlavnemenu) TogglePlayerControllable(playerid, 1);
   if(current == prvemenu) vytvorhlavnemenu(playerid);
   if(current == druhemenu) vytvorhlavnemenu(playerid);
   return 1;
}
 
 

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256];
    new idx=0;
    cmd = strtok(cmdtext, idx);
    if (strcmp(cmd, "/menu", true) == 0) {
        vytvorhlavnemenu(playerid); // prikaz na zapnutie hlavneho menu
        return 1;
    }
    return 0;
}


By t_Mc]Virus

vyhledávání

reklama

editorial

Leaky nám již nějakou předběžnou podobu Grand Theft Auto 6 ukázaly. Musíme však ještě chvíli vydržet, než se dočkáme oficiálního představení v plné parádě. Jistě je, ale to, že se hra konečně blíží! V druhém pololetí 2023 bych očekával alespoň odhalení loga, či alespoň nějaké malé oficiální naťuknutí. Leaky totiž pochází z ranných fází vývoje hry a ta může být již na úplně jiné úrovni. Možná, že už není čím hráče překvapit, možná ale bude GTA 6 zas pořádný gamechanger. Těšíte se také? :)

Šéfredaktor

návštěvnost

odkazy

naše ikona

GTA.cz

partneři


Online hokej manažer - Zahraj si skutečný hokejový manažer!
3D wide HD wallpapers tapety na plochu

Vyťukej.cz

Zobrazit vše

Zahrajte si hry online hned teď!

© 2005 - 2024  Honza Svatoš & Scorpions.cz | XHTML & CSS:  Ondřej Mirtes | Design:  Paľo Delinčák | Ochrana osobních údajů | Nastavení cookies