Player Models

Šiame forume galima rasti pamokas, patarimus, skriptus ir kitą naudingą informciją.
User avatar
hleV
AMX Mod X ekspertai
Posts: 875
Joined: 2011 Apr 02 11:23
Skype: hlev.lt
Location: Šiauliai

Player Models

Post by hleV »

Parašiau paprastą include'ą žaidėjų modelių keitimui. Turėtų būt patikimesnis už cs_set_user_model() ir neleidžia žaidėjams pasikeist modelio su "model" komanda.
Čia nėra nieko ypatingo, tik tiek kad nereikia naudot papildomo plugino su dynamic natives, kad nustatyt žaidėjui modelį (kaip kad ConnorMcLeod'o Player Models API).

Support'o custom hitbox'am (model index) nėra (prireikus, siūlau rinktis Player Models API).
Reikalauja Fakemeta ir CStrike modulių.

Funkcijos su aprašymais (include faile aprašymai angliški):

Code: Select all

/* * Precache'ina zaidejo modeli. * Taip pat bando precache'inti "T" faila, jei jis egzistuoja. * * model[]    modelio pavadinimas (pvz. "vip"). * late       nustatyti i true, jei modelis precache'inamas kitur, nei plugin_precache(). * * @return    modelio indeksas. */stock PrecachePlayerModel(const model[], bool:late = false); /* * Startuoja zaideju modelio naudojima. * * use         true - jei norima naudoti zaidejo modelius, false - nustoja naudoti zaidejo modelius. * * @PASTABA    Privaloma issaukti pries panaudojant SetPlayerModel(). Rekomenduotina plugin_init(). */stock UsePlayerModels(bool:use = true); /* * Nustato zaidejo modeli. * * client     zaidejo indeksas. * model[]    modelio pavadinimas (pvz. "vip"). Palikus tuscia, zaidejo modelis reset'inasi. */stock SetPlayerModel(client, const model[] = "");
SVARBU! Custom modeliai priskiriami pagal žaidėjų ID (indeksą), todėl jei modelį nustatinėjate pavieniams žaidėjams (pvz. VIP'ams ar admin'ams), žaidėjui atsijungiant (client_disconnect()) turėtumėt iššaukti SetPlayerModel(), kad kitas prisijungęs žaidėjęs ir gavęs tą patį ID negautų to pačio modelio:

Code: Select all

public client_disconnect(client){    SetPlayerModel(client);}
Pastaba: Panaudojus UsePlayerModels(false), visų žaidėjų modeliai neatsistatys į default'inius (ar bent jau iš karto). Tam reikėtų visiems žaidėjams (ar tiems, kuriems nustatėt custom modelius) iššaukti SetPlayerModel(client).
Pastaba: Nebūtina naudot PrecachePlayerModel(), galima naudot ir precache_model() ar engfunc() alternatyvą, tiesiog PrecachePlayerModel() dar patikrina, ar precache'inamas modelis dar turi papildomą failą <modelis>T.mdl ir jei taip - jį precache'ina.

Pavyzdinis pluginas, kuris nustatys kiekvienam teroristui "gign" (vienas iš CT skin'ų) ir kiekvienam CT "leet" (vienas iš teroristų skin'ų) modelius. Pastebėkit, jog šiuo atveju žaidėjui atsijungus nereikia reset'inti modelio, nes naujiems žaidėjams betkuriuo atveju bus priskirtas modelis vos tik jie pasirinks komandą.

Code: Select all

#include <amxmodx>#include <pmodel> public plugin_init(){    register_event("TeamInfo", "OnTeamInfo", "a"); // Uzregistruojam ivyki, kai zaidėjo komanda pasikeicia.        UsePlayerModels(); // Sita butina panaudot, kitaip SetPlayerModel() neveiks.} public OnTeamInfo(){    new client = read_data(1); // Gaunam zaidėjo ID iš ivykio.        // Imanoma, kad jis atsijunge, tad reikia patikrinti.    if (!is_user_connected(client))        return;        // Gaunam nauja zaidejo komanda is ivykio.    new team[2];    read_data(2, team, charsmax(team));        switch (team[0]) // Tikrinam pirma komandos raide.    {        case 'T': SetPlayerModel(client, "gign"); // Jei T, nustatom CT skin'a.        case 'C': SetPlayerModel(client, "leet"); // Jei CT, nustatom T skin'a.    }}
Instaliacija: Įkelkit pmodel.inc į include aplanką, o plugin'e prie include'ų prirašykit #include <pmodel>.
Attachments
pmodel.inc
(2.14 KiB) Downloaded 1058 times
Last edited by hleV on 2016 Jan 06 03:43, edited 2 times in total.
Image ← RIP best userbar
DISKUSIJA: KIETAS PLUGIN'O UŽSAKOVAS
Privačios pagalbos neteikiu!

Tetusis

Re: Player Models

Post by Tetusis »

nice one, gal ir komandu keitimo include'a parasytum kuris necrashintu apkeiciant 10x10+ (16x16 support)?

User avatar
hleV
AMX Mod X ekspertai
Posts: 875
Joined: 2011 Apr 02 11:23
Skype: hlev.lt
Location: Šiauliai

Re: Player Models

Post by hleV »

Tetusis wrote:nice one, gal ir komandu keitimo include'a parasytum kuris necrashintu apkeiciant 10x10+ (16x16 support)?
Nu pabandžiau savo ankstesnį kodą paverst į include'ą, bet netestavau. Ir šiaip geriau modulį naudot.

Code: Select all

/* * Swaps team in groups, with delay. * * group    how many players to swap at once. * delay    time between swaps (min 0.1). */stock SwapTeams(group = 5, Float:delay = 0.1);
Attachments
teamswap.inc
(1.11 KiB) Downloaded 1107 times
Image ← RIP best userbar
DISKUSIJA: KIETAS PLUGIN'O UŽSAKOVAS
Privačios pagalbos neteikiu!

Tetusis

Re: Player Models

Post by Tetusis »

hleV wrote:
Tetusis wrote:nice one, gal ir komandu keitimo include'a parasytum kuris necrashintu apkeiciant 10x10+ (16x16 support)?
Nu pabandžiau savo ankstesnį kodą paverst į include'ą, bet netestavau. Ir šiaip geriau modulį naudot.

Code: Select all

/* * Swaps team in groups, with delay. * * group    how many players to swap at once. * delay    time between swaps (min 0.1). */stock SwapTeams(group = 5, Float:delay = 0.1);

dekui, isbandysiu ateityje (:

User avatar
xFrostas
Flooderis arba specialistas
Posts: 660
Joined: 2010 Sep 02 15:47
Skype: frost.lt

Re: Player Models

Post by xFrostas »

Norėjau paklausti ar šitaip keičiant, nebus tų visokių svc bad klaidų?

User avatar
Trickas
Flooderis arba specialistas
Posts: 889
Joined: 2012 Jan 25 18:20
Skype: ner.e5

Re: Player Models

Post by Trickas »

O tai gal nesunku būtų kam su šitu include padaryt admin skin pluginą, kad kitoks skinas būtų, nesinori pačiam klaidų pridirbt.
- Skype: ner.e5
- Steam: Tr1ckas

User avatar
xFrostas
Flooderis arba specialistas
Posts: 660
Joined: 2010 Sep 02 15:47
Skype: frost.lt

Re: Player Models

Post by xFrostas »

Pagal mane tai taip

Code: Select all

#include <amxmodx>#include <hamsandwich>#include <pmodel> new const Admin_Model[] = "models/player/Admin/Admin.mdl" public plugin_precache(){    PrecachePlayerModel(Admin_Model)} public plugin_init(){    RegisterHam(Ham_Spawn, "player", "Fwd_Spawn", 1)     UsePlayerModels()} public client_disconnect(id){    SetPlayerModel(id)} public Fwd_Spawn(id){    if (!is_user_alive(id))        return     if (get_user_flags(id) & ADMIN_LEVEL_H) // Pasikeisi flag jei reiks    {        SetPlayerModel(id, Admin_Model)    }}
Last edited by xFrostas on 2015 Mar 29 11:38, edited 2 times in total.

Spag
Gana aktyvus vartotojas
Posts: 269
Joined: 2012 Dec 31 15:39

Re: Player Models

Post by Spag »

Hm
Last edited by Spag on 2014 Jul 13 11:32, edited 1 time in total.

User avatar
laimiukas3
Moderatorius
Posts: 4569
Joined: 2012 Aug 03 01:12
Skype: laimiukas3
Location: Vilnius
Contact:

Re: Player Models

Post by laimiukas3 »

Trickas wrote:O tai gal nesunku būtų kam su šitu include padaryt admin skin pluginą, kad kitoks skinas būtų, nesinori pačiam klaidų pridirbt.
tai ar galetu kas :)
Image
Image
Image

User avatar
hleV
AMX Mod X ekspertai
Posts: 875
Joined: 2011 Apr 02 11:23
Skype: hlev.lt
Location: Šiauliai

Re: Player Models

Post by hleV »

xFrosto kodas turėtų tikt tam, tik Admin_Model reikšmė turėtų būt ne pilnas kelias iki modelio, o tik jo pavadinimas (jo atveju tik "Admin").
Image ← RIP best userbar
DISKUSIJA: KIETAS PLUGIN'O UŽSAKOVAS
Privačios pagalbos neteikiu!

Post Reply

Who is online

Users browsing this forum: No registered users and 5 guests