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

Ham_TakeDamage - jak używać...?


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

#61 Cypis'

    Master

  • Przyjaciel

Reputacja: 1 162
Super Hero

  • Postów:965
  • GG:
  • Steam:steam
  • Lokalizacja:polska
Offline

Napisano 25.05.2011 16:04

sorry nie zrozumiałem pytania

P.S
try

register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")

public message_DeathMsg()
{
static killer, weapon[32], weaponid//, victim, headshot;
killer = get_msg_arg_int(1);
//victim = get_msg_arg_int(2);
//headshot = get_msg_arg_int(3);
get_msg_arg_string(4, weapon, charsmax(weapon));
if(equali(weapon, "grenade"))
formatex(weapon, charsmax(weapon), "hegrenade");

formatex(weapon, charsmax(weapon), "weapon_%s", weapon);
weaponid = get_weaponid(weapon);

if(!TrieGetCell(gCustomWeapons, "piorun", weaponid))
{
set_msg_arg_string(4, "knife");
return PLUGIN_CONTINUE;
}
return PLUGIN_CONTINUE;
}

tylko nie jestem pewien tego if(!TrieGetCell(gCustomWeapons, "piorun", weaponid))

chyba tak powinno być a nie tak jak up ;)

register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")

public message_DeathMsg()
{
static killer, weapon[32], weaponid//, victim, headshot;
killer = get_msg_arg_int(1);
//victim = get_msg_arg_int(2);
//headshot = get_msg_arg_int(3);
get_msg_arg_string(4, weapon, charsmax(weapon));

if(!TrieGetCell(gCustomWeapons, "piorun", weapon))
{
set_msg_arg_string(4, "knife");
return PLUGIN_CONTINUE;
}
return PLUGIN_CONTINUE;
}

Użytkownik Cypis' edytował ten post 25.05.2011 16:26

  • +
  • -
  • 1

#62 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 25.05.2011 16:37

Nawet nie będę sprawdzał, bo chce coś takiego, żebym nie musiał wypisywać wszystkich nazw nowych broni w "TrieGetCell", ale dzięki za zainteresowanie ;] Próbowałem też tak
new weapon = 0;
if(!TrieGetCell(gCustomWeapons, weaponname, weapon)) {
new nazwa[32];
formatex(nazwa, charsmax(nazwa), weaponname);
if(!equal(nazwa, "weapon_", 7))
formatex(nazwa, charsmax(nazwa), "weapon_%s", nazwa);

weapon = get_weaponid(nazwa);
}
else if(weaponname[0]) {
log_amx("class = %s", weaponname);
replace(weaponname, charsmax(weaponname), "kusza", "knife");
replace(weaponname, charsmax(weaponname), "throw_knife", "knife");
}
client_print(kid, print_chat, "Zabiles z broni o id=%d", weapon);

Ale wykrywało mi tylko nowe bronie, jak zabijałem, np. z usp to id było 0. Dodam, że "weaponname" nie może być zmieniane, bo później używam jej do wyświetlania zabójstw w prawym, górnym rogu.

Dodano 25 maj 2011 - 18:22:
Ja się poddaje... Próbując wyciągnąć ID nowej broni, przy standardowych zawsze mam 0 ;/

Użytkownik sebul edytował ten post 25.05.2011 16:42

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#63 Cypis'

    Master

  • Przyjaciel

Reputacja: 1 162
Super Hero

  • Postów:965
  • GG:
  • Steam:steam
  • Lokalizacja:polska
Offline

Napisano 25.05.2011 17:35

tak tego nie możesz użyć raczej
 if(!equal(nazwa, "weapon_", 7))

  • +
  • -
  • 0

#64 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 25.05.2011 18:52

tak tego nie możesz użyć raczej

 if(!equal(nazwa, "weapon_", 7))

Ale czemu? Jak nie próbuje wykrywać id nowych broni, to normalnie mi czyta przez to id standardowych broni. A jak już wyciągam id nowych broni, to wtedy wszystkie standardowe mają 0... ;/ Potrzeba mi coś takiego, co będzie wykrywać id nowych jak i standardowych broni, do tego tablica co w niej siedzi skrócona nazwa broni (czyli bez "weapon_") musi pozostać bez zmian, oraz nazwy nowych broni przed wysłaniem do funkcji "show_deadmessage" mają się zmienić na inne, np. "knife". Oczywiście chodzi mi o jakieś krótkie rozwiązanie, typu takiego jak tutaj -> Ham_TakeDamage - jak używać...? - AMXX.pl: Support AMX Mod X - strona 3 bo w ostateczności można sprawdzać kilka razy nazwę broni i jeśli będzie to nowa broń, wtedy przypisać jakiejś zmiennej id nowej broni, ale to przy większej ilości raczej nie będzie zbyt wygodne.

Użytkownik sebul edytował ten post 25.05.2011 18:56

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#65 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 26.05.2011 09:15

ręce opadają

jak chcesz używać z innymi stringami to musisz je dodać do drzewa
TrieSetCell(gCustomWeapons, "knife", CSW_KNIFE);
i tak wszystki 30

do tego są zabicia przez wolrdspawn czy trigger_hurt
  • +
  • -
  • 1

#66 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 26.05.2011 10:22

A nie da się robić tego podobnie jak przy obrażeniach? Czyli albo bierze id broni z drzewa trie, a jak nie ma tam tej nazwy to wyciąga id sposobem tym co mam aktualnie?
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#67 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 26.05.2011 12:07

jak istnieje sposób to ja go nie znam
  • +
  • -
  • 0

#68 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 26.05.2011 17:56

Dobra, poradziłem sobie ;] Dałem coś takiego
new weapona = 0, bool:trie = false;

if(TrieGetCell(gCustomWeapons, weaponname, weapona)) {
trie = true;
log_amx("class = %s", weaponname);
replace(weaponname, charsmax(weaponname), "kusza", "knife");
replace(weaponname, charsmax(weaponname), "throw_knife", "knife");
log_amx("class = %s", weaponname);
}
if(!trie) {
new nazwa[32];
formatex(nazwa, charsmax(nazwa), weaponname);
if(!equal(nazwa, "weapon_", 7))
format(nazwa, charsmax(nazwa), "weapon_%s", nazwa);
weapona = get_weaponid(nazwa);
}

client_print(kid, print_chat, "Zabiles z broni o id=%d", weapona);

I teraz wyświetla się poprawnie każde id broni, nowych jak i starych. Chyba więcej pytań nie będę miał, ale niech jeszcze jest otwarte.

Dodano 29 maj 2011 - 17:13:
Da się jakoś zlikwidować redukcję obrażeń przez kamizelkę? Nie chodzi mi o usuwanie kamizelki, tylko, żeby nie wpływała ona na obrażenia jeśli jakiś warunek zostanie spełniony.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#69 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 29.05.2011 17:34

sprawdz damage w pre i post mozliwe ze w pre beda sie roznic od posta to bedzie znaczyc ze iles tam pochlonela kamizelka :D
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#70 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 20.11.2011 23:48

Pozwoliłem sobie jeszcze otworzyć i odkopać xD ale mam takie małe pytanie i raczej nie warto tworzyć znowu temat praktycznie o tym samym. W sumie mógłbym to niby jakoś przetestować, ale za bardzo nie mam czasu, a do przyszłego weekendu, ktoś może akurat odpisze ^^

Korzystam z tego stocka
stock TakeDamage(victim, attacker, Float:fDamage, bits, const szWeaponName[] = "") {
static info_target = 0;
if(!info_target)
info_target = engfunc(EngFunc_AllocString, "info_target");

new inflictor;
if(szWeaponName[0]) {
inflictor = engfunc(EngFunc_CreateNamedEntity, info_target);
set_pev(inflictor, pev_classname, szWeaponName);
ExecuteHamB(Ham_TakeDamage, victim, inflictor, attacker, fDamage, bits);
engfunc(EngFunc_RemoveEntity, inflictor);
}
else {
ExecuteHamB(Ham_TakeDamage, victim, attacker, attacker, fDamage, bits);
}
}

i jeśli zrobię go tak
stock TakeDamage(victim, attacker, Float:fDamage, bits, const szWeaponName[] = "") {
static info_target = 0;
if(!info_target)
info_target = engfunc(EngFunc_AllocString, "info_target");

new inflictor;
if(szWeaponName[0]) {
inflictor = engfunc(EngFunc_CreateNamedEntity, info_target);
set_pev(inflictor, pev_classname, szWeaponName);
ExecuteHam(Ham_TakeDamage, victim, inflictor, attacker, fDamage, bits);
engfunc(EngFunc_RemoveEntity, inflictor);
}
else {
ExecuteHam(Ham_TakeDamage, victim, attacker, attacker, fDamage, bits);
}
}

i gdy zadam obrażenia
TakeDamage(victim, attacker, fDamage, (1<<1), "nowa_bron");

to w "DeathMsg" nazwa tej broni będzie normalnie zwracana w 4 parametrze? Przy "ExecuteHamB" zwraca, ale nie wiem jak to jest w "ExecuteHam", czy jest jakaś tutaj różnica?

A jeszcze co do

sprawdz damage w pre i post mozliwe ze w pre beda sie roznic od posta to bedzie znaczyc ze iles tam pochlonela kamizelka :D

to niestety, ale damage jest w obydwu przypadkach takie samo, sprawdzałem już jakiś czas temu ;]
sebul (26.11.2011 19:04):
Przed chwilą przetestowałem i jest tak jak chciałem, czyli w "DeathMsg" są te nazwy broni ;]

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#71 Adminek AMXX.PL

    Admin :)

  • Bot

Reputacja: 156
Profesjonalista

  • Postów:7 490
  • Lokalizacja:AMXX.PL
Offline

Napisano 26.11.2011 19:04

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: end

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL




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

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