![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#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; } } |
![]() ![]() |
Текстовая версия | Сейчас: 26th April 2025 - 23:26 |