Sweet Success, finally with help from Fester Pot, Meaglyn and Lightfoot! Thanks!!
*note:
OBJECT_SELF had to be changed to
oCommoner like Meaglyn said!
//::///////////////////////////////////////////////
//:: commoner_creator.nss
//:://////////////////////////////////////////////
/*
Reads the various needed variables, creates
a NPC and sends it to a random waypoint.
*/
//:://////////////////////////////////////////////
//:: Created By: EntropyDecay
//:: Created On: May 2003
//:: Altered to accomodate ladies with help from Fester Pot, Meaglyn and Lightfoot! Thanks
//:://////////////////////////////////////////////
void main()
{
object oArea = GetArea(OBJECT_SELF);
object oFirstPlayerInArea = GetLocalObject(oArea, "oFirstPlayerInArea");
int nWeather = GetLocalInt(oArea, "nWeather");
string sCommonerName = GetLocalString(oArea, "sCommonerName");
string sResRefBody = GetLocalString(oArea, "sResRefBody");
int nTypesOfCommoner = GetLocalInt(oArea, "nTypesOfCommoner");
string sResRefClothing = GetLocalString(oArea, "sResRefClothing");
string sResRefClothingFemale = GetLocalString(oArea, "sResRefClothingFemale");
int nTypesOfClothing = GetLocalInt(oArea, "nTypesOfClothing");
int nClothingRandom = GetLocalInt(oArea, "nClothingRandom");
int nCommonerCarry = GetLocalInt(oArea, "nCommonerCarry");
int nCommonerTorchOnlyByNight = GetLocalInt(oArea, "nCommonerTorchOnlyByNight");
int nCommonerTorch = GetLocalInt(oArea, "nCommonerTorch");
int nWalkWayPoints = GetLocalInt(oArea, "nWalkWayPoints");
int nDialogLines = GetLocalInt(oArea, "nDialogLines");
int nWalkType = GetLocalInt(oArea, "nWalkType");
int nRandom;
string sZero;
sZero="00";
nRandom = Random(nTypesOfCommoner)+1;
if (nRandom>9) {sZero="0";}
if (nRandom>99) {sZero="";}
string sSpawn = sResRefBody + sZero + IntToString(nRandom);
object oStartWayPoint = GetNearestObjectByTag("NW_COMMONER_WALKTO", oFirstPlayerInArea, Random(nWalkWayPoints)+1);
object oCommoner = CreateObject(OBJECT_TYPE_CREATURE, sSpawn, GetLocation(oStartWayPoint));
object oWalkTarget = GetNearestObjectByTag("NW_COMMONER_WALKTO", oStartWayPoint, Random(nWalkWayPoints-1)+1);
SetLocalObject(oCommoner, "oWalkTarget", oWalkTarget);
SetLocalInt(oCommoner, "ambience_dialog", Random(nDialogLines)+1);
AssignCommand(oCommoner, ClearAllActions());
if (GetName(oCommoner)==sCommonerName)
{
if (Random(100)+1 <= nClothingRandom)
{
sZero="00";
nRandom = Random(nTypesOfClothing)+1;
if (nRandom>9) {sZero="0";}
if (nRandom>99) {sZero="";}
// CHECK FOR MALE VS. FEMALE
if (GetGender(oCommoner) == GENDER_MALE) {
object oClothing = CreateItemOnObject(sResRefClothing+sZero+IntToString(nRandom), oCommoner);
AssignCommand(oCommoner, ActionEquipItem(oClothing, INVENTORY_SLOT_CHEST));
//object oUmbrella=GetItemPossessedBy(OBJECT_SELF, "umbrella");
}
else
{
object oClothing = CreateItemOnObject(sResRefClothingFemale+sZero+IntToString(nRandom), oCommoner);
AssignCommand(oCommoner, ActionEquipItem(oClothing, INVENTORY_SLOT_CHEST));
//object oUmbrella=GetItemPossessedBy(OBJECT_SELF, "umbrella");
}
if (Random(100)+1 > nCommonerCarry)
{
DestroyObject(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oCommoner));
DestroyObject(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oCommoner));
}
}
if (nCommonerTorchOnlyByNight==FALSE && Random(100)+1 <= nCommonerTorch)
{
object oTorch = CreateItemOnObject("NW_IT_TORCH001", oCommoner);
AssignCommand(oCommoner, ActionEquipItem(oTorch, INVENTORY_SLOT_LEFTHAND));
}
else if (GetIsNight() && Random(100)+1 <= nCommonerTorch)
{
object oTorch = CreateItemOnObject("NW_IT_TORCH001", oCommoner);
AssignCommand(oCommoner, ActionEquipItem(oTorch, INVENTORY_SLOT_LEFTHAND));
}
AssignCommand(oCommoner, ActionForceMoveToObject(oWalkTarget, nWalkType, 0.4, 60.0));
AssignCommand(oCommoner, ActionDoCommand(DestroyObject(OBJECT_SELF, 0.1)));
}
}
Modifié par vivienne.l, 03 novembre 2012 - 07:41 .