AMX MOD X
Воскресенье, 20.09.2020, 07:23:56



Приветствую Вас Гость | RSS
[ Главная ] [ обратная связь между несколькими меню - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » обратная связь между несколькими меню
обратная связь между несколькими меню
FreeKILLДата: Суббота, 02.01.2010, 14:46:36 | Сообщение # 1
Подполковник
Группа: Пользователи
Сообщений: 143
Репутация: 4
Статус: Не в сети
никак не получается сделать связь между двумя меню(их будет больше, но щас хотябы 2 нужно сделать)
вот код
Code

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>

#define PLUGIN "Admin Control"
#define VERSION "3.6" //2 day
#define AUTHOR "~Free*.*KILL~"
new invisibly[33][2]
new g_HmenuPosition[33]
new g_RevmenuPosition[33]
new g_SmenuPosition[33]
new g_GrmenuPosition[33]
new g_WmenuPosition[33]
new g_GomenuPosition[33]
new g_ImenuPosition[33]
new g_ResmenuPosition[33]
new g_menuPlayers[33][32]
new g_menuPlayersNum[33]
new menuBody[512]
new g_coloredMenus
new bool:g_menuREVOption[33] = false

#define keysmenu (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9)

public plugin_init() {
  register_plugin(PLUGIN, VERSION, AUTHOR)
  register_dictionary("admin_control.txt")
  register_clcmd("admin_control", "showadmincontrol", ADMIN_IMMUNITY, "")
  register_menucmd(register_menuid("admincontrol"), keysmenu, "switchmenu")
  register_menucmd(register_menuid("Revive Menu2"), 1023, "actionReviveMenu")
  register_menucmd(register_menuid("HP Menu"), 1023, "actionHPMenu")
  register_menucmd(register_menuid("Speed Menu"), 1023, "actionSpeedMenu")
  register_menucmd(register_menuid("Gravity Menu"), 1023, "actionGravityMenu")
  register_menucmd(register_menuid("Weapons Menu"), 1023, "actionWeaponsMenu")
  register_menucmd(register_menuid("Godmode Menu"), 1023, "actionGodmodeMenu")
  register_menucmd(register_menuid("Invisibility Menu"), 1023, "actionInvisibilityMenu")
  register_menucmd(register_menuid("Restoration Menu"), 1023, "actionRestorationMenu")
   
   
}
public client_putinserver(id) {
  //if(is_user_bot(id))
   //return PLUGIN_HANDLED
   
  //invisibly[id][0]
}
public showadmincontrol(id,level,cid) {
  if(!cmd_access(id,level,cid,1)) {
   client_print(id, print_chat, "%L", LANG_SERVER, "NO_ACCESS")
   return PLUGIN_HANDLED
  }
   
  g_menuREVOption[id] = false
  show_menu(id, keysmenu, "Admin Control^n^n1: Give Revive^n2: Give HP^n3: Give Speed^n4: Give Gravity^n5: Give Weapons^n6: Give GodMod^n7: Give Invisibility^n8: Give Restoration^n^n0: Exit", -1, "admincontrol")
  return PLUGIN_HANDLED
   
}
public switchmenu(id,key) {
  switch(key) {
   case 0: displayMRevive(id, g_RevmenuPosition[id] == 0) //1
   case 1: displayMHp(id, g_HmenuPosition[id] == 0)  //2
   case 2: displayMSpeed(id, g_SmenuPosition[id] == 0) //3
   case 3: displayMGravity(id, g_GrmenuPosition[id] == 0)//4
   case 4: displayMWeapons(id, g_WmenuPosition[id] == 0)//5
   case 5: displayMGodmode(id, g_GomenuPosition[id] == 0)//6
   case 6: displayMInvisibility(id, g_ImenuPosition[id] == 0)//7
   case 7: displayMRestoration(id, g_ResmenuPosition[id] == 0)//8
   case 8: client_cmd(id, "admin_control")//9
   case 9: {
    menu_destroy(register_menuid("admincontrol"))
    return PLUGIN_HANDLED //0
   }
  }
  return PLUGIN_HANDLED
}
displayMRevive(id, pos) {
  if (pos<0)
   return
   
  get_players(g_menuPlayers[id], g_menuPlayersNum[id], "b")
   
   
  new b = 0
  new i
  new name[32]
  new start = pos * 7
   
  if (start>=g_menuPlayersNum[id])
   start = pos = g_RevmenuPosition[id] = 0
   
  new len = format(menuBody,511, g_coloredMenus ? "\r%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id , "REVIVE_MENU2", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
  new end = start + 7
  new keys = MENU_KEY_0|MENU_KEY_8
   
  if(end>g_menuPlayersNum[id])
   end=g_menuPlayersNum[id]
   
  for (new a = start; a< end; ++a) {
   i = g_menuPlayers[id][a]
   get_user_name(i, name, 31)
    
   if (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i !=id)) {
    ++b
     
    if(g_coloredMenus)
     len+=format(menuBody[len], 511-len, "\d%d. %s^n\w", b , name)
    else
     len += format(menuBody[len], 511-len, "#. %s^n", name)
   
   } else {
    keys |= (1<<b)
     
    if (is_user_admin(i))
     len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)
    else
     len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
   }
   
  }
  if(g_menuREVOption[id] == false)
   len += format(menuBody[len], 511-len, "^n8. \g%L^n", id, "REVIVE_ONE")
  if(g_menuREVOption[id] == true)
   len += format(menuBody[len], 511-len, "^n8. \g%L^n", id, "REVIVE_ALL")
  if(end!=g_menuPlayersNum[id]) {
   format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE2", id, pos ? "BACK2" : "EXIT2")
   keys |= MENU_KEY_9
  }
  else
   format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK2" : "EXIT2")
  show_menu(id,keys,menuBody,-1,"Revive Menu2")
}
public actionReviveMenu(id, key) {
  switch(key) {
   case 7: {
    if(g_menuREVOption[id]== true) {
     g_menuREVOption[id] = false
     displayMRevive(id, g_RevmenuPosition[id])
     return PLUGIN_HANDLED
    }
    else {
     g_menuREVOption[id] = true
     displayMRevive(id, g_RevmenuPosition[id])
     return PLUGIN_HANDLED
    }
    return PLUGIN_HANDLED
   }
   case 8: displayMRevive(id, ++g_RevmenuPosition[id])
   case 9: {
    displayMRevive(id, --g_RevmenuPosition[id])
   }
   default: {
    new player = g_menuPlayers[id][g_RevmenuPosition[id] * 7 +key]
    if(g_menuREVOption[id] == false) {
     if(!is_user_alive(player)) {
     ///new name[32], name2[32], authid[32], authid2[32]
     ///get_user_name(player, name2, 31)
     ///get_user_authid(id, authid, 31)
     ///get_user_authid(player, authid2,31)
     ///get_user_name(id,name,31)
     ExecuteHamB( Ham_CS_RoundRespawn, player)
     
     displayMRevive(id, g_RevmenuPosition[id])
     return PLUGIN_HANDLED
     }
     else {
     displayMRevive(id, g_RevmenuPosition[id])
     return PLUGIN_HANDLED
     }
    }
    if(g_menuREVOption[id] == true) {
     //new maxpl = get_maxplayers()
     new in, playerCount, player1
     new players1[32]
      
     get_players(players1, playerCount, "b")
     for (in=0; in< playerCount; in++) {
      player1 = players1[in]
      ExecuteHamB( Ham_CS_RoundRespawn, player1)
      client_print(0, print_center, "%L", LANG_SERVER, "REVIVE_ALL2")
      displayMRevive(id, g_RevmenuPosition[id])
      return PLUGIN_HANDLED
     }
       
      
       
     displayMRevive(id, g_RevmenuPosition[id])
     return PLUGIN_HANDLED
     }
     
      
       
   }
     
    
  }
  return PLUGIN_HANDLED
}  
   
displayMHp(id, pos) {
   
}
public actionHPMenu(id, key) {
   
}
displayMSpeed(id, pos) {
   
}
public actionSpeedMenu(id, key) {
   
}
displayMGravity(id, pos) {
   
}
public actionGravityMenu(id, key) {
   
}
displayMWeapons(id, pos) {
   
}
public actionWeaponsMenu(id, key) {
   
}
displayMGodmode(id, pos) {
   
}
public actionGodmodeMenu(id, key) {
   
}
displayMInvisibility(id, pos) {
   
}
public actionInvisibilityMenu(id, key) {
   
}
displayMRestoration(id, pos) {
   
}    
public actionRestorationMenu(id, key) {
   
}
  

никак не получается сделать чтобы из меню register_menuid("Revive Menu2")
когда нажимаешь эксит чтобы выходило на меню изначальное register_menuid("admincontrol")
кто что знает помогите)



 
ExtasyДата: Суббота, 02.01.2010, 15:36:54 | Сообщение # 2
Лейтенант
Группа: Пользователи
Сообщений: 61
Репутация: 3
Статус: Не в сети
Code
case 9: // кнопка exit
{
   client_cmd(id, "admin_control")
}
 
FreeKILLДата: Суббота, 02.01.2010, 20:51:20 | Сообщение # 3
Подполковник
Группа: Пользователи
Сообщений: 143
Репутация: 4
Статус: Не в сети
^^)))) это я в первую очередь проверил))
если так сделать, получится что если у меня две страницы игроков(в меню register_menuid("Revive Menu2")) то когда я перейду на вторую, у меня не будет кнопки BACK а только кнопка exit для перехода в меню admincontrol
если говорить по простому, то если сделать так как ты предлагаешь у меня не будет функции BACK (для перехода назад по страницам меню) . а без этой функции сам понимаешь получится не очень корректно.

Добавлено (02.01.2010, 20:37:20)
---------------------------------------------
самое главное для меня это найти при каком g_RevmenuPosition[id] будет включаться кнопка exit, а не back. чтобы настроить как нить...
я сам сделал меню, а все равно не понимаю)

Добавлено (02.01.2010, 20:51:20)
---------------------------------------------
чтобы было проще искать сказу говорю, главное это displayMRevive(id, pos) функция, там всё это. только немогу найти где именно)

 
PomanoBДата: Суббота, 02.01.2010, 22:18:22 | Сообщение # 4
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Code
public actionReviveMenu(id, key) {  
   switch(key) {  
    case 7: {  
     if(g_menuREVOption[id]== true) {  
      g_menuREVOption[id] = false  
      displayMRevive(id, g_RevmenuPosition[id])  
      return PLUGIN_HANDLED  
     }  
     else {  
      g_menuREVOption[id] = true  
      displayMRevive(id, g_RevmenuPosition[id])  
      return PLUGIN_HANDLED  
     }  
     return PLUGIN_HANDLED  
    }  
    case 8: displayMRevive(id, ++g_RevmenuPosition[id])  
    case 9: {  
     --g_RevmenuPosition[id]
     if (g_RevmenuPosition[id])
         displayMRevive(id, --g_RevmenuPosition[id])  
     else
         client_cmd(id, "admin_control")
    }  
    default: {  
     new player = g_menuPlayers[id][g_RevmenuPosition[id] * 7 +key]  
     if(g_menuREVOption[id] == false) {  
      if(!is_user_alive(player)) {  
      ///new name[32], name2[32], authid[32], authid2[32]  
      ///get_user_name(player, name2, 31)  
      ///get_user_authid(id, authid, 31)  
      ///get_user_authid(player, authid2,31)  
      ///get_user_name(id,name,31)  
      ExecuteHamB( Ham_CS_RoundRespawn, player)  
       
      displayMRevive(id, g_RevmenuPosition[id])  
      return PLUGIN_HANDLED  
      }  
      else {  
      displayMRevive(id, g_RevmenuPosition[id])  
      return PLUGIN_HANDLED  
      }  
     }  
     if(g_menuREVOption[id] == true) {  
      //new maxpl = get_maxplayers()  
      new in, playerCount, player1  
      new players1[32]  
        
      get_players(players1, playerCount, "b")  
      for (in=0; in< playerCount; in++) {  
       player1 = players1[in]  
       ExecuteHamB( Ham_CS_RoundRespawn, player1)  
       client_print(0, print_center, "%L", LANG_SERVER, "REVIVE_ALL2")  
       displayMRevive(id, g_RevmenuPosition[id])  
       return PLUGIN_HANDLED  
      }  
         
        
         
      displayMRevive(id, g_RevmenuPosition[id])  
      return PLUGIN_HANDLED  
      }  
       
        
         
    }  
       
      
   }  
   return PLUGIN_HANDLED  
}  

Так попробуй


http://romanov4400.mybrute.com
 
FreeKILLДата: Воскресенье, 03.01.2010, 10:27:24 | Сообщение # 5
Подполковник
Группа: Пользователи
Сообщений: 143
Репутация: 4
Статус: Не в сети
если я неошибаюсь, то по твоему коду g_RevmenuPosition[id] два раза уменьшается а потом уже и меню показывается.

Добавлено (03.01.2010, 10:16:20)
---------------------------------------------
да, я проверил. теперь действительно непоявляется список игрков)
но у меня два способа в рукаве)

Добавлено (03.01.2010, 10:21:57)
---------------------------------------------

Code
case 9: {   
      --g_RevmenuPosition[id]  
      if (g_RevmenuPosition[id])  
          displayMRevive(id, --g_RevmenuPosition[id])   
      else  
          client_cmd(id, "admin_control")  
     }   

Code
case 9: {   
      --g_RevmenuPosition[id]  
      if (g_RevmenuPosition[id])  
          displayMRevive(id, g_RevmenuPosition[id])   
      else  
          client_cmd(id, "admin_control")  
     }  

эти два способа не прокатили, ща попробую
так
Code
displayMRevive(id, pos) {
  if (pos < 0)  //при какой позиции страницы будет запускаться меню
   client_cmd(id, "admin_control")

Добавлено (03.01.2010, 10:27:24)
---------------------------------------------
во, теперь все работает)) наконец-то))

 
PomanoBДата: Воскресенье, 03.01.2010, 10:54:42 | Сообщение # 6
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Quote (FreeKILL)
если я неошибаюсь, то по твоему коду g_RevmenuPosition[id] два раза уменьшается а потом уже и меню показывается.

Случайно, забыл убрать))

Вот так надо было

Code
case 9: {    
       --g_RevmenuPosition[id]   
       if (g_RevmenuPosition[id] >= 0 )   
           displayMRevive(id, g_RevmenuPosition[id])    
       else   
           client_cmd(id, "admin_control")   
      }

По сути тоже самое, но чуточку оптимальнее, не вызывается лишний раз displayMRevive


http://romanov4400.mybrute.com
 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » обратная связь между несколькими меню
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2020