Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Inny

Przykładowe tworzenie broni w GGPro

inny

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
5 odpowiedzi w tym temacie

#1 d0naciak

    Godlike

  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

Napisano 16.04.2013 16:50

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})   
}

 


  • +
  • -
  • 4

#2 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 16.04.2013 16:54

Fajny szybki poradnik, lecz skoro to jest poradnik ( czyli wg mnie tutorial ) powinieneś opisać co do czego śłóży.
public UpdateClientData(id, sw, cd_handle)
{
    if(ma_bron[id])
        set_cd(cd_handle, CD_PunchAngle, {0.0,0.0,0.0})   
}
akurat ja nawet nie mam pojęcia co to jest set_cd(...) +

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#3 sNH.

    Czy MisieQ ukradł ciasteczko?

  • Power User

Reputacja: 299
Wszechwidzący

  • Postów:1 070
  • Steam:steam
  • Imię:Bartek
  • Lokalizacja:Ełk
Offline

Napisano 16.04.2013 17:54

@up

Czy to nie jest przypadkiem "coś" związanego z no recoilem? Widziałem podobną linijkę


  • +
  • -
  • 0

#4 d0naciak

    Godlike

  • Autor tematu
  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

Napisano 16.04.2013 18:03

 

Tera operacje kiedy gracz ma broń, u mnie gracz będzie dostawał brak rozrzutu, trzeba dodać do plugin_init

 


  • +
  • -
  • 0

#5 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 16.04.2013 18:05

akurat ja nawet nie mam pojęcia co to jest set_cd(...) +

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#6 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 16.04.2013 18:12

akurat ja nawet nie mam pojęcia co to jest set_cd(...) +

Przecież to tak naprawdę nie ma nic wspólnego z całym zamysłem jak takie tworzenie broni ma działać, to jest tylko przykładowy kod, nie trzeba tego dodawać do każdej niestandardowej broni. A samo "set_cd" jest po prostu czymś takim jak "set_pev" (nie traktować tego dosłownie). Sam szkielet takiego pluginu powinien wyglądać tak
#include <amxmodx>
#include <ggpro>

#define PLUGIN "GG Weapon: NAZWA_BRONI"
#define VERSION "1.0"
#define AUTHOR "d0naciak"

new bool:ma_bron[33];

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
}

public gg_weapon_gived(id, bron[])
{
if(equal(bron, "NAZWA_BRONI"))
{
ma_bron[id] = true;
}
}

public gg_weapon_taked(id, bron[])
if(equal(bron, "NAZWA_BRONI"))
ma_bron[id] = false;

Reszta kodu może być dowolna, nawet tak naprawdę tutaj można robić coś podobnego do perków z coda czy itemów z diablo.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo






Również z jednym lub większą ilością słów kluczowych: inny

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych