// Gets the items this store should have and puts them on the store void GetStoreItemsFromDatabase(int nNumber); // Initiate all our stores void InitiateStores(); // Gets store number nNumber from the Database object GetStorefromDatabase(int nNumber); // Saves the store to the databse for later retieval void SaveStoretoDatabase(object oStore, int nNumber); // Saves the store's items to the database. nNumber is the number of the store void SaveStoreItemstoDatabase(int nNumber); // Saves all our persistent stores to the databse void SaveStores(); // Returns item inventory number nInventoryNumber on oStore object GetItemonStoreInventory(object oStore, int nInventoryNumber); // Makes oItem the nNinventoryNumber item on oStore void SetItemOnStoreInventory(object oItem, object oStore, int nInventoryNumber); // Returns persistent store number nNumber object GetStoreFromModule(int nNumber); // Makes oStore the module store number nNumber void AddStoreToModule(object oStore, int nNumber); // Sets the number of persistent stores this module currently has void SetStoreNumbersinModule(int nNumber); // Returns the number of persistent stores this module currently has int GetStoreNumbersinModule(); // Sets the number of persistent items this store holds void SetStoreItemsHeld(object oStore, int nNumber); // Gets the number of persistent items this store holds int GetStoreItemsHeld(object oStore); // Runs when oStore sells oObject void JWStoreSoldItem(object oObject, object oStore); // Runs when oStore buys oObject void JWStoreBoughtItem(object oObject, object oStore); // Gets the number of stores currently in the module void JWStoreSoldItem(object oObject, object oStore) { // just delete our local ints int nInventoryNumber=GetLocalInt(oObject,"item"); SendMessageToAllDMs("running store sold item script"); // This was not a saved object if (nInventoryNumber==0) { SendMessageToAllDMs("this was not a saved object"); return; } DeleteLocalInt(oObject,"item"); SetItemOnStoreInventory(OBJECT_INVALID,oStore,nInventoryNumber); SendMessageToAllDMs("deleting a store's local object"); } void JWStoreBoughtItem(object oObject, object oStore) { if (GetBaseItemType(oObject)==BASE_ITEM_KEY) { DestroyObject(oObject); return; } string sItemTag=GetTag(oObject); string sLeft=GetStringLeft(sItemTag,3); if ((sLeft!="ccr")&&(sLeft!="ctr")&&(sLeft!="tra")) { DestroyObject(oObject); return; } int nStoreInventory=GetStoreItemsHeld(oStore); if (nStoreInventory==0) { // This store doesn't exist yet - make it int nNumberofStores=GetStoreNumbersinModule(); nNumberofStores=nNumberofStores+1; SetStoreNumbersinModule(nNumberofStores); AddStoreToModule(oStore,nNumberofStores); } //push our inventroy up one nStoreInventory=nStoreInventory+1; if (nStoreInventory>30) { nStoreInventory=1; } //Save our inventory SetStoreItemsHeld(oStore,nStoreInventory); object oOldStock=GetItemonStoreInventory(oStore,nStoreInventory); // If we still have old stock, destroy it if (GetIsObjectValid(oOldStock)||GetItemPossessor(oOldStock)==oStore) { DestroyObject(oOldStock); } // ok tell our item which number it is SetLocalInt(oObject,"item",nStoreInventory); // Set our store to have the item SetItemOnStoreInventory(oObject,oStore,nStoreInventory); } // Sets the number of persistent items this store holds void SetStoreItemsHeld(object oStore, int nNumber) { SetLocalInt(oStore,"numitems",nNumber); } // Gets the number of persistent items this store holds int GetStoreItemsHeld(object oStore) { return GetLocalInt(oStore,"numitems"); } // Sets the number of persistent stores this module currently has void SetStoreNumbersinModule(int nNumber) { SetLocalInt(GetModule(),"numstores",nNumber); } // Returns the number of persistent stores this module currently has int GetStoreNumbersinModule() { return GetLocalInt(GetModule(),"numstores"); } // Returns persistent store number nNumber object GetStoreFromModule(int nNumber) { string sString=GetLocalString(GetModule(),"store"+IntToString(nNumber)); return GetObjectByTag(sString); } // Makes oStore the module store number nNumber void AddStoreToModule(object oStore, int nNumber) { SetLocalString(GetModule(),"store"+IntToString(nNumber),GetTag(oStore)); } void SetItemOnStoreInventory(object oItem, object oStore, int nInventoryNumber) { SetLocalObject(oStore,"inventory"+IntToString(nInventoryNumber),oItem); } object GetItemonStoreInventory(object oStore, int nInventoryNumber) { return GetLocalObject(oStore,"inventory"+IntToString(nInventoryNumber)); } void SaveStores() { int nIdx; object oStore; int nNumberOfStores=GetStoreNumbersinModule(); if (nNumberOfStores==0) { return; } // First save the store number SetCampaignInt("NEW_WORLD","numberofstores",nNumberOfStores); // go through the stores for(nIdx=1; nIdx<=nNumberOfStores; nIdx++) { oStore=GetStoreFromModule(nIdx); if ((GetIsObjectValid(oStore))&&(GetObjectType(oStore)==OBJECT_TYPE_STORE)) { SaveStoretoDatabase(oStore,nIdx); SendMessageToAllDMs("saving store number "+IntToString(nIdx)); SaveStoreItemstoDatabase(nIdx); } } } void SaveStoreItemstoDatabase(int nNumber) { int nIdx; object oStore=GetStoreFromModule(nNumber); object oItem; if ((!GetIsObjectValid(oStore))||(GetObjectType(oStore)!=OBJECT_TYPE_STORE)) { return; } for(nIdx=1; nIdx<=30; nIdx++) { // Go through every item oItem=GetItemonStoreInventory(oStore,nIdx); if (GetIsObjectValid(oItem)) { StoreCampaignObject("NEW_WORLD","storeobject"+IntToString(nIdx)+"on"+IntToString(nNumber),oItem); SendMessageToAllDMs("saving store inventory under the name "+"storeobject"+IntToString(nIdx)+"on"+IntToString(nNumber)); } else { DeleteCampaignVariable("NEW_WORLD","storeobject"+IntToString(nIdx)+"on"+IntToString(nNumber)); SendMessageToAllDMs("saving store invalid object under the name "+"storeobject"+IntToString(nIdx)+"on"+IntToString(nNumber)); } } } void SaveStoretoDatabase(object oStore, int nNumber) { SetCampaignString("NEW_WORLD","storetag"+IntToString(nNumber),GetTag(oStore)); } object GetStorefromDatabase(int nNumber) { string sStoreTag=GetCampaignString("NEW_WORLD","storetag"+IntToString(nNumber)); object oStore=GetObjectByTag(sStoreTag); if ((GetIsObjectValid(oStore))&&(GetObjectType(oStore)==OBJECT_TYPE_STORE)) { return oStore; } else { return OBJECT_INVALID; } } void InitiateStores() { int nNumberOfStores=GetCampaignInt("NEW_WORLD","numberofstores"); if (nNumberOfStores==0) { return; } // Set this as our module number of stores SetStoreNumbersinModule(nNumberOfStores); SendMessageToAllDMs("our module has this many stores "+IntToString(nNumberOfStores)); // go through our stores one by one object oStore; int nIdx; for(nIdx=1; nIdx<=nNumberOfStores; nIdx++) { oStore=GetStorefromDatabase(nIdx); if (GetIsObjectValid(oStore)) { SendMessageToAllDMs("adding store to module number "+IntToString(nIdx)); AddStoreToModule(oStore,nIdx); GetStoreItemsFromDatabase(nIdx); } } } // Gets the items this store should have and puts them on the store void GetStoreItemsFromDatabase(int nNumber) { object oStore=GetStoreFromModule(nNumber); object oItem; int nIdx; location lLoc=GetLocation(GetWaypointByTag("jw_store_failure_wp")); int nCounter; for(nIdx=1; nIdx<=30; nIdx++) { nCounter=0; // Go through every item oItem=RetrieveCampaignObject("NEW_WORLD","storeobject"+IntToString(nIdx)+"on"+IntToString(nNumber),lLoc,oStore); if (GetIsObjectValid(oItem)) { nCounter=nCounter+1; SetItemOnStoreInventory(oItem,oStore,nIdx); SendMessageToAllDMs("adding item to store "+IntToString(nNumber)+" and it is item number "+IntToString(nIdx)); // ok tell our item which number it is SetLocalInt(oItem,"item",nIdx); } else { SendMessageToAllDMs("the following store item was invalid "+IntToString(nNumber)+" and it is item number "+IntToString(nIdx)); } } SetStoreItemsHeld(oStore,nCounter); }