PointShop jest znaną modyfikacją serwerów Garry's Mod pozwalającą graczom na personalizacji postaci, którymi grają, poprzez zakup modeli lub dodatków do nich za pomocą punktów zdobywanych podczas gry. Ten poradnik zilustruje jak dodać własne modeli do wyżej wymienionej modyfikacji.
Postaraliśmy się w jak najprostszy sposób opisać jak to zrobić przy uzyciu kilku kroków
W tym celu subskrypujemy interesujący nas model postaci do naszej gry, gdy uruchomimy grę i Steam pobierze pliki przechodzimy do folderu naszej gry, następnie do /garrysmod/addons/.
Przeciągamy interesujący nas plik .gma na program gmodconv.exe, dzięki temu uzyskujemy folder z rozpakowanym modelem. W między czasie możemy przestać subskrybować dany model, nie będzie on nam już potrzebny.
W rozpakowanym modelu przechodzimy do folderu \lua\autorun\. I otwieramy plik z nazwą modelu. Reszta plików nas nie interesuje. Plik edytujemy na wzór przykładu poniżej pozostawiając oryginalne linijki.
if(SERVER) then
player_manager.AddValidModel( "NAZWA_MODELU", "ŚCIEŻKA_DO_MODELU" )
AddCSLuaFile("NAZWA_AKTUALNIE_EDYTOWANEGO_PLIKU.lua")
end
list.Set( "PlayerOptionsModel", "NAZWA_MODELU", "ŚCIEŻKA_DO_MODELU" )
Uruchamiamy program F0x Resources Generator, wybieramy Select Addon, a nastepnie folder naszego rozpakowanego modelu.
Po wygenerowaniu listy wybieramy Generate LUA > Clipboard > AddFile. Tekst został nam skopiowany do przybornika i możemy wkleić go do naszego wcześniej edytowanego pliku .lua pod aktualnym kodem
Niestety lista wygenerowanych plików nie jest kompletna i musimy ją uzupełnić. W tym celu w rozpakowanym modelu przechodzimy do folderu \models\NAZWA_MODELU i dopisujemy wszystkie brakujące pliki do listy, plik po tym możemy zapisać:
Zawartość folderu z rozpakowanym modelem ( katalogi: lua, materials, models ) wgrywamy do folderu /garrysmod/ na FTP naszego serwera, dzięki temu pliki będą pobierane poprzez FastDL. Po tym możemy usunać rozpakowany folder z naszej kopii gry.
Gdy mamy już dodany model na serwer, możemy zabrać się za dodawanie go do PointShopa. W tym celu tworzymy plik NAZWA_MODELU.lua i uzupełniamy go jak na przykładzie ( Uzupełniamy tylko 3 pierwsze linijki, resztę kopiujemy jak jest ):
ITEM.Name = 'NAZWA_MODELU'
ITEM.Price = CENA_MODELU
ITEM.Model = 'ŚCIEŻKA_DO_MODELU_TAKA_JAK_POPRZEDNIO'
function ITEM:OnEquip(ply, modifications)
if not ply._OldModel then
ply._OldModel = ply:GetModel()
end
timer.Simple(1, function() ply:SetModel(self.Model) end)
end
function ITEM:OnHolster(ply)
if ply._OldModel then
ply:SetModel(ply._OldModel)
end
end
function ITEM:PlayerSetModel(ply)
ply:SetModel(self.Model)
end
Świeżo stworzony plik wgrywamy do naszej instalacji PointShopa na serwerze. Do folderu /garrysmod/addons/pointshop-master/lua/pointshop/items/playermodels/:
Aby model był dostępny oczywiście trzeba zrestartować serwer. Dodatkowo aby gracze widzieli modele na serwerze muszą na niego dołączyć dwa razy, za pierwszym razem gracz widzi "ERROR" zamiast modelu, nastomiast przy następnym połączeniu powinno być ok. Dodatkowo nie wszystkie modele nadają się do dodania do PointShopa.