←  Poradniki, Łatki oraz Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Zmiana prędkości ataku bronią

  • +
  • -
MarWit - zdjęcie 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 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 ;)
Odpowiedz

  • +
  • -
radim - zdjęcie radim 31.10.2011

Dobry tut ;) Plusik oczywiście xD
Odpowiedz

  • +
  • -
xxdrago - zdjęcie xxdrago 31.10.2011

Nie wiem czy dobrze zrozumiałem ale chodzi o to , że broń szybciej strzela?
Odpowiedz

  • +
  • -
HaDeS From HELL - zdjęcie HaDeS From HELL 31.10.2011

Właśnie tego potrzebowałem :D + dobra robota :D
Odpowiedz

  • +
  • -
Czakus - zdjęcie Czakus 31.10.2011

Takie coś na starego Cod moda by się zdało ; ) xD
Odpowiedz

  • +
  • -
MarWit - zdjęcie MarWit 31.10.2011

@xxdrago, dokładnie to :)
Odpowiedz

  • +
  • -
Jak się nazwać - zdjęcie Jak się nazwać 31.10.2011

Tut dobry choć nic trudnego ;P

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 ?
Odpowiedz

  • +
  • -
d0naciak - zdjęcie 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:

Odpowiedz

  • +
  • -
MarWit - zdjęcie MarWit 31.10.2011

@Jak się nazwać, dzięki :D Poprawione :)
Odpowiedz

  • +
  • -
ToRRent - zdjęcie ToRRent 01.11.2011

Nawet spoko :D na początku myślałem że w tym jest też zawarta prędkość przeładowania broni jednak się myliłem :P
Odpowiedz

  • +
  • -
Vandalier88 - zdjęcie 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ę.
Odpowiedz

  • +
  • -
MarWit - zdjęcie 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
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 19.11.2011

http://amxx.pl/topic...ive-item-speed/ tu też są informacje o broniach ;)
Odpowiedz

  • +
  • -
MarWit - zdjęcie MarWit 19.11.2011

@UP, dodane do 1 posta ;)
Odpowiedz

Gość_Aik_* 19.11.2011

Jak dajesz

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.
MarWit (14.01.2012 21:33):
Fakt, poprawione.
Odpowiedz

  • +
  • -
HaDeS From HELL - zdjęcie 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?
Odpowiedz

  • +
  • -
d0naciak - zdjęcie 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
}

Odpowiedz

  • +
  • -
MarWit - zdjęcie 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
}
Odpowiedz

  • +
  • -
d0naciak - zdjęcie d0naciak 08.01.2012

racja +
Odpowiedz

SoPelQ - zdjęcie 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
Odpowiedz