Nowe bronie i edycja broni jest podobna jak nowe perki/klasy w codmodzie.
Ale nie będę tak mocno do CodModa przywiązywał bo CheQ będzie zły ![]()
Przejdźmy do rzeczy, jako skrypter wychwytujemy otrzymanie i stracenie broni tak, aby plugin wiedział kiedy gracz ma broń, a kiedy nie.
Robimy to w ten sposób, rejestrujemy bibliotekę ggpro dodając pod
#include <amxmodx>to
#include <ggpro>
I tworzymy nową zmienną globalną który przyjmie wartość true, kiedy gracz będzie miał broń, robimy to dodając jakąś tam zmienną nad plugin_init (głupio brzmi ;D)
Moja będzie się nazywała ma_bron, a linijka z dodaniem wygląda tak
new bool:ma_bron[33];
Teraz ustawienie zmiennej na true dla gracza, kiedy on zdobędzie daną broń, w moim przypadku bronią będzie ... "Extra AK47"
public gg_weapon_gived(id, bron[]) if(equal(bron, "Extra AK47")) ma_bron[id] = true;
I ustawienie na false kiedy broń straci
public gg_weapon_taked(id, bron[]) if(equal(bron, "Extra AK47")) ma_bron[id] = false;
Tera operacje kiedy gracz ma broń, u mnie gracz będzie dostawał brak rozrzutu, trzeba dodać do plugin_init
register_forward(FM_PlayerPreThink, "PreThink"); register_forward(FM_UpdateClientData, "UpdateClientData", 1)
I na koniec pluginu to
public PreThink(id)
{
if(ma_bron[id])
set_pev(id, pev_punchangle, {0.0,0.0,0.0})
}
public UpdateClientData(id, sw, cd_handle)
{
if(ma_bron[id])
set_cd(cd_handle, CD_PunchAngle, {0.0,0.0,0.0})
}I zarejestrować bibliotekę fakemeta'y
#include <fakemeta>
Teraz jeszcze dawanie jakiejś broni przy spawnie gracza i przy otrzymaniu broni, nie trzeba wyrzucać broni po jej odebraniu gdyż bronie resetowane są tak czy tak.
A więc zamieniamy public gg_weapon_gived na
public gg_weapon_gived(id, bron[])
{
if(equal(bron, "Extra AK47"))
{
ma_bron[id] = true;
give_item(id, "weapon_ak47"); //moja broń to ak47
}
}Dodajemy na koniec pluginu
public gg_user_spawned(id)
{
if(ma_bron[id])
{
give_item(id, "weapon_ak47");
}
}I rejestrujemy fun'a dodając pod
#include <ggpro>to
#include <fun>
I nowa broń gotowa, w moim przypadku dostanie on ak47 i brak rozrzutu. Oczywiście trzeba dodać broń "Extra AK47" do listy w gg_weapons.
Gotowiec
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <fakemeta>
#include <ggpro>
#include <fun>
#define PLUGIN "GG Weapon: Extra AK47"
#define VERSION "1.0"
#define AUTHOR "d0naciak"
new bool:ma_bron[33];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_forward(FM_PlayerPreThink, "PreThink");
register_forward(FM_UpdateClientData, "UpdateClientData", 1)
}
public gg_weapon_gived(id, bron[])
{
if(equal(bron, "Extra AK47"))
{
ma_bron[id] = true;
give_item(id, "weapon_ak47"); //moja broń to ak47
}
}
public gg_weapon_taked(id, bron[])
if(equal(bron, "Extra AK47"))
ma_bron[id] = false;
public gg_user_spawned(id)
{
if(ma_bron[id])
{
give_item(id, "weapon_ak47");
}
}
public PreThink(id)
{
if(ma_bron[id])
set_pev(id, pev_punchangle, {0.0,0.0,0.0})
}
public UpdateClientData(id, sw, cd_handle)
{
if(ma_bron[id])
set_cd(cd_handle, CD_PunchAngle, {0.0,0.0,0.0})
}


Dodatki SourceMod














