[ROZWIĄZANE] Obrazenia w CoD | cod_inflict...
Najlepsza odpowiedź
BlackPerfum
29.06.2014 13:41
Alez to nie ma różnicy czy to będzie DMG_CODSKILL czy coś innego ważne by nie posiadało dwóch bitów 1<<1(strzał) i 1<<24(he) (no najlepiej nie zadawać żadnego dotychczas zdefiniowanego)A czy nie powinno to byc DMG_CODSKILL ? Bo w codmod.inc jest cos takiego zdefiniowane.
Nie raz na parę razy wcześniej gracz umiera niż zostanie ustawione pdata dlatego samemu zacząłem je ustawiaćad 3. A nie wystarczy samo ExecuteHamB(Ham_Killed, vid, kid, 1) ?

Bo nie informujemy ham'a o tym czym zabijamy gracza. Ta funkcja została stworzona z zmyślą o zabiajania go czymś innym niż normalnymi broniami dlatego classname byt'u zabijającego (którego właścicielem jest gracz który zabija) jest "world"Tak właściwie to dlaczego ta ikonka sie taka niepoprawna robi? Przeciez obrazenia zadaje gracz z jego broni. Wystarczy ustawic chyba damagebits..

Błędy np. takie że dostaniemy minimalnie więcej expa niż powinniśmy lub zabierze nam mniej wytrzymałości przedmiotu niż powinnoJakich błędów? Nie gram na CoD'ach ( chyba ze na swoim ). Powiedz jaka jest ta różnica.

Rozwiązaniem by było przerobieniem całkowicie tej funkcji a wtedy rezultat będzie taki sam jak używanie: ExecuteHamBad 5. A nie mozna za pomoca cod_inflict_damage tego rozwiazac?


Nie ale być może wartość tej zmiennej zmiania adres ale nigdy tego nie sprawdzałem. Np. nie musisz co 1/x sec robić y zmiennych w think'ach wszystkich bytów nad którymi operujesz. Wystarczy że raz utworzysz stałą6. Zmienna statyczna tez jest niszczona po wykonaniu funkcji? Jakie zastosowanie to ma praktyczne?
Ja zauważyłem tylko jedną (może być więcej):7. Jaka jest roznica miedzy const a new const?
• Jeśli użyjesz new const to nie musisz od razu przy tworzeniu nadawać zmiennej wartość to znaczy ta Stała tak naprawdę jest zmienną gdyż może (podczas wykonywania kodu) zawierać dwie różne wartości albo x albo 0. 0 to jej standardowa wartość a x to nadana przez ciebie. Jak już takiej stałej nadasz wartość to już nie możesz tej wartości zmienić

• Jeśli użyjesz const to musisz od razu nadać swojej stałej wartość a zatem może miec ona zawsze tylko jedną wartość tą którą ty jej nadajesz
.
Przez ta różnicę stałą new const nie można użyć przy tworzeniu tablicy jako ilośc komórek


Rivit
28.06.2014
Witam.
Odnosnie tego tematu: http://amxx.pl/topic...-setparamfloat/
od 8 posta zaczalem sie pytac jak **** zamiast zalozyc wlasny temat. I prosilbym o przeczytanie od tamtego momentu.
1. dmg z rakiety/miny/dynamitu to jakie damagebits?
2. Czyli jak sobie dodam w silniku CoD to 'B' to będę mogl zadawac dmg (nie dodawac tylko zadawac)? Np z rakiety. Intuicja mowi mi ze tak.
3. W tym kodzie co podal BlackPerfum (2 post) to za poprawne wyswietlanie ikonki odpowiada funkcja KillPlayer czy to zlapane DeathMsg?
4. Czyli szanse na 1/x z broni/he mam umiescic w takedamage pre? Jakie parametry
ma ta funkcja (w naglowku)?
5. Czyli dodawac dmg mam za pomoca SetHamParamFloat?
BlackPerfum
28.06.2014
1. dmg z rakiety/miny/dynamitu to jakie damagebits?
Takie jakie sobie ustawisz w ostatnim parametrze cod_inflict_damage/ExecuteHam
/ExecuteHamB
2. Czyli jak sobie dodam w silniku CoD to 'B' to będę mogl zadawac dmg (nie dodawac tylko zadawac)? Np z rakiety. Intuicja mowi mi ze tak.
Tak (bez tego B też możesz ale jest to sprzeczne z grą i nie kompatybilne z innymi pluginami)
3. W tym kodzie co podal BlackPerfum (2 post) to za poprawne wyswietlanie ikonki odpowiada funkcja KillPlayer czy to zlapane DeathMsg?
I to i to bo bez KillPlayer nie ustawisz poprawnego damagebits które jest potrzebne do poprawnego działania DeathMsg
4. Czyli szanse na 1/x z broni/he mam umiescic w takedamage pre?
Teoretycznie zapewni to większą optymalność + brak głupich błędów a praktycznie to prawie żadnej różnicy nie robi Różnice zobaczysz jeśli będziesz 2 lata expił z 1/x w pre i z 1/x w post
Jakie parametry
ma ta funkcja (w naglowku)?
Jaka funkcja?? Ham_Killed(tylko że to nagłówek nie jest)?
ExecuteHam/ExecuteHamB(Ham_Killed,x,y,z)
• x - osoba która ma zostać zabita (1~32)
• y - osoba która zabija osobe x (1~32)
• z - czy ciało osoby zabitej ma zostać pokażane
DeathMsg Ma trzy parametry:
1. - Id wiadomości (to samo co get_user_msg)
2. - Typ wiadomości. Dostępne typy:
#define MSG_BROADCAST 0 // Zawodne wysłanie do wszystkich #define MSG_ONE 1 // Pewne wysłanie do jednego gracza #define MSG_ALL 2 // Pewne do wszystkich graczy #define MSG_INIT 3 // Write to the init string #define MSG_PVS 4 // Ents in PVS of origin #define MSG_PAS 5 // Ents in PAS of origin #define MSG_PVS_R 6 // Reliable to PVS #define MSG_PAS_R 7 // Reliable to PAS #define MSG_ONE_UNRELIABLE 8 // Zawodne wysłanie do 1 gracza #define MSG_SPEC 9 // do wszystkich widzów
3. - Id odbiorcy (id osoby do której dochodzi wiadomość a nie jej wykonawcy)
(Bo takedamage to chyba wiesz)
5. Czyli dodawac dmg mam za pomoca SetHamParamFloat?
Tak
Rivit
29.06.2014
A czy nie powinno to byc DMG_CODSKILL ? Bo w codmod.inc jest cos takiego zdefiniowane.
ad 2. rozumiem
ad 3. A nie wystarczy samo ExecuteHamB(Ham_Killed, vid, kid, 1) ?
Tak właściwie to dlaczego ta ikonka sie taka niepoprawna robi? Przeciez obrazenia zadaje gracz z jego broni. Wystarczy ustawic chyba damagebits...
ad 4. Jakich błędów? Nie gram na CoD'ach ( chyba ze na swoim ). Powiedz jaka jest ta różnica.
Parametry rozumiem.
ad 5. A nie mozna za pomoca cod_inflict_damage tego rozwiazac? Chodzi mi o jakas modyfikacje tej funkcji zeby mozna bylo dodawac i zadawac dmg. Zeby zwracala SetHamParamFloat i tu wartosci uwzglednic jakie sa przeslane do tej funkcji ?
Moze glupi pomysl ale zawsze warto spytac
6. Zmienna statyczna tez jest niszczona po wykonaniu funkcji? Jakie zastosowanie to ma praktyczne?
7. Jaka jest roznica miedzy const a new const?
Sorki ze dokladam ale to chyba ostatnie pytania. dzięki z odp.
Najlepsza odpowiedź
BlackPerfum
29.06.2014
Alez to nie ma różnicy czy to będzie DMG_CODSKILL czy coś innego ważne by nie posiadało dwóch bitów 1<<1(strzał) i 1<<24(he) (no najlepiej nie zadawać żadnego dotychczas zdefiniowanego)A czy nie powinno to byc DMG_CODSKILL ? Bo w codmod.inc jest cos takiego zdefiniowane.
Nie raz na parę razy wcześniej gracz umiera niż zostanie ustawione pdata dlatego samemu zacząłem je ustawiaćad 3. A nie wystarczy samo ExecuteHamB(Ham_Killed, vid, kid, 1) ?

Bo nie informujemy ham'a o tym czym zabijamy gracza. Ta funkcja została stworzona z zmyślą o zabiajania go czymś innym niż normalnymi broniami dlatego classname byt'u zabijającego (którego właścicielem jest gracz który zabija) jest "world"Tak właściwie to dlaczego ta ikonka sie taka niepoprawna robi? Przeciez obrazenia zadaje gracz z jego broni. Wystarczy ustawic chyba damagebits..

Błędy np. takie że dostaniemy minimalnie więcej expa niż powinniśmy lub zabierze nam mniej wytrzymałości przedmiotu niż powinnoJakich błędów? Nie gram na CoD'ach ( chyba ze na swoim ). Powiedz jaka jest ta różnica.

Rozwiązaniem by było przerobieniem całkowicie tej funkcji a wtedy rezultat będzie taki sam jak używanie: ExecuteHamBad 5. A nie mozna za pomoca cod_inflict_damage tego rozwiazac?


Nie ale być może wartość tej zmiennej zmiania adres ale nigdy tego nie sprawdzałem. Np. nie musisz co 1/x sec robić y zmiennych w think'ach wszystkich bytów nad którymi operujesz. Wystarczy że raz utworzysz stałą6. Zmienna statyczna tez jest niszczona po wykonaniu funkcji? Jakie zastosowanie to ma praktyczne?
Ja zauważyłem tylko jedną (może być więcej):7. Jaka jest roznica miedzy const a new const?
• Jeśli użyjesz new const to nie musisz od razu przy tworzeniu nadawać zmiennej wartość to znaczy ta Stała tak naprawdę jest zmienną gdyż może (podczas wykonywania kodu) zawierać dwie różne wartości albo x albo 0. 0 to jej standardowa wartość a x to nadana przez ciebie. Jak już takiej stałej nadasz wartość to już nie możesz tej wartości zmienić

• Jeśli użyjesz const to musisz od razu nadać swojej stałej wartość a zatem może miec ona zawsze tylko jedną wartość tą którą ty jej nadajesz
.
Przez ta różnicę stałą new const nie można użyć przy tworzeniu tablicy jako ilośc komórek

Użytkownik BlackPerfum edytował ten post 29.06.2014 13:45
Rivit
29.06.2014
TibacK, dnia 29 Cze 2014 - 07:58, napisał:
A czy nie powinno to byc DMG_CODSKILL ? Bo w codmod.inc jest cos takiego zdefiniowane.
Alez to nie ma różnicy czy to będzie DMG_CODSKILL czy coś innego ważne by nie posiadało dwóch bitów 1<<1(strzał) i 1<<24(he) (no najlepiej nie zadawać żadnego dotychczas zdefiniowanego)
public ZadajObrazenia(atakujacy, ofiara, Float:obrazenia, Float:czynnik_inteligencji, byt_uszkadzajacy, dodatkowe_flagi) ExecuteHamB(Ham_TakeDamage, ofiara, byt_uszkadzajacy, atakujacy, obrazenia+PobierzInteligencje(atakujacy, 1, 1, 1)*czynnik_inteligencji, (1<<31) | dodatkowe_flagi);
Na końcu i tak dodaje się damagebits DMG_CODSKILL (1<<31)
Dlaczego tak? Nie mogło by być bez tego? Jak bullet to bullet a nie jeszcze dmgCoD
TibacK, dnia 29 Cze 2014 - 07:58, napisał:
ad 3. A nie wystarczy samo ExecuteHamB(Ham_Killed, vid, kid, 1) ?
Nie raz na parę razy wcześniej gracz umiera niż zostanie ustawione pdata dlatego samemu zacząłem je ustawiać biggrin.png
KillPlayer(id,attacker,damagebits) { set_pdata_int(id,m_bitsDamageType,damagebits) ExecuteHamB(Ham_Killed, id, attacker, 1) }
Ustawianie damagebits + kill - Wystarczy czy muszę DeathMsg łapać?
TibacK, dnia 29 Cze 2014 - 07:58, napisał:
ad 5. A nie mozna za pomoca cod_inflict_damage tego rozwiazac?
Rozwiązaniem by było przerobieniem całkowicie tej funkcji a wtedy rezultat będzie taki sam jak używanie: ExecuteHamB do zadawania dmg i SetHamParamFloat do modyfikowania dmg
No mistrzuniu. Oto chodzi. Chodzi o naprawienie tego.
ad 6, 7 Rozumiem
BlackPerfum
29.06.2014
Nie ma to najmniejszego znaczenia
Dlaczego tak? Nie mogło by być bez tego? Jak bullet to bullet a nie jeszcze dmgCoD

Musisz łapać
Wystarczy czy muszę DeathMsg łapać?
Nie da się naprawić da się to całkowicie przerobić ale takie przerabianie nie ma najmniejszego sensu
No mistrzuniu. Oto chodzi. Chodzi o naprawienie tego.

Rivit
29.06.2014
Nie ma to najmniejszego znaczenia
Dlaczego?
Nie da się naprawić da się to całkowicie przerobić ale takie przerabianie nie ma najmniejszego sensu
Nom dawaj pomysł
Musisz łapać
To ja podziękuje . Ustawie tylko damagebits
BlackPerfum
29.06.2014
Bo w uchwycie funkcji Ham_TakeDamage sprawdzasz rodzaj dmg tak:Dlaczego?
if(damagebits & DMG_BULLET)a nie tak:
if(damagebits == DMG_BULLET)
To sprawi iż w prawym górnym rogu nie będzie pokazywac broni a jedynie czaszkę przy zabiciuUstawie tylko damagebits


Nie bo pisanie w ten sposób jest sprzeczne z założeniami tworzenia funkcjiNom dawaj pomysł

Mój kod:
new zmienna = 5 zmienna = zmienna + 1 zmienna = zmienna - 5Twój kod:
new zmienna Modyfikuj(zmienna,false,1) Modyfikuj(zmienna,true,5) Modyfikuj(&zmienna,bool:tryb,change) { if(tryb) zmienna = zmienna + change else zmienna = zmienna - change }Efekt ten sam a różnice w kodzie widzisz
Użytkownik BlackPerfum edytował ten post 29.06.2014 15:44
Rivit
29.06.2014
Bo w uchwycie funkcji Ham_TakeDamage sprawdzasz rodzaj dmg tak:
if(damagebits & DMG_BULLET)
a nie tak:
if(damagebits == DMG_BULLET)
No ale jak jest 1<<24 to też jest 1<<1
Nie rozumiem tego damagebits & DMG_BULLET. Czyli że na pierwszym bicie jest jedynka? (nie śmiej się
)
To sprawi iż w prawym górnym rogu nie będzie pokazywac broni a jedynie czaszkę przy zabiciu sad.png I dodam że damagebits się ustawia samo ale za wolno dlatego ja je ustawiam tu biggrin.png Tzn. jeśli usuniesz łapanie deathmsg to nie potrzebne ci jest ustawianie damagebits
Odpuszczę sobie to już
Efekt ten sam a różnice w kodzie widzisz
Aha. Czyli nie ma sensu przez natyw bo i tak by to dało ten sam efekt. Okej to mamy z głowy (wybiłeś mi naprawe z głowy )
BlackPerfum
29.06.2014
Na drugim(od prawej)... (bo pierwsze to liczba 1 (1<<0) a drugie 2 (1<<1)) Najpierw ci wytłumacze co robi operator &Nie rozumiem tego damagebits & DMG_BULLET. Czyli że na pierwszym bicie jest jedynka? (nie śmiej się )
A zatem operator & porównuje bity w liczbach i zwraca ich sumę. Pokaże na przykładzie:
new zmienna zmienna = 1<<2|1<<4|1<<0|1<<9 & 1<<4|1<<2|1<<25W takim wypadku zmienna równa się liczbie 20 (1<<4 + 1<<2) Dlaczego? Przypatrz się. W liczbach po obu stronach tylko te bity są takie same ;D
Wynika z tego że nie przyszkadzają nam inne bity przy sprawdzaniu

BlackPerfum
29.06.2014
Bardzo przepraszam nienawidze uczyć się terminów na pamięć bo to strata czasu/wolnej przestrzeni w mózgu (której i tak mam już pewnie mało)/sił Ważne że moja teoria pokrywa się z teorią tego operatoraNie sumę, absolutnie. Operator sumy bitowej to |
& to iloczyn bitowy (inaczej koniunkcja)! Ale poza tym nazewnictwem wszystko ok.

Rivit
29.06.2014
BlackPerfum
29.06.2014
Rivit
29.06.2014
To po co jest w cod_inflict_damage() dodawane to damagebits (1<<31) ? Po co to komu?
Czy damagebits moze zawierac kilka typow naraz? Np (1<<1) i (1<<24)
BlackPerfum
29.06.2014
To po co jest w cod_inflict_damage() dodawane to damagebits (1<<31) ? Po co to komu?
Pewnie autor tej funkcji spodziewał się że tak będzie sprawdzane czy dmg zostało zadane za pomoca funkcji z cod'a Ale to jakieś przydatne wcale nie jest było by gdyby wszyscy tego używali
Czy damagebits moze zawierac kilka typow naraz? Np (1<<1) i (1<<24)
Tak
Rivit
30.06.2014
Ale jakim cudem? Naraz gracz dostanie z he i strzeli ktos w niego?
No bo dodac mozna. To wiem

BlackPerfum
30.06.2014
Normalnie się nieda ale możesz zrobic plugin który zadaje dmg tak:Ale jakim cudem? Naraz gracz dostanie z he i strzeli ktos w niego?
No bo dodac mozna. To wiem
ExecuteHamB(Ham_TakeDamage,id,attacker,attacker,Damage,DMG_BULLET|1<<24)Przez coś takiego nie da się rozróżnić (w pluginie w łatwy sposó


Rivit
30.06.2014
Odnosnie CoD - bedzie roznica jak usune damagebits z CoD?
BlackPerfum
30.06.2014
Nie chyba że jakiś plugin sprawdza to 1<<31 w damagebits a to już musisz sam sprawdzićOdnosnie CoD - bedzie roznica jak usune damagebits z CoD?

Rivit
30.06.2014
