Город Мастеров
IPB

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

 
Ответить в эту темуОткрыть новую тему
> Народ помогите плиз, Модуль не пускает
Tomb
сообщение Mar 9 2005, 19:08
Сообщение #1


Светлый лорд Корелии
Иконки Групп

Класс: Тайный Лучник
Характер: Lawful Good
Раса: Полуэльф
NWN: Тестер



Для локального шарда нашли классный модуль. Но есть одна проблема... Он не пускает ни ДМов, не Админов, не юзеров. Пишет Вы уволены и все... Подскажите где такое прописывается и отчего может так глючить?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
baskan
сообщение Mar 9 2005, 19:14
Сообщение #2


Level 7
**

Класс: Бард
Характер: Lawful Good
Раса: Фея



Возможно, в этом модуле нужно регестрировать ДМов, игроков. Посмотри в слоте OnClientEnter, и там по инклюдам пошарь.(хЗ, возможно я говорю бред, но просто видел такие модули)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Tomb
сообщение Mar 10 2005, 18:26
Сообщение #3


Светлый лорд Корелии
Иконки Групп

Класс: Тайный Лучник
Характер: Lawful Good
Раса: Полуэльф
NWN: Тестер



Давай я тебе его кину на почту или в асю...
чето скрипт подозрительный
Neverwinter Script Source
void RemoveEffects(object oObject)
{
    effect eEff = GetFirstEffect(oObject);
    while(GetIsEffectValid(eEff))
    {
        int nType = GetEffectType(eEff);
        if( GetEffectSubType(eEff) != SUBTYPE_EXTRAORDINARY &&
            (nType == EFFECT_TYPE_ABILITY_INCREASE ||
              nType == EFFECT_TYPE_AC_INCREASE ||
              nType == EFFECT_TYPE_ATTACK_INCREASE ||
              nType == EFFECT_TYPE_BLINDNESS ||
              nType == EFFECT_TYPE_CHARMED ||
              nType == EFFECT_TYPE_CONCEALMENT ||
              nType == EFFECT_TYPE_CONFUSED ||
              nType == EFFECT_TYPE_CURSE ||
              nType == EFFECT_TYPE_DAMAGE_IMMUNITY_INCREASE ||
              nType == EFFECT_TYPE_DAMAGE_INCREASE ||
              nType == EFFECT_TYPE_DAMAGE_REDUCTION ||
              nType == EFFECT_TYPE_DAMAGE_RESISTANCE ||
              nType == EFFECT_TYPE_DAZED ||
              nType == EFFECT_TYPE_DEAF ||
              nType == EFFECT_TYPE_DOMINATED ||
              nType == EFFECT_TYPE_ELEMENTALSHIELD ||
              nType == EFFECT_TYPE_ETHEREAL ||
              nType == EFFECT_TYPE_FRIGHTENED ||
              nType == EFFECT_TYPE_HASTE ||
              nType == EFFECT_TYPE_IMMUNITY ||
              nType == EFFECT_TYPE_IMPROVEDINVISIBILITY ||
              nType == EFFECT_TYPE_INVISIBILITY ||
              nType == EFFECT_TYPE_INVULNERABLE ||
              nType == EFFECT_TYPE_ABILITY_INCREASE ||
              nType == EFFECT_TYPE_NEGATIVELEVEL ||
              nType == EFFECT_TYPE_PARALYZE ||
              nType == EFFECT_TYPE_POLYMORPH ||
              nType == EFFECT_TYPE_REGENERATE ||
              nType == EFFECT_TYPE_SANCTUARY ||
              nType == EFFECT_TYPE_SAVING_THROW_INCREASE ||
              nType == EFFECT_TYPE_SEEINVISIBLE ||
              nType == EFFECT_TYPE_SILENCE ||
              nType == EFFECT_TYPE_SKILL_INCREASE ||
              nType == EFFECT_TYPE_SLOW ||
              nType == EFFECT_TYPE_SPELL_IMMUNITY ||
              nType == EFFECT_TYPE_SPELL_RESISTANCE_INCREASE ||
              nType == EFFECT_TYPE_SPELLLEVELABSORPTION ||
              nType == EFFECT_TYPE_TEMPORARY_HITPOINTS ||
              nType == EFFECT_TYPE_TRUESEEING ||
              nType == EFFECT_TYPE_ULTRAVISION ||
              nType == EFFECT_TYPE_INVULNERABLE)
            )
            RemoveEffect(oObject, eEff);
        eEff = GetNextEffect(oObject);
    }
}

void main()
{
    object oPC = GetEnteringObject();

    effect eSpellFailure = SupernaturalEffect( EffectSpellFailure(100, SPELL_SCHOOL_GENERAL) );
    if(GetObjectType(oPC) == OBJECT_TYPE_CREATURE)
    {
        RemoveEffects(oPC);
        ApplyEffectToObject(DURATION_TYPE_PERMANENT, eSpellFailure, oPC);
    }


    object oOwner = GetLocalObject(OBJECT_SELF,"Owner");

    int IsPC = GetLocalInt(oPC,"IsAPC");
    int pop = GetLocalInt(OBJECT_SELF,"PCPop");

    if(IsPC)
        SetLocalInt(OBJECT_SELF,"PCPop",pop+1);

    if((IsPC && (oOwner == OBJECT_INVALID)) || (oOwner == oPC))
    {
        SetLocalObject(OBJECT_SELF,"Owner",oPC);
        SignalEvent(OBJECT_SELF,EventUserDefined(500));
    }
}



Сообщение отредактировал Lex - Mar 18 2005, 14:41
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
baskan
сообщение Mar 10 2005, 21:18
Сообщение #4


Level 7
**

Класс: Бард
Характер: Lawful Good
Раса: Фея



1) я не мастер скриптов.
2)Пиши в коде, а так я вообще ничего не понял

Сообщение отредактировал baskan - Mar 10 2005, 21:18
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Mar 11 2005, 00:59
Сообщение #5


Level 9
Иконки Групп

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



Tomb, ты не "подозрительные" скрипты кидай, а OnClientEnter :yes:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Tomb
сообщение Mar 11 2005, 18:10
Сообщение #6


Светлый лорд Корелии
Иконки Групп

Класс: Тайный Лучник
Характер: Lawful Good
Раса: Полуэльф
NWN: Тестер



на OnClientEnter стоит этот скрипт
Neverwinter Script Source
#include "fr_i0_subraces"
#include "x2_inc_itemprop"
#include "hx_inc_craftfix"
#include "hx_sc_sec_check"
#include "hx_inc_spellfix"
void RemoveTempEffects(object oItem)
{
    itemproperty ItemPTemp = GetFirstItemProperty(oItem);
    while (GetIsItemPropertyValid(ItemPTemp))
    {
    if (GetItemPropertyDurationType(ItemPTemp)==DURATION_TYPE_TEMPORARY)
        RemoveItemProperty(oItem,ItemPTemp);
    ItemPTemp = GetNextItemProperty(oItem);
    }
}

void main()
{
    object oPC = GetEnteringObject();
    object oStore = GetModule();

    string sStoreName = GetName(oPC) + GetPCPlayerName(oPC); // =[PC name] + [login name]
    SetLocalString(oPC, "_MyIdString", sStoreName);
    SendMessageToPC(oPC, "Taganrog Cormyrean Prophecies v3.7.2c");
    AssignCommand(GetModule(), DelayCommand(0.0f, SecBegin(oPC)));        ///
    if(GetIsDM(oPC))
    {
        if(GetItemPossessedBy(oPC, "dmfi_emote") == OBJECT_INVALID)
            CreateItemOnObject("dmfi_emote", oPC);
        if(GetItemPossessedBy(oPC, "dmfi_dmw") == OBJECT_INVALID)
          CreateItemOnObject("dmfi_dmw", oPC);
        return;
    }

    DelayCommand(0.0, InitializeSubrace(oPC));
    AssignCommand(GetModule(), DelayCommand(0.0f, CraftCheck(oPC)));

    object oOdeyalo = GetItemPossessedBy(oPC, "odeyalo");
    if (GetIsObjectValid(oOdeyalo) == TRUE)
        DestroyObject(oOdeyalo);

    if(GetIsPC(oPC))
    {
        SetLocalInt(oPC, "IsAPC", TRUE);

        RestoreTalents(oPC, sStoreName);

        int iSavedHP = GetLocalInt(oStore,"HP_"+sStoreName);
//        SendMessageToAllDMs(IntToString(iSavedHP));
        if(iSavedHP != 0)
        {
            effect efDamage = EffectDamage(GetMaxHitPoints(oPC)-iSavedHP,DAMAGE_TYPE_MAGICAL,DAMAGE_POWER_ENERGY);
            DelayCommand(0.0f, ApplyEffectToObject(DURATION_TYPE_INSTANT, efDamage, oPC));
        }

        if(GetItemPossessedBy(oPC, "dmfi_emote") == OBJECT_INVALID)
            CreateItemOnObject("dmfi_emote", oPC);

        if(!GetXP(oPC))
        {
            CreateItemOnObject("bedroll", oPC);
            CreateItemOnObject("NW_IT_GOLD001", oPC, 300);
            CreateItemOnObject("kr_food", oPC, 10);
            SetXP(oPC, 1);
        }
////check on temp properties
    object oItem=GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);
    RemoveTempEffects(oItem);
    oItem=GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
    RemoveTempEffects(oItem);
    oItem=GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC);
    RemoveTempEffects(oItem);
////End check on temp properties

    }


// wtf? :P

    SetLocalInt(oPC, "CB_XP_SETTING", 0);
    SetLocalInt(oPC, "CB_ITEM1", 0);
    SetLocalInt(oPC, "CB_ITEM2", 0);
    SetLocalInt(oPC, "CB_ITEM3", 0);
    SetLocalInt(oPC, "CB_ITEM4", 0);
    SetLocalInt(oPC, "CB_ITEM5", 0);
    SetLocalInt(oPC, "CB_ITEM6", 0);

//  int ECL = core(oPC);
//  SetLocalInt(oPC, "CB_ECL", ECL); // laggy stuff

    if(GetLocalInt(oStore, "CB_EXECUTE") != 1)
    {
        ExecuteScript("_cb_ecl", oStore);
        SetLocalInt(oStore, "CB_EXECUTE", 1);
    }
}

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
baskan
сообщение Mar 11 2005, 21:52
Сообщение #7


Level 7
**

Класс: Бард
Характер: Lawful Good
Раса: Фея



Ан, нет) ошибка. похоже в инклюдах что то.
Отцы скриптинга. Помогите человеку :vava:

Сообщение отредактировал baskan - Mar 11 2005, 22:00
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
K.SpecTr
сообщение Mar 12 2005, 19:24
Сообщение #8


Level 10
***

Класс: Клерик
Характер: Lawful Neutral
Раса: Человек
NWN: Контент



QUOTE
#include "hx_sc_sec_check"

QUOTE
string sStoreName = GetName(oPC) + GetPCPlayerName(oPC); // =[PC name] + [login name]
SetLocalString(oPC, "_MyIdString", sStoreName);
SendMessageToPC(oPC, "Taganrog Cormyrean Prophecies v3.7.2c");
AssignCommand(GetModule(), DelayCommand(0.0f, SecBegin(oPC))); ///

Может тут идет проверка безопасности, и именно по ней и отшивает.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
baskan
сообщение Mar 12 2005, 19:59
Сообщение #9


Level 7
**

Класс: Бард
Характер: Lawful Good
Раса: Фея



CODE
QUOTE  
string sStoreName = GetName(oPC) + GetPCPlayerName(oPC); // =[PC name] + [login name]
SetLocalString(oPC, "_MyIdString", sStoreName);
SendMessageToPC(oPC, "Taganrog Cormyrean Prophecies v3.7.2c");
AssignCommand(GetModule(), DelayCommand(0.0f, SecBegin(oPC))); ///


У меня на шарде такое же практически написано, так что скорее всего в инклюде.

Да-с, почти такая, но не точно.

Tomb Покажи инклюд hx_sc_sec_check

Сообщение отредактировал baskan - Mar 12 2005, 20:31
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
K.SpecTr
сообщение Mar 12 2005, 20:13
Сообщение #10


Level 10
***

Класс: Клерик
Характер: Lawful Neutral
Раса: Человек
NWN: Контент



И что делает SecBegin(oPC)?
Это команда из инклюда.

Сообщение отредактировал K.SpecTr - Mar 12 2005, 20:16
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Tomb
сообщение Mar 13 2005, 11:47
Сообщение #11


Светлый лорд Корелии
Иконки Групп

Класс: Тайный Лучник
Характер: Lawful Good
Раса: Полуэльф
NWN: Тестер



Вот этот инклюд:
Neverwinter Script Source
const int MAX_PLAYERS = 32;


int SlotReserv(object oPC)
{
    int nPlayers = 0,
        nDMs = 0;

    object oPlayer = GetFirstPC();
    while(oPlayer != OBJECT_INVALID)
    {
        if(GetIsDM(oPlayer))
            nDMs++;
        else
            nPlayers++;

        oPlayer = GetNextPC();
    }

    if((nPlayers > MAX_PLAYERS + nDMs) && !GetIsDM(oPC))
    {
        SendMessageToPC(oPC, "Ñâîáîäíûõ ìåñò íåò.");
        BootPC(oPC);
        return 1;
    }
    return 0;
}
void AccCheck(object oPC, string sPC)
{
    int nAccessLvl;
    int nRow = 0;
    string sAccessLvl, szData, sComment;
    do
    {
        szData = Get2DAString("accounts", "account", nRow);
        nRow++;
    }
    while((szData!="")&&(szData!=sPC));
    nRow--;

    if(szData==sPC)
    {

    sAccessLvl = Get2DAString("accounts", "access", nRow);
    sComment  = Get2DAString("accounts", "comment", nRow);

    if(sAccessLvl == "")  nAccessLvl = 1;
    else  nAccessLvl = StringToInt(sAccessLvl);

    if (nAccessLvl==3)
    {
      if (!GetIsDM(oPC))
        SendMessageToAllDMs(szData+" -- Mega VIP Player Entering");
      else
        SendMessageToAllDMs(szData+" -- Mega VIP DM Entering");
    }

    else if (nAccessLvl==2)
    {
      SendMessageToAllDMs(szData+" -- VIP Player Entering");
      if (!GetIsDM(oPC))
      {
        SendMessageToAllDMs(szData+" -- Ups! Is it Player?! BOOT-BOOT-BOOT!");
        BootPC(oPC);
        DelayCommand(3.0, BootPC(oPC));
        DelayCommand(6.0, BootPC(oPC));
      }
    }

    else if (nAccessLvl==1)
    {
      SendMessageToAllDMs(szData+" -- Player Entering");
      if (GetIsDM(oPC))
      {
        SendMessageToAllDMs(szData+" -- Ups! Is it DM?! BOOT-BOOT-BOOT!");
        BootPC(oPC);
        DelayCommand(3.0, BootPC(oPC));
        DelayCommand(6.0, BootPC(oPC));
      }
    }
    else
    {
      SendMessageToAllDMs(sPC+" -- Îòïðàâëåí â áóòèê!");
      SendMessageToAllDMs("Ïðè÷èíà: "+sComment);
      BootPC(oPC);
      DelayCommand(3.0, BootPC(oPC));
      DelayCommand(6.0, BootPC(oPC));
    }
    }
    else
    {
      SendMessageToAllDMs(sPC+" -- Îòïðàâëåí â áóòèê!");
      SendMessageToAllDMs("Ïðè÷èíà: àêêàóíò íå íàéäåí â ñïèñêå.");
      BootPC(oPC);
      DelayCommand(3.0, BootPC(oPC));
      DelayCommand(6.0, BootPC(oPC));
    }
    if (sComment!="") SendMessageToAllDMs("Êîìåíòàðèé: "+sComment);

//DelayCommand(2.0f, BootPC(oPC)); // not found or banned.
}

void SecBegin(object oPlayer)
{
    string sAccountDatabase = GetPCPlayerName(oPlayer);

    AccCheck(oPlayer,sAccountDatabase); // not finished yet.
    if(GetIsDM(oPlayer))
        return;
    SlotReserv(oPlayer);

    if (GetCampaignString(sAccountDatabase, "PublicCDKey") == "")
        SetCampaignString(sAccountDatabase, "PublicCDKey", "FFFFFFFF");

    string sCDKey = GetPCPublicCDKey(oPlayer);
    string sIP = GetPCIPAddress(oPlayer);

    string sDefendedCD = GetCampaignString(sAccountDatabase, "PublicCDKey");
    string sDefendedIP = GetCampaignString(sAccountDatabase, "PlayerIPAddress");

    if(sDefendedCD == "FFFFFFF" && sDefendedIP == "")
        SendMessageToPC(oPlayer, "Âàø àêêàóíò íå çàùèùåí!");

    if(sDefendedCD != "FFFFFFFF")
    {
        if(sDefendedCD != sCDKey)
        {
            DelayCommand(2.0f, WriteTimestampedLogEntry("Attemption to hak: '" + GetName(oPlayer) + "' (" + GetPCPlayerName(oPlayer) + "), public CD key part: '" + sCDKey + "', IP address: '" + GetPCIPAddress(oPlayer) + "'"));
            DelayCommand(2.5f, BootPC(oPlayer));
            DelayCommand(3.0f, BootPC(oPlayer));
        }
        else
        {
            SendMessageToPC(oPlayer, "CD-key ïðîâåðåí.");
        }
    }

    if(sDefendedIP != "")
    {
        if(sIP != sDefendedIP)
        {
            DelayCommand(2.0f, WriteTimestampedLogEntry("Attemption to hak(ip invalid): '" + GetName(oPlayer) + "' (" + GetPCPlayerName(oPlayer) + "), public CD key part: '" + sCDKey + "', IP address: '" + GetPCIPAddress(oPlayer) + "'"));
            DelayCommand(2.5f, BootPC(oPlayer));
            DelayCommand(3.0f, BootPC(oPlayer));
        }
        else
        {
            SendMessageToPC(oPlayer, "IP ïðîâåðåí.");
        }
    }
}

//void main(){}

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
baskan
сообщение Mar 13 2005, 12:27
Сообщение #12


Level 7
**

Класс: Бард
Характер: Lawful Good
Раса: Фея



Я не мастер скриптов, но попробуй удалить из скрипта OnClientEnter этот инклюд и строчку
CODE
AssignCommand(GetModule(), DelayCommand(0.0f, SecBegin(oPC))); ///
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
K.SpecTr
сообщение Mar 13 2005, 14:42
Сообщение #13


Level 10
***

Класс: Клерик
Характер: Lawful Neutral
Раса: Человек
NWN: Контент



CODE
AccCheck(oPlayer,sAccountDatabase); // not finished yet.

Прошу обратить внимание. :lol:
У вас ищется игрок в accounts.2da, а он там есть?
Если нет, то вот тут вам его и отшивает. Новые строки из скрипта вы в 2da файл вставить не можете, и соответственно, новые игроки не регистрируются.
Если же у вас с 2da все в порядке (а я думаю, что нет), то смотрите столбец "access".
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RiPPeR
сообщение Apr 6 2005, 16:05
Сообщение #14


Level 5
Иконки Групп

Класс: Страж Тьмы
Характер: Chaotic Neutral
Раса: Дракон
NWN: Скриптинг [PW]



Если убрать строку
Neverwinter Script Source
AssignCommand(GetModule(), DelayCommand(0.0f, SecBegin(oPC)));

то защиты аккаунтов совсем не будет, и можно будет спокойно, без пароля и CD-KEY зайти под этим аккаунтом и играть, так что нужно другую систему защиты поставить просто необходимо, или такое начнется :).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 18th April 2024 - 20:26