![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|
Level 9 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Дракон NWN: Скриптинг [PW] ![]() |
Так уж сложилось, что лицензионных версий игры в России почти не водится. В связи с этим на всех русских шардах отключена проверка СД-КЕЯ средствами bioware. Но из-за этого любой игрок может пропустить проверку логин:пароль и зайти на шард под любым логином.
Способов борьбы с этим опять-же - полно. Кто-то требует ввода в поле Deity специального ключа, генерируемого по имени\логину, кто-то записывает СДКЕЙ в БД. Наверное есть еще варианты. Хотелось бы услышать - кто и как с этим борется. Добавлено в [mergetime]1087026014[/mergetime] Вот один из вариантов скрипта. Он привязывает СД-КЕЙ, с которым создали персонажа к логину\имени персонажа. Зайти в игру этим персонажем можно только с этим СД-КЕЙем. На случай смены СД-КЕЯ предусмотренна возможность временного отключения проверки из dm-console командой `dm_setmodulevarint SecurityDisable 1`. Включить защиту обратно: `dm_setmodulevarint SecurityDisable 0` Вызывается из события onClientEnter: ExecuteScript("_security",OBJECT_SELF); _security.nss Код void main() { object oPC = GetEnteringObject(); string sCDKEY = GetPCPublicCDKey(oPC); string sName = GetName(oPC); string sPCName = GetPCPlayerName(oPC); string sID = "(("+sPCName+"))"+sName; //ДМ-ы должны знать пароль и их обычно не проверяют if (GetIsDM(oPC)) return; // Читаем из БД строку по паре логин+имя персонажа string sReadID = GetCampaignString("Security",sID); //Дополнительная возможность банить игрока - положить ему в инвентарь итем с тегом "mg_bootstone" if (!GetLocalInt(GetModule(),"SecurityDisable") && GetIsObjectValid(GetItemPossessedBy(oPC,"mg_bootstone"))) { BootPC(oPC); return; } //Если игрок зашел впервые (только создали) или отключена защита - записываем новый СДКЕЙ if (sReadID =="" || GetLocalInt(GetModule(),"SecurityDisable")) { SetCampaignString("Security",sID,sCDKEY); return; } //Проверяем if (sReadID != sCDKEY && !GetLocalInt(GetModule(),"SecurityDisable") ) { BootPC(oPC); SendMessageToAllDMs("Security: Error! "+sName+" :["+sPCName+"]: with key ="+sCDKEY+ " != "+sReadID); WriteTimestampedLogEntry("Security: Error! "+sName+" :["+sPCName+"]: with key ="+sCDKEY+ " != "+sReadID); return; } } |
![]() |
![]()
Сообщение
#2
|
|
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
Я шарю немножко в скриптах, но ни разу не пользовался(да и незнаю как) базой данных.
Вот думаю можно при заходе в первый раз если 0 опыта давать 1 опыта, записывать в БД Аккаунт, имя чара, СДкей. Потом если кто попытается войти этим чаром - он клиент энтер в БД ищется аккаунт, есть ли там такой чар, и подтвержается ли СД кей. P.S. Зачем биотвари такую заподлянку по LAN сделало? Пароли и логины не проверяются...Да и некуда их записывать.. у нас же нет мастер-сервера. |
![]() ![]() |
Текстовая версия | Сейчас: 27th April 2025 - 06:33 |