mirror of
https://bitbucket.org/seefoe/dsrc.git
synced 2026-07-31 01:15:55 -04:00
101 lines
2.0 KiB
Plaintext
101 lines
2.0 KiB
Plaintext
include library.camping;
|
|
include library.utils;
|
|
|
|
trigger OnAttach()
|
|
{
|
|
messageTo(self, "handleTimeSensitiveData", null, 4, false);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
trigger OnGetAttributes(obj_id player, string[] names, string[] attribs)
|
|
{
|
|
int idx = utils.getValidAttributeIndex(names);
|
|
if (idx == -1)
|
|
return SCRIPT_CONTINUE;
|
|
|
|
int destructTime = getIntObjVar(self, camping.VAR_DESTRUCT_TIME);
|
|
if(destructTime <= 0)
|
|
return SCRIPT_CONTINUE;
|
|
|
|
names[idx] = "camp_destruction";
|
|
attribs[idx] = getCalendarTimeStringLocal(destructTime);
|
|
idx++;
|
|
|
|
names[idx] = "camp_timer";
|
|
attribs[idx] = utils.formatTimeVerbose(destructTime - getCalendarTime());
|
|
idx++;
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
|
|
trigger OnObjectMenuRequest(obj_id player, menu_info mi)
|
|
{
|
|
menu_info_data data = mi.getMenuItemByType(menu_info_types.ITEM_USE);
|
|
|
|
if(data != null)
|
|
{
|
|
data.setLabel(new string_id("camp","menu_dismantle"));
|
|
data.setServerNotify(true);
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
trigger OnObjectMenuSelect(obj_id player, int item)
|
|
{
|
|
if(item == menu_info_types.ITEM_USE)
|
|
{
|
|
requestCampDismantle(self, player);
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
void requestCampDismantle(obj_id self, obj_id player)
|
|
{
|
|
if(!hasObjVar(self, "camp"))
|
|
return;
|
|
|
|
obj_id camp = getObjIdObjVar(self, "camp");
|
|
|
|
if(!isIdValid(camp))
|
|
return;
|
|
|
|
if (hasObjVar(camp, "camp.owner"))
|
|
{
|
|
obj_id owner = utils.getObjIdObjVar(camp, "camp.owner");
|
|
if (player == owner)
|
|
{
|
|
destroyObject(camp);
|
|
}
|
|
else
|
|
{
|
|
sendSystemMessage(player, new string_id("camp", "owner_dismantle"));
|
|
return;
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
messageHandler handleTimeSensitiveData()
|
|
{
|
|
obj_id camp = getObjIdObjVar(self, "camp");
|
|
if(!isValidId(camp) || !exists(camp))
|
|
return SCRIPT_CONTINUE;
|
|
|
|
int lifeTime = (int)getFloatObjVar(camp, camping.VAR_LIFETIME);
|
|
if(lifeTime <= 0)
|
|
return SCRIPT_CONTINUE;
|
|
|
|
int creationTime = getIntObjVar(camp, camping.VAR_CREATION_TIME);
|
|
if(lifeTime <= 0)
|
|
return SCRIPT_CONTINUE;
|
|
|
|
int destructTime = creationTime + lifeTime;
|
|
setObjVar(self, camping.VAR_DESTRUCT_TIME, destructTime);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|