Objektai

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
Post Reply
bussinessman
Ar jis surinks 50 žinučių?
Posts: 39
Joined: 2011 Mar 25 09:56

Objektai

Post by bussinessman »

Sveiki, taigi bandau padaryti paprastą kvadratą žemėlapyje žalią, tačiau nelabai gaunasi nustatyti plotį į kurį reguotų kai žaidėjas užeina ant jo ir patį objekto dydį.

Code: Select all

         mins = Float:{-36.0, -36.0, -36.0};        maxs = Float:{36.0, 36.0, 36.0};         g_startA = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));        engfunc(EngFunc_SetModel, g_startA, TIMER_MODEL);        engfunc(EngFunc_SetSize, g_startA, mins, maxs);        engfunc(EngFunc_SetOrigin, g_startA, origin);        set_pev(g_startA, pev_solid, SOLID_TRIGGER);        set_pev(g_startA, pev_movetype, MOVETYPE_NONE);        set_pev(g_startA, pev_classname, START_TIMER);        engfunc(EngFunc_DropToFloor, g_startA);        set_pev(g_startA, pev_nextthink, get_gametime() + TIMER_THINKTIME);        set_rendering2(g_startA, kRenderFxGlowShell, 0, 255, 0, kRenderTransAlpha, 50); 
Ar galite paaiškinti kaip padidinti patį objektą ir jo reguojamą plotą? Kaip suprantu tas plotas yra "EngFunc_SetSize", bet bandžiau didinti ir nieko nesigavo...

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

Re: Objektai

Post by hleV »

Čia mano veikiantis kodas nematomų sienų kūrimui, skirtas ESF, tad kelis parametrus gali tekt pasikeist (classname, model).

Code: Select all

CreateBoundary(const Float:origin[3], const Float:mins[3], const Float:maxs[3], const className[], const solidType, const extraInfo = -1){    new const ent = create_entity("env_model");        entity_set_string(ent, EV_SZ_classname, className);    entity_set_origin(ent, origin);    entity_set_model(ent, "models/db1.mdl");    entity_set_int(ent, EV_INT_solid, solidType);    entity_set_size(ent, mins, maxs);    entity_set_float(ent, EV_FL_takedamage, DAMAGE_NO);     if (extraInfo != -1)        entity_set_int(ent, EV_INT_iuser1, extraInfo);     set_rendering(ent, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0);}
Čia pavyzdinis kodas, kurį naudojau sudėti sienas aplink areną žemėlapyje:

Code: Select all

CreateArenaBoundaries(){    #define ARENA_X 3190.0    #define ARENA_Y 3640.0    #define ARENA_Z 5410.0     #define ARENA_MIN_X -1600.0    #define ARENA_MIN_Y -2040.0    #define ARENA_MIN_Z -2350.0     #define ARENA_MAX_X 1600.0    #define ARENA_MAX_Y 1600.0    #define ARENA_MAX_Z 3068.0     CreateBoundary(Float:{ARENA_MIN_X, ARENA_MIN_Y, ARENA_MIN_Z}, Float:{-1.0, 0.0, 0.0}, Float:{0.0, ARENA_Y, ARENA_Z}, "arena_boundary", SOLID_TRIGGER, AP_LEFT);    CreateBoundary(Float:{ARENA_MIN_X, ARENA_MAX_Y, ARENA_MIN_Z}, Float:{0.0, 0.0, 0.0}, Float:{ARENA_X, 1.0, ARENA_Z}, "arena_boundary", SOLID_TRIGGER, AP_CENTER);    CreateBoundary(Float:{ARENA_MAX_X, ARENA_MIN_Y, ARENA_MIN_Z}, Float:{0.0, 0.0, 0.0}, Float:{1.0, ARENA_Y, ARENA_Z}, "arena_boundary", SOLID_TRIGGER, AP_RIGHT);     register_touch("arena_boundary", "player", "OnArenaBoundaryTouch");}
Kol tuos mins ir maxs perprasi, gali kiek užtrukt.
Image ← RIP best userbar
DISKUSIJA: KIETAS PLUGIN'O UŽSAKOVAS
Privačios pagalbos neteikiu!

bussinessman
Ar jis surinks 50 žinučių?
Posts: 39
Joined: 2011 Mar 25 09:56

Re: Objektai

Post by bussinessman »

Kažkaip su tuo pavyzdžiu lengviau nepasidarė, vistiek tie mins maxs išvis nesuprantu redaguoji redaguoji nedidėja plotis ilgis kartais padidėja, bet netaip kaip noriu.

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Objektai

Post by aaarnas »

Įsivaizduok keturkampį.

Dabar sujunk jo 2 priešingus kampus (įstrižainę).

Tojį įstrižainė eina per centra.

Centras dalina įstrižainę į 2 dalis.

Dabar viršutinė dalis yra Max. Viršutinio kampo, į kurį eina įstrižainė koordinatė ( atstumas nuo centro ).
Min yra apatinio kampo koordinatė.

Image

Šio atveju abc yra MIN. Priešingas kampas būtų MAX. Stačiakampio centras - jo koordinatė (origin)
Palikau CS pasaulį ;/ . Nebepasiekiamas.

bussinessman
Ar jis surinks 50 žinučių?
Posts: 39
Joined: 2011 Mar 25 09:56

Re: Objektai

Post by bussinessman »

Kaip ir veikai, tačiau pati figūra neišsitempia, pajusti plotą galima tik užėjus su žmogeliuku ant jo ir kai parašo tekstą, o kaip ištempti dabar pačią figūrą?

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Objektai

Post by aaarnas »

Na tai su min max reguliuoji pačią figūrą, kokia jį turi būti.

Galima dar su BOX žinute pažaisti. Tau nupieš ribas.

Code: Select all

 message_begin(MSG_ONE, SVC_TEMPENTITY)write_byte(TE_BOX)write_coord(boxmins.x)write_coord(boxmins.y)write_coord(boxmins.z)write_coord(boxmaxs.x)write_coord(boxmaxs.y)write_coord(boxmaxs.z)write_short(life in 0.1 s)write_byte(red)write_byte(green)write_byte(blue)message_end()
Tik čia min, max yra absoliutinės koordinatės. O entity min max skaičiuojami nuo centro.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

Post Reply

Who is online

Users browsing this forum: Google [Bot] and 2 guests