Page 2 of 4

Re: error native "cs_get_user_team"

Posted: 2012 Apr 26 19:05
by hleV
newb wrote:Nes specatorius su immunity gaus. Jau nekalbant apie tai, kad visi gyvi gaus.
Man tai tvarkoj jo tikrinimas atrodo.

Tik abejoju ar su entity_set_model() galima keist žaidėjo modelį.

Re: error native "cs_get_user_team"

Posted: 2012 Apr 26 19:13
by Fly3r
Žaidėjo modelį galima nustatyti tik su cs_set_user_model() arba nustatant žaidėjo info model su set_user_info() pvz. Bet iš esmės tai yra tas pats.
Dar galima sukurtį žaidėjo modelio entity, bet čia gali būti klaidų ir nevisai gerai.

Re: error native "cs_get_user_team"

Posted: 2012 Apr 26 19:16
by aurimasko
lygtais tikrinimas visgi tvarkoje, pratestinau atrodo gerai veikia.. o dėl modelio keitimo tai nekeičia su entity..
tada geriausia manau naudoti: http://forums.alliedmods.net/showthread.php?t=161255

Re: error native "cs_get_user_team"

Posted: 2012 Apr 26 19:19
by Pukuotukas951
aurimasko wrote:lygtais tikrinimas visgi tvarkoje, pratestinau atrodo gerai veikia.. o dėl modelio keitimo tai nekeičia su entity..
tada geriausia manau naudoti: http://forums.alliedmods.net/showthread.php?t=161255
Taip, tačiau čia keičia tiktais abiem komandom, ištrynus bent vienos komandos modelį - neveikia visas pluginas. O šis variantas kur aš rodžiau, keičia tik CT komandos skin ir kas su immunity duoda spec skiną.

--------Kita---------
Perskaičiau visų post'us/patarimus ir sutvarkiau kodą, bet vistiek noriu kad dar peržvelgtute ar viskas gerai, štai:

Code: Select all

#include <amxmodx>#include <cstrike>#include <hamsandwich> public plugin_init(){    register_plugin("CT skin keitimas", "1.0", "AmxModX");     RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1);} public plugin_precache(){    precache_model("models/player/skinas1/skinas1.mdl");    precache_model("models/player/skinas2/skinas2.mdl");    precache_model("models/player/skinas2/skinas2T.mdl");} public fwHamPlayerSpawnPost(id){    if ( !is_user_alive( id ) )        return HAM_IGNORED;     new CsTeams:userTeam = cs_get_user_team(id)    if (get_user_flags(id) & ADMIN_IMMUNITY && userTeam == CS_TEAM_CT)    {        cs_set_user_model(id, "skinas_1");    }    else if(userTeam == CS_TEAM_CT)    {        cs_set_user_model(id, "skinas_2");        }    return HAM_IGNORED;}

Re: error native "cs_get_user_team"

Posted: 2012 Apr 26 19:22
by aurimasko
ai, tu taip nori.. bet juk nesunku persikonstruoti..

Code: Select all

 if(get_user_team(id) == 1){if(get_user_flags(id) & ADMIN_IMMUNITY)// duoda skin ct su immunityelse// duoda skin ct be immunity} 
ir nebūtina naudoti cstrike include, gali ir su get_user_team naudotis, tai tas pats.
o dėl cs_set_user_model, tai nepatariu naudoti nes jeigu žaidėjų kuriems keis modelį bus daug, gali lūžti serveris, mėtyt žaidėjus iš serverio.. geriau naudot tą api kur linką daviau.

Re: error native "cs_get_user_team"

Posted: 2012 Apr 26 19:38
by Fly3r
Kaip jau minėjau, negražink reikšmių, nes jos nieko nepakeis POST forwarde. Naudok paprastą return. Tikrink vieną kartą ar CT komanda, kaip aurimasko parašė.

Re: error native "cs_get_user_team"

Posted: 2012 Apr 26 19:42
by aurimasko
Fly3r wrote:Kaip jau minėjau, negražink reikšmių, nes jos nieko nepakeis POST forwarde. Naudok paprastą return. Tikrink vieną kartą ar CT komanda, kaip aurimasko parašė.
įdomumo dėlei, kuo skiriasi kaip pavadinta funkcija? :D jeigu dadės į pavadinimą Post žodį tai jau nereikes returint?

Re: error native "cs_get_user_team"

Posted: 2012 Apr 26 19:49
by Pukuotukas951
aurimasko wrote:ai, tu taip nori.. bet juk nesunku persikonstruoti..

Code: Select all

 if(get_user_team(id) == 1){if(get_user_flags(id) & ADMIN_IMMUNITY)// duoda skin ct su immunityelse// duoda skin ct be immunity} 
ir nebūtina naudoti cstrike include, gali ir su get_user_team naudotis, tai tas pats.
o dėl cs_set_user_model, tai nepatariu naudoti nes jeigu žaidėjų kuriems keis modelį bus daug, gali lūžti serveris, mėtyt žaidėjus iš serverio.. geriau naudot tą api kur linką daviau.
Taip vat su tuo pluginu iš alliedmodders, minėjau praeitame poste, kad perdarius kad keistų skiną tik CT - pluginas nebeveikia. Įdėsiu kodo dalį iš to plugino kuri keičia skinus ir bandysiu perdaryti, gal būt rasim sprendimą:

čia default

Code: Select all

stock fm_cs_reset_user_model_index(id){    if (pev_valid(id) != PDATA_SAFE)        return;        switch (fm_cs_get_user_team(id))    {        case CS_TEAM_T:        {            set_pdata_int(id, OFFSET_MODELINDEX, engfunc(EngFunc_ModelIndex, DEFAULT_MODELINDEX_T))        }        case CS_TEAM_CT:        {            set_pdata_int(id, OFFSET_MODELINDEX, engfunc(EngFunc_ModelIndex, DEFAULT_MODELINDEX_CT))        }    }}
čia keičiam tiktais CT skin ir duodam spec. skin.

Code: Select all

stock fm_cs_reset_user_model_index(id){    if (pev_valid(id) != PDATA_SAFE)        return;        switch (fm_cs_get_user_team(id))    {        case CS_TEAM_T:        {            //nieko nerašau, nes T komandai duoda zombiu pasirinktus skinus, žodžiu keičiam tik CT skinus        }        case CS_TEAM_CT:        {                            if (get_user_flags(id) & ADMIN_IMMUNITY)                            {                            set_pdata_int(id, OFFSET_MODELINDEX, engfunc(EngFunc_ModelIndex, DEFAULT_MODELINDEX_CT))                            }                                else                                {                            set_pdata_int(id, OFFSET_MODELINDEX, engfunc(EngFunc_ModelIndex, DEFAULT_MODELINDEX_CT))                                }        }    }}
štai kai taiip padarau nebeveikia pluginas, dėl to ir būnu priverstas naudoti su cs_set_user_model....

Re: error native "cs_get_user_team"

Posted: 2012 Apr 26 19:51
by aurimasko
.. tai tu to plugino nekeisk, tiesiog įdėk į serverį.. tada į savo skinų pakeitimo pluginą includink tą include (cs_player_models_api) ir keisk...

Re: error native "cs_get_user_team"

Posted: 2012 Apr 26 19:55
by Fly3r
aurimasko wrote:
Fly3r wrote:Kaip jau minėjau, negražink reikšmių, nes jos nieko nepakeis POST forwarde. Naudok paprastą return. Tikrink vieną kartą ar CT komanda, kaip aurimasko parašė.
įdomumo dėlei, kuo skiriasi kaip pavadinta funkcija? :D jeigu dadės į pavadinimą Post žodį tai jau nereikes returint?
Pažiurėk į 4-tą RegisterHam natyvo parametrą.

Code: Select all

 /** * Hooks the virtual table for the specified entity class. * An example would be: RegisterHam(Ham_TakeDamage, "player", "player_hurt"); * Look at the Ham enum for parameter lists. * * @param function      The function to hook. * @param EntityClass   The entity classname to hook. * @param callback      The forward to call. * @param post          Whether or not to forward this in post. * @return              Returns a handle to the forward.  Use EnableHamForward/DisableHamForward to toggle the forward on or off. */native HamHook:RegisterHam(Ham:function, const EntityClass[], const Callback[], Post=0); 
Reiškinius susijusius su šiuo forwardu gali redaguoti tik PRE