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

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

> nwnx2 - проблемы
baskan
сообщение Dec 11 2005, 12:28
Сообщение #1


Level 7
**

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



Требуется сделать проверку в OnClientEnter на существование аккаунта в БД.

Скрипт :

Neverwinter Script Source
#include "nw_o0_itemmaker"
#include "hss_giv_it_class"
#include "gsc_include"
#include "aps_include"
#include "_cb_core"

void main()
{
object oPC = GetEnteringObject();
object oStore = GetModule();
string sStoreName = GetName(oPC)+GetPCPlayerName(oPC); // =[PC name] + [login name]
SetLocalString(oPC,"HP_MyIdString",sStoreName);

//Remove Polymorph and Spell_Failure
effect eNeg = GetFirstEffect(oPC);
while(GetIsEffectValid(eNeg))
{
if (GetEffectType(eNeg)==EFFECT_TYPE_POLYMORPH) RemoveEffect(oPC, eNeg);
if (GetEffectType(eNeg)==EFFECT_TYPE_SPELL_FAILURE) RemoveEffect(oPC, eNeg);
eNeg = GetNextEffect(oPC);
}


int iSavedHP = GetLocalInt(oStore,sStoreName);
if (iSavedHP != 0)
{
effect efDamage = EffectDamage(GetMaxHitPoints(oPC)-iSavedHP,DAMAGE_TYPE_MAGICAL,DAMAGE_POWER_ENERGY);
ApplyEffectToObject(DURATION_TYPE_INSTANT,efDamage,oPC);
}

int k,j,nSpells;
for (k=1; k < 805; k++)
{
nSpells = GetLocalArrayInt(oStore,sStoreName+"_spells",k);
if (nSpells)
for (j=0; j <= GetHasSpell(k,oPC)-nSpells; j++)
DecrementRemainingSpellUses(oPC, k);
}

if (!GetIsDM(oPC))
{
if(GetItemPossessedBy(oPC, "dmfi_pc_emote") == OBJECT_INVALID)
CreateItemOnObject("dmfi_pc_emote", oPC);
if (!GetXP(oPC))
{
ClearInventory(oPC);
GiveClassItems(oPC);
GiveGoldToCreature(oPC, 900);
CreateItemOnObject("bedroll", oPC);
CreateItemOnObject("food", oPC);
GiveXPToCreature(oPC,1);
}
if ((GetCampaignInt("INVA_MISK", "EXISTS", oPC)==TRUE)&&(!GetLocalInt(GetModule(),"SecurityDisable")))
{
BootPC(oPC);
}
    if(GetLocalInt(oPC, "Subrace_Done") != 1)
    {
        core(oPC);
        SetLocalInt(oPC, "Subrace_Done", 1);
    }
// ____________________________CHECKING_ACCOUNT____________________________


object oPC=GetEnteringObject();
string sAccount=SQLEncodeSpecialChars(GetPCPlayerName(oPC));
string sKey=GetPCPublicCDKey(oPC);

string sCheck = "SELECT * FROM `IPB` WHERE nwn_acc='"+sAccount+"' AND nwn_access='accessed'";
string sCheckKey = "SELECT nwn_key FROM `ipb` WHERE nwn_acc='"+sAccount+"' AND nwn_access='accessed'";
string sPutDownKey = "UPDATE `IPB` SET nwn_key='"+GetPCPublicCDKey(oPC)+"' WHERE nwn_acc='"+sAccount+"' AND nwn_access='accessed'";


SQLExecDirect(sCheck);
if (SQLFirstRow() == SQL_SUCCESS)
{
SQLExecDirect(sCheckKey);
string sFinalKey;
while (SQLFetch() == SQL_SUCCESS)
{
sFinalKey = SQLGetData(1);
}
if(sFinalKey == "")
{
SQLExecDirect(sPutDownKey);
}
else if((sFinalKey != "") && (sFinalKey != GetPCPublicCDKey(oPC)))
{
BootPC(oPC);
}
else if(sFinalKey == GetPCPublicCDKey(oPC))
{
SendMessageToPC(oPC,"checking success...");
}
}
else
{
BootPC(oPC);
}
//ExecuteScript("_security",OBJECT_SELF);
// _____________________END_OF_CHECKING_ACCOUNT____________________________
ExecuteScript("hit_autodis",oPC);
ExecuteScript("hit_chkname",oPC);
}
SendMessageToPC(oPC, "The Chronicles of Nightfall 0.9b");
SendMessageToAllDMs("Account: " + GetPCPlayerName(oPC)+ ", Character: "+ GetName(oPC)+ ", IP: "+ GetPCIPAddress(oPC));
WriteTimestampedLogEntry("Account: " + GetPCPlayerName(oPC)+ ", Character: "+ GetName(oPC)+ ", IP: "+ GetPCIPAddress(oPC));
GSC_OnClientEnter(oPC);
}

Нас интересует промежуток от CHECKING_ACCOUNT до END_OF_CHECKING_ACCOUNT. "ipb" имя БД. Ошибка кроеться в этом промежутке. Ибо когда я его закоментил скрипт нормально работал, а так при старте выдает ошибку о "Слишком много инструкций" и не показывает на какой строке :vava: . логи nwnx2 ничего не показывают, помогите.:swoon:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов
Vanes
сообщение Dec 13 2005, 16:49
Сообщение #2


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

Класс: Вор
Характер: Neutral Evil
Раса: Эльф
NWN: Скриптинг [PW]
Validor2



кстати через сингл запускать модуль, то у меня нвн просто напросто виснет, как раз из-за nwnx...
ну я его правда и не настраивал... уже привык скрипты с запросами к БД вообще не тестить, а для остального отключать скрипты на ModuleLoad и ClientEnter...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Сообщений в этой теме


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

 



Текстовая версия Сейчас: 27th April 2025 - 19:40