AMX MOD X
Четверг, 25.04.2024, 22:29:07



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

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

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

/* Plugin generated by AMXX-Studio */

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

#define PLUGIN "menu_revive"
#define VERSION "0.2"
#define AUTHOR "~Free*.*KILL~"

new players[32],name[32],info[10],choice,menu,num,i

public plugin_init() {
  register_plugin(PLUGIN, VERSION, AUTHOR)
   
  register_clcmd("say /slap","func_slap",ADMIN_KICK,"")
}

public func_slap(id,level,cid) {
  if(!cmd_access(id,level,cid,0))
  return PLUGIN_HANDLED
  menu=menu_create("SlapPlayer","menu_handler")
  get_players(players,num,"b")
  for(i=0;i<num;i++) {
   get_user_name(players[i],name,31)
   num_to_str(players[i],info,9)
   menu_additem(menu,name,info)
  }
  menu_display(id,menu,0)
  return PLUGIN_HANDLED
}
public menu_handler(id,menu,item) {
  if(item==MENU_EXIT) return PLUGIN_HANDLED
  new data[32], iName[64],access, callback
  menu_item_getinfo(menu, item, access, data,31, iName, 63, callback)
  choice = str_to_num(data)
  ExecuteHamB( Ham_CS_RoundRespawn, choice)
  return 1
}
  

заранее спс
 
PomanoBДата: Вторник, 29.12.2009, 22:55:11 | Сообщение # 2
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Перед
return 1
поставь
menu_display(id,menu,0)


http://romanov4400.mybrute.com
 
FreeKILLДата: Среда, 30.12.2009, 11:46:59 | Сообщение # 3
Подполковник
Группа: Пользователи
Сообщений: 143
Репутация: 4
Статус: Не в сети
а как сделать чтобы кнопка MENU_BACK появлялась всегда, даже когда в списке меню только одна страница?
Code
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>

#define PLUGIN "menu_revive"
#define VERSION "0.6"
#define AUTHOR "~Free*.*KILL~"

new players[32],name[32],info[10],choice,menu,num,i

public plugin_init() {
  register_plugin(PLUGIN, VERSION, AUTHOR)
   
  register_clcmd("say /r","func_slap",ADMIN_KICK,"")
}

public func_slap(id,level,cid) {
  if(!cmd_access(id,level,cid,0))
  return PLUGIN_HANDLED
  menu=menu_create("SlapPlayer","menu_handler")
  get_players(players,num,"b")
  for(i=0;i<num;i++) {
   get_user_name(players[i],name,31)
   num_to_str(players[i],info,9)
   menu_additem(menu,name,info)
   menu_addblank(menu, -2)
  }
  menu_display(id,menu,0)
  return PLUGIN_HANDLED
}
public menu_handler(id,menu,item) {
  if(item==MENU_EXIT) return PLUGIN_HANDLED
  if(item==MENU_BACK) {
   menu_display(id,menu,0)
  }
  menu_item_setname(menu, MENU_BACK, O6HOBUTb)
  new data[32], iName[64],access, callback
  menu_item_getinfo(menu, item, access, data,31, iName, 63, callback)
  choice = str_to_num(data)
  ExecuteHamB( Ham_CS_RoundRespawn, choice)
  menu_display(id,menu,0)
  return 1
}

хочется, чтобы выводилось меню, и была кнопка обновить(вместо MENU_BACK) которая будет показывать меню заново и называться "O6HOBUTb" . тоесть надо чтобы эта кнопка появлялась не только когда перешел на вторую страницу, а и когда есть только одна страница.

 
PomanoBДата: Среда, 30.12.2009, 17:12:30 | Сообщение # 4
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Это нельзя сделать, если это так необходимо, надо использовать старую систему меню

http://romanov4400.mybrute.com
 
FreeKILLДата: Среда, 30.12.2009, 17:31:52 | Сообщение # 5
Подполковник
Группа: Пользователи
Сообщений: 143
Репутация: 4
Статус: Не в сети
жаль(
а есть какой нибудь пример плагина со старой системой меню, где вывешен список игроков. Просто я не имею ни малейшего понятия как это можно сделать.
 
PomanoBДата: Четверг, 31.12.2009, 00:42:20 | Сообщение # 6
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Посмотри в стандартных плагинах, кика, бана, admincmd.sma, plmenu.sma

http://romanov4400.mybrute.com
 
FreeKILLДата: Четверг, 31.12.2009, 10:30:28 | Сообщение # 7
Подполковник
Группа: Пользователи
Сообщений: 143
Репутация: 4
Статус: Не в сети
посмотрел, сделал, но тут теперь другая проблема))) список игроков вроде норм ещё поднастрою. а вот у меня никак не получается сделать кнопку "обновить" вроде все сделал верно, а где написать её имя и т д не понимаю( и еще почему-то когда нажимаю на игрока(в списке меню) возраждаются и я и тот игрок(а может быть даже и все, я просто проверял вдвоем на серве)

вот код:

Code
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>

#define PLUGIN "ReviveMenu"
#define VERSION "1.8"
#define AUTHOR "~Free*.*KILL~"
new g_menuPosition[33]
new g_menuPlayers[33][32]
new g_menuPlayersNum[33]
new g_coloredMenus
new keys = MENU_KEY_0|MENU_KEY_8
new menuBody[512]

public plugin_init() {
  register_plugin(PLUGIN, VERSION, AUTHOR)
  register_clcmd("amx_revive", "cmdReviveMenu", ADMIN_BAN, "")
  register_menucmd(register_menuid("Revive Menu"), 1023, "actionReviveMenu")
}

public actionReviveMenu(id, key) {
  switch(key) {
   case 7: displayReviveMenu(id, g_menuPosition[id])
   case 8: displayReviveMenu(id, ++g_menuPosition[id])
   case 9: displayReviveMenu(id, --g_menuPosition[id])
   default: {
    ///new player = g_menuPlayers[id][g_menuPosition[id] * 7 +key]
    ///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)
    new maxpl = get_maxplayers()
    for(new i=1;1<=maxpl;i++) {
     ExecuteHamB( Ham_CS_RoundRespawn, i)
    }
    displayReviveMenu(id, g_menuPosition[id])
     
     
   }
  }
  return PLUGIN_HANDLED
}

displayReviveMenu(id, pos) {
  if (pos<0)
   return
   
  get_players(g_menuPlayers[id], g_menuPlayersNum[id])
   
   
  new b = 0
  new i
  new name[32]
  new start = pos * 7
   
  if (start>=g_menuPlayersNum[id])
   start = pos = g_menuPosition[id] = 0
   
  new len = format(menuBody,511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id , "REVIVE_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
  new end = start + 7
   
   
  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(end!=g_menuPlayersNum[id]) {
   format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
   keys |= MENU_KEY_9
  }
  else
   format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")
  show_menu(id,keys,menuBody,-1,"Revive Menu")
}
public cmdReviveMenu(id, level, cid) {
  if(!cmd_access(id,level,cid,1))
   return PLUGIN_HANDLED
  displayReviveMenu(id, g_menuPosition[id] = 0)
   
  return PLUGIN_HANDLED
}
 
PomanoBДата: Четверг, 31.12.2009, 11:00:45 | Сообщение # 8
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Quote (FreeKILL)
  for(new i=1;1<=maxpl;i++) {
     ExecuteHamB( Ham_CS_RoundRespawn, i)
    }

Ты делаешь цикл по всем игрокам, потому и возрождаются все
Надо просто
///new player = g_menuPlayers[id][g_menuPosition[id] * 7 +key] - раскомментировать

new player = g_menuPlayers[id][g_menuPosition[id] * 7 +key]
ExecuteHamB( Ham_CS_RoundRespawn, player )


http://romanov4400.mybrute.com
 
FreeKILLДата: Четверг, 31.12.2009, 20:34:29 | Сообщение # 9
Подполковник
Группа: Пользователи
Сообщений: 143
Репутация: 4
Статус: Не в сети
все, спс PomanoB!
я все сделал, вроде хорошо работает)
вот делюсь своими разработками, вдруг кому надо)

Добавлено (31.12.2009, 20:34:29)
---------------------------------------------
PS всех с новым годом)

Прикрепления: revivemenu.txt (0.1 Kb) · revivemenu.sma (3.2 Kb)
 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » проблема с меню
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024