BLOG Mini-Blog by Javekson

Сообщения
1,012
Реакции
814
Помог
10 раз(а)
Minni, возможно, я даже не буду с этим спорить.
Не помню в каком году, еще был школьником, хотел для своего сервера сделать такой смешной режим =D
Все игроки превращены в куриц.
Задача всех - найти на карте "руны" для того, чтобы превратиться в человека.
Игрок превратившийся в человека получает Deagle и возможность убивать любую курицу.
Особенности игрока-курицы: больше здоровье, быстрее скорость, выше прыжок, не умеет убивать.
Сложность игры: Найти руны по карте, убивая курицу чужой команды - погибаешь сам.
Продолжительность: до 30 минут.
Примечание: Выигрывает та команда, в которой не осталось куриц, но есть хотя бы один человек.
 

RockTheStreet

Саппорт года
Сообщения
1,744
Реакции
349
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Javekson, А вообще режим неплохой, но нужны доработки)
+нужно создавать большие карты.
 
Сообщения
83
Реакции
42
Помог
1 раз(а)
Javekson, проверял на тестовом windows сервере. Отключал все плагины, оставлял только твой. Ошибок никаких нет, при попытке запуска сервер сразу ложится.
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
tenseus, файл vip_players.dat успевает создаться в директории data?
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
tenseus, создай вручную файл попробуй
26 Мар 2018
Внимание!
Так-как я не ожидал такой активности по-поводу разработки VIP-Manager, то в плагине необходимо заменить:
client_authorized на client_putinserver это подойдет для большинства пользователей, особенно тем у кого стоит Admin Load так-как выдача прав у меня стояло ранее, чем в Admin Load и других возможных Ваших плагинов для выдачи прав администратора или иных прав. Так-же необходимо ставить плагин ниже admin.amxx или Admin Load или ему подобных, но выше плагина VIP-привилегий для избежания конфликтной работы алгоритма.
 
Сообщения
83
Реакции
42
Помог
1 раз(а)
Javekson, vip_players.dat создавал, client_authorized заменял. Ничего не изменилось.
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
tenseus, тогда я бессилен, создавай отдельную тему в соответствующем разделе с указание версий ReHLDS/HLDS, ReGameDLL/GameDLL спиком модулей/плагинов/метамодулей и так далее.
26 Мар 2018
tenseus, если файл не создается сам, то значит на этапе считывания/создания какие-то проблемы, но у меня и других работает стабильно, проблема где-то "глубже"
 
Сообщения
83
Реакции
42
Помог
1 раз(а)
Javekson, пересобрал сервер с нуля, всё чистое. Никаких доп. модулей и плагинов, только vip manager. Ничего не поменялось...
Мистика, не иначе.
26 Мар 2018
 
Сообщения
142
Реакции
23
Помог
1 раз(а)
у меня на linux работает отлично автору спасибо за отличный плагин
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
tenseus, в этой мистики может скрываться человеческий фактор, я видел и такое, что amx был 1.8.3, а его модули 1.8.1, на днях тут не тем компилятором компилировали, обычный человеческий фактор по которой все может сломаться. Поэтому я и рекомендую создать отдельную тему с проблемой и указать абсолютно всю необходимую информацию. Может быть wopox1337 сможет подсказать или посоветовать, кто его знает, может для windows какая-то другая спецификация кода нужна, или вдруг версия amx под windows не умеет распознавать fopen(g_sVipFile, "a+rt"), или может дело вовсе, как я говорил, в человечком факторе.
 
Сообщения
162
Реакции
445
Помог
2 раз(а)
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
the_hunter, странно что линукс на это внимание не обратил =D
26 Мар 2018
tenseus, как видно человеческий фактор выявился у меня =D
26 Мар 2018
tenseus, хотя секунду, какой amx то?
26 Мар 2018
the_hunter, хотелось бы уточнить несколько моментов, что бы убедиться о том, что я правильно понимаю синтаксис этой функции.
1. Перед чтением файла(в plugin_cfg) убеждаемся, что он существует через file_exists, если нет, то создаем fopen(g_sVipFile, "at") Используем флаги at
2. Если файл существует, то его достаточно считать используя уже один только флаг fopen(g_sVipFile, "r"), правильно ли я понимаю, что флаг t здесь будет является необязательным и неуместным? Если это прокатит, то по-моей логике второй флаг нужно указывать только при создании файла.
3. Если необходимо просто добавить новую строку, то достаточно использовать fopen(g_sVipFile, "a") при отсутствие файла он автоматически его создаст, но здесь мы заранее должны знать, что файл существует иначе используем fopen(g_sVipFile, "at") верно я понимаю?
4. Соответственно, если нам необходимо одновременно считать и записать то используем просто fopen(g_sVipFile, "a+") заранее знав что файл есть и fopen(g_sVipFile, "a+t") использовать нету необходимости.
 
Последнее редактирование:
Сообщения
162
Реакции
445
Помог
2 раз(а)
Javekson, существует два стиля перевода строки. В Windows стиле, для перевода строки используется 2 символа (\r\n) В линукс стиле - 1 символ (\n).
Параметр "t" в функции fopen просто задает windows стиль перевода строки. Его можно вообще не указывать, но тогда, если открыть файл в винде блокнотом, то весь текст будет одной строкой, без перевода.
1. Перед чтением файла(в plugin_cfg) убеждаемся, что он существует через file_exists, если нет, то создаем fopen(g_sVipFile, "at") Используем флаги at
Ну не совсем. Я имел ввиду добавить проверку на существование файла в начало функции ReadVipFile:
C++:
ReadVipFile() {
    if(!file_exists(g_sVipFile) {
        return;
    }
  
    new iFileID = fopen(g_sVipFile, "rt");
    ....
А в функции ClCmdSetPrivileges открывать файл с параметрами "at":
C++:
iFileID = fopen(g_sVipFile, "at");
В итоге, функция ReadVipFile не будет пытаться прочитать файл, которого не существует, а функция ClCmdSetPrivileges будет создавать файл при необходимости и\или дописывать в существующий.
 
Последнее редактирование:
Сообщения
1,175
Реакции
2,144
Помог
57 раз(а)
Код:
 * @note The open mode may be one of the following strings:
*         "r": Open an existing file for reading.
*         "w": Create a file for writing, or truncate (delete the contents of) an
*              existing file and then open it for writing.
*         "a": Create a file for writing, or open an existing file such that writes
*              will be appended to the end.
*        "r+": Open an existing file for both reading and writing.
*        "w+": Create a file for reading and writing, or truncate an existing file
*              and then open it for reading and writing.
*        "a+": Create a file for both reading and writing, or open an existing file
*              such that writes will be appended to the end.
*
* @note The open mode may also contain an additional character after "r", "w", or "a",
*       but before any "+" sign. This character may be "b" (indicating binary mode) or
*       "t" (indicating text mode). By default, "text" mode is implied. On Linux and
*       Mac, this has no distinction from binary mode. On Windows, it causes the '\n'
*       character (0xA) to be written as "\r\n" (0xD, 0xA).

* @return              A file handle, or null if the file could not be opened.
Код:
ReadVipFile() {
    new iFileID = fopen(g_sVipFile, "r");
    if(!iFileID) return;
...
Я обычно делаю так. Нет файла -> нет агрегации. При условии !iFileID можно проверить file_exists() -> учитываем ситуацию с неверным chmod (можно error бросить, к примеру).

Вчера переделал плагин под себя на работу с trie only, и понял, что поменял шило на мыло. Наверно переведу вообще на nvault, меня по пол года не бывает, страшно представить, насколько там раздуется список, и сколько времени будет уходить на его чтение и обработку инфы %)
 
Последнее редактирование:
Сообщения
143
Реакции
68
Помог
1 раз(а)
Javekson, Скажите пожалуйста. Если например игрокам ставить только ,,ADMIN_LEVEL_H,, на до ли что то править тогда здесь

Код:
ReadVipFile() {
    new iFileID = fopen(g_sVipFile, "a+t");
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу