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
CoD Nowy

Problem ze statystykami i natychmiastowym zabijaniem(1/x z broni)

cod nowy

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

#1 pro100wHS

    Pomocny

  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:70
  • GG:
  • Lokalizacja:Ziemia
Offline

Napisano 22.07.2014 10:26

Witam.

Jeżeli zły dział to z góry przepraszam, ale tak na prawdę ten temat nadaje się do działu pytania jak i problemy.

Ostatnio chciałem zmienić w statystykach pewną zależność. Normalnie 1ptk w zdrowie dodaje 1HP. Ja chciałem to zmienić na:

2ptk = 1 HP

 

Znalazłem sobie linijkę od tego:

maksymalne_zdrowie_gracza[id] = 100.0+PobierzZdrowie(id, 1, 1, 1);

Zmieniłem na:

maksymalne_zdrowie_gracza[id] = 100.0+PobierzZdrowie(id, 1, 1, 1)*0,5;

Odpaliłem to, w miarę działało. Dlaczego w miarę? Podstawowe punkty w zdrowie zdefiniowane bezpośrednio w klasie dawało na zasadzie 

1ptk=1hp

natomiast punkty przydzielane przez gracza

2ptk=1hp

 

Nie było to dla mnie uciążliwe, bo te kilka hp w te czy we wte nie robiło dla mnie różnicy. Problem się zaczął jak ktoś miał np. 1/1 z awp. Perk(ten który dawał 1/1 z AWP) dziwnym trafem traktował punkty w zdrowie zdefiniowane bezpośrednio w  klasie jak i zdrowie przydzielone przez gracza jednakowo, czyli 

2 ptk = 1 hp.

 

Tak więc nie zabierało wystarczająco hp przeciwnikowi. Powodowało to, że przeciwnik nie dednął, a przekręciła mu się kamerka na bok(tak jak by padł). Mógł natomiast strzelać i chodzić. 

 

Można by oczywiście przerabiać pluginy dające 1/x z broni, ale byłoby to trochę uciążliwe. Teraz pytanie, jak rozwiązać ten problem, żeby edytować co najwyżej silnik.

 

Aby nie szukać załączam link do podstawowego silnika codmod by QTM_Peyote.

 

http://amxx.pl/topic...-mw-mod-update/

 

Za pomoc z góry dzięki. Odwdzięczę się plusami(nie tylko jednym).

 

 

 

 


  • +
  • -
  • 0

b_350_20_FFFFFF_ACBB53_0A0F2E_000000.png

Jeżeli masz do mnie jakąś sprawę to napisz od razu o co ci chodzi.

Wiadomości typu "pomożesz?" bez wyjaśnienia sprawy będę od razu usuwał


#2 xenos

    Wszechobecny

  • Użytkownik

Reputacja: 216
Profesjonalista

  • Postów:467
  • GG:
  • Imię:Konrad
  • Lokalizacja:Rzeszów
Offline

Napisano 23.07.2014 13:28

wiesz okey ustawiłeś max dla użytkownika.
Ale zapomniałeś o jednym
inne pluginy używają przeważnie
cod_get_user_health(id)

I wiesz co im wtedy zwróci?
To samo co by miało zwrócić po wpisaniu : PobierzZdrowie(id, 1, 1, 1);
I tu powstaje problem ustalając zdrowie maxymalne, na końcu dzielisz ilość na 2.
Lecz pluginy używające innej funkcji tego nie robią.


Co do pierwszego problemu co opisałeś żeby zawsze wszystkie punkty dawało 1 hp za 2pkty zastosował bym:

maksymalne_zdrowie_gracza[id] = 100.0+PobierzZdrowie(id, 1,0,0)*0.5+PobierzZdrowie(id, 0,1,0)*0.5+PobierzZdrowie(id, 0,0,1)*0.5;

To dla rozwiązania problemu proponował bym test takiej funkcji PobierzZdrowie //nie sprawdzane czy działa lecz kompilator nie wywala błędów

public PobierzZdrowie(id, zdrowie_zdobyte, zdrowie_klasy, zdrowie_bonusowe)
{
    new zdrowie;
    
    if(zdrowie_zdobyte)
        zdrowie += zdrowie_gracza[id]*0.5;
    if(zdrowie_bonusowe)
        zdrowie += bonusowe_zdrowie_gracza[id]*0.5;
    if(zdrowie_klasy)
        zdrowie += zdrowie_klas[klasa_gracza[id]]*0.5;
    
    return zdrowie;
}

lub w Twoim przypadku jak masz ustawione tak jak masz obecnie to tak:

public PobierzZdrowie(id, zdrowie_zdobyte, zdrowie_klasy, zdrowie_bonusowe)
{
    new zdrowie;
    
    if(zdrowie_zdobyte)
        zdrowie += zdrowie_gracza[id];
    if(zdrowie_bonusowe)
        zdrowie += bonusowe_zdrowie_gracza[id];
    if(zdrowie_klasy)
        zdrowie += zdrowie_klas[klasa_gracza[id]]
    
    return zdrowie*0.5;
}

Użytkownik xenos edytował ten post 23.07.2014 13:29

  • +
  • -
  • 1
"Jeśli potrafię to pomogę, jeśli nie potrafię to wskaże drogę którą trzeba dążyć by znaleźć odpowiedz" 

Pluginy:
Szukanie Aktywnych Banów w AmxBansie
Drop After Death
Kto postawił mine

#3 pro100wHS

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:70
  • GG:
  • Lokalizacja:Ziemia
Offline

Napisano 23.07.2014 20:41

xenos, zrób tak i spójrz na ilość HP :). Kombinowałem na kilka sposobów według wzoru podanego wyżej i rezultaty(w zależności co zmieniałem to jedno z tych występowało):

-klasa zawsze miała 100 HP

-klasa miała 105hp i przy dodawaniu statów na zasadzie:

x/y

x- obecna ilość punktów

y- maksymalna liczba punktów do przydzielenia

to zamiast rosnąć x to malało y :D

-klasa miała miliardy HP :D

 

Dziś jednak jak kombinowałem z tym to przyszła mi do głowy pewna łatka jaką można by zastosować w silniku. Dziś już nie mam sił, żeby tą łatkę napisać i sprawdzić. Jutro napiszę co z tego wyszło. 

 

Czekam na dalsze sugestie, a za chęci daję plusa.


Użytkownik pro100wHS edytował ten post 23.07.2014 20:42

  • +
  • -
  • 0

b_350_20_FFFFFF_ACBB53_0A0F2E_000000.png

Jeżeli masz do mnie jakąś sprawę to napisz od razu o co ci chodzi.

Wiadomości typu "pomożesz?" bez wyjaśnienia sprawy będę od razu usuwał






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

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

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