←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Problem ze statystykami i natychmiastowym...

  • +
  • -
pro100wHS's Photo pro100wHS 22.07.2014

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

 

 

 

 

Quote

  • +
  • -
xenos's Photo xenos 23.07.2014

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

Edited by xenos, 23.07.2014 13:29.
Quote

  • +
  • -
pro100wHS's Photo pro100wHS 23.07.2014

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.


Edited by pro100wHS, 23.07.2014 20:42.
Quote