📖 Classes Principais das DLLs
Referência detalhada das classes mais importantes para modding.
World Class
Namespace: ScriptCore
Linhas: 3.312
Base: CallbackObject, IWorld
Métodos Mais Usados
// Obter todos os objetos de um tipo
Sim[] sims = World.GetObjects<Sim>();
GameObject[] objects = World.GetObjects<GameObject>();
// Eventos
World.sOnWorldLoadFinishedEventHandler += EventHandler;
// Terreno
float height = World.GetTerrainHeight(x, z);
float seaLevel = World.GetSeaLevel();
// Lots
World.SetActiveLot(lotId);
bool isEmpty = World.LotIsEmpty(lotId);
// Posicionamento
bool canPlace = World.TestObjectPlacementPQ(objId, options, ref position, ref orientation);
Vector3 inside = World.LotGetPtInside(lotId);
Sim Class
Namespace: Sims3.Gameplay.Actors
Linhas: 62.662
Base: GameObject, IActor, ISharedObject
Propriedades Principais
| Propriedade | Tipo | Descrição |
|---|---|---|
SimDescription | SimDescription | Dados persistentes (CAS, traits) |
BuffManager | BuffManager | Gerenciador de buffs |
SocialComponent | SocialComponent | Estado social |
InteractionManager | InteractionManager | Fila de interações |
NeedManager | NeedManager | Necessidades |
SkillManager | SkillManager | Skills |
Inventory | SimInventory | Inventário |
OccultManager | OccultManager | Estado ocultista |
Métodos de Interação
// Adicionar interação
sim.AddInteraction(interaction);
// Postura social
sim.EnterSocializingPosture(target);
// Trocar roupa
SwitchOutfitHelper outfit = new SwitchOutfitHelper(sim, ClothesChangeReason.GoingToSwim);
outfit.Start();
Relationship Class
Namespace: Sims3.Gameplay.Socializing
Linhas: 2.550
Tunable Fields: 13+
Uso Principal
// Obter relacionamento
Relationship rel = Relationship.Get(simA, simB, false);
// Modificar LTR
rel.LTR.UpdateLikingAndShowLikingVFX(25.0f, actor, target);
rel.LTR.UpdateLiking(15.0f, actor, target);
// Verificar atração
bool isAttracted = rel.IsAttracted();
// Interaction bits
rel.LTR.AddInteractionBit(LongTermRelationship.InteractionBits.FirstKiss);
bool hasWooHoo = rel.LTR.HasInteractionBit(LongTermRelationship.InteractionBits.WooHoo);
Fórmula de Atração
Atração = Base[-50,50] + Trait[10] + Career[1/lvl] + Skill[0.5/lvl]
+ Occult[15] + Celebrity[2/lvl] + Astro[20] + Money[5-20] + Buffs[10]
Buff Class
Namespace: Sims3.Gameplay.ActorSystems
Linhas: 444
BuffData: 20+ campos
BuffData Fields
| Campo | Tipo | Descrição |
|---|---|---|
mBuffGuid | BuffNames | GUID único |
mBuffName | string | Nome exibido |
mDescription | string | Descrição |
mMoodletColor | MoodColor | Cor do moodlet |
mAxisEffected | MoodAxis | Eixo afetado |
mEffectValue | int | Valor (-40 a +40) |
mTimeoutSimMinutes | float | Duração |
mFacialIdles | string[] | Animações faciais |
BuffManager Methods
// Adicionar
sim.BuffManager.AddElement(BuffNames.Happy, Origin.FromCustomSource);
// Verificar
bool hasBuff = sim.BuffManager.HasElement(BuffNames.Happy);
// Remover
sim.BuffManager.RemoveElement(BuffNames.Happy);
// Listar
List<BuffInstance> buffs = sim.BuffManager.GetAllBuffs();
EventTracker Class
Namespace: Sims3.Gameplay.EventSystem
Eventos: 120+ tipos
Pattern: Publish/Subscribe
EventListener Template
public class MeuListener : EventListener
{
public override ListenerAction ProcessEvent(Event e)
{
if (e.Id == EventTypeId.kRelationshipLTRChanged)
{
// Sua lógica
return ListenerAction.KeepListening;
}
return ListenerAction.KeepListening;
}
public override bool DoesEventApply(Event e)
{
return e.Id == EventTypeId.kRelationshipLTRChanged;
}
}
Principais Eventos
kSimCreatedkSimDeathkAgedUpkCareerChangedkSkillGainedkBuffAddedkRelationshipLTRChangedkWooHookMarriagekInteractionSuccessSocialInteraction Class
Namespace: Sims3.Gameplay.Socializing
Linhas: 1.686
Base: SocialInteractionBase
Template de Interação
public class MinhaInteracao : SocialInteraction
{
public static readonly InteractionDefinition Singleton;
static MinhaInteracao()
{
Singleton = new Definition();
}
public override bool Run()
{
Actor.EnterSocializingPosture(Target);
Actor.SocialComponent.StartSocializingWith(Target);
if (BeginSocialInteraction(...))
{
EnterStateMachine("social_generic", "Enter", "x", "y");
SetActor("x", Actor);
SetActor("y", Target);
Relationship rel = Relationship.Get(Actor, Target, true);
rel.LTR.UpdateLikingAndShowLikingVFX(25.0f, Actor, Target);
EndCommodityUpdates(true);
}
return true;
}
public class Definition : InteractionDefinition<Sim, Sim, MinhaInteracao>
{
public override string GetInteractionName(Sim actor, Sim target, InteractionObjectPair iop)
{
return "Nome da Interação";
}
public override string[] GetPath(bool isFemale)
{
return new string[] { "Amigável..." };
}
protected override bool Test(Sim actor, Sim target, bool isAutonomous, ref GreyedOutTooltipCallback callback)
{
if (target == actor) return false;
if (!target.SimDescription.TeenOrAbove) return false;
return true;
}
}
}