Es gibt diverse Möglichkeiten:
Um das zu erreichen, was du möchtest (Limits ändern) empfehle ich dir Player:GetCount zu überschreiben. Das verwende ich selber. Dort kann man dann aber nur "Limited" und "Unlimited" ändern indem man entweder die richtige Anzahl zurückgibt oder "0" (unlimited).
Für dein vorhaben: Du brauchst eine Funktion, die global ist und LimitReachedProcess aufruft. Von dieser Funktion holst du dir die function enviroment (zeig ich gleich wies geht).
Dann holst du dir aus diesem die gewünschte funktion (LimitReachedProcess).
Jetzt kommt der spekulative Teil: Du definierst eine neue variable "LimitReachedProcess" und setzt einen pointer auf die zuvor aus den fEnv gewonnene Daten gefundene Funktion LimitReachedProcess und machst sie so global.
Wenn mich nicht alles täuscht, kannst du nun versuchen, die funktion mit deiner eigenen zu überschreiben.
Code:
-- That's what you need to overwrite, but it's local - DUH!
local function ALocalFunction()
-- NOT MY CODE
end
-- This is, what you have and can access
function AGlobalFunction()
-- SOME CODE
local AResult = ALocalFunction; -- SOMEWHERE IS "ALocalFunction" USED
-- SOME OTHER CODE
end
-- Somewhere else in another lua file now...
-- Your getting the fenv of "AGlobalFunction"
local the_pointer_to_ALocalFunction;
local gi = debug.getinfo(AGlobalFunction)
for i=1,gi.nups do
local k,v = debug.getupvalue(AGlobalFunction,i)
if(k == "ALocalFunction") then
the_pointer_to_ALocalFunction = v;
end
end
-- We found the "LocalFunction", now make it global
ALocalFunction = the_pointer_to_ALocalFunction;
-- If everything works fine, the pointer of the ALocalFunction is now allocated to be global. Let's hope, overwriting the global will result in overwriting the local too...
function ALocalFunction()
-- MY CODE
end
Das Verfahren hat zwei Schwachpunkte: 1. bin ich mir nicht sicher, ob der alleinige Aufruf einer Funktion diese automatisch in die function enviroment mit aufnimmt (eher nicht).
2. Kann es (höchstwahrscheinlich) so sein, das local/global nicht auf pointer beschränkt sind. Soll heißen, du kannst eine lokale funktion auch global definieren (selber Pointer, nicht nur selber Name!), und trotzdem wird beim überschreiben der globalen die lokale erhalten bleiben.