Kamuolys

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
Post Reply
OriGinal
O taip. Jis jau surinko 50 žinučių!
Posts: 81
Joined: 2011 Mar 12 23:27
Skype: aurintas2

Kamuolys

Post by OriGinal »

Sveiki. Atsinaujinau serverį į amxmodx 1.8.3 ir pradėjo netinkamai veikt vienas iš pluginų. Palietus kamuolį jis iškart dingsta, nors prieš tai viskas veikė puikiai. Kame galėtų būti klaida?

Code: Select all

register_touch( g_szBallName, "player", "FwdTouchPlayer" ); public FwdTouchPlayer( Ball, id ) {    if( is_user_bot( id ) )        return PLUGIN_CONTINUE;        static iOwner; iOwner = pev( Ball, pev_iuser1 );        if( iOwner == 0 ) {        entity_set_int( Ball, EV_INT_iuser1, id );        beam(10)        emit_sound(Ball, CHAN_ITEM, gotball, 1.0, ATTN_NORM, 0, PITCH_NORM);    }        return PLUGIN_CONTINUE;}
Jokių klaidų loguose nėra.

InvIs
Gana aktyvus vartotojas
Posts: 421
Joined: 2011 Aug 13 11:12
Skype: pksoldierlt
Location: ATOSTOGOSE

Re: Kamuolys

Post by InvIs »

Pabandyk pluginą susikompiliuoti su naujausiais .inc failais.
ISVYKES

OriGinal
O taip. Jis jau surinko 50 žinučių!
Posts: 81
Joined: 2011 Mar 12 23:27
Skype: aurintas2

Re: Kamuolys

Post by OriGinal »

Prieš atnaujindamas padariau tai visiems pluginams, šiam taip pat.

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

Re: Kamuolys

Post by aaarnas »

Kamuolys kad dingtų, tai arba:
* Jis yra kažkur nukeliamas (nuteleportuojamas)
* Padaromas nematomu (pakeičiamas modelis, render)
* Ištrinamas entity.

Jei nė vienas iš šių dalykų negali būti padaromas toje funkcijoje. Vadinasi - amxmodx bug.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

OriGinal
O taip. Jis jau surinko 50 žinučių!
Posts: 81
Joined: 2011 Mar 12 23:27
Skype: aurintas2

Re: Kamuolys

Post by OriGinal »

Galbūt tai gali būti susiję su engine atnaujinimais (nes kaip sakiau, tai prasidėjo tada)?

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

Re: Kamuolys

Post by aaarnas »

Visko įmanoma. Geriausia būtų atsekti ties kuria funkcija kamuolys pradingsta.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

OriGinal
O taip. Jis jau surinko 50 žinučių!
Posts: 81
Joined: 2011 Mar 12 23:27
Skype: aurintas2

Re: Kamuolys

Post by OriGinal »

Tikriausiai dingsta šioje funkcijoje:

Code: Select all

register_think( g_szBallName, "FwdThinkBall" ); public FwdThinkBall( iEntity ) {    if( !is_valid_ent( g_iBall   ) )        return PLUGIN_HANDLED;        entity_set_float( iEntity, EV_FL_nextthink, halflife_time( ) + 0.05 );        static Float:vOrigin[ 3 ], Float:vBallVelocity[ 3 ];    entity_get_vector( iEntity, EV_VEC_origin, vOrigin );    entity_get_vector( iEntity, EV_VEC_velocity, vBallVelocity );        static iOwner; iOwner = pev( iEntity, pev_iuser1 );    static iSolid; iSolid = pev( iEntity, pev_solid );        // palietus kamuolį iOwner tampa > 0    if( iOwner > 0 ) {        static Float:vOwnerOrigin[ 3 ];        entity_get_vector( iOwner, EV_VEC_origin, vOwnerOrigin );                static const Float:vVelocity[ 3 ] = { 1.0, 1.0, 0.0 };                if( !is_user_alive( iOwner ) ) {            entity_set_int( iEntity, EV_INT_iuser1, 0 );                        vOwnerOrigin[ 2 ] += 5.0;                        entity_set_origin( iEntity, vOwnerOrigin );            entity_set_vector( iEntity, EV_VEC_velocity, vVelocity );                        return PLUGIN_CONTINUE;        }                if( iSolid != SOLID_NOT )            set_pev( iEntity, pev_solid, SOLID_NOT );        // galbūt kažkur čia?        static Float:vAngles[ 3 ], Float:vReturn[ 3 ];        entity_get_vector( iOwner, EV_VEC_v_angle, vAngles );                vReturn[ 0 ] = ( floatcos( vAngles[ 1 ], degrees ) * 55.0 ) + vOwnerOrigin[ 0 ];        vReturn[ 1 ] = ( floatsin( vAngles[ 1 ], degrees ) * 55.0 ) + vOwnerOrigin[ 1 ];        vReturn[ 2 ] = vOwnerOrigin[ 2 ];        vReturn[ 2 ] -= ( entity_get_int( iOwner, EV_INT_flags ) & FL_DUCKING ) ? 10 : 30;                entity_set_vector( iEntity, EV_VEC_velocity, vVelocity );        entity_set_origin( iEntity, vReturn );        //    } else {        if( iSolid != SOLID_BBOX )            set_pev( iEntity, pev_solid, SOLID_BBOX );                static Float:flLastVerticalOrigin;                if( vBallVelocity[ 2 ] == 0.0 ) {            static iCounts;                        if( flLastVerticalOrigin > vOrigin[ 2 ] ) {                iCounts++;                                if( iCounts > 10 ) {                    iCounts = 0;                                        UpdateBall( 0 );                }            } else {                iCounts = 0;                                if( PointContents( vOrigin ) != CONTENTS_EMPTY )                    UpdateBall( 0 );            }                        flLastVerticalOrigin = vOrigin[ 2 ];        }    }        return PLUGIN_CONTINUE;}

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

Re: Kamuolys

Post by aaarnas »

SOLID_XXX pakeičia tik sąveikos su pasauliu parametrus, bet pradanginti nelabai gali. Jei pagal šitą funkciją, tai arba koordinatės blogos, arba vektorius kažkoks blogas nustatomas, kad kamuolys išlėkia kažkur (bet matytųsi tada).
Ką galima pamėginti, tai parašyti chat komandą kokią, kuri patiktina ar entity egzistuoja, kokia jo būsena, koordinatės ir tt:

Code: Select all

#include <engine> public plugin_init() {        register_clcmd("say /check", "check_ball")} public check_ball(id) {     new ent = ballid // kamuolio ent id        if (is_valid_ent(ent)) {                new Float:ballorig[3], Float:porig[3]        entity_get_vector(ent, EV_VEC_origin, ballorig)        entity_get_vector(id, EV_VEC_origin, porig)                client_print(id, print_chat, "Kamuolio koordinates: %.1f %.1f %.1f", ballorig[0], ballorig[1], ballorig[2])        client_print(id, print_center, "Tavo koordinates: %.1f %.1f %.1f", porig[0], porig[1], porig[2])                client_print(id, print_chat, "Atstumas nuo taves iki kamuolio: %.2f",        floatsqroot((ballorig[0]-porig[0])*(ballorig[0]-porig[0])+(ballorig[1]-porig[1])*(ballorig[1]-porig[1])+(ballorig[2]-porig[2])*(ballorig[2]-porig[2])))        client_print(id, print_chat, "Render mode: %d Render fx: %d Render amount: %.2f",        entity_get_int(ent, EV_INT_rendermode), entity_get_int(ent, EV_INT_renderfx), entity_get_float(ent, EV_FL_renderamt))    }    else {        client_print(id, print_chat, "Kamuolys neegzistuoja! Istrintas")    }} 
Palikau CS pasaulį ;/ . Nebepasiekiamas.

OriGinal
O taip. Jis jau surinko 50 žinučių!
Posts: 81
Joined: 2011 Mar 12 23:27
Skype: aurintas2

Re: Kamuolys

Post by OriGinal »

Padariau kelis patikrinimus paėmęs kamuolį:

Code: Select all

Kamuolio koordinates: 186.0 298.2 1102069759.9Tavo koordinates: 212.1 346.6 52.0Atstumas nuo taves iki kamuolio: 1102069759.99Render mode: 0 Render fx: 19 Render amount: 1.00

Code: Select all

Kamuolio koordinates: -405.3 351.6 1102069759.9Tavo koordinates: -352.9 334.8 52.0Atstumas nuo taves iki kamuolio: 1102069759.99Render mode: 0 Render fx: 19 Render amount: 1.00

Code: Select all

Kamuolio koordinates: -535.2 747.2 1102069759.9Tavo koordinates: -491.0 779.8 52.0Atstumas nuo taves iki kamuolio: 1102069759.99Render mode: 0 Render fx: 19 Render amount: 1.00

Code: Select all

Kamuolio koordinates: 1408.9 782.5 1102069759.9Tavo koordinates: 1463.9 783.5 52.0Atstumas nuo taves iki kamuolio: 1102069759.99Render mode: 0 Render fx: 19 Render amount: 1.00
Tad kaip čia tas koordinates sutvarkyt reiktų?

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

Re: Kamuolys

Post by aaarnas »

Tai kažkur arba origin[2] arba velocity[2] nustatomas labai didelis skaičius. Dėl to, kamuolys taip aukštai atsiduria.
Čia jau reikėtų sėsti prie plugino ir žiūrėti kur kas. Galima pasidebuginti. Prieš visas vietas, kur nustatomas [2] kamuolio origin ir vector parametras atspauzdinti į log reikšmės ir žiūrėti kur jos tampa negeros.

Code: Select all

log_amx("'Funkcijos pavadinimas' origin[2]: %0.1f vector[2]: %0.1f", origin[2], vector[2])
Palikau CS pasaulį ;/ . Nebepasiekiamas.

Post Reply

Who is online

Users browsing this forum: No registered users and 5 guests