Page 2 of 2

Re: JuggerNaut b0.1

Posted: 2011 Dec 22 18:01
by newb
Tegul dabar Arnas tikrina xD

Re: JuggerNaut b0.1

Posted: 2011 Dec 22 19:00
by TBagT
Nu gerai laukiam jo :D

Re: JuggerNaut b0.1

Posted: 2011 Dec 31 14:27
by aaarnas
Tai juk ne ką daugiau pasakysiu už newb :D Ne veltui pluginų patvirtintojas jis.

Jei labai mėgsti visur dėti semicolon (;), tai gali apsirašyti tokį parametrą:

Code: Select all

#pragma semicolon 1
ir kompiliuodamas pastebėsi, kad 62 eilutėje, nėra ;. Šitas parametras liepia kompiliatoriui kiekvienoje eilutėje aptikti kabliataškį. Bet čia smulkmena.

Dabar Ham_Damage forwarde, reiktų grąžinti HAM_OVERRIDE, o ne HAM_HANDLED, nes:

Code: Select all

#define HAM_IGNORED     1   /**< Calls target function, returns normal value */#define HAM_HANDLED     2   /**< Tells the module you did something, still calls target function and returns normal value */#define HAM_OVERRIDE    3   /**< Still calls the target function, but returns whatever is set with SetHamReturn*() */#define HAM_SUPERCEDE   4   /**< Block the target call, and use your return value (if applicable) (Set with SetHamReturn*()) */ 
Dar tame pačiame forwarde netikrini ar attacker yra žaidėjas. Jei tai bus kažkoks pasaulio elementas, tai gaus index out of bounds klaidą.
Turėtų būti taip:

Code: Select all

if ( juggernaut[ attacker ] ) {
--->>

Code: Select all

if ( 1<=attacker<=maxplayers && juggernaut[ attacker ] ) {
maxplayers tai apsirašyk globalų kintamąjį ir nustatyk get_maxplayers() reikšmę jam plugin_init() forwarde.

Dabar event_deathmsg forwade, jei gerai pamenu, tai DeathMsg neiškviečiamas, kai žaidėjas užsimuša ar nusižudo (kad ir kill konsolėje). Šiuo atveju reiktų naudoti Ham_Killed forwardą. Bet sakau, reikia patikrinti, nes dėl šito galiu ir meluoti.

Nežinau ar čia taip ir norėjai padaryti, bet:

Code: Select all

    if( !juggernaut[ g_attacker ] ) {        kills_areto_juggernaut[ g_attacker ]++;        check_kills( g_attacker )    }     else if ( juggernaut[ g_victim ] ) {        juggernaut[ g_victim ] = false;        kills_areto_juggernaut[ g_victim ] = 0;    }     else if(!juggernaut[ g_victim ] ) {        kills_areto_juggernaut[ g_victim ] = 0;    }
Dabar toks dalykas. Jei ne jugernautas nužudys jugernautą, tai jugernautas nepraras savo taškų, nes bus iškviečiama pirma sąlygą, o į kitas nebekreipiama dėmesio. Tai šiuo atveju tas sąlygas reiktų atskirti. Bet tada išpuola dar viena įdomybė. Jei patiktinam, kad žaidėjas (victim) yra jugernautas, tai logiškai mąstant, kitas atvejis jau savaime suprantamas, kad jis bus ne jugernautas, tai kam papildomai tikrinti?
(Už tokį bajerį mano informatikos dėstytojas užrašė tokį kodą ant lentos ir išsityčiojo ;D).

Toliau. Jei kabinėsimės prie stilistikos, tai check_kills funkcija nėra amx forwardas, tai kam ten grąžinti reikšmes PLUGIN..? Ten iš viso nereikia jų grąžinti. Galima tiesiog palikti return jei reikia sustabdyti funkciją.

become_juggernaut. Taigi jau check_kills patiktinai ar žaidėjas gyvas, tai kam tikrinti vėl?
Beje su return galioja tas pats.

125 eilutės, o tiek klaidų :D

Re: JuggerNaut b0.1

Posted: 2011 Dec 31 15:36
by newb
aaarnas wrote:Dabar event_deathmsg forwade, jei gerai pamenu, tai DeathMsg neiškviečiamas, kai žaidėjas užsimuša ar nusižudo (kad ir kill konsolėje). Šiuo atveju reiktų naudoti Ham_Killed forwardą. Bet sakau, reikia patikrinti, nes dėl šito galiu ir meluoti.
DeathMsg iskveciamas ir per kill ir per suicide ir per slay. Logiskai mastant, tai gi cia tas msg, kad kazkas mirsta, tai ir eventas turi buti iskveciamas, gal per koki user_silentkill tik nebus.

Re: JuggerNaut b0.1

Posted: 2012 Jan 12 14:16
by psychical
Arnai,
vienas pastebėjimas Ham_Killed nežinau, buginas ar kas jam darosi, tačiau jis nevisa sureaguoja į slay arba užsimušimą nukritus.