generated from Jaysyn/ModuleTemplate
Initial commit
Initial commit
This commit is contained in:
135
_module/nss/pcont_open_bank.nss
Normal file
135
_module/nss/pcont_open_bank.nss
Normal file
@@ -0,0 +1,135 @@
|
||||
// Name : Persistent container opened
|
||||
// Purpose : Called when a player opens a persistent container
|
||||
// Author : Ingmar Stieger - Altered by: Josh Dalton (Lanthar D'Alton)
|
||||
// Modified : March 10, 2003
|
||||
|
||||
// This file is licensed under the terms of the
|
||||
// GNU GENERAL PUBLIC LICENSE (GPL) Version 2
|
||||
|
||||
#include "aps_include"
|
||||
|
||||
// Stackables are handled differently to decrease number of queries.
|
||||
// We can trust lowercase tag here if no resref b/c it has already been tested
|
||||
// by the copycheck function.
|
||||
int GetIsItemStackable(object oItem)
|
||||
{
|
||||
int iType = GetBaseItemType(oItem);
|
||||
if (iType == BASE_ITEM_GEM || iType == BASE_ITEM_POTIONS ||
|
||||
iType == BASE_ITEM_HEALERSKIT || iType == BASE_ITEM_THIEVESTOOLS ||
|
||||
iType == BASE_ITEM_SCROLL || iType == BASE_ITEM_ARROW ||
|
||||
iType == BASE_ITEM_BOLT || iType == BASE_ITEM_BULLET ||
|
||||
iType == BASE_ITEM_DART || iType == BASE_ITEM_THROWINGAXE ||
|
||||
iType == BASE_ITEM_SHURIKEN || iType == BASE_ITEM_GOLD)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int GetStackSize(object oItem)
|
||||
{
|
||||
int retval=1;
|
||||
int iType = GetBaseItemType(oItem);
|
||||
switch(iType)
|
||||
{
|
||||
case BASE_ITEM_GEM:
|
||||
return 10;
|
||||
case BASE_ITEM_POTIONS:
|
||||
return 10;
|
||||
case BASE_ITEM_HEALERSKIT:
|
||||
return 10;
|
||||
case BASE_ITEM_THIEVESTOOLS:
|
||||
return 10;
|
||||
case BASE_ITEM_SCROLL:
|
||||
return 10;
|
||||
case BASE_ITEM_ARROW:
|
||||
return 99;
|
||||
case BASE_ITEM_BOLT:
|
||||
return 99;
|
||||
case BASE_ITEM_BULLET:
|
||||
return 99;
|
||||
case BASE_ITEM_DART:
|
||||
return 50;
|
||||
case BASE_ITEM_THROWINGAXE:
|
||||
return 50;
|
||||
case BASE_ITEM_SHURIKEN:
|
||||
return 50;
|
||||
case BASE_ITEM_GOLD:
|
||||
return 50000;
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
string GetTableIndexKey()
|
||||
{
|
||||
object oPC=GetLocalObject(OBJECT_SELF, "LastUsedBy");
|
||||
string sVaultTag;
|
||||
string sPlayer;
|
||||
string sTag;
|
||||
|
||||
sVaultTag=GetTag(OBJECT_SELF);
|
||||
if (GetIsPC(oPC))
|
||||
{
|
||||
sPlayer = SQLEncodeSpecialChars(GetPCPlayerName(oPC));
|
||||
sTag = SQLEncodeSpecialChars(GetName(oPC));
|
||||
}
|
||||
else
|
||||
{
|
||||
sPlayer = SQLEncodeSpecialChars(GetName(oPC));
|
||||
sTag = GetTag(oPC);
|
||||
}
|
||||
|
||||
string sSQL = " player='" + sPlayer + "' AND tag='" + sTag + "' AND container='" + sVaultTag + "'";
|
||||
return sSQL;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
object oCreature=GetLastOpenedBy();
|
||||
if(GetLocalObject(OBJECT_SELF, "LastUsedBy")==OBJECT_INVALID)
|
||||
SetLocalObject(OBJECT_SELF, "LastUsedBy", oCreature);
|
||||
object oItem = GetFirstItemInInventory();
|
||||
if(!GetIsObjectValid(oItem)) //if empty...
|
||||
{
|
||||
SetLocalInt(OBJECT_SELF, "began_empty", 1);
|
||||
// load inventory from database and put it in container
|
||||
string sSQL = "SELECT item, count, identified FROM vault_items " +
|
||||
"WHERE" + GetTableIndexKey();
|
||||
SQLExecDirect(sSQL);
|
||||
string sItemTag;
|
||||
int id;
|
||||
int i, iItemCount;
|
||||
int rc = SQLFirstRow();
|
||||
while (rc == SQL_SUCCESS)
|
||||
{
|
||||
sItemTag = SQLGetData(1);
|
||||
iItemCount = StringToInt(SQLGetData(2));
|
||||
id = StringToInt(SQLGetData(3));
|
||||
|
||||
oItem = CreateItemOnObject(sItemTag, OBJECT_SELF);
|
||||
iItemCount=iItemCount-1;
|
||||
if (GetIsObjectValid(oItem))
|
||||
{
|
||||
SetIdentified(oItem, id);
|
||||
int stacksize=GetStackSize(oItem);
|
||||
while(iItemCount>0)
|
||||
{
|
||||
if(iItemCount>stacksize)
|
||||
{
|
||||
oItem = CreateItemOnObject(sItemTag, OBJECT_SELF, stacksize);
|
||||
iItemCount-=stacksize;
|
||||
}
|
||||
else
|
||||
{
|
||||
oItem = CreateItemOnObject(sItemTag, OBJECT_SELF, iItemCount);
|
||||
iItemCount=0;
|
||||
}
|
||||
SetIdentified(oItem, id);
|
||||
}
|
||||
}
|
||||
|
||||
rc = SQLNextRow();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user