Требуется сделать проверку в 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); } |
Neverwinter Script Source |
while (SQLFetch() == SQL_SUCCESS) { sFinalKey = SQLGetData(1); } |
Neverwinter Script Source |
while (SQLFetch() == SQL_SUCCESS) { sFinalKey = SQLGetData(1); } |
CODE |
#include "aps_include" void main() { // Init placeholders for ODBC gateway SQLInit(); } |
CODE |
// ____________________________CHECKING_ACCOUNT____________________________ // Main vars object oPC=GetEnteringObject(); string sAccount=SQLEncodeSpecialChars(GetPCPlayerName(oPC)); //string sKey=GetPCPublicCDKey(oPC); // SQL's queries 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'"; // Let's move to actions 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,"ooe ciaao eae...ii y caoie =?"); //} } else { BootPC(oPC); } ExecuteScript("_security",OBJECT_SELF); // _____________________END_OF_CHECKING_ACCOUNT____________________________ |
CODE |
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'"; |
CODE |
string sCheck = "SELECT * FROM `ibf_members` WHERE nwn_acc='"+sAccount+"' AND nwn_access='accessed'"; //string sCheckKey = "SELECT nwn_key FROM `ibf_members` WHERE nwn_acc='"+sAccount+"' AND nwn_access='accessed'"; //string sPutDownKey = "UPDATE `ibf_members` SET nwn_key='"+GetPCPublicCDKey(oPC)+"' WHERE nwn_acc='"+sAccount+"' AND nwn_access='accessed'"; |