Zmiana prędkości ataku bronią
MarWit
31.10.2011
Witam.
W tym tutku pokaże jak zmienić szybkość ataku dla danej broni:)
1. Tworzymy klasę ( standard: punkty, nazwa/opis klasy, itd. )
2. W plugin init dodajemy:
- Jeżeli chcemy zmienić szybkość ataku każdej innej broni:
3. Gdzieś niżej dodajemy:
- Dla kazdej innej broni
Teraz drobne tłumaczenie:
Aby zwiększyć/zmniejszyć prędkość ataku zmieniamy
Aby zmienić bron na której ma być wieksza prędkość ataku:
1. Sposób ( tylko 1 bron ):
Szukamy linijki
gdzie CSW_DEAGLE zmieniamy na własne
oraz
gdzie "weapon_deagle", zmieniamy na własne.
2. Sposób ( wiecej broni )
Zamiast
dajemy
Oczywiście gdzie CSW_AWP/CSW_AK47 i "weapon_awp"/"weapon_ak47" zmieniamy na własne np. jeżeli chcemy mieć o połowe wiekszą predkość ataku na deagle, glock'u i m4 switch bedzie wyglądał tak:
Przykładowa klasa ( 5x szybszy atak na m4 )
Przydatna strona z nazwami broni ( CSW_* oraz weapon_* ): KLIK lub KLIK
Jeżeli czegoś nie rozumiecie, piszcie pod tematem
W tym tutku pokaże jak zmienić szybkość ataku dla danej broni:)
1. Tworzymy klasę ( standard: punkty, nazwa/opis klasy, itd. )
2. W plugin init dodajemy:
- Jeżeli chcemy zmienić szybkość ataku nożem:
Spoiler
- Jeżeli chcemy zmienić szybkość ataku każdej innej broni:
Spoiler
3. Gdzieś niżej dodajemy:
- Dla noża:
Spoiler
- Dla kazdej innej broni
Spoiler
Teraz drobne tłumaczenie:
Aby zwiększyć/zmniejszyć prędkość ataku zmieniamy
fSpeedMultiplier. Gdzie 0.3 ustawiamy na własną ( i mniejsza wartość tym wieksza prędkość ataku )
Aby zmienić bron na której ma być wieksza prędkość ataku:
1. Sposób ( tylko 1 bron ):
Szukamy linijki
if(iWeapon == CSW_DEAGLE)
gdzie CSW_DEAGLE zmieniamy na własne
oraz
iEnt = fm_find_ent_by_owner(-1, "weapon_deagle", id)
gdzie "weapon_deagle", zmieniamy na własne.
2. Sposób ( wiecej broni )
Zamiast
static Float:fSpeedMultiplier = 0.3;
if(iWeapon == CSW_DEAGLE)
{
iEnt = fm_find_ent_by_owner(-1, "weapon_deagle", id)
set_pdata_float( iEnt, 46, ( get_pdata_float(iEnt, 46, 4) * fSpeedMultiplier), 4 );
set_pdata_float( iEnt, 47, ( get_pdata_float(iEnt, 47, 4) * fSpeedMultiplier), 4 );
}
dajemy
static Float:fSpeedMultiplier;
switch(iWeapon)
{
case CSW_AK47: {
fSpeedMultiplier = 0.3
iEnt = fm_find_ent_by_owner(-1, "weapon_ak47", id)
}
case CSW_AWP: {
fSpeedMultiplier = 0.8
iEnt = fm_find_ent_by_owner(-1, "weapon_awp", id)
}
default: return PLUGIN_CONTINUE
}
set_pdata_float( iEnt, 46, ( get_pdata_float(iEnt, 46, 4) * fSpeedMultiplier), 4 );
set_pdata_float( iEnt, 47, ( get_pdata_float(iEnt, 47, 4) * fSpeedMultiplier), 4 );
Oczywiście gdzie CSW_AWP/CSW_AK47 i "weapon_awp"/"weapon_ak47" zmieniamy na własne np. jeżeli chcemy mieć o połowe wiekszą predkość ataku na deagle, glock'u i m4 switch bedzie wyglądał tak:
switch(iWeapon)
{
case CSW_GLOCK18: {
fSpeedMultiplier = 0.5
iEnt = fm_find_ent_by_owner(-1, "weapon_glock18", id)
}
case CSW_DEAGLE: {
fSpeedMultiplier = 0.5
iEnt = fm_find_ent_by_owner(-1, "weapon_deagle", id)
}
case CSW_M4A1: {
fSpeedMultiplier = 0.5
iEnt = fm_find_ent_by_owner(-1, "weapon_m4a1", id)
}
default: return PLUGIN_CONTINUE
}
set_pdata_float( iEnt, 46, ( get_pdata_float(iEnt, 46, 4) * fSpeedMultiplier), 4 );
set_pdata_float( iEnt, 47, ( get_pdata_float(iEnt, 47, 4) * fSpeedMultiplier), 4 );
Przykładowa klasa ( 5x szybszy atak na m4 )
Spoiler
Przydatna strona z nazwami broni ( CSW_* oraz weapon_* ): KLIK lub KLIK
Jeżeli czegoś nie rozumiecie, piszcie pod tematem
xxdrago
31.10.2011
Nie wiem czy dobrze zrozumiałem ale chodzi o to , że broń szybciej strzela?
Jak się nazwać
31.10.2011
Tut dobry choć nic trudnego
Jesteś pewien że w case glock ma być ak47 ?
case CSW_GLOCK18: {
fSpeedMultiplier = 0.5
iEnt = fm_find_ent_by_owner(-1, "weapon_ak47", id)
set_pdata_float( iEnt, 46, ( get_pdata_float(iEnt, 46, 4) * fSpeedMultiplier), 4 );
set_pdata_float( iEnt, 47, ( get_pdata_float(iEnt, 47, 4) * fSpeedMultiplier), 4 );
}
Jesteś pewien że w case glock ma być ak47 ?
d0naciak
31.10.2011
@up
Oczywiście gdzie CSW_AWP/CSW_AK47 i "weapon_awp"/"weapon_ak47" zmieniamy na własne np. jeżeli chcemy mieć o połowe wiekszą predkość ataku na deagle, glock'u i m4 switch bedzie wyglądał tak:
ToRRent
01.11.2011
Nawet spoko na początku myślałem że w tym jest też zawarta prędkość przeładowania broni jednak się myliłem
Vandalier88
04.11.2011
Dało by radę to przenieść do samego CoD'a w formie statystyki? W sensie że statystyka Attack Speed i przy 100 punktach szybkość ataku wzrastałaby o połowę. Nie chcę gotowca, wole żeby mi ktoś to wytłumaczył bo się jeszcze uczę.
MarWit
19.11.2011
@UP, da się. Napisz temat w odpowiednim dziale a pewnie ktoś Ci to zrobi/wytłumaczy
Użytkownik MarWit edytował ten post 19.11.2011 11:38
Użytkownik MarWit edytował ten post 19.11.2011 11:38
Gość_Aik_* 19.11.2011
Jak dajesz
to spokojnie można zrobić tego switcha tak:
zawsze to mniej kodu.
default: return PLUGIN_CONTINUE
to spokojnie można zrobić tego switcha tak:
switch(iWeapon)
{
case CSW_GLOCK18: {
fSpeedMultiplier = 0.5
iEnt = fm_find_ent_by_owner(-1, "weapon_glock18", id)
}
case CSW_DEAGLE: {
fSpeedMultiplier = 0.5
iEnt = fm_find_ent_by_owner(-1, "weapon_deagle", id)
}
case CSW_M4A1: {
fSpeedMultiplier = 0.5
iEnt = fm_find_ent_by_owner(-1, "weapon_m4a1", id)
}
default: return PLUGIN_CONTINUE
}
set_pdata_float( iEnt, 46, ( get_pdata_float(iEnt, 46, 4) * fSpeedMultiplier), 4 );
set_pdata_float( iEnt, 47, ( get_pdata_float(iEnt, 47, 4) * fSpeedMultiplier), 4 );
zawsze to mniej kodu.
HaDeS From HELL
07.01.2012
A jak by miał wyglądać kod, tak aby każda broń którą posiada gracz szybciej sztrzelała?
d0naciak
08.01.2012
public eventCurWeapon(id)
{
if(!g_bMaKlase[id])
return PLUGIN_CONTINUE
new iEnt;
static Float:fSpeedMultiplier = 0.3;
{
iEnt = get_user_weapon(id);
set_pdata_float( iEnt, 46, ( get_pdata_float(iEnt, 46, 4) * fSpeedMultiplier), 4 );
set_pdata_float( iEnt, 47, ( get_pdata_float(iEnt, 47, 4) * fSpeedMultiplier), 4 );
}
return PLUGIN_CONTINUE
}
MarWit
08.01.2012
@UP jak juz to:
public eventCurWeapon(id)
{
if(!g_bMaKlase[id])
return PLUGIN_CONTINUE
static Float:fSpeedMultiplier = 0.3;
new szWeaponName[64];
get_weaponname(read_data(2), szWeaponName, 63)
new iEnt = fm_find_ent_by_owner(-1, szWeaponName, id)
set_pdata_float( iEnt, 46, ( get_pdata_float(iEnt, 46, 4) * fSpeedMultiplier), 4 );
set_pdata_float( iEnt, 47, ( get_pdata_float(iEnt, 47, 4) * fSpeedMultiplier), 4 );
return PLUGIN_CONTINUE
}
SoPelQ 11.07.2012
A mi nie chce się to skompilować wywala trochę errorów.
np. Że g_bMaKlase nie jest zdefiniowane.
Użytkownik TinyBoom edytował ten post 11.07.2012 08:42
np. Że g_bMaKlase nie jest zdefiniowane.
Użytkownik TinyBoom edytował ten post 11.07.2012 08:42