Ломаю голову

Есть функция допустим

PLAYER = FindMetaTable 'Player'
function PLAYER:pupsik()
return 'что-то вернули'
end
--не важно как вызывается (пример)
for k,v in pairs(player.all()) do 
v:pupsik()
end
--мне нужно что бы оно возвращало мне того кто активировал 
--без хука тут явно не обойтись.

Более подробно:
Мне нужно чтобы когда игрок как либо(не важно) активировал pl:pupsik() мне вернуло не кого он активировал (pl) а кто активировал
наглядный пример
Игрок Player [2][Player2] активировал pupsik

Player [1][Player]:pupsik()
и ему вернуло Player [2][Player2] хоть он и указал Player [1][Player]

неужели в gmod нет хука на активации function?

Хука вызова функции нет, но есть возможность ее переписать.

local PLAYER = FindMetaTable 'Player'

local oldpupsik = PLAYER.pupsik
function PLAYER:pupsik()
    print(tostring(self)..' юзанул пупсик')
    oldpupsik(self) -- вызов ply:pupsik() аналогичен ply.pupsik(ply)
end

тогда он мне вернёт не Player2 а Player
Хотя я возможно придумал как мне сделать.

Я не совсем понял, что значит “игрок активировал :pupsik()”. Ты имеешь в виду то, что игрок будет каким-то образом запускать на сервере :pupsik() на другом игроке?

именно

В таком случае тебе придется использовать net-сообщения или консольные команды, в которых у тебя есть переменная, отвечающая за того, кто вызвал команду и тебе не нужно что-то менять в :pupsik(), а просто использовать ее. Или передавать в качестве аргумента к :pupsik() игрока, который вызвал его

1 лайк