How to add a function to a metatable?

Thalassicus

Bytes and Nibblers
Joined
Nov 9, 2005
Messages
11,057
Location
Texas
I have a function:
PHP:
function Player_ChangeYieldStored(player, yieldType, yield)
I'd like to make it like this:
PHP:
function Player:ChangeYieldStored(yieldType, yield)
Is this possible, and if so, how?
 
OK, did some testing and... yes, you can.

player has a metatable with one key, "__index", which itself is a table of functions:

> print(Players[0])
EaMain: table: 15495B78
> print(getmetatable(Players[0]))
EaMain: table: 15498C10
> for key, value in pairs(getmetatable(Players[0])) do print(key, value) end
EaMain: __index table: 1549A5D8
> print(getmetatable(Players[0]).__index)
EaMain: table: 1549A5D8
> for key, value in pairs(getmetatable(Players[0]).__index) do print(key, value) end
Spoiler :
EaMain: GetCitiesLost function: 155ED458
EaMain: GetNotificationStr function: 155EEF18
EaMain: SetNumWondersBeatenTo function: 155EB3D8
EaMain: GetNewCityName function: 155EB058
EaMain: GetBuildingProductionNeeded function: 155EB7F8
EaMain: GetGreatGeneralRateModifier function: 155ECEF8
EaMain: HasBusyUnit function: 155EB898
EaMain: GetNumPolicyBranchesAllowed function: 155EC878
EaMain: SetPolicyBranchUnlocked function: 155EC818
EaMain: GetAgricultureHistory function: 155EE638
EaMain: IsFriendDenouncedUs function: 155EE9D8
EaMain: GetHappinessFromGarrisonedUnits function: 155EC578
EaMain: GetHappinessFromResources function: 155EC298
EaMain: ChangeJONSCulturePerTurnForFree function: 155EC038
EaMain: GetCultureCityModifier function: 155EC098
EaMain: ForcePeace function: 155EE6F8
EaMain: GetFeatureProductionModifier function: 155ECFD8
EaMain: GetRecentTradeValue function: 155EED98
EaMain: SetHappinessPerTradeRoute function: 155EC658
EaMain: GetGarrisonedCityRangeStrikeModifier function: 155EC718
EaMain: GetMinorCivType function: 155ED698
EaMain: GetNextCity function: 155EF2D8
EaMain: GetCurrentSpawnEstimate function: 155EDA58
EaMain: GetCultureBombTimer function: 155ED3D8
EaMain: GetCivilizationDescription function: 155EB1D8
EaMain: GetCivilizationAdjective function: 155EB258
EaMain: GetUnitProductionMaintenanceMod function: 155ED0D8
EaMain: IsTurnActive function: 155EB4F8
EaMain: IsWillAcceptPeaceWithPlayer function: 155EE878
EaMain: GetOtherPlayerNumProtectedMinorsAttacked function: 155EED18
EaMain: GetPlayerColors function: 155EDD58
EaMain: GetLandDisputeLevel function: 155EEAB8
EaMain: GetRecommendedWorkerPlots function: 155EEFD8
EaMain: GetLifetimeCombatExperience function: 155EE378
EaMain: GetNumMilitaryUnits function: 155ED278
EaMain: GetNumUnitsOutOfSupply function: 155ED178
EaMain: IsCanHurry function: 155EE298
EaMain: IsPlayerDenouncedFriend function: 155EE958
EaMain: IsMinorPermanentWar function: 155EDAB8
EaMain: GetImprovementUpgradeRateModifier function: 155ED018
EaMain: ChangeMinorCivFriendshipWithMajor function: 155ED7F8
EaMain: GetTotalJONSCulturePerTurn function: 155EBF98
EaMain: ChangeNumFreeGreatPeople function: 155EF218
EaMain: IsAlwaysSeeBarbCamps function: 155EC758
EaMain: GetWeDeclaredWarOnFriendCount function: 155EEA38
EaMain: GetNumWondersBeatenTo function: 155EB3B8
EaMain: GetCapitalUnhappinessMod function: 155EC4F8
EaMain: GetTraitGoldenAgeCombatModifier function: 155EF238
EaMain: ChangeScoreFromFutureTech function: 155ED658
EaMain: GetPlotDanger function: 155EE7B8
EaMain: Contact function: 155EB438
EaMain: GetCurrentEra function: 155EDCF8
EaMain: CanRaze function: 155EB538
EaMain: GetNotificationSummaryStr function: 155EEF38
EaMain: CanResearch function: 155EBB78
EaMain: IsNukedBy function: 155EEE78
EaMain: IsMilitaryFoodProduction function: 155ED2B8
EaMain: AddNotification function: 155EEFB8
EaMain: GetNumNukeUnits function: 155ED1B8
EaMain: GetCapitalSettlerProductionModifier function: 155ED098
EaMain: CountCityFeatures function: 155EB338
EaMain: GetEverPoppedGoody function: 155EF078
EaMain: IsGaveAssistanceTo function: 155EEE38
EaMain: IsDemandEverMade function: 155EEB78
EaMain: GetMinorCivFavoriteMajor function: 155ED978
EaMain: GetJONSCulturePerTurnFromExcessHappiness function: 155EBFD8
EaMain: GetExtraHappinessPerCity function: 155EC258
EaMain: GetEmbarkedGraphicOverride function: 155EF378
EaMain: GetAdvancedStartPopCost function: 155ECB58
EaMain: GetMaxTeamBuildingProductionModifier function: 155ECF78
EaMain: SetEmbarkedGraphicOverride function: 155EF398
EaMain: GetResourceExport function: 155EE0B8
EaMain: GetPopScore function: 155ED4B8
EaMain: GetScoreFromPopulation function: 155ED598
EaMain: AddFreeUnit function: 155EB0B8
EaMain: GetMaxGlobalBuildingProductionModifier function: 155ECF58
EaMain: GetFriendshipChangePerTurnTimes100 function: 155ED7B8
EaMain: GetCultureWonderMultiplier function: 155EBFF8
EaMain: GetSpaceProductionModifier function: 155ED058
EaMain: IsPlayerBrokenBorderPromise function: 155EEC58
EaMain: GetTotalLandScored function: 155EBDF8
EaMain: GetOverflowResearch function: 155ED378
EaMain: GetCivilizationAdjectiveKey function: 155EB278
EaMain: GetMilitaryMight function: 155ED498
EaMain: IsStrike function: 155EDC18
EaMain: GetNumUnitsSuppliedByPopulation function: 155ED158
EaMain: HasBusyMovingUnit function: 155EB8B8
EaMain: SetJONSCulture function: 155EC0D8
EaMain: GetCoopWarAcceptedState function: 155EEA78
EaMain: IsFoundedFirstCity function: 155EDB98
EaMain: GetTurnsSinceThreatenedByBarbarians function: 155ED918
EaMain: GetAdvancedStartVisibilityCost function: 155ECBF8
EaMain: GetJONSCulture function: 155EC0B8
EaMain: GetCityCountUnhappinessMod function: 155EC4B8
EaMain: GetBestRoute function: 155EB958
EaMain: IsHalfSpecialistUnhappiness function: 155EC558
EaMain: GetScoreHistory function: 155EE5D8
EaMain: ChooseTech function: 155EB0D8
EaMain: InitCity function: 155EAFF8
EaMain: SetHappinessPerGarrisonedUnit function: 155EC5D8
EaMain: GetExtraUnitCost function: 155ED258
EaMain: GetUnitProductionNeeded function: 155EB7D8
EaMain: IsUntrustworthyFriend function: 155EE998
EaMain: GetNumUnitsSupplied function: 155ED0F8
EaMain: GetBarbarianCombatBonus function: 155EC6B8
EaMain: GetAdvancedStartTechCost function: 155ECBD8
EaMain: AddCityName function: 155EE478
EaMain: GetApproachTowardsUsGuess function: 155EE858
EaMain: GetGreatPeopleRateModifier function: 155ECED8
EaMain: ChangeCombatExperience function: 155EE338
EaMain: GetEverTrainedBuilder function: 155EF118
EaMain: GetHappinessFromPolicies function: 155EC1F8
EaMain: SetNumFreeTechs function: 155EF158
EaMain: GetHappinessFromReligion function: 155EC2F8
EaMain: GetNumRequestsRefused function: 155EEA58
EaMain: Disband function: 155EB5B8
EaMain: GetLeaderType function: 155EDC98
EaMain: ChangeNumPlotsBought function: 155EE778
EaMain: IsWhiteFlag function: 155EB298
EaMain: CanTrain function: 155EB6D8
EaMain: GetCivilizationType function: 155EDC78
EaMain: GetResearchCost function: 155EBC18
EaMain: Raze function: 155EB578
EaMain: GetPolicyBranchChosen function: 155EC858
EaMain: GetAveragePopulation function: 155EBD58
EaMain: IsProductionMaxedProject function: 155EB7B8
EaMain: GetScore function: 155ED558
EaMain: GetCityByID function: 155EE518
EaMain: GetQuestData1 function: 155ED858
EaMain: HasReadyUnit function: 155EB838
EaMain: GetQuestData2 function: 155ED878
EaMain: GetYieldRateModifier function: 155EDD98
EaMain: GetJONSCulturePerTurnFromCities function: 155EBFB8
EaMain: GetAdvancedStartRouteCost function: 155ECBB8
EaMain: ChangeAdvancedStartPoints function: 155ECAF8
EaMain: GetNumUnitsSuppliedByCities function: 155ED138
EaMain: GetNumFreeTechs function: 155EF138
EaMain: UnitsGoldenAgeReady function: 155EBC98
EaMain: IsPlayerHasOpenBordersAutomatically function: 155ED798
EaMain: GetNumTradeResourceImports function: 155EB498
EaMain: IsPlayerBrokenCityStatePromise function: 155EEC98
EaMain: GetMaxPlayerBuildingProductionModifier function: 155ECF98
EaMain: CanBuild function: 155EB918
EaMain: ChangeHappinessPerTradeRoute function: 155EC678
EaMain: IsAnarchy function: 155ECA38
EaMain: GetFreeExperience function: 155ECFB8
EaMain: GetHappinessPerGarrisonedUnit function: 155EC5B8
EaMain: GetExtraHappinessPerLuxury function: 155EC2D8
EaMain: IsCapitalConnectedToCity function: 155EB3F8
EaMain: GetCityConnectionGold function: 155EBF58
EaMain: CalculateResearchModifier function: 155EBB18
EaMain: SetConscriptCount function: 155ED318
EaMain: UnitsRequiredForGoldenAge function: 155EBC58
EaMain: SetNumFreePolicies function: 155EF198
EaMain: GetUnitClassCountPlusMaking function: 155EE1B8
EaMain: GetPlayerColor function: 155EDD38
EaMain: CanReceiveGoody function: 155EB5F8
EaMain: CanTradeWith function: 155EB478
EaMain: AI_updateFoundValues function: 155EE598
EaMain: GreatGeneralThreshold function: 155EBCB8
EaMain: IsPlayerDoFwithAnyEnemy function: 155EE938
EaMain: GetNumPolicyBranchesFinished function: 155EC9F8
EaMain: GetResourceFromMinors function: 155EE0F8
EaMain: GetUnhappinessFromUnits function: 155EC458
EaMain: GetConversionTimer function: 155ED3F8
EaMain: GetCityConnectionGoldTimes100 function: 155EBF78
EaMain: GetArtStyleType function: 155EB318
EaMain: GetNumFriendsDenouncedBy function: 155EE9B8
EaMain: IsProductionMaxedUnitClass function: 155EB778
EaMain: FindNewCapital function: 155EB518
EaMain: GetScoreFromTechs function: 155ED5F8
EaMain: GetMinorCivScienceFriendshipBonus function: 155ED998
EaMain: GetHurryModifier function: 155ECE18
EaMain: GetBuildingClassCount function: 155EE1D8
EaMain: IsPlayerHasOpenBorders function: 155ED778
EaMain: GetPowerHistory function: 155EE658
EaMain: GetNumPolicyBranchesUnlocked function: 155EC838
EaMain: ChangeScoreFromTechs function: 155ED618
EaMain: GetBuildingClassPrereqBuilding function: 155EB8D8
EaMain: SetAlwaysSeeBarbCampsCount function: 155EC778
EaMain: GetCapitalYieldRateModifier function: 155EDDB8
EaMain: DoAdoptPolicy function: 155EC938
EaMain: GetJONSCulturePerTurnFromMinorCivs function: 155EC058
EaMain: GetNumNotifications function: 155EEEF8
EaMain: IsUnitClassMaxedOut function: 155EE178
EaMain: GetHandicapType function: 155EDC58
EaMain: DoGoody function: 155EB638
EaMain: InitUnit function: 155EB078
EaMain: IsPlayable function: 155EDFF8
EaMain: GetBuildingClassMaking function: 155EE218
EaMain: ChangeBaseBuildingGoldMaintenance function: 155EBA58
EaMain: SetHasPolicy function: 155EC8D8
EaMain: ReceiveGoody function: 155EB618
EaMain: GetUnhappiness function: 155EC338
EaMain: GetImprovementUpgradeRate function: 155EB978
EaMain: GetGreatPeopleThresholdModifier function: 155ECE98
EaMain: IsVotingMember function: 155EDFD8
EaMain: DoUpdateProximityToPlayer function: 155EDEF8
EaMain: GetNumUnitsSuppliedByHandicap function: 155ED118
EaMain: GetNumOutsideUnits function: 155ED1D8
EaMain: GetBuildingGoldMaintenance function: 155EBA18
EaMain: DoTradeScreenOpened function: 155EE7F8
EaMain: GetScoreFromFutureTech function: 155ED638
EaMain: GetCurrentResearch function: 155EBB98
EaMain: GetMaxConscript function: 155ED358
EaMain: GetTotalTimePlayed function: 155ED538
EaMain: ClearResearchQueue function: 155EE3F8
EaMain: GetFreePromotionCount function: 155EF318
EaMain: GetAdvancedStartPoints function: 155ECAB8
EaMain: GetReplayData function: 155EE678
EaMain: GetNameKey function: 155EB198
EaMain: IsBarbarian function: 155EB158
EaMain: KillUnits function: 155EB0F8
EaMain: GetScoreFromWonders function: 155ED5D8
EaMain: GetWonderProductionModifier function: 155ED0B8
EaMain: SetAdvancedStartPoints function: 155ECAD8
EaMain: IsProductionMaxedBuildingClass function: 155EB798
EaMain: GetSeaPlotYield function: 155EDD78
EaMain: IsAnyPlotImproved function: 155EF038
EaMain: GetGoldenAgeProgressMeter function: 155ECC58
EaMain: GetJONSCulturePerTurnForFree function: 155EC018
EaMain: GetImprovementCount function: 155EE118
EaMain: GetNewCityExtraPopulation function: 155EBD98
EaMain: IsMinorCivUnitSpawningDisabled function: 155ED898
EaMain: GetName function: 155EB178
EaMain: Units function: 155EE538
EaMain: GetNumResourceUsed function: 155EE038
EaMain: IsFriends function: 155ED738
EaMain: GetRecommendedFoundCityPlots function: 155EEFF8
EaMain: GetMinorCivFriendshipLevelWithMajor function: 155ED818
EaMain: GetEndTurnBlockingNotificationIndex function: 155EDBD8
EaMain: GetHappinessFromTradeRoutes function: 155EC618
EaMain: CalculateUnitCost function: 155EB9B8
EaMain: GetTotalLand function: 155EBDD8
EaMain: GetMinorCivFriendshipWithMajor function: 155ED7D8
EaMain: GetOccupiedPopulationUnhappinessMod function: 155EC4D8
EaMain: GetCityDefenseModifier function: 155ED198
EaMain: SetLoyalMember function: 155EDF78
EaMain: SetBaseBuildingGoldMaintenance function: 155EBA38
EaMain: CreateGreatGeneral function: 155ECE38
EaMain: SetGoldenAgeProgressMeter function: 155ECC78
EaMain: IsPlayerRecklessExpander function: 155EED78
EaMain: GetHurryGoldCost function: 155EE2B8
EaMain: GetNumPolicies function: 155EC898
EaMain: GetGold function: 155EBE18
EaMain: PopResearch function: 155EE438
EaMain: CalculateUnitSupply function: 155EB9D8
EaMain: GetTraitCityUnhappinessMod function: 155EC518
EaMain: GetUnhappinessFromOccupiedCities function: 155EC418
EaMain: IsCapitalCapturedBy function: 155EEE98
EaMain: CalculateGoldRateTimes100 function: 155EBAB8
EaMain: GetScienceFromResearchAgreementsTimes100 function: 155EDE98
EaMain: GetUnimprovedAvailableLuxuryResource function: 155EF018
EaMain: GetWorstEnemyName function: 155EB2F8
EaMain: AI_foundValue function: 155EE5B8
EaMain: CanMaintain function: 155EB758
EaMain: GetHappinessFromResourceVariety function: 155EC2B8
EaMain: GetMinorCivTrait function: 155ED6B8
EaMain: GetNickName function: 155EB1B8
EaMain: CanContact function: 155EB418
EaMain: SetResearchingTech function: 155EE2F8
EaMain: ChangeNumGoldenAges function: 155ECCF8
EaMain: GetUnhappinessFromPuppetCityPopulation function: 155EC438
EaMain: GetCombatExperience function: 155EE318
EaMain: GetPower function: 155ED478
EaMain: SetCombatExperience function: 155EE358
EaMain: GetLengthResearchQueue function: 155EE458
EaMain: GetCivilizationShortDescriptionKey function: 155EB238
EaMain: GetUnhappinessFromCitySpecialists function: 155EC3F8
EaMain: IsEmpireUnhappy function: 155EC198
EaMain: GetUnhappinessFromCityCount function: 155EC398
EaMain: ChangeGold function: 155EBE98
EaMain: GetScienceTimes100 function: 155EDE18
EaMain: StopTradingWithTeam function: 155EB4D8
EaMain: GetLevelExperienceModifier function: 155ED3B8
EaMain: GetProximityToPlayer function: 155EDED8
EaMain: GetRealPopulation function: 155EBD78
EaMain: IsPolicyBranchFinished function: 155ECA18
EaMain: SetAnarchyNumTurns function: 155ECA78
EaMain: GetScienceFromBudgetDeficitTimes100 function: 155EDEB8
EaMain: GetNumWarsFought function: 155EEA98
EaMain: GetTraitGreatScientistRateModifier function: 155EF298
EaMain: GetPersonalityType function: 155EDCB8
EaMain: IsPolicyBranchUnlocked function: 155EC7F8
EaMain: DoForceDoF function: 155EEEB8
EaMain: AcquireCity function: 155EB018
EaMain: ChangeNumResourceTotal function: 155EE078
EaMain: SetPersonalityType function: 155EDCD8
EaMain: CanConstruct function: 155EB6F8
EaMain: GetCurrentCapitalFoodBonus function: 155EDA18
EaMain: GetAttackBonusTurns function: 155ECC18
EaMain: ChangeJONSCulture function: 155EC0F8
EaMain: GetTeam function: 155EDD18
EaMain: GetTechScore function: 155ED518
EaMain: ChangeGoldPerUnitTimes100 function: 155ED218
EaMain: IsFriendDeclaredWarOnUs function: 155EEA18
EaMain: IsHasLostCapital function: 155ED438
EaMain: DoTradeScreenClosed function: 155EE818
EaMain: GetAdvancedStartUnitCost function: 155ECB18
EaMain: GetNumMaintenanceFreeUnits function: 155EB9F8
EaMain: GetMinorCivHappinessFriendshipBonus function: 155ED9F8
EaMain: IsPlayerIgnoredMilitaryPromise function: 155EEBF8
EaMain: IsFreePromotion function: 155EF338
EaMain: GetStartingPlot function: 155EBCF8
EaMain: ChangeExtraHappinessPerCity function: 155EC278
EaMain: GetGoldPerTurnFromDiplomacy function: 155EBF18
EaMain: GetPolicyBuildingClassYieldModifier function: 155EF3F8
EaMain: GetNaturalWonderYieldModifier function: 155EF3D8
EaMain: GetPrevCity function: 155EF2F8
EaMain: AddTemporaryDominanceZone function: 155EF3B8
EaMain: GetUnhappinessForecast function: 155EC358
EaMain: DisbandUnit function: 155EB098
EaMain: GetNumUnits function: 155EE558
EaMain: GetExtraBuildingHappinessFromPolicies function: 155EF2B8
EaMain: GetBranchPicked2 function: 155EC9B8
EaMain: GetTraitCityStateCombatModifier function: 155EF258
EaMain: SetNumFreeGreatPeople function: 155EF1F8
EaMain: ChangeAlwaysSeeBarbCampsCount function: 155EC798
EaMain: GetNumFreeGreatPeople function: 155EF1D8
EaMain: SetStartingPlot function: 155EBD18
EaMain: GetHappyPerMilitaryUnit function: 155ED298
EaMain: ChangeNumFreePolicies function: 155EF1B8
EaMain: IsPlayerBrokenMilitaryPromise function: 155EEBD8
EaMain: IsPolicyBranchBlocked function: 155EC7D8
EaMain: GetNumFreePolicies function: 155EF178
EaMain: IsFullMember function: 155EDFB8
EaMain: GetProductionModifier function: 155ECF38
EaMain: GetAnyUnitHasOrderToGoody function: 155EF0F8
EaMain: IsDenouncedPlayer function: 155EED38
EaMain: GetPlotHasOrder function: 155EF0D8
EaMain: GetFirstReadyUnit function: 155EB858
EaMain: IsAnyGoodyPlotAccessible function: 155EF0B8
EaMain: GetClosestGoodyPlot function: 155EF098
EaMain: GetNumCityNames function: 155EE498
EaMain: GetPlayerVisiblePlot function: 155EF058
EaMain: GetOtherPlayerNumProtectedMinorsKilled function: 155EECF8
EaMain: IsDoF function: 155EE8F8
EaMain: IsDontSettleMessageTooSoon function: 155EE8B8
EaMain: GetWondersScore function: 155ED4F8
EaMain: CanFound function: 155EB678
EaMain: ChangeAnarchyNumTurns function: 155ECA98
EaMain: ChangeBarbarianCombatBonus function: 155EC6F8
EaMain: GetAdvancedStartCityCost function: 155ECB38
EaMain: CalculateGrossGoldTimes100 function: 155EBAD8
EaMain: GetEconomyHistory function: 155EE5F8
EaMain: GetGoldFromCitiesTimes100 function: 155EBEF8
EaMain: GetHurryCount function: 155EE258
EaMain: GetNotificationDismissed function: 155EEF98
EaMain: GetCurrentOtherCityFoodBonus function: 155EDA38
EaMain: GetNotificationTurn function: 155EEF78
EaMain: GetNumResourceAvailable function: 155EE098
EaMain: GetPersonality function: 155ED6D8
EaMain: GetUnhappinessMod function: 155EC498
EaMain: GetMajorCivApproach function: 155EE838
EaMain: GetNotificationIndex function: 155EEF58
EaMain: ChangeHappinessPerGarrisonedUnit function: 155EC5F8
EaMain: GetScienceFromHappinessTimes100 function: 155EDE78
EaMain: RemoveBuildingClass function: 155EB8F8
EaMain: DoForceDenounce function: 155EEED8
EaMain: GetID function: 155EDC38
EaMain: ChangeNumUnitGoldenAges function: 155ECDB8
EaMain: IsHasPaidTributeTo function: 155EEE58
EaMain: IsBuildingClassMaxedOut function: 155EE1F8
EaMain: IsDoFMessageTooSoon function: 155EE8D8
EaMain: IsLiberatedCity function: 155EEE18
EaMain: IsLiberatedCapital function: 155EEDF8
EaMain: GetGoldPerMilitaryUnit function: 155ED238
EaMain: GetRecentAssistValue function: 155EEDD8
EaMain: ChangeJONSCulturePerTurnFromMinorCivs function: 155EC078
EaMain: IsEmpireSuperUnhappy function: 155EC1D8
EaMain: GetMinorCivCultureFriendshipBonus function: 155ED9B8
EaMain: GetCommonFoeValue function: 155EEDB8
EaMain: IsDenouncingPlayer function: 155EED58
EaMain: GetAdvancedStartImprovementCost function: 155ECB98
EaMain: GetImprovementGoldMaintenance function: 155EBA78
EaMain: GetNumUnitGoldenAges function: 155ECD98
EaMain: ChangeNewCityExtraPopulation function: 155EBDB8
EaMain: GetStateReligionKey function: 155EB2D8
EaMain: ChangeHappinessFromBuildings function: 155EC238
EaMain: GetNextPolicyCost function: 155EC8F8
EaMain: IsPlayerBrokenCoopWarPromise function: 155EECD8
EaMain: IsPlayerIgnoredCityStatePromise function: 155EECB8
EaMain: GetAdvancedStartBuildingCost function: 155ECB78
EaMain: GetTraitGreatGeneralExtraBonus function: 155EF278
EaMain: GetMilitaryProductionModifier function: 155ED038
EaMain: GetResearchProgress function: 155EBC38
EaMain: IsPlayerIgnoredBorderPromise function: 155EEC78
EaMain: GetWorkerSpeedModifier function: 155ECFF8
EaMain: GetNumMinorCivsMet function: 155EDAD8
EaMain: GetNumGoldenAges function: 155ECCB8
EaMain: GetFriendshipNeededForNextLevel function: 155ED958
EaMain: IsPlayerIgnoredExpansionPromise function: 155EEC38
EaMain: IsPlayerBrokenExpansionPromise function: 155EEC18
EaMain: SpecialistYield function: 155EBCD8
EaMain: GetExpInBorderModifier function: 155ED398
EaMain: GetGreatGeneralsCreated function: 155ECE78
EaMain: CalculateGoldRate function: 155EBA98
EaMain: GetHappiness function: 155EC138
EaMain: GetGoldenAgeTurns function: 155ECD18
EaMain: GetNumWorldWonders function: 155EB378
EaMain: Found function: 155EB698
EaMain: GetNumCiviliansReturnedToMe function: 155EEB98
EaMain: GetNumTimesCultureBombed function: 155EEBB8
EaMain: IsResearchingTech function: 155EE2D8
EaMain: GetFriendshipFromGoldGift function: 155ED938
EaMain: IsProtectingMinor function: 155EE898
EaMain: IsPlayerNoSettleRequestEverAsked function: 155EEB58
EaMain: GetWonderDisputeLevel function: 155EEAF8
EaMain: IsAlive function: 155EDB18
EaMain: GetProjectProductionNeeded function: 155EB818
EaMain: GetWarmongerThreat function: 155EEB38
EaMain: GetMinorCivDisputeLevel function: 155EEB18
EaMain: GetUnhappinessFromCapturedCityCount function: 155EC3B8
EaMain: GetHappinessFromNaturalWonders function: 155EC318
EaMain: ChangeGarrisonedCityRangeStrikeModifier function: 155EC738
EaMain: GetVictoryDisputeLevel function: 155EEAD8
EaMain: GetQueuePosition function: 155EE3D8
EaMain: GetUnitClassMaking function: 155EE198
EaMain: GetCivilizationDescriptionKey function: 155EB1F8
EaMain: IsEverAlive function: 155EDB58
EaMain: IsAllies function: 155ED758
EaMain: GetStrikeTurns function: 155ECDD8
EaMain: GetMinorWarQuestWithMajorRemainingCount function: 155ED8F8
EaMain: IsPolicyBlocked function: 155EC7B8
EaMain: GetWeDenouncedFriendCount function: 155EE9F8
EaMain: CanPrepare function: 155EB738
EaMain: GetNumCities function: 155EE4F8
EaMain: IsMinorCiv function: 155ED678
EaMain: GetLandScore function: 155ED4D8
EaMain: GetGreatGeneralsThresholdModifier function: 155ECEB8
EaMain: GetLifetimeGrossGold function: 155EBED8
EaMain: SetGold function: 155EBE58
EaMain: ChangeHappinessFromGarrisonedUnits function: 155EC598
EaMain: IsPlayerDoFwithAnyFriend function: 155EE918
EaMain: GetNumPlotsBought function: 155EE738
EaMain: CanStopTradingWithTeam function: 155EB4B8
EaMain: GetScienceFromOtherPlayersTimes100 function: 155EDE58
EaMain: IsResearch function: 155EBB38
EaMain: SetPlayable function: 155EE018
EaMain: GetGreatPeopleCreated function: 155ECE58
EaMain: ChangeNumWorldWonders function: 155EB398
EaMain: GetGoldenAgeProgressThreshold function: 155ECC38
EaMain: DoMinorLiberationByMajor function: 155EDAF8
EaMain: GetActiveQuestForPlayer function: 155ED838
EaMain: IsMinorCivRouteEstablishedWithMajor function: 155ED8B8
EaMain: GetDomesticGreatGeneralRateModifier function: 155ECF18
EaMain: GetTraitPopUnhappinessMod function: 155EC538
EaMain: DoBeginDiploWithHuman function: 155EE7D8
EaMain: GetBuyPlotCost function: 155EE798
EaMain: KillCities function: 155EB038
EaMain: CalculateGrossGold function: 155EBEB8
EaMain: GetDominantPolicyBranchForTitle function: 155EC978
EaMain: SetNumPlotsBought function: 155EE758
EaMain: GetGoldPerUnit function: 155ED1F8
EaMain: GetScriptData function: 155EE6B8
EaMain: GetIndustryHistory function: 155EE618
EaMain: SetReplayDataValue function: 155EE698
EaMain: GetUnhappinessFromCityPopulation function: 155EC3D8
EaMain: GetCivilizationShortDescription function: 155EB218
EaMain: GetSettlerProductionModifier function: 155ED078
EaMain: ChangeGoldenAgeTurns function: 155ECD78
EaMain: GetScienceFromCitiesTimes100 function: 155EDE38
EaMain: GetAnarchyNumTurns function: 155ECA58
EaMain: ChangeFreePromotionCount function: 155EF358
EaMain: CountNumBuildings function: 155EB358
EaMain: ChangeConscriptCount function: 155ED338
EaMain: Cities function: 155EE4D8
EaMain: GetCityName function: 155EE4B8
EaMain: GetNumResourceTotal function: 155EE058
EaMain: IsEmpireVeryUnhappy function: 155EC1B8
EaMain: GetScoreFromLand function: 155ED5B8
EaMain: PushResearch function: 155EE418
EaMain: CanEverResearch function: 155EBB58
EaMain: GetUnitByID function: 155EE578
EaMain: __instances table: 1549A768
EaMain: GetUnhappinessFromCityForUI function: 155EC378
EaMain: GetJONSCultureEverGenerated function: 155EC118
EaMain: CalculateInflatedCosts function: 155EBAF8
EaMain: SetScriptData function: 155EE6D8
EaMain: FindPathLength function: 155EE3B8
EaMain: IsHuman function: 155EB118
EaMain: GetSpecialistExtraYield function: 155EE398
EaMain: ChangeGoldenAgeProgressMeter function: 155ECC98
EaMain: GetHappinessPerTradeRoute function: 155EC638
EaMain: CanCreate function: 155EB718
EaMain: GetStateReligionName function: 155EB2B8
EaMain: IsHasAccessToHurry function: 155EE278
EaMain: GetResearchTurnsLeft function: 155EBBF8
EaMain: GetBuildingClassCountPlusMaking function: 155EE238
EaMain: GetExcessHappiness function: 155EC178
EaMain: GetUnitClassCount function: 155EE158
EaMain: CanAdoptPolicy function: 155EC918
EaMain: IsBuildingFree function: 155EE138
EaMain: GetResourceImport function: 155EE0D8
EaMain: GetTotalPopulation function: 155EBD38
EaMain: SetBarbarianCombatBonus function: 155EC6D8
EaMain: GetVotes function: 155EDF98
EaMain: CanUnlockPolicyBranch function: 155EC958
EaMain: IsLoyalMember function: 155EDF58
EaMain: IsCurrentResearchRepeat function: 155EBBB8
EaMain: SetOption function: 155EDF38
EaMain: GetScience function: 155EDDF8
EaMain: IsOption function: 155EDF18
EaMain: GetRouteGoldTimes100 function: 155EBF38
EaMain: GetCurrentScienceFriendshipBonusTimes100 function: 155EDA78
EaMain: IsMinorWarQuestWithMajorActive function: 155ED8D8
EaMain: IsGoldenAge function: 155ECD58
EaMain: IsBuildBlockedByFeature function: 155EB938
EaMain: IsPlayerDenouncedEnemy function: 155EE978
EaMain: GetAlly function: 155ED6F8
EaMain: HasReceivedNetTurnComplete function: 155EDBF8
EaMain: GetCapitalCity function: 155ED418
EaMain: GetHappinessFromBuildings function: 155EC218
EaMain: GetNumPlots function: 155EE718
EaMain: GetEndTurnBlockingType function: 155EDBB8
EaMain: IsExtendedGame function: 155EDB78
EaMain: GetHappinessFromMinor function: 155EC698
EaMain: IsPeaceBlocked function: 155EDA98
EaMain: GetCurrentCultureBonus function: 155ED9D8
EaMain: GetExtraYieldThreshold function: 155EDDD8
EaMain: SetNumGoldenAges function: 155ECCD8
EaMain: UnitsGoldenAgeCapable function: 155EBC78
EaMain: SetHappiness function: 155EC158
EaMain: GetConscriptCount function: 155ED2F8
EaMain: GetGoldenAgeModifier function: 155ECDF8
EaMain: GetFirstReadyUnitPlot function: 155EB878
EaMain: GetBranchPicked3 function: 155EC9D8
EaMain: ChangeUnhappinessFromUnits function: 155EC478
EaMain: GetGoldenAgeLength function: 155ECD38
EaMain: GetScoreFromCities function: 155ED578
EaMain: GetHighestUnitLevel function: 155ED2D8
EaMain: CalculateTotalYield function: 155EB998
EaMain: HasPolicy function: 155EC8B8
EaMain: GetBranchPicked1 function: 155EC998
EaMain: IsNoResearchAvailable function: 155EBBD8


You can add to .__index easily enough:

> a = getmetatable(Players[0]).__index
> print(a)
EaMain: table: 1549A5D8
> a.Pazprint = function() print("Paz is Great!") end
> Players[0].Pazprint
function: 14816388
> Players[0].Pazprint()
EaMain: Paz is Great!
> Players[0]:Pazprint()
EaMain: Paz is Great!
> Players[1]:Pazprint()
EaMain: Paz is Great!
> Players[22]:Pazprint()
EaMain: Paz is Great!

You can see above that all player objects use the same metatable.
 
How can we get the plot metatable before the map is created, or the city metatable before cities exist? The metatables exist... we just need to get a pointer to them. :think:
 
How can we get the plot metatable before the map is created? Map.GetPlotByIndex(0) returns nil when map scripts have not yet run. This is a similar problem to getting the city metatable when no cities exist yet...

Unless it's been changed recently, you can't - as the 8 "types" all suffer from lazy initialisation (so until some code has actually used "one" the control structures don't exist, and if you don't have any cities you can't use "one")

See http://forums.2kgames.com/showthrea...lection-for-Lua-objects&p=1408725#post1408725
 
Thank you for that information. I'm glad we can create some things in the class:method() format... the player, team, and static classes. That's better than nothing! :)

Hopefully the player class is enough to get changes from my yield library to show up in other mods. InfoAddict mostly shows player-level data... hmm... :think:
 
Thank you for that information... so we can only add methods to the player, team, and static classes. Well, at least we can do some things as class:method instead of standalone functions. I'd converted my standalone player and static class methods, then noticed the issue when I got to the plot class. :)

No, you can add to the Plot and City objects but only after any plot object or any city object has been used for the first time.

You'll just need to get creative about when you try to add your methods to the metadata table - you won't be able to do it in file scope code. You'll need to hook an event that fires when an object is used (or after you know that objects are available), access any object of that type (to force the lazy initialisation to run) and then add the methods to the metadata. For good measure the OnEventCallback() can then "unhook" itself (Events.Whatever.remove(OnEventCallback) as this now works correctly)
 
I see what you mean... hmm. So for example, if I want a plot:GetID() function, it can't be in a file included in map scripts? This gives me two options:

  • Find the right spot to insert each plot class method. This might take hours, but would make yieldlibrary compatible with any mods.
  • Add infoaddict to my project. This would take minutes, but would only allow compatibility with infoaddict.
I think I'll take a break and come back to it later with a fresh mind. Hours of regular-expression usage leaves me frazzled! :crazyeye:
 
You may be able to use Events.SequenceGameInitComplete (see LoadScreen.lua), as at that point GameInfo and Game.GetActivePlayer() are available, so I'm guessing the Map, Area, Plot, Team and Player objects are available. You should also have Units somewhere (or if not, you could add one to a CS/AI player and then destroy it).

Cities you should be able to get via OnCityCreated( hexPos, playerID, cityID, cultureType, eraType, continent, populationSize, size, fowState ) (see CityBannerManager)
 
Thank you all, this will be very usefull :)
 
Back
Top Bottom