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 z klasa

cod nowy

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

#1 ChrisN

    Wszechpomocny

  • Użytkownik

Reputacja: 31
Życzliwy

  • Postów:303
  • Imię:Christopher
Offline

Napisano 17.06.2018 11:11

Mam problem klasa regenerator, mianowicie chcialem przerobic to by regenerowalo kondycje ale cos nie dziala

 

/* Plugin generated by AMXX-Studio */
 
 
 
#include <amxmodx>
 
#include <codmod>
 
#include <cstrike>
 
#include <fun>
 
#include <hamsandwich>
 
 
 
#define TASK_REGENERACJA 736
 
 
 
new const nazwa[] = "klasa";
 
new const opis[] = "";
 
new const bronie = 1<<CSW_M4A1;
 
new const zdrowie = 0;
 
new const kondycja = 0;
 
new const inteligencja = 0;
 
new const wytrzymalosc = 0;
 
 
 
new CT_Skins[4][] = {"sas","gsg9","urban","gign"};
 
new Terro_Skins[4][] = {"arctic","leet","guerilla","terror"}
 
 
 
new bool:ma_klase[33];
 
 
 
public plugin_init()
 
{
 
register_plugin(nazwa, "1.0", "radim");
 
 
 
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
 
 
 
RegisterHam(Ham_Spawn, "player", "Spawn", 1);
 
}
 
 
 
public cod_class_enabled(id)
 
{
 
ma_klase[id] = true;
 
ZmienUbranie(id, 0);
 
set_task(1.0, "Regeneracja", id, _, _, "b");
 
}
 
 
 
public cod_class_disabled(id)
 
{
 
ma_klase[id] = false;
 
ZmienUbranie(id, 1);
 
remove_task(id);
 
}
 
 
 
public Spawn(id)
 
{
 
if(ma_klase[id])
 
ZmienUbranie(id, 0);
 
}
 
 
 
public ZmienUbranie(id,reset)
 
{
 
if (!is_user_connected(id))
 
return PLUGIN_CONTINUE;
 
 
 
if (reset)
 
cs_reset_user_model(id);
 
else
 
{
 
new num = random_num(1,1);
 
cs_set_user_model(id, (get_user_team(id) == 1)? CT_Skins[num]: Terro_Skins[num]);
 
}
 
 
 
return PLUGIN_CONTINUE;
 
}
 
 
 
public Regeneracja(id)
 
{
 
id -= TASK_REGENERACJA
 
 
 
if(!is_user_connected(id))
 
return PLUGIN_CONTINUE;
 
 
 
if(!ma_klase[id])
 
    return PLUGIN_CONTINUE;
 
 
 
   if(get_user_weapon(id) == CSW_KNIFE)
 
{
 
set_task(1.0, "Regeneracja", id+TASK_REGENERACJA);
 
 
 
if(is_user_alive(id))
 
{
 
new cur_health = cod_get_user_trim(id);
 
new max_health = cod_get_user_trim(id);
 
new new_health = cur_health+5<max_health? cur_health+5: max_health;
 
cod_set_user_bonus_trim(id, new_health);
 
}
 
}
 
return PLUGIN_CONTINUE;
 
}

  • +
  • -
  • 0

#2 ChrisN

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 31
Życzliwy

  • Postów:303
  • Imię:Christopher
Offline

Napisano 17.06.2018 20:50

mhmhmhm


  • +
  • -
  • 0

#3 ChrisN

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 31
Życzliwy

  • Postów:303
  • Imię:Christopher
Offline

Napisano 18.06.2018 17:00

Ehh, nikt nie wie? :( 


  • +
  • -
  • 0

#4 Toldi

    Czempion

  • Power User

Reputacja: 259
Wszechwidzący

  • Postów:841
  • Imię:Mateusz
  • Lokalizacja:wies
Offline

Napisano 18.06.2018 20:41

Hmmm. Przecież kondycja w cod mod jest stała (umiejetnosc) a nie spada w czasie rundy tak jak hp po otrzymaniu obrażeń no chyba że ty coś tam zmieniałeś w mechanice.


  • +
  • -
  • 0

#5 ChrisN

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 31
Życzliwy

  • Postów:303
  • Imię:Christopher
Offline

Napisano 18.06.2018 22:59

Hmmm. Przecież kondycja w cod mod jest stała (umiejetnosc) a nie spada w czasie rundy tak jak hp po otrzymaniu obrażeń no chyba że ty coś tam zmieniałeś w mechanice.


Kondycja będzie miała inne zastosowanie przez co właśnie będzie spadać, dlatego chcę ta regeneracje ogarnąć :/
  • +
  • -
  • 0

#6 Toldi

    Czempion

  • Power User

Reputacja: 259
Wszechwidzący

  • Postów:841
  • Imię:Mateusz
  • Lokalizacja:wies
Offline

Napisano 19.06.2018 13:07

Popatrz się na ten kod i przeanalizuj go a znajdziesz błąd.

new cur_health = cod_get_user_trim(id);
new max_health = cod_get_user_trim(id);
new new_health = cur_health+5<max_health? cur_health+5: max_health;
cod_set_user_bonus_trim(id, new_health);

Gdy chcesz pobrać hp gracza to używasz cod_get_user_healt(id) (chyba nie pomylilem nazwy funckji), gdy chcesz pobrać maksymalną ilość zdrowia gracz to robisz to w sposób taki:

cod_get_user_healt(id)+100

W twoim przypadku pobierasz aktualną ilość kondycji gracza new 

cur_health = cod_get_user_trim(id);

co jest akurat dobrze ale gdy pobierasz maksymalną ilość kondycji gracza to robisz to w identyczny sposób jak wyżej przez co jest właśnie źle. Spoglądając na funkcję, która pobiera maksymalną ilość hp gracza z kondycją trzeba by zrobić identycznie tj.

new max_health = cod_get_user_trim(id)+100;

Niestety nw jak u Ciebie jest z tym działaniem kondycji i czy powyższa funkcja zwróci maksymalny możliwy poziom posiadanej kondycji tak jak się to robi w przypadku zdrowia. Zatem analizując przedostatni kod nie będzie on działał tak jak byś sb tego życzył. Powód?

new new_health = cur_health+5<max_health? cur_health+5: max_health;

Zmienna new_health przyjmuję wartość gdy "aktualna ilość kondycji gracza + 5 jest mniejsza od możliwej maksymalnej kondycji gracza to dodaj graczowi +5 do kondycji" w momencie gdy "aktualna ilość kondycji gracza + 5 jest większa od maksymalnej możliwej posiadanej kondycji gracza to ustaw kondycję gracza na jego maksymalny w tym momencie dozwolony poziom".

Mam nadzieję że mnie jakoś zrozumiałeś i się nie pogubiłeś :).


  • +
  • -
  • 0

#7 ChrisN

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 31
Życzliwy

  • Postów:303
  • Imię:Christopher
Offline

Napisano 19.06.2018 13:40

Popatrz się na ten kod i przeanalizuj go a znajdziesz błąd.

new cur_health = cod_get_user_trim(id);new max_health = cod_get_user_trim(id);new new_health = cur_health+5<max_health? cur_health+5: max_health;cod_set_user_bonus_trim(id, new_health);
Gdy chcesz pobrać hp gracza to używasz cod_get_user_healt(id) (chyba nie pomylilem nazwy funckji), gdy chcesz pobrać maksymalną ilość zdrowia gracz to robisz to w sposób taki:
cod_get_user_healt(id)+100
W twoim przypadku pobierasz aktualną ilość kondycji gracza new 
cur_health = cod_get_user_trim(id);
co jest akurat dobrze ale gdy pobierasz maksymalną ilość kondycji gracza to robisz to w identyczny sposób jak wyżej przez co jest właśnie źle. Spoglądając na funkcję, która pobiera maksymalną ilość hp gracza z kondycją trzeba by zrobić identycznie tj.
new max_health = cod_get_user_trim(id)+100;
Niestety nw jak u Ciebie jest z tym działaniem kondycji i czy powyższa funkcja zwróci maksymalny możliwy poziom posiadanej kondycji tak jak się to robi w przypadku zdrowia. Zatem analizując przedostatni kod nie będzie on działał tak jak byś sb tego życzył. Powód?
new new_health = cur_health+5<max_health? cur_health+5: max_health;
Zmienna new_health przyjmuję wartość gdy "aktualna ilość kondycji gracza + 5 jest mniejsza od możliwej maksymalnej kondycji gracza to dodaj graczowi +5 do kondycji" w momencie gdy "aktualna ilość kondycji gracza + 5 jest większa od maksymalnej możliwej posiadanej kondycji gracza to ustaw kondycję gracza na jego maksymalny w tym momencie dozwolony poziom".
Mam nadzieję że mnie jakoś zrozumiałeś i się nie pogubiłeś :).
Czyli jeśli mam domyślnie w każdej klasie 10, powinno zadziałać coś takiego new max_health = cod_get_user_trim(id)+10;
  • +
  • -
  • 0

#8 Toldi

    Czempion

  • Power User

Reputacja: 259
Wszechwidzący

  • Postów:841
  • Imię:Mateusz
  • Lokalizacja:wies
Offline

Napisano 19.06.2018 13:54

Tak jak mówię nie wiem czy zadziała to z kondycją tak jak działa ze zdrowiem ale spróbuj tego

new max_healt = cod_get_user_trim(id)+100;

Jak zadziała to super a jak nie no to może jeszcze coś wykombinuję.


  • +
  • -
  • 0

#9 ChrisN

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 31
Życzliwy

  • Postów:303
  • Imię:Christopher
Offline

Napisano 19.06.2018 16:47

Tak jak mówię nie wiem czy zadziała to z kondycją tak jak działa ze zdrowiem ale spróbuj tego

new max_healt = cod_get_user_trim(id)+100;

Jak zadziała to super a jak nie no to może jeszcze coś wykombinuję.

 

Niestety nie działa :( U mnie kondycja jest po prostu usuwana i coś mi się wydaje, że to przez to bo jak odejmę kondycje za pomoca cod_set_user_bonus_trim( cod_get_user_trim(id)-250) wtedy ta kondycja zmniejsza się o te 250 i ustawia się powiedzmy 50 i jest to traktowane jako maksymalna kondycja gracza, dopiero w nastepnej rundzie sie regeneruje ;/


  • +
  • -
  • 0

#10 ChrisN

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 31
Życzliwy

  • Postów:303
  • Imię:Christopher
Offline

Napisano 20.06.2018 13:18

W sumie kondycja u mnie nie dodaje prędkości graczom, więc można by ją wywalić całkiem i stworzyć nową statystykę tylko jak by w tej nowej statystyce rozkminić by działała na zasadzie zdrowia, by można było ją zregenerować, a nie jak się zabierze graczowi 10 inty to ustawia sie maks inty wlasnie na liczbę która zostanie po MAX_INT-10=NEW_MAX_INT


  • +
  • -
  • 0





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