Sziasztok!
Az elmúlt napokban szükségem volt rá, így írtam egy fegyver sprite API plugint és gondoltam közzé teszem, viszonylag egyszerű kis plugin.
Azoknak ajánlom a használatát, akik egyedi fegyverekkel dolgoznak és nem szeretnék fegyverenként megírni a kliens felé az üzenet küldést, szimplán elég egy paranccsal helyettesíteni azt.
Két paranccsal rendelkezik az API:
Kód:
msg_set_player_weapon_sprite(id, weaponId, const newWeaponName[], flags = -1)
id - A játékos játék id-je
weaponId - A fegyver cstrike_constban található id-je (CSW_*)
newWeaponName - A fegyver és egyben txt fájljának új neve
flags - Bit flagek, a constban találhatóak
Ha a flags-hez semmi nem kerül, az alapjáraton fegyvernek szánt flagek lesznek használva.
msg_reset_player_weapon_sprite(id, weaponId, flags = -1)
id - A játékos játék id-je
weaponId - A fegyver cstrike_constban található id-je (CSW_*)
flags - Bit flagek, a constban találhatóak
Szimplán visszaállítja az alapra a játékosnak a fegyver sprite-ját ezen a típuson.
Flags azért került ide is, hogy ha esetleg a fegyver sprite-okat elvennénk, de az általunk adott tulajdonságait megtartanánk, ezzel lehetséges legyen. Fontos, ha ide semmit nem írunk, akkor az ALAP FEGYVER flag-jei kerülnek be!
Valamint pár kifejezést találhatunk az msg_weap_sprite_api_const.inc fájlban:
Kód:
WEAP_FL_SELECTONEMPTY (1<<0)
WEAP_FL_NOAUTORELOAD (1<<1)
WEAP_FL_NOAUTOSWITCHEMPTY (1<<2)
WEAP_FL_LIMITINWORLD (1<<3)
WEAP_FL_EXHAUSTIBLE (1<<4)
WEAP_FL_SELECTONEMPTY - Ha jól tippelem, ez azt takarja, hogy egy másik fegyver kifogyása esetén erre vált. Szerintem ez nem íródik felül, ha más fegyverhez is regisztráljuk ezt a tulajdonságot, szimplán csak felállít automata egy sorrendet(valszeg id szerint növekvő/csökkenő sorrendben)
WEAP_FL_NOAUTORELOAD - Kifogyáskor nincs automata újratöltés
WEAP_FL_NOAUTOSWITCHEMPTY - Ez valószínüleg a legelső bit-ünket írja felül az ezzel regisztrált fegyvereknék
WEAP_FL_LIMITINWORLD - Ezt nem tudom, hogy pontosan mit takarhat, de az alap tulajdonságok alapján arra gondolok, hogy megvan adva egy egzakt maximum töltény szám a fegyvernek és azt nem lépheti tovább(?)
WEAP_FL_EXHAUSTIBLE - Ha kifogy, elveszik a fegyver
Példa:
msg_set_player_weapon_sprite(id, CSW_AK47, "weapon_tesztak", (WEAP_FL_EXHAUSTIBLE|WEAP_FL_NOAUTORELOAD))
Ezzel pluginunk a (ak47 alapú)fegyverhez tartozó képeket a "sprites/weapon_tesztak.txt"-ből fogja beolvasni.
- Töltény kép jobb alul
- Fegyverváltási kép, mikor görgővel váltjuk a fegyvert
- Fegyver szerzési kép(jobb oldalt, mikor felveszel vagy megszerzel egy fegyvert)
- Célkereszt (Az alap half-life-os állítható[A 4pont spectatorban célkereszt helyén] és csak akkor látható, ha egy nem használt zoom mennyiséget használunk[használt zoom mérték pl. az awp nagyítása vagy az alap nagyítás(90(?))])
Valamint ha teljesen kifogy elveszti a tulajdonosa a fegyvert és automata újratöltés sincs rajta.
msg_reset_player_weapon_sprite(id, CSW_AK47)
Szimplán visszarakja a játékosnak az AK-ra az alap sprite-ot és alap tulajdonságokat.
A msg_reset_player_weapon_sprite parancsot akkor kell használni, mikor fegyverünk elveszik, így a sprite is visszaáll a régire.(Ha használunk cs_weap_models_api-t, akkor mehet a cs_reset_player_(view/weap)_model parancsok mellé)
Fegyverváltást is kezeli!