Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Проблемы с пунктами меню

, тк [РЕШЕНО]
Статус пользователя filip
сообщение 22.11.2015, 11:32
Сообщение #1


Стаж: 13 лет

Сообщений: 418
Благодарностей: 332
Полезность: 779

Всем привет. Необходимо в меню админу отображать игроков, которых он пометил, белым цветом, все остальные - серым. Пункты меню работают как триггер: первое нажатие - цвет меняется с серого на белый. Второе нажатие - с белого на серый.
Делаю вот так (строки 23-46):
Код:

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

#define PLUGIN "Register plugin"
#define VERSION "1.0"
#define AUTHOR "Admin"

#define BONUS_RATIO 30
#define BONUS_MONEY 10000

new g_MoneyBag[33]

public plugin_init ()
{
register_plugin ( PLUGIN, VERSION, AUTHOR )
RegisterHam(Ham_Killed,"player","ham_player_kill")

register_clcmd("bonus", "Bonus_Menu")
}

public Bonus_Menu(id)
{

new i_Menu = menu_create("\rКого назначить денежным мешком?", "menu_handler")
new s_Players[32], i_Num, i_Player
new s_Name[32], s_Player[10], szTempString[128]

get_players(s_Players, i_Num)

for (new i; i < i_Num; i++)
{
i_Player = s_Players[i]

get_user_name(i_Player, s_Name, charsmax(s_Name))
if(!g_MoneyBag[i_Player])
formatex( szTempString, charsmax(szTempString), "\d%L", i_Player, s_Name )
else
formatex( szTempString, charsmax(szTempString), "%L", i_Player, s_Name )
num_to_str(i_Player, s_Player, charsmax(s_Player))

menu_additem(i_Menu, szTempString, s_Player, 0)
}
menu_display(id, i_Menu, 0)
}

public menu_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}

new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new i_Player = str_to_num(s_Data)

if (is_user_alive(i_Player))
{
if (g_MoneyBag[i_Player])
{
g_MoneyBag[i_Player] = false
}else
{
g_MoneyBag[i_Player] = true
}
menu_destroy(menu)
}
return PLUGIN_HANDLED
}

public ham_player_kill(victim, attacker, corpse)
{
new VictimsName[32], AttackersName[32]

get_user_name(victim,VictimsName,31)
get_user_name(attacker,AttackersName,31)
if ((get_user_frags(victim) - get_user_deaths(victim)) > BONUS_RATIO)
{
cs_set_user_money(attacker,cs_get_user_money(attacker) + BONUS_MONEY)
client_print(attacker,print_chat,"Красавчик, получи %i $ за убийство %s", BONUS_MONEY, VictimsName)
}
if ((get_user_flags(victim) & ADMIN_ADMIN) || g_MoneyBag[victim])
{
cs_set_user_money(attacker,cs_get_user_money(attacker) + BONUS_MONEY)
client_print(attacker,print_chat,"Красавчик, получи %i $ за убийство БАНКИРА %s", BONUS_MONEY, VictimsName)
if (cs_get_user_money(victim) < BONUS_MONEY)
{
cs_set_user_money(victim, 0)
client_print(victim,print_chat,"Игрок %s забрал у вас все деньги за ваше убийство", AttackersName)
}
else
{
cs_set_user_money(victim,cs_get_user_money(victim) - BONUS_MONEY)
client_print(victim,print_chat,"Игрок %s забрал у вас %i $ за ваше убийство", AttackersName, BONUS_MONEY)
}
}
}

Но в меню появляется ML_NOTFOUND.


Такое ощущение, что библиотеки не хватает, но никто к плагину библиотеку не подключал. Как от такого бага уйти?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
persona
сообщение 22.11.2015, 11:36
Сообщение #2
Стаж: 10 лет

Сообщений: 6
Благодарностей: 3
Полезность: 0

filip,
Код:
formatex( szTempString, charsmax(szTempString), "\d%L", i_Player, s_Name )

дак а ключ ланга то где?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legend21
сообщение 22.11.2015, 11:38
Сообщение #3
Стаж: 14 лет
Город: Винница

Сообщений: 604
Благодарностей: 229
Полезность: 561

filip,

Регни мульти register_dictionary ("123.txt")

public plugin_init ()
Код:
{
register_plugin ( PLUGIN, VERSION, AUTHOR )
RegisterHam(Ham_Killed,"player","ham_player_kill")

register_clcmd("bonus", "Bonus_Menu")

register_dictionary ("123.txt")

}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя filip
сообщение 22.11.2015, 12:06
Сообщение #4


Стаж: 13 лет

Сообщений: 418
Благодарностей: 332
Полезность: 779

Цитата(persona @ 22.11.2015, 12:32) *
filip,
Код:
formatex( szTempString, charsmax(szTempString), "\d%L", i_Player, s_Name )

дак а ключ ланга то где?

Он там обязательно должен быть? Без него никак?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя filip
сообщение 22.11.2015, 12:21
Сообщение #5


Стаж: 13 лет

Сообщений: 418
Благодарностей: 332
Полезность: 779

Цитата(Legend21 @ 22.11.2015, 12:33) *
filip,

Регни мульти register_dictionary ("123.txt")

public plugin_init ()
Код:
{
register_plugin ( PLUGIN, VERSION, AUTHOR )
RegisterHam(Ham_Killed,"player","ham_player_kill")

register_clcmd("bonus", "Bonus_Menu")

register_dictionary ("123.txt")

}

Без ланга можно обойтися?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
persona
сообщение 22.11.2015, 12:23
Сообщение #6
Стаж: 10 лет

Сообщений: 6
Благодарностей: 3
Полезность: 0

filip, ну Вы же сами ставите %L..
Тогда надо так:
Код:
formatex( szTempString, charsmax(szTempString), "\d%s", s_Name )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя JIuXeP
сообщение 22.11.2015, 12:44
Сообщение #7


Стаж: 12 лет

Сообщений: 338
Благодарностей: 205
Полезность: 792

Тут даже ключа для ланга нету, о чем речь...
Код:
if(!g_MoneyBag[i_Player])
formatex( szTempString, charsmax(szTempString), "\d%L", i_Player, s_Name )
else
formatex( szTempString, charsmax(szTempString), "%L", i_Player, s_Name )

-->
Код:
if(!g_MoneyBag[i_Player])
formatex( szTempString, charsmax(szTempString), "\d%s", s_Name )
else
formatex( szTempString, charsmax(szTempString), "%s", s_Name )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Cannabis
сообщение 22.11.2015, 13:13
Сообщение #8
Стаж: 11 лет

Сообщений: 162
Благодарностей: 42
Полезность: 37

1 вариант:

в public plugin_init()
Код:
register_dictionary("blablamenu.txt")

Меню:
Код:
if(!g_MoneyBag[i_Player])
formatex( szTempString, charsmax(szTempString), "\d%L", LANG_PLAYER, "MENU1", i_Player, s_Name )
else
formatex( szTempString, charsmax(szTempString), "%L", LANG_PLAYER, "MENU1", i_Player, s_Name )

В blablamenu.txt (lang):
[ru]
MENU1 =Денег: %s ник: %s

2 вариант:
Код:
if(!g_MoneyBag[i_Player])
formatex( szTempString, charsmax(szTempString), "\dДенег: %s ник: %s", i_Player, s_Name )
else
formatex( szTempString, charsmax(szTempString), "Денег: %s ник: %s", i_Player, s_Name )

Вроде как-то так, на сколько я понял i_Player (показывает сколько денег), s_Name ник игрока.

Отредактировал: Cannabis, - 22.11.2015, 13:18
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя JIuXeP
сообщение 22.11.2015, 13:25
Сообщение #9


Стаж: 12 лет

Сообщений: 338
Благодарностей: 205
Полезность: 792

Cannabis,
i_Player - id доступных игроков из get_players..
Cкрытый текст
Код:
new i_Menu = menu_create("\rКого назначить денежным мешком?", "menu_handler")
new s_Players[32], i_Num, i_Player
new s_Name[32], s_Player[10], szTempString[128]

get_players(s_Players, i_Num)
i_Player = s_Players[i]

get_user_name(i_Player, s_Name, charsmax(s_Name))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя filip
сообщение 22.11.2015, 14:03
Сообщение #10


Стаж: 13 лет

Сообщений: 418
Благодарностей: 332
Полезность: 779

JIuXeP прав, это ай ди игрока. Попробую вариант из этого поста. Пока не могу, срочно пришлось отойти.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Cannabis
сообщение 22.11.2015, 14:04
Сообщение #11
Стаж: 11 лет

Сообщений: 162
Благодарностей: 42
Полезность: 37

Цитата(JIuXeP @ 22.11.2015, 16:21) *
Cannabis,
i_Player - id доступных игроков из get_players..
Cкрытый текст
Код:
new i_Menu = menu_create("\rКого назначить денежным мешком?", "menu_handler")
new s_Players[32], i_Num, i_Player
new s_Name[32], s_Player[10], szTempString[128]

get_players(s_Players, i_Num)
i_Player = s_Players[i]

get_user_name(i_Player, s_Name, charsmax(s_Name))

Точно.. С просони и не увидел.)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: