77 lines
1.6 KiB
Plaintext
77 lines
1.6 KiB
Plaintext
//This script completely prevents lagg in many ways and prevents duping exploits
|
|
//PROTOTYPE
|
|
int GetTrueValue(object oItem)
|
|
{
|
|
int i = 0;
|
|
|
|
//Get the state of the item before altering
|
|
int n = GetIdentified(oItem);
|
|
|
|
if(n==FALSE)
|
|
{ SetIdentified(oItem, TRUE); }
|
|
|
|
i = GetGoldPieceValue(oItem);
|
|
|
|
SetIdentified(oItem, n);
|
|
|
|
return i;
|
|
}
|
|
|
|
void main()
|
|
{
|
|
object oPC = (GetModuleItemLostBy());
|
|
object oItem = (GetModuleItemLost());
|
|
object oArea = GetArea(oItem);
|
|
int nType = GetBaseItemType(oItem);
|
|
|
|
//Give gold for plot items too
|
|
SetPlotFlag(oItem, FALSE);
|
|
|
|
int n = GetTrueValue(oItem);
|
|
int b, c;
|
|
int nGP;
|
|
|
|
if(n>=100)
|
|
{
|
|
b = n/100;
|
|
c = b * 50; //The % used..
|
|
nGP = c;
|
|
}
|
|
else
|
|
{ nGP = 500; }
|
|
|
|
//Do not purchase ammunition!
|
|
if(nType == BASE_ITEM_ARROW || nType == BASE_ITEM_BOLT ||
|
|
nType == BASE_ITEM_BULLET || nType == BASE_ITEM_DART ||
|
|
nType == BASE_ITEM_SHURIKEN || nType == BASE_ITEM_THROWINGAXE)
|
|
{ nGP = 500; }
|
|
else
|
|
{
|
|
//cap the gold @ 400,000 Gold
|
|
if(nGP >=400000)
|
|
{ nGP = 400000; }
|
|
}
|
|
|
|
if (!GetIsPC(oPC))
|
|
return;//so that npc dropped items won't be destroyed.
|
|
{
|
|
if (oArea != GetArea(oPC))
|
|
return;
|
|
|
|
if (GetIsInCombat(oPC))
|
|
return;
|
|
|
|
if (oItem != OBJECT_INVALID)
|
|
{
|
|
|
|
GiveGoldToCreature(oPC, nGP);
|
|
DestroyObject(oItem);
|
|
FloatingTextStringOnCreature("The item you dropped was destroyed!!!", oPC);
|
|
DelayCommand(1.2, FloatingTextStringOnCreature
|
|
(IntToString(nGP) + " - Gold (50%) was given to you for the item!!", oPC));
|
|
|
|
}
|
|
|
|
}
|
|
}
|