Shards of Vael Development
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Scripting Help

Go down

Scripting Help Empty Scripting Help

Post by Rokene Mon Apr 04, 2011 3:45 am


Main Script
#Include "gen_igs_functions_i"

void main()
{
object oPC = GetLastOpenedBy();
string sID = GetFirstName(oPC)+GetLastName(oPC);
object oChest = OBJECT_SELF;
string sTestItem = "mst_swbs_ada_3";

string sMessage;
int nStatus = GetLocalInt(oChest, sID);


if(nStatus == 0)
{
Gen_GenerateTreasure(oChest);
SetLocalInt(oChest, sID, 2);
}

else if(nStatus == 2)
{
sMessage = "You've looted this chest already.";
}

else
{
sMessage = "Something is severely wrong!";
}

FloatingTextStringOnCreature(sMessage, oPC, TRUE);

}


Included Script 1
#include "gen_igs_functions2_i"




void Gen_GenerateTreasure(object oObject)
{
string sTier1 = "gen_tier1treasure";
string sTier2 = "gen_tier2treasure";
string sTier3 = "gen_tier3treasure";
string sTier4 = "gen_tier4treasure";
string sTier5 = "gen_tier5treasure";
string sTier6 = "gen_tier6treasure";

string sChestType = GetResRef(oObject);
int GemsDC;
int ItemDC;
string sGem1;
string sGem2;
int UniqueChest;
int MagicDC;
int ItemDC;
int UniqueDC;
int MaxSkillBonus;
int MaxACBonus;
int ItemPropertyLimit;
int CommonItemDC;
int Tier;


if(sChestType == sTier1) //normal chest
{
GemsDC = 70;
int MagicItemDC = 50;
sGem1 ="cnrgemfine001";
sGem2 ="cnrgemfine002";
UniqueChest = 0;
MagicDC = 50;
ItemDC = 100;
CommonItemTypeDC = 80;
MaxSkillBonus = 2;
MaxACBonus = 0;
ItemPropertyLimit = 1;
Tier = 1;
}

else if(sChestType == sTier2) //Magic1 chest
{
GemsDC = 60;
sGem1 ="cnrgemfine003";
sGem2 ="cnrgemfine004";
UniqueDC = 999;
MaxSkillBonus = 3;
MaxACBonus = 1;
UniqueChest = 1;
ItemPropertyLimit = 2;
CommonItemDC = 70;
Tier = 2;
}

else if(sChestType == sTier3)//Magic2 chest
{
GemsDC = 50;
sGem1 ="cnrgemfine005";
sGem2 ="cnrgemfine006";
UniqueDC = 999;
MaxSkillBonus = 3;
MaxACBonus = 2;
UniqueChest = 1;
ItemPropertyLimit = 2;
CommonItemDC = 60;
Tier = 3;
}

else if(sChestType == sTier4)//Magic3 chest
{
GemsDC = 50;
sGem1 ="cnrgemfine007";
sGem2 ="cnrgemfine008";
UniqueDC = 999;
MaxSkillBonus = 4;
MaxACBonus = 3;
UniqueChest = 1;
ItemPropertyLimit = 3;
CommonItemDC = 60;
Tier = 4;
}

else if(sChestType == sTier5)//Magic4 chest
{
GemsDC = 50;
sGem1 ="cnrgemfine009";
sGem2 ="cnrgemfine010";
UniqueDC = 999;
MaxSkillBonus = 5;
MaxACBonus = 4;
UniqueChest = 1;
ItemPropertyLimit = 3;
CommonItemDC = 50;
Tier = 5;
}

else if(sChestType == sTier6)//Magic5 chest
{
GemsDC = 50;
sGem1 ="cnrgemfine011";
sGem2 ="cnrgemfine012";
UniqueDC = 999;
MaxSkillBonus = 5;
MaxACBonus = 5;
UniqueChest = 1;
ItemPropertyLimit = 2;
CommonItemDC = 50;
Tier = 6;
}
else
{
FloatingTextStringOnCreature("Error none matched.", TRUE);
}

int GemsRoll = d100(1);

if(GemsRoll <= GemsDC)
{
int GemTypeRoll = d2(1);
if(GemsTypeRoll == 1)
{
CreateItemOnObject(sGem1, oObject);
}

else
{
CreateItemOnObject(sGem2, oObject);
}
}

int UniqueCommonRoll = d100(1);
if(UniqueCommonRoll <= CommonItemDC)
{
FinalItemTypeRoll = 1+Random(52);
}
else
{
FinalItemTypeRoll = 54+Random(4);
}

string sItemTypeNumber = IntToString(FinalItemTypeRoll);
string sItemTypeID = "igs_item_"+sItemTypeNumber;

int ItemRoll = d100(1);

if((UniqueChest == 0) && (ItemRoll <= ItemDC))
{

int MagicRoll = d2(1);
if(MagicRoll == 1)
{
object oSpawnedItem = CreateItemOnObject(sItemTypeID, oObject);

if(ItemPropertyLimit == 2)
{
ItemPropertyNumberRoll = d100(1);
if(ItemPropertyNumberRoll >= 90)
{
ipSetProperty1 = GenerateRandomProperty(oObject);
ipSetProperty2 = GenerateRandomProperty(oObject);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty1, oSpawnedItem);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty2, oSpawnedItem);
}
else
{
ipSetProperty1 = GenerateRandomProperty(oObject);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty1, oSpawnedItem);
}
}
else if(ItemPropertyLimit == 3)
{
ItemPropertyNumberRoll = d100(1);
if(ItemPropertyNumberRoll >= 90)
{
ipSetProperty1 = GenerateRandomProperty(oObject);
ipSetProperty2 = GenerateRandomProperty(oObject);
ipSetProperty3 = GenerateRandomProperty(oObject);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty1, oSpawnedItem);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty2, oSpawnedItem);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty3, oSpawnedItem);
}
else if((ItemPropertyNumberRoll >= 50) && (ItemPropertyNumberRoll <= 89))
{
ipSetProperty1 = GenerateRandomProperty(oObject);
ipSetProperty2 = GenerateRandomProperty(oObject);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty1, oSpawnedItem);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty2, oSpawnedItem);
}
else
{
ipSetProperty1 = GenerateRandomProperty(oObject);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty1, oSpawnedItem);
}
}
else
{
CreateItemOnObject(sItemTypeID, oObject);
}

}


}

if(UniqueChest == 1)
{


int UniqueRoll = d100(10);
if(UniqueRoll <= UniqueDC)
{
object oSpawnedItem = CreateItemOnObject(sItemTypeID, oObject);

if(ItemPropertyLimit == 2)
{
ItemPropertyNumberRoll = d100(1);
if(ItemPropertyNumberRoll >= 90)
{
ipSetProperty1 = GenerateRandomProperty(oObject);
ipSetProperty2 = GenerateRandomProperty(oObject);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty1, oSpawnedItem);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty2, oSpawnedItem);
}
else
{
ipSetProperty1 = GenerateRandomProperty(oObject);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty1, oSpawnedItem);
}
}
else if(ItemPropertyLimit == 3)
{
ItemPropertyNumberRoll = d100(1);
if(ItemPropertyNumberRoll >= 90)
{
ipSetProperty1 = GenerateRandomProperty(oObject);
ipSetProperty2 = GenerateRandomProperty(oObject);
ipSetProperty3 = GenerateRandomProperty(oObject);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty1, oSpawnedItem);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty2, oSpawnedItem);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty3, oSpawnedItem);
}
else if((ItemPropertyNumberRoll >= 50) && (ItemPropertyNumberRoll <= 89))
{
ipSetProperty1 = GenerateRandomProperty(oObject);
ipSetProperty2 = GenerateRandomProperty(oObject);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty1, oSpawnedItem);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty2, oSpawnedItem);
}
else
{
ipSetProperty1 = GenerateRandomProperty(oObject);
AddItemProperty(DURATION_TYPE_PERMANENT, ipSetProperty1, oSpawnedItem);
}
}
else
{
FloatingTextStringOnCreature("Error.", oObject, TRUE);
}

}
else
{
int UniqueSetItemRoll = Random(1);
if(UniqueSetItemRoll == 0)
{

}
else if(UniqueItemRoll == 1)
{

}
else
{
FloatingTextStringOnCreature("Error.", oObject, TRUE);
}
}


}
}



Include Script 2


itemproperty GenerateRandomProperty(object oObject)
{

string sTier1GRP = "gen_tier1treasure";
string sTier2GRP = "gen_tier2treasure";
string sTier3GRP = "gen_tier3treasure";
string sTier4GRP = "gen_tier4treasure";
string sTier5GRP = "gen_tier5treasure";
string sTier6GRP = "gen_tier6treasure";

string sChestTypeGRP = GetResRef(oObject);

int MaxSkillBonusGRP;
int MaxACBonusGRP;
int ItemPropertyLimitGRP;
int TierGRP;


if(sChestTypeGRP == sTier1GRP) //normal chest
{
MaxSkillBonusGRP = 2;
MaxACBonusGRP = 0;
ItemPropertyLimitGRP = 1;
TierGRP= 1;
}

else if(sChestTypeGRP == sTier2GRP) //Magic1 chest
{
MaxSkillBonusGRP = 3;
MaxACBonusGRP = 1;
ItemPropertyLimitGRP = 2;
TierGRP= 2;
}

else if(sChestTypeGRP == sTier3GRP)//Magic2 chest
{
MaxSkillBonusGRP = 3;
MaxACBonusGRP = 2;
ItemPropertyLimitGRP = 2;
TierGRP= 3;
}

else if(sChestTypeGRP == sTier4GRP)//Magic3 chest
{
MaxSkillBonusGRP = 4;
MaxACBonusGRP = 3;
ItemPropertyLimitGRP = 3;
TierGRP= 4;
}

else if(sChestTypeGRP == sTier5GRP)//Magic4 chest
{
MaxSkillBonusGRP = 5;
MaxACBonusGRP = 4;
ItemPropertyLimitGRP = 3;
TierGRP= 5;
}

else if(sChestTypeGRP == sTier6GRP)//Magic5 chest
{
MaxSkillBonusGRP = 5;
MaxACBonusGRP = 5;
ItemPropertyLimitGRP = 2;
TierGRP= 6;
}
else
{
FloatingTextStringOnCreature("Error none matched.", TRUE);
}


int PropertyRoll = Random(2);

if((PropertyRoll == 0) && (TierGRP == 1)) //Masterwork Enchant
{
ItemPropertyAttackBonus(1);
}
else if((PropertyRoll == 0) && (TierGRP >= 2)) //Enhancement Enchant
{
ItemPropertyEnhancementBonus(TierGRP-1);
}
else if(PropertyRoll == 1) //Skill Bonus Property
{
if(MaxSkillBonusGRP == 2)
{
Bonus = 2;
}
else if(MaxSkillBonusGRP == 3)
{
Bonus = 1+d2(1);
}
else if(MaxSkillBonusGRP == 4)
{
Bonus = 1+d3(1);
}
else if(MaxSkillBonusGRP == 5)
{
Bonus = 2+d4(1);
}
else
{
FloatingTextStringOnCreature("Error.", oObject, TRUE);
}

int SkillType;
int SkillRoll = Random(24);
if(SkillRoll == 1)
{
SkillType = SKILL_APPRAISE;
}
else if(SkillRoll == 2)
{
SkillType = SKILL_BLUFF;
}
else if(SkillRoll == 3)
{
SkillType = SKILL_CONCENTRATION;
}
else if(SkillRoll == 4)
{
SkillType = SKILL_DIPLOMACY;
}
else if(SkillRoll == 5)
{
SkillType = SKILL_DISABLE_TRAP;
}
else if(SkillRoll == 6)
{
SkillType = SKILL_HEAL;
}
else if(SkillRoll == 7)
{
SkillType = SKILL_HIDE;
}
else if(SkillRoll == Cool
{
SkillType = SKILL_INTIMIDATE;
}
else if(SkillRoll == 9)
{
SkillType = SKILL_LISTEN;
}
else if(SkillRoll == 10)
{
SkillType = SKILL_MOVE_SILENTLY;
}
else if(SkillRoll == 11)
{
SkillType = SKILL_OPEN_LOCK;
}
else if(SkillRoll == 12)
{
SkillType = SKILL_PARRY;
}
else if(SkillRoll == 13)
{
SkillType = SKILL_PERFORM;
}
else if(SkillRoll == 14)
{
SkillType = SKILL_SEARCH;
}
else if(SkillRoll == 15)
{
SkillType = SKILL_SET_TRAP;
}
else if(SkillRoll == 16)
{
SkillType = SKILL_SLEIGHT_OF_HAND;
}
else if(SkillRoll == 17)
{
SkillType = SKILL_SPELLCRAFT;
}
else if(SkillRoll == 18)
{
SkillType = SKILL_SPOT;
}
else if(SkillRoll == 19)
{
SkillType = SKILL_SURVIVAL;
}
else if(SkillRoll == 20)
{
SkillType = SKILL_TAUNT;
}
else if(SkillRoll == 21)
{
SkillType = SKILL_TUMBLE;
}
else if(SkillRoll == 22)
{
SkillType = SKILL_USE_MAGIC_DEVICE;
}
else if(SkillRoll == 23)
{
SkillType = SKILL_LORE;
}

ItemPropertySkillBonus(SkillType, Bonus);
}

else if(PropertyRoll == 2) //AC Bonus Enchant
{
if(MaxACBonusGRP >= 1)
{
ItemPropertyACBonus(MaxACBonusGRP);
}
else
{
ItemPropertySkillBonus(SKILL_CONCENTRATION, 2);
}
}
}
Rokene
Rokene
Scripting Department
Scripting Department

Posts : 273
Join date : 2011-02-25

Back to top Go down

Scripting Help Empty Re: Scripting Help

Post by Rokene Mon Apr 04, 2011 3:46 am

If anyone knows why it's giving me an error of Elipisis in Identifier when compiling the main script please let me know! The 2nd and 3rd script compiled but the first script (main script) gives the error.
Rokene
Rokene
Scripting Department
Scripting Department

Posts : 273
Join date : 2011-02-25

Back to top Go down

Scripting Help Empty Re: Scripting Help

Post by Rokene Mon Apr 04, 2011 10:13 pm

Nevermind fixed!
Rokene
Rokene
Scripting Department
Scripting Department

Posts : 273
Join date : 2011-02-25

Back to top Go down

Scripting Help Empty Re: Scripting Help

Post by Sponsored content


Sponsored content


Back to top Go down

Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum