Решение проблемы с крякозябрами в никах и причинах бана SourceBans.

Тема в разделе "SourceBans", создана пользователем Nikita Domres, 16 авг 2015.

  1. Nikita Domres

    Nikita Domres

    Сообщения:
    12
    Симпатии:
    2
    Решено на базе SourceBans 1.5.2F

    Форумы моддеров и админов серверов Counter-Strike Source забиты вопросами о проблеме с отображением в SourceBans ников игроков, у которых в именах использованы спецсимволы. Иными словами: игрок получает бан на сервере, а в системе SourceBans его ник, если он русскоязычный или составлен из спецсимволов, отображается так называемыми крякозябрами.

    Опытным путем удалось установить, что:

    1. Ошибка при импорте банов из файла .cfg через веб-интерфейс:

    В ошибке отображения ников НЕ виновата БД MySQL, так как по умолчанию сервер БД уже знает все спецсимволы. Проблема возникала в момент запроса системой SourceBans данных о игроке на основе STEAM ID, во время транзакции данных, в том числе и ника игрока возникала ошибка декодинга, вызванная функциями, указанными в файле скрипта system-functions.php в веб-части Source Bans.

    Проблема решается закомментированием (или вырезкой) строк:

    в разделе функции GetCommunityName

    2. Ошибка отображения ника, когда бан происходит через админку в игре.

    Здесь все несколько сложнее, проблема кроется уже в плагине sourcebans.smx. Решение подсказала новинка, так называемый плагин коммуникационных банов, с помощью которого блокируются микрофон или чат игроков. Если взглянуть на исходник плагина ком.банов, то там присутствует интересная функция, преписывающая базе данных кодировку UTF-8.

    Интуитивным путем, мне удалось составить для плагина sourcebans.smx функцию, повторяющую процедуру, которая обеспечивает правильное кодирование ников в плагине sourcecomms. Необходимо взять исходник sourcebans.sp и добавить следующую строку после фрагмента DB = hndl;

    Компилируем, добавляем плагин на сервер, перезапускаем его и все... Проблема века решена.

    P.S: Проверено многократным баном самого себя, ник у меня ₥عρђíﻯ†σ, он всегда был кривым в сурсбанс нашего сервера.
     
    rom4s и White Wolf нравится это.
  2. artushonok

    artushonok

    Сообщения:
    961
    Симпатии:
    108
    Nikita Domres, попробую сделать
     
  3. Nikita Domres

    Nikita Domres

    Сообщения:
    12
    Симпатии:
    2
    Напишите, получилось или нет, интересно с работает на других версиях SB или нет :-D
    На эту ерунду ушло 2 недели, проверил буквально все, а загвоздка была всего лишь в паре строк кода ))
     
  4. komashchenko

    komashchenko

    Сообщения:
    479
    Симпатии:
    421
    Втулил в плагины которые использовали utf8 за день ни разу не вылезло крякозябр (в сб 1.5.1 тоже)
    Оффтоп
     
  5. artushonok

    artushonok

    Сообщения:
    961
    Симпатии:
    108
    Nikita Domres, сколько сидел думал но так и не понял, куда нужно прописать эту строку в плагине?
     
  6. Tallanvor

    Tallanvor Красноглазый

    Сообщения:
    1.075
    Симпатии:
    302
    artushonok,
    Подозреваю, что имелась ввиду строка 956
    В любом случае, ничего более подходящее под данное условие не нашёл.
     
  7. Nikita Domres

    Nikita Domres

    Сообщения:
    12
    Симпатии:
    2
    Только учтите что если у вас там написано Database вместо DB, тоесть Database = hndl;то и в строчке, которую мы вставляем дальше нужно прописать Database, а не DB:

    if (GetFeatureStatus(FeatureType_Native, "SQL_SetCharset") == FeatureStatus_Available)
    {
    SQL_SetCharset(Database, "utf8");
    }
     
  8. artushonok

    artushonok

    Сообщения:
    961
    Симпатии:
    108
    Сделал в исходнике все как написано, теперь сервак падает часто, и в логах ошибки
    L 09/02/2015 - 14:58:33: [SM] Native "SQL_FetchRow" reported: No current result set
    L 09/02/2015 - 14:58:33: [SM] Displaying call stack trace for plugin "sourcebans.smx":
    L 09/02/2015 - 14:58:33: [SM] [0] Line 1941, C:\Users\јртур\Desktop\scripting\sourcebans.sp::OverridesDone()
     

    Вложения:

    • sourcebans.rar
      Размер файла:
      15,1 КБ
      Просмотров:
      6
  9. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.973
    Симпатии:
    2.980
    На АМ нашел что эта ошибка из-за ошибки в синтаксисе запроса.
     
  10. SaInT.P

    SaInT.P

    Сообщения:
    1.270
    Симпатии:
    237
    может кто скинуть скомпиленый плагин 1.4.9 соурсбанса с исправлеными крякозябрами, спасибо
     
  11. SaInT.P

    SaInT.P

    Сообщения:
    1.270
    Симпатии:
    237
    Добавил, при попытке скомпилить выдает
    sourcebans.sp(75) : error 021: symbol already defined: "Database"
    sourcebans.sp(235) : warning 234: symbol "GetClientAuthString" is marked as depr ecated: Use GetClientAuthId

    sourcebans.sp(318) : error 174: symbol 'Database' is a type and cannot be used a s a value
    sourcebans.sp(331) : error 174: symbol 'Database' is a type and cannot be used a s a value
    sourcebans.sp(348) : error 174: symbol 'Database' is a type and cannot be used a s a value
    sourcebans.sp(355) : error 174: symbol 'Database' is a type and cannot be used a s a value
    sourcebans.sp(509) : warning 234: symbol "GetClientAuthString" is marked as depr ecated: Use GetClientAuthId

    sourcebans.sp(525) : error 174: symbol 'Database' is a type and cannot be used a s a value
    sourcebans.sp(557) : warning 234: symbol "GetClientAuthString" is marked as depr ecated: Use GetClientAuthId

    sourcebans.sp(574) : error 174: symbol 'Database' is a type and cannot be used a s a value
    sourcebans.sp(631) : warning 234: symbol "GetClientAuthString" is marked as depr ecated: Use GetClientAuthId

    sourcebans.sp(647) : error 174: symbol 'Database' is a type and cannot be used a s a value
    sourcebans.sp(946) : error 174: symbol 'Database' is a type and cannot be used a s a value
    sourcebans.sp(946) : warning 215: expression has no effect
    sourcebans.sp(949) : error 017: undefined symbol "DB"
    sourcebans.sp(954) : error 174: symbol 'Database' is a type and cannot be used a s a value
    sourcebans.sp(970) : error 174: symbol 'Database' is a type and cannot be used a s a value
    sourcebans.sp(1004) : error 174: symbol 'Database' is a type and cannot be used as a value
    sourcebans.sp(1107) : error 174: symbol 'Database' is a type and cannot be used as a value
    sourcebans.sp(1139) : error 174: symbol 'Database' is a type and cannot be used as a value
    sourcebans.sp(1190) : error 174: symbol 'Database' is a type and cannot be used as a value
    sourcebans.sp(1225) : error 174: symbol 'Database' is a type and cannot be used as a value
    sourcebans.sp(1276) : error 174: symbol 'Database' is a type and cannot be used as a value
    sourcebans.sp(1308) : error 174: symbol 'Database' is a type and cannot be used as a value
    sourcebans.sp(1405) : error 174: symbol 'Database' is a type and cannot be used as a value
    sourcebans.sp(1452) : error 174: symbol 'Database' is a type and cannot be used as a value
    sourcebans.sp(1482) : warning 234: symbol "GetClientAuthString" is marked as dep recated: Use GetClientAuthId

    sourcebans.sp(1490) : error 174: symbol 'Database' is a type and cannot be used as a value
    sourcebans.sp(1506) : error 174: symbol 'Database' is a type and cannot be used as a value
    sourcebans.sp(1748) : error 174: symbol 'Database' is a type and cannot be used as a value
    sourcebans.sp(1804) : warning 234: symbol "GetClientAuthString" is marked as dep recated: Use GetClientAuthId

    sourcebans.sp(2057) : warning 234: symbol "GetClientAuthString" is marked as dep recated: Use GetClientAuthId

    sourcebans.sp(2065) : warning 234: symbol "GetClientAuthString" is marked as dep recated: Use GetClientAuthId

    sourcebans.sp(2092) : error 174: symbol 'Database' is a type and cannot be used as a value
    sourcebans.sp(2115) : error 174: symbol 'Database' is a type and cannot be used as a value

    Compilation aborted.
    Пофиксите чтоб компилился плиз
     

    Вложения:

    • sourcebans.zip
      Размер файла:
      14,5 КБ
      Просмотров:
      7
  12. White Wolf

    White Wolf [] (int _n) -> double { return (_n % 2) == 0;}); Супер-модератор

    Сообщения:
    1.189
    Симпатии:
    413
    Держи
     

    Вложения:

    • sourcebans.zip
      Размер файла:
      14,6 КБ
      Просмотров:
      29
  13. SaInT.P

    SaInT.P

    Сообщения:
    1.270
    Симпатии:
    237
    White Wolf, Спасибо, пашет норм теперь все)
     
  14. graveworm

    graveworm

    Сообщения:
    10
    Симпатии:
    0
    Всем привет версия соурсбанс 1.4.11
    проблема добавления бана через админку в нике и причине бана вместо русского отображается иероглифами.
    это началось после обновления сурсмода с версии 1.7.3 +dev 5283 до версии
    1.7.3 +dev 5290.

    кто поможет разобраться в данной причине?
    перечитал тему пробовал добавлять строки которые описаны но он находит ошибки и не компелит плагин. выкладываю исходник соурсбанса.
    кто чем может помогите народ.

    Еще заметил следующие, когда я добавляю бан из игры то причина бана отображается корректно на русском языке, а когда добавляет бан другой админ то у него в причине бана иероглифы. Вот такая вот странная ситуация.
     

    Вложения:

    • sourcebans.7z
      Размер файла:
      14,4 КБ
      Просмотров:
      3
    Последнее редактирование: 18 янв 2016
  15. Артур1992

    Артур1992

    Сообщения:
    1
    Симпатии:
    0
    помоги с сб 1,4,10
     

    Вложения:

    • sourcebans.sp
      Размер файла:
      72,9 КБ
      Просмотров:
      14
  16. SAZONISCHE

    SAZONISCHE

    Сообщения:
    116
    Симпатии:
    28
    Давно знал про ету тему все ленился сам сказать!
    Делал так, ищем кусок (SET NAMES \"UTF8\")

    PHP:
        SQL_SetCharset(DB"utf8"); + // Добавляем недостающий код и все
        
    decl String:query[1024];
        
    FormatEx(querysizeof(query), "SET NAMES \"UTF8\"");
     
    Последнее редактирование: 19 авг 2016