Page 1 of 1

Ginklai..

Posted: 2013 Jun 01 20:06
by aurimasko
Sveiki,

Man reiktų, kad kai žaidėjas gauną ginklą, tai tam ginklui būtų suteiktas specialus ID ar panašiai, pagal kurį galima būtų suteikti tam ginklui visokias savybes. Ne tam žaidėjui, o tam ginklui.
Bet man gavosi taip, kad jeigu žaidėjas tą ginklą išmeta, o po to vėl pasiima, tuomet to specialaus ID nebelieka, nes kaip suprantu pasikeičia pačio ginklo ID.

Padarius taip:

Code: Select all

 // Kai žaidėjas gauna ginkląnew ent  = give_item(id, WEAPONS[item])log_amx("Weapon ENT: %d", ent) entity_set_int(ent, EV_INT_iuser1, item) // specialus idlog_amx("Ginklo spec. ID: %d", entity_get_int(ent, EV_INT_iuser1))  // Kai žaidėjas paima ginklą nuo žemėspublic hWeaponTouch(ent, id){    if(!is_user_alive(id) || !pev_valid(ent))        return HAM_IGNORED     new iEntSpecID = entity_get_int(ent, EV_INT_iuser1) // specialus ID    log_amx("Ginklo ID: %d, Specialus ID: %d", ent, iEntSpecID)         // ...    return FMRES_IGNORED} 
Gaunasi taip:

Code: Select all

 L 06/01/2013 - 15:08:02: Weapon ENT:: 75L 06/01/2013 - 15:08:02: Ginklo spec. ID: 27L 06/01/2013 - 15:08:03: Ginklo ID: 136, Specialus ID: 0 
Ir nežinau kaip kitaip padaryti. Arba gal kur yra klaida?

Re: Ginklai..

Posted: 2013 Jun 01 22:40
by aaarnas
Tas ginklas, kuris guli ant žemės yra visai kitas objektas nei tas kur laikomas rankose. Man atrodo, kai ginklas yra išmetamas, jo objektas ištrinamas. Informacija apie šovinius išsaugoma naujai sukurtame objekte, kuris išmetamas ant žemės (weaponbox). Apie tokio dalyko kūrimą ir kaip duomenys jame talpinami, tai gali rasti šiame plugine: http://forums.alliedmods.net/showthread.php?p=761924
Tikriausiai reikės tą specID įrašyti į šį entity išmetimo metu (dar reikia sugalvoti kaip jį aptikti) ir po to paimant, touch funkcijoje šį ID pasiimti.

Re: Ginklai..

Posted: 2013 Jun 01 22:46
by aurimasko
Na, tai aš irgi supratau, kad seną entity ištrina, o ant žemės padeda kitą. Ir aš nesugalvoju būtent tos vietos, kaip iš ginklo entity kurį žaidėjas laiko rankose, išmetimo metu perkelti specID į tą ginklą, kuris bus ant žemės :/

Re: Ginklai..

Posted: 2013 Jun 01 23:24
by aaarnas
Idėja, pamėginti patikrinti ar išmetamas ginklas kartais "neliečia" žaidėjo. Su ham_touch ar fakemeta, ar net register_touch.
Nes man atrodo, kad registruojamas palietimas.

Re: Ginklai..

Posted: 2013 Jun 01 23:48
by aurimasko
Pavyko su register_touch. Taip pat tuo pačiu metu suveikia ir RegisterHam.

Code: Select all

 L 06/02/2013 - 00:48:03: Weapon ENT: 148L 06/02/2013 - 00:48:03: Ginklo spec. ID: 27L 06/02/2013 - 00:48:05: PALIETE GINKLA, ENT:151 // register_touchL 06/02/2013 - 00:48:05: Ginklo ID: 151, Specialus ID: 0 // RegisterHamL 06/02/2013 - 00:48:05: PALIETE GINKLA, ENT:151L 06/02/2013 - 00:48:05: Ginklo ID: 151, Specialus ID: 0L 06/02/2013 - 00:48:05: PALIETE GINKLA, ENT:151L 06/02/2013 - 00:48:05: Ginklo ID: 151, Specialus ID: 0L 06/02/2013 - 00:48:05: PALIETE GINKLA, ENT:151L 06/02/2013 - 00:48:05: Ginklo ID: 151, Specialus ID: 0L 06/02/2013 - 00:48:05: PALIETE GINKLA, ENT:151L 06/02/2013 - 00:48:05: Ginklo ID: 151, Specialus ID: 0 

Re: Ginklai..

Posted: 2013 Jun 02 00:15
by aaarnas
Dabar jau pavyks pasidaryti ?

Re: Ginklai..

Posted: 2013 Jun 02 00:18
by aurimasko
Greičiausiai taip :)

Re: Ginklai..

Posted: 2013 Jun 03 19:35
by nuodas159
aaarnas wrote:Dabar jau pavyks pasidaryti ?
Hmm, o kaip galima pasidaryti, nes norėčiau pamėginti. :)