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

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

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

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

2 страниц V   1 2

Game Menu Modified

, Редактирование плагина, помогите!
Safety1st
сообщение 12.12.2012, 21:34
Сообщение #21
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(underwoker @ 12.12.2012, 21:23) *
Кусок я не убирал, а отталкивался от того что дали в 1 посте...

Я резко против примитивных грубых ошибок, поэтому для меня критично, чтобы мне код с ними не приписывали.
Я говорю не про оригинал - он не причём. Я имел ввиду правки в этом топике. Логично, что я решил, что ты говоришь про предложенную мной правку)

Цитата(basket @ 12.12.2012, 20:42) *
но пока еще держу себя в руках!

Аналогично.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SivAnOl
сообщение 13.12.2012, 19:23
Сообщение #22


Стаж: 16 лет

Сообщений: 416
Благодарностей: 49
Полезность: 13

Цитата(Safety1st @ 12.12.2012, 18:36) *
Это уже форум каждую кавычку и апостроф экранировал, когда я мудрил с тэгом на спойлер.

underwoker, не ври: это не тот же самый код. Ты опять убрал важный кусок, который я добавил. Кусок быть должен, иначе будет предпринята попытка вывести меню и оффнувшемуся игроку тоже. Это не good.
Волшебный код ;)
Код
/*
* Game Menu
* 10/12/2012
*
* It is unlikely that you are able to add more than 3 servers.
* Total allowed max game menu file size is 1010 bytes.
*
* Credits:
* - to DJ_WEST for original 'GameMenu' plugin
* - to PomanoB & UFPS.Team for 'Fix AutoBuy Bug' plugin. I used much code of it.
*/

#include <amxmodx>

#define PLUGIN "Game Menu"
#define VERSION "1.3"
#define AUTHOR "DJ_WEST / Safety1st"

#define GAMEMENU_FILE "resource/GameMenu.res"
#define MAX_SIZE 1011 // because we waste 1 additional byte for ";" later
#define MAX_CMD_SIZE 1024 // total null-terminated string size allowed for commands; it is needed to check file size

#define NEW 0
#define DEFAULT 1

new gszGMText[2][MAX_SIZE]
new gMenuId

public plugin_init() {
    register_plugin( PLUGIN, VERSION, AUTHOR )
    register_dictionary( "gamemenu.txt" )

    register_clcmd( "say /setmenu", "PrintMenu" )
    register_clcmd( "say_team /setmenu", "PrintMenu" )
}

public plugin_cfg() {
    // get file names
    new szCfgDir[128], szGMFile[2][128]
    get_localinfo( "amxx_configsdir", szCfgDir, 127 )
    formatex( szGMFile[NEW], 127, "%s/gamemenu.txt", szCfgDir )
    formatex( szGMFile[DEFAULT], 127, "%s/gamemenu_def.txt", szCfgDir )

    // load file data
    new i, fp, szData[MAX_CMD_SIZE]
    for ( i = 0; i < 2; i++ ) {
        fp = fopen( szGMFile[i], "rt" ) //read text
        if ( !fp ) {
            format( szGMFile[i], 127, "%s file not found", szGMFile[i] )
            set_fail_state( szGMFile[i] )
        }
        fgets( fp, szData, MAX_CMD_SIZE - 1 )
        if ( strlen(szData) > MAX_SIZE - 1 ) { // string lenghts are compared without null termination!
            format( szGMFile[i], 127, "%s file too big", szGMFile[i] )
            set_fail_state( szGMFile[i] )
        }
        copy( gszGMText[i], MAX_SIZE - 1, szData )
        fclose( fp )
    }

    // create menu
    gMenuId = menu_create( "MENUSET", "HandleMenu", .ml = 1 )
    menu_additem( gMenuId, "", "1" )
    menu_additem( gMenuId, "", "2" )
    menu_setprop( gMenuId, MPROP_NUMBER_COLOR, "\y" )
    menu_setprop( gMenuId, MPROP_EXIT, MEXIT_ALL )
}

public client_putinserver(id) {
    set_task( 4.0, "PrintMenu", id )
}

public PrintMenu(id) {
    if ( !is_user_connected(id) )
        return

    new szMenuTitle[256], szMenuSetNew[128], szMenuSetDefault[128], szMenuExit[64]
    formatex( szMenuTitle, charsmax(szMenuTitle) - 1, "%L", id, "GM_TITLE" )
    formatex( szMenuSetNew, charsmax(szMenuSetNew) - 1, "%L", id, "GM_NEW" )
    formatex( szMenuSetDefault, charsmax(szMenuSetDefault) - 1, "%L", id, "GM_DEFAULT" )
    formatex( szMenuExit, charsmax(szMenuExit) - 1, "%L", id, "GM_EXIT" )
    menu_item_setname( gMenuId, 0, szMenuSetNew )
    menu_item_setname( gMenuId, 1, szMenuSetDefault )
    
    menu_setprop( gMenuId, MPROP_TITLE, szMenuTitle )
    menu_setprop( gMenuId, MPROP_EXITNAME, szMenuExit )
    
    menu_display( id, gMenuId )
}

public HandleMenu( id, menu, item ) {
    if ( item == MENU_EXIT )
        return PLUGIN_HANDLED
    
    new access, info[3], callback
    menu_item_getinfo( menu, item, access, info, charsmax( info ), _, _, callback )
    new key = str_to_num( info )
    
    client_cmd( id, ";Motdfile %s", GAMEMENU_FILE )
    switch( key ) {
        case 1: {
            client_cmd( id, ";Motd_write %s", gszGMText[NEW] )
            client_print( id, print_chat, "%L", id, "GM_OKNEW" )
        }
        case 2: {
            client_cmd( id, ";Motd_write %s", gszGMText[DEFAULT] )
            client_print( id, print_chat, "%L", id, "GM_OKSTD" )
        }
    }
    // restore default CVar value; dunno whether it is needed
    client_cmd( id, ";Motdfile motd.txt" )
    
    return PLUGIN_HANDLED
}

Тоесть этот код полностью рабочий?

Цитата(basket @ 12.12.2012, 18:42) *
Да уж вроде как и демократия свобода выбора, но с жирным навязыванием игроку практически однозначного выбора.
Печаль...
Да в таком мире трудно удерживать игроков только лишь на их инициативе!
Всё больше и больше проявляется мысль о вставке и себе такого кода, но пока еще держу себя в руках!

Верно, но с возможностью выбора всёже как-то лучше. Тем более возможность восстановить стандартный)

И ещё.
Столкнулся с проблемой.
После переустановки Counter-Strike пропало меню и баннер при загрузке.
При заходе на сервер и согласии поменять меню в итоге не меняет.
В чём проблемка не подскажете?
При этом у других всё окей с этим.

Отредактировал: SivAnOl, - 13.12.2012, 19:30
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 13.12.2012, 19:49
Сообщение #23
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(SivAnOl @ 13.12.2012, 21:23) *
Тоесть этот код полностью рабочий?

Это неуместный вопрос. Наше дело предложить, твоё - протестировать.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SivAnOl
сообщение 13.12.2012, 20:00
Сообщение #24


Стаж: 16 лет

Сообщений: 416
Благодарностей: 49
Полезность: 13

Цитата(Safety1st @ 13.12.2012, 19:49) *
Это неуместный вопрос. Наше дело предложить, твоё - протестировать.

Хорошо, задам другой вопрос.
В последнем коде есть улучшения?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 13.12.2012, 20:20
Сообщение #25
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Конечно! Изначальный код - тот же самый. Просто в первый раз его форум испортил, добавил лишнего.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя primm
сообщение 13.12.2012, 20:37
Сообщение #26


Стаж: 16 лет
Город: Москва

Сообщений: 517
Благодарностей: 140
Полезность: 520

менюшка выскакивает при каждой смене карты, эт нормально или только у мну?(
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SivAnOl
сообщение 13.12.2012, 21:13
Сообщение #27


Стаж: 16 лет

Сообщений: 416
Благодарностей: 49
Полезность: 13

Цитата(primm @ 13.12.2012, 20:37) *
менюшка выскакивает при каждой смене карты, эт нормально или только у мну?(

Нормально.
Увы отключение после одного вопроса наверное невозможно сделать.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
underwoker
сообщение 13.12.2012, 21:48
Сообщение #28
Стаж: 56 лет


Благодарностей:

ЗАписываем сетинфо игроку. :D Проверяем при новой карте есть ли сетинфо специальный у игрока, если есть то не даем ему менюшку. :D
Перейти в начало страницы     
   + Цитировать сообщение
Safety1st
сообщение 13.12.2012, 22:52
Сообщение #29
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(underwoker @ 13.12.2012, 23:48) *
ЗАписываем сетинфо игроку.

Слоухакинг - фу! Есть идея получше - использовать userid. При переподключении клиента после загрузки отсутствующей карты и после смены карты на сервере его userid остаётся неизменным.

Цитата(SivAnOl @ 13.12.2012, 23:13) *
Увы отключение после одного вопроса наверное невозможно сделать.

Сделал невозможное xD Реализовал первую пришедшую в голову идею.

Цитата
* v1.3m
Изменения от оригинала:
* Меню выводится тупо всем новым игрокам, без их явного желания, но однократно за всё время игры на сервере.
* Рекомендуется к установке на говнопабликах, особенно, если его владелец наивно полагает, что каждому зашедшему на его
* говнопаблик игроку обязательно захочется установить сервер в главное меню игры. А по сути тупо хочет поднять онлайн на сервере
* любыми путями, исключая самые грязные методы.


__

Отредактировал: Safety1st, - 13.12.2012, 22:55
Прикрепленные файлы:
Прикрепленный файл  gm4bmj.sma ( 4,41 килобайт ) Кол-во скачиваний: 17
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SivAnOl
сообщение 14.12.2012, 1:02
Сообщение #30


Стаж: 16 лет

Сообщений: 416
Благодарностей: 49
Полезность: 13

Цитата(Safety1st @ 13.12.2012, 22:52) *

Юзер ид это ведь стим ид? Или я путаю??
Если так, то игроки стим ид лан не увидят вопроса после первого такого зашедшего? Верно? Если так то лучше уж по ип сделать.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 14.12.2012, 1:06
Сообщение #31
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Путаете.
Вообще, юзайте поиск, не задавайте простые вопросы.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя RedL1ne
сообщение 14.12.2012, 1:51
Сообщение #32


Стаж: 15 лет

Сообщений: 3828
Благодарностей: 1854
Полезность: 876

Цитата(basket @ 12.12.2012, 18:42) *
Да уж вроде как и демократия свобода выбора, но с жирным навязыванием игроку практически однозначного выбора.
Печаль...
Да в таком мире трудно удерживать игроков только лишь на их инициативе!
Всё больше и больше проявляется мысль о вставке и себе такого кода, но пока еще держу себя в руках!

Все суета, времена меняются. Плагин постигла участь Hlserver - он есть почти у всех. 80% Нонстим сборок с защитой от меню, а тем кому прописалось, перепишет через час другой сервер.

Нет видимой разницы сервер с меню и сервер без него. Ну разве что админам дает повод сказать, что они белопушистые и не используют такое.

В таком мире игроков не трудно удерживать имея что то достойное, и не нужно лишать их выбора, ведь лишить адекватных/продвинутых игроков не сможете.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SivAnOl
сообщение 14.12.2012, 7:28
Сообщение #33


Стаж: 16 лет

Сообщений: 416
Благодарностей: 49
Полезность: 13

Цитата(Safety1st @ 13.12.2012, 22:52) *
Сделал невозможное xD Реализовал первую пришедшую в голову идею.

Ваш код компилится с ошибками и в AkelPad в различных кодировках открывается с иероглифами.
Прикрепленные файлы:
Прикрепленное изображение Прикрепленное изображение Прикрепленное изображение
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
underwoker
сообщение 14.12.2012, 9:17
Сообщение #34
Стаж: 56 лет


Благодарностей:

Акелпад хрень, он не под скриптинг сделан, потому и кодировку utf так показывает. Качай notepad только с ним будет нормально
Перейти в начало страницы     
   + Цитировать сообщение
Safety1st
сообщение 14.12.2012, 12:06
Сообщение #35
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(SivAnOl @ 14.12.2012, 9:28) *
Ваш код компилится с ошибками и в AkelPad в различных кодировках открывается с иероглифами.

'Иероглифы' не страшны - они в комментариях, смотрите в кодировке ANSI Cyrilic Windows-1251.
У меня предупреждений при компиляции нет.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SivAnOl
сообщение 15.12.2012, 11:58
Сообщение #36


Стаж: 16 лет

Сообщений: 416
Благодарностей: 49
Полезность: 13

Так, ну скомпилился код.
Без ошибок, всё окей.
Но всёравно мне за игру (2 часа) 2-3 раза выбивало, при смене карты помоему.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 15.12.2012, 14:51
Сообщение #37
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

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