Witam Serdecznie.
W moim poradniku chciałbym pokazać wam jak można wykonać zwracanie wydanych ammo packów przed pojawieniem się infekcji. Jeśli kupiliśmy coś w sklepie oraz staniemy się pierwszym zombie lub np nemesisem nasze ammo packi za zakupienie przedmiotu zostaną zwrócone.
1 ) Otwieramy nasz silnik ( standard to zombie_plague40.sma )
2 ) W " // Player vars " znajdź następującą linijkę
new g_ammopacks[33] // ammo pack count
Dodaj pod nią
new BackAmmoPacks[33] // ammo pack return
Całość ma wyglądać Tak
new g_ammopacks[33] // ammo pack count new BackAmmoPacks[33] // ammo pack return
3 ) W " // CVAR pointers " na samym dole dodaj
cvar_retammo
Całość ma wyglądać Tak
... cvar_keephealthondisconnect, cvar_buyzonetime, cvar_huddisplay, cvar_retammo
4 ) W " // CVARS - General Purpose " znajdź następującą linijkę
cvar_huddisplay = register_cvar("zp_hud_display", "1")
Dodaj pod nią
cvar_retammo = register_cvar("zp_return_ammo", "1")
Całość ma wyglądać Tak
cvar_huddisplay = register_cvar("zp_hud_display", "1") cvar_retammo = register_cvar("zp_return_ammo", "1")
5 ) W " public fw_PlayerSpawn_Post(id) " znajdź następującą linijkę
g_isalive[id] = true
Dodaj pod nią
BackAmmoPacks[id] = 0
Całość ma wyglądać Tak
g_isalive[id] = true BackAmmoPacks[id] = 0
6 ) W " buy_extra_item(id, itemid, ignorecost = 0) " znajdź następującą linijkę
g_ammopacks[id] -= ArrayGetCell(g_extraitem_cost, itemid)
Dodaj pod nią
BackAmmoPacks[id] += ArrayGetCell(g_extraitem_cost, itemid)
Całość ma wyglądać Tak
g_ammopacks[id] -= ArrayGetCell(g_extraitem_cost, itemid) BackAmmoPacks[id] += ArrayGetCell(g_extraitem_cost, itemid)
7 ) Znajdź " zombieme(id, infector, nemesis, silentmode, rewards) " oraz dodaj powyżej następującą funkcje
public returnammo() { for(new i = 1; i <= g_maxplayers; i++) { if(!is_user_connected(i)) continue if((g_nemesis[i] || g_zombie[i] || g_survivor[i]) && get_pcvar_num(cvar_retammo)) g_ammopacks[i] += BackAmmoPacks[i] } }
8 ) Teraz wystarczy wykonać kompilację silnika i gotowe.