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

[ROZWIĄZANE] Licznik zabić przez skoczenie na głowę.


  • Zamknięty Temat jest zamknięty
39 odpowiedzi w tym temacie

#1 Kłusownik

    Banned

  • Zbanowany

Reputacja: 6
Nowy

  • Postów:97
  • Imię:zenek
  • Lokalizacja:Polska
Offline

Napisano 25.06.2012 14:25

Powie mi ktoś jak zrobić licznik zabić przez skoczenie na głowę? Chciałbym aby każdemu graczowi liczyło osobno, do bf2 moda mi to potrzebne jest.
Wie ktoś jak to zrobić?

Pozdrawiam!

Załączone pliki



#2 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 25.06.2012 15:03

Ja mam w moim BF2modzie zabicia skokiem na głowę :D

Do headsplasha dodajemy natyw, który będzie wykonywany w momencie skoczenia komuś na głowę:

Załączony plik  head_splash.sma   7,18 KB  13 Ilość pobrań
  head_splash.amxx

Potrzebny będzie include do natywów:

Załączony plik  HeadSplash.inc   145 bajtów  13 Ilość pobrań


W BF2modzie, w głównym SMA dodajemy

new headsplashes[33];
new Rheadsplashes[33];


w plugin_natives() (jeśli nie ma, utwórz), dodaj obsługę headsplasha
register_library("HeadSplash");
register_native("HeadSplash", "n_HeadSplash");

public n_HeadSplash(plugin, params){
new id = get_param(1);
++headsplashes[id];
++Rheadsplashes[id];
++totalkills[id];
save_badges(id);
DisplayHUD(id);
}


Zmienna headsplashes przechowuje liczbę zgnieceń wroga.
Rheadsplashes przechowuje liczbę zgnieceń wroga w danej rundzie.

Nie zapomnij w nowej rundzie (np. w LogEvent_Round_Start) wyzerować Rheadsplashes.
Np.
public LogEvent_Round_Start()
{
freezetime = false;

for(new i = 1; i <= gMaxPlayers; i++) {
set_task(0.1, "set_speed", i);
set_task(0.1, "set_gravity", i);
Rheadsplashes[i]=0;
}
// (...)
}


#3 Kłusownik

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 6
Nowy

  • Postów:97
  • Imię:zenek
  • Lokalizacja:Polska
Offline

Napisano 25.06.2012 15:17

nie moge pobrać załącznika. i chodziło mi raczej o licznik zabić aby było tak samo jak z określonej broni to i z tego ...
Ale czy mógłbys gdzieś indziej dac ten HeadSplash.inc? bo nie moge pobierać ... nie wiem czemu.

#4 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 25.06.2012 15:20

Jeszcze nie zdążyłem napisać postu, więc nie mogłeś pobrać :)
Teraz pobierzesz bez problemu.

Z resztą powinieneś sobie dać radę, skoro zabierasz się za modyfikację BF2moda.
Jeśli coś by Ci nie działało, to śmiało pisz.

#5 Kłusownik

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 6
Nowy

  • Postów:97
  • Imię:zenek
  • Lokalizacja:Polska
Offline

Napisano 25.06.2012 16:04

a wiesz jak zrobic aby w statystykach bf2 liczyło ile mamy takich zabić?


//AMXXPC compile.exe
// by the AMX Mod X Dev Team


//// bf2rank.sma
// D:\HNS\KOMPILACJA\bf2rank.sma(530) : error 029: invalid expression, assumed z
ero
// D:\HNS\KOMPILACJA\bf2rank.sma(530) : error 017: undefined symbol "n_HeadSplas
h"
// D:\HNS\KOMPILACJA\bf2rank.sma(530) : error 017: undefined symbol "params"
// D:\HNS\KOMPILACJA\bf2rank.sma(530) : fatal error 107: too many error messages
on one line
//
// Compilation aborted.
// 4 Errors.
// Could not locate output file compiled\bf2rank.amx (compile failed).
//
// Compilation Time: 1,41 sec
// ----------------------------------------

//// head_splash.sma
// Already compiled.
// ----------------------------------------

//// hpRank.sma
// Already compiled.
// ----------------------------------------

//// misje.sma
// Already compiled.
// ----------------------------------------

Press enter to exit ...


Linika 525-538

public plugin_natives(){
register_native("badge_use", "_badge_use")
register_library("HeadSplash");
register_native("HeadSplash", "n_HeadSplash");

public n_HeadSplash(plugin, params){
new id = get_param(1);
++headsplashes[id];
++Rheadsplashes[id];
++totalkills[id];
save_badges(id);
DisplayHUD(id);
}
}

Użytkownik Kłusownik edytował ten post 25.06.2012 16:15


#6 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 25.06.2012 16:07

http://amxx.pl/topic...we/#entry424217

#7 Kłusownik

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 6
Nowy

  • Postów:97
  • Imię:zenek
  • Lokalizacja:Polska
Offline

Napisano 25.06.2012 16:17

@UP... bład przy kompilacji się pokazuje.

#8 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 25.06.2012 16:45

Z kodu podanego, nie ma zamknięte klamry w plugin_natives, ale najlepiej podaj całą funkcję powodującą błędy.

#9 Kłusownik

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 6
Nowy

  • Postów:97
  • Imię:zenek
  • Lokalizacja:Polska
Offline

Napisano 25.06.2012 16:52


public Bug_Ciche_Chodzenie(id)
{
if(is_user_alive(id))
{
new Float:fVector[3];
pev(id, pev_velocity, fVector)
new Float: fSpeed = floatsqroot(fVector[0]*fVector[0]+fVector[1]*fVector[1]+fVector[2]*fVector[2])
if((fm_get_user_maxspeed(id) * 5) > (fSpeed*9))
set_pev(id, pev_flTimeStepSound, 300)
}
}

public plugin_natives(){
register_native("badge_use", "_badge_use")
register_library("HeadSplash");
register_native("HeadSplash", "n_HeadSplash");

public n_HeadSplash(plugin, params){
new id = get_param(1);
++headsplashes[id];
++Rheadsplashes[id];
++totalkills[id];
save_badges(id);
DisplayHUD(id);
}
}


Całość:
http://wklej.org/id/779546/

Użytkownik Kłusownik edytował ten post 25.06.2012 16:55


#10 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 25.06.2012 16:55

Nie możesz zagnieżdżać funkcji w ten sposób.

Zamień powyższy kod na
public Bug_Ciche_Chodzenie(id)
{
if(is_user_alive(id))
{
new Float:fVector[3];
pev(id, pev_velocity, fVector)
new Float: fSpeed = floatsqroot(fVector[0]*fVector[0]+fVector[1]*fVector[1]+fVector[2]*fVector[2])
if((fm_get_user_maxspeed(id) * 5) > (fSpeed*9))
set_pev(id, pev_flTimeStepSound, 300)
}
}

public plugin_natives(){
register_native("badge_use", "_badge_use")
register_library("HeadSplash");
register_native("HeadSplash", "n_HeadSplash");
}

public n_HeadSplash(plugin, params){
new id = get_param(1);
++headsplashes[id];
++Rheadsplashes[id];
++totalkills[id];
save_badges(id);
DisplayHUD(id);
}


#11 Kłusownik

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 6
Nowy

  • Postów:97
  • Imię:zenek
  • Lokalizacja:Polska
Offline

Napisano 25.06.2012 17:01

teraz aby dodać do statystyk to musze kożystać z tego nie?
headsplashes

#12 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 25.06.2012 17:12

tak

#13 Kłusownik

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 6
Nowy

  • Postów:97
  • Imię:zenek
  • Lokalizacja:Polska
Offline

Napisano 25.06.2012 17:17

Coś w save.inl nie tak :(

Kod: Wklejka #779568 – Wklej.org
Błędy:

/AMXXPC compile.exe
// by the AMX Mod X Dev Team


//// bf2rank.sma
// bf2/check.inl(217) : error 028: invalid subscript (not an array or too many s
ubscripts): "kills"
// bf2/check.inl(217) : warning 215: expression has no effect
// bf2/check.inl(217) : error 001: expected token: ";", but found "]"
// bf2/check.inl(217) : error 029: invalid expression, assumed zero
// bf2/check.inl(217) : fatal error 107: too many error messages on one line
//
// Compilation aborted.
// 4 Errors.
// Could not locate output file compiled\bf2rank.amx (compile failed).
//
// Compilation Time: 1,3 sec
// ----------------------------------------

Press enter to exit ...

Użytkownik Kłusownik edytował ten post 25.06.2012 17:22


#14 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 25.06.2012 17:28

Backup

Przed puszczeniem nowej wersji zapisu, zrób na wszelki wypadek kopię danych nvault z bf2moda.



Zamiast
formatex(vaultdata, charsmax(vaultdata), "%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#", g_PlayerBadges[id][BADGE_KNIFE], g_PlayerBadges[id][BADGE_HE], g_PlayerBadges[id][BADGE_GLOWA],
g_PlayerBadges[id][BADGE_RUNDA], knifekills[id], totalkills[id], grenadekills[id], headsplashes[id], gold[id], silver[id], bronze[id]);
daj
formatex(vaultdata, charsmax(vaultdata), "%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i", g_PlayerBadges[id][BADGE_KNIFE], g_PlayerBadges[id][BADGE_HE], g_PlayerBadges[id][BADGE_GLOWA],
g_PlayerBadges[id][BADGE_RUNDA], knifekills[id], totalkills[id], grenadekills[id], gold[id], silver[id], bronze[id], headsplashes[id]);


Zawartość check.inl też podaj, najprawdopodobniej literówka.

edit. Podobnie z load, także dopisuj te nowe dane (zarówno odznaka z BADGE_GLOWA, jak i statystyki) dodaj na końcu, bo inaczej wczytają Ci się inne dane, niż należy.

#15 Kłusownik

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 6
Nowy

  • Postów:97
  • Imię:zenek
  • Lokalizacja:Polska
Offline

Napisano 25.06.2012 17:30

Check.inl

http://wklej.org/id/779576/

Użytkownik Kłusownik edytował ten post 25.06.2012 17:32


#16 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 25.06.2012 17:36

199-243 check.inl:

        //Headsplash badge section
currentbadge=g_PlayerBadges[id][BADGE_GLOWA];
wstats[0]=0;
wstats[4]=0;
wstats[5]=0;
wroundstats[0]=0;

get_user_stats(id,wstats,wbodyhits);

new acc = floatround((float(wstats[5])/float(wstats[4]))*100);
accuracy[id]=acc;

kills=headsplashes[id];

switch (currentbadge)
{
case LEVEL_NONE:
{
if (kills>49)
{
g_PlayerBadges[id][BADGE_GLOWA]=LEVEL_BASIC; //Basic Headsplash Badge
client_print(id,print_chat,"[HNS] Zdobyles odznake: %s",gBadgeName[BADGE_GLOWA][LEVEL_BASIC]);
badgegained=true;
}
}
case LEVEL_BASIC:
{
if (kills>99)
{
g_PlayerBadges[id][BADGE_GLOWA]=LEVEL_VETERAN; //Veteran Headsplash Badge
client_print(id,print_chat,"[HNS] Zdobyles odznake: %s",gBadgeName[BADGE_GLOWA][LEVEL_VETERAN]);
badgegained=true;
}
}
case LEVEL_VETERAN:
{
if (kills>149)
{
g_PlayerBadges[id][BADGE_GLOWA]=LEVEL_EXPERT; //Expert Headsplash Badge
client_print(id,print_chat,"[HNS] Zdobyles odznake: %s",gBadgeName[BADGE_GLOWA][LEVEL_EXPERT]);
badgegained=true;
}
}
}
//End Headsplash section
Zamiast kills[id] wystarczy dać kills, bo nie jst to tablica, lecz zwykła zmienna.

#17 Kłusownik

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 6
Nowy

  • Postów:97
  • Imię:zenek
  • Lokalizacja:Polska
Offline

Napisano 25.06.2012 17:54

nie dodaje zabić do statystyk :( ani ogólnych bf2 ani do specjalnej do tego przyznaczonej :(

#18 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 25.06.2012 17:57

Wyślij całość spakowaną (RAR/ZIP) (bez plików AMXX!) to przerobię Ci i wyślę gotowca, bo tak, to będzie to trwało wieczność.
Przy okazji: rozumiem, że zapisujesz nvaultem, nie SQL?

#19 Kłusownik

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 6
Nowy

  • Postów:97
  • Imię:zenek
  • Lokalizacja:Polska
Offline

Napisano 25.06.2012 18:01

tak nvault ;) jak by bylo sql to bym nie pracowal w save.inl :D
Jak plugin będzie gotowy to prosił bym o wysłanie na pw jak byś mógł. z góry dzięki.

Załączone pliki


Użytkownik Kłusownik edytował ten post 25.06.2012 18:03


#20 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 25.06.2012 18:34

Zmieniłem jedynie vault_load() oraz save_badges() z save.inl
Resztę, widzę, już zrobiłeś.

Przypominam o backupie danych z vault, sprawdź, czy działa.
I upewnij się, że masz plugin headsplash wraz z natywem, który dodałem w 1. moim poście, inaczej nie będzie liczyło zabić skokiem na głowę.

Załączony plik  save.inl   8,2 KB  13 Ilość pobrań





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

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