Jak zmienić "pole rażenia" rakiety...
Pytajnik?
01.02.2018
Witam,
może mi ktoś wytłumaczyć którą wartość muszę zmienić aby zwiększyć zasięg pola rażenia "rakiety"? (piszę w " ponieważ to nie są rakiety z generatora i mają inną budowę)
public nazwapluginu(id) { // Get origin, angle, and velocity new Float:fOrigin[3], Float:fAngle[3], Float:fVelocity[3] pev(id, pev_origin, fOrigin) pev(id, pev_v_angle, fAngle) // New ent new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")); // Not ent if (!ent) return PLUGIN_HANDLED // Set plugin model entity_set_model(ent, MODELS[1]) //Set entity name entity_set_string(ent, EV_SZ_classname, "nazwapluginu") // Origin entity_set_origin(ent, fOrigin) // Angles entity_set_vector(ent, EV_VEC_angles, fAngle) // Size new Float:MinBox[3] = {-1.0, -1.0, -1.0} new Float:MaxBox[3] = {1.0, 1.0, 1.0} entity_set_vector(ent, EV_VEC_mins, MinBox) entity_set_vector(ent, EV_VEC_maxs, MaxBox) // Interaction entity_set_int(ent, EV_INT_solid, SOLID_SLIDEBOX) // Movetype entity_set_int(ent, EV_INT_movetype, MOVETYPE_FLY) // Owner entity_set_edict(ent, EV_ENT_owner, id) // Velocity VelocityByAim(id, get_pcvar_num(g_plugSpeed), fVelocity) entity_set_vector(ent, EV_VEC_velocity, fVelocity) message_begin( MSG_BROADCAST, SVC_TEMPENTITY ) write_byte(TE_BEAMFOLLOW) write_short(ent) //entity write_short(explode2) //model write_byte(10) //10)//life write_byte(4) //5)//width write_byte(224) //r write_byte(224) //g write_byte(255) //b write_byte(100) //brightness message_end() return PLUGIN_CONTINUE; }
Obecnie działa to w taki sposób, że DMG zostaje zadany kiedy umiejętność trafi DOKŁADNIE w cel.
I w jaki sposób mogę pobrać DMG z tego ? Bullet DMG nie pokazuje zadanych obrażeń przez ten plugin.
Jeśli brakuje linijek kodu - przepraszam i proszę dać znać wstawię jak najszybciej, niestety nie wiem jeszcze co za co odpowiada ale wydaje mi się że ten kod jest prawidłowy.
Pozdrawiam!
_McHappy
01.02.2018
Podany kod odpowiada za stworzenie i nadanie ruchu rakiecie.
Samo zdarzenie wybuchu jest wywoływane przez interakcję (dotyk) rakiety z odpowiednim obiektem w jej otoczeniu.
Musisz podać kod funkcji odpowiedzialnej za obsługę zdarzenia dotyku rakiety (najczęściej ze słowem "touch" lub "dotyk" w nazwie). Jeżeli masz trudności w zlokalizowaniu owej funkcji, wrzuć na wklejkę kod pluginu i udostępnij w poście link.
Użytkownik _McHappy edytował ten post 01.02.2018 16:23
Pytajnik?
02.02.2018
Podany kod odpowiada za stworzenie i nadanie ruchu rakiecie.
Samo zdarzenie wybuchu jest wywoływane przez interakcję (dotyk) rakiety z odpowiednim obiektem w jej otoczeniu.
Musisz podać kod funkcji odpowiedzialnej za obsługę zdarzenia dotyku rakiety (najczęściej ze słowem "touch" lub "dotyk" w nazwie). Jeżeli masz trudności w zlokalizowaniu owej funkcji, wrzuć na wklejkę kod pluginu i udostępnij w poście link.
Dzięki za odpowiedź!
Tak więc znalazłem coś takiego :
public fwd_Touch(ent, victim) { if (!pev_valid(ent)) { return } new szClassname[33] entity_get_string(ent, EV_SZ_classname, szClassname, sizeof szClassname) if (equal(szClassname, "nazwapluginu")) { new killer = pev(ent, pev_owner); new szNameOwner[33] new szNameVictim[33] new szOwnerTeam[33] new szVictimTeam[33] get_user_name(killer, szNameOwner, 32) get_user_name(victim, szNameVictim, 32) get_user_team(killer, szOwnerTeam, 32) get_user_team(victim, szVictimTeam,32) new iMoney, iFrags, iGain, iGainMoney, iLose, iLoseMoney iMoney = cs_get_user_money(killer) iFrags = get_user_frags(killer) iGain = iFrags + get_pcvar_num(g_KillFrags) iGainMoney = iMoney + get_pcvar_num(g_Money) iLose = iFrags - get_pcvar_num(g_LoseFrags) iLoseMoney = iMoney - get_pcvar_num(g_Money) // Alive... if (is_user_alive(victim) == 1 && get_user_godmode(victim) == 0) { // Get origin and distance new Float:VictimOrigin[3] pev(victim, pev_origin, VictimOrigin) //fakedamage him fakedamage(victim, "nazwapluginu", 0.0, DMG_PARALYZE) new Dam = get_pcvar_num(g_Damage) new health = get_user_health(victim) if (health - Dam >= 1 && !g_HasShield[victim]) { set_user_health(victim, health - Dam) } else { ExecuteHam(Ham_Killed, victim, killer, 2)//v1.1 if (equal(szOwnerTeam, szVictimTeam)) { set_user_frags(killer, iLose) if (iMoney > get_pcvar_num(g_Money)) cs_set_user_money(killer, iLoseMoney, 1) else cs_set_user_money(killer ,0,1) } else { set_user_frags(killer, iGain) cs_set_user_money(killer, iGainMoney, 1) } set_hudmessage(0, 0, 0, 0.29, 0.49, 0, 6.0, 3.0) show_hudmessage(victim, "%s zabil Cie z ^nnazwapluginu",szNameOwner) show_hudmessage(killer, "Zabiles %s z ^nnazwapluginu",szNameVictim) } } } explode_nazwa(ent) }
Co powinienem zrobić ?
Pytajnik?
02.02.2018
Nie mogę edytować posta wyżej ale mam jeszcze to:
stock explode_nazwa(const ent_index) { new Float:iOrigin[3], fOrigin[3] entity_get_vector(ent_index, EV_VEC_origin, iOrigin) FVecIVec(iOrigin, fOrigin) message_begin(MSG_BROADCAST, SVC_TEMPENTITY, fOrigin) write_byte(TE_EXPLOSION) write_coord(fOrigin[0]) write_coord(fOrigin[1]) write_coord(fOrigin[2]) write_short(explode2) write_byte(30) write_byte(15) write_byte(0) message_end() remove_entity(ent_index) }
Pytajnik?
02.02.2018
Bodajże ta linia
write_byte(15)
Tą linię już zmieniałem wcześniej, zamiast 30 miałem 300 a zamiast 15 miałem 200 (tak na oko wszystko dawałem - metoda prób i błędów) i nic się nie zmieniało.
Z tego kodu wynika, że w tym miejscu powinno się zmieniać "pole rażenia" ?
Ps.
2 sprawa dlaczego BulletDMG nie pokazuje zadanego DMG z tej umiejętności?
AwIlL^^
05.02.2018
Przechwycić obrażeń się nie da bo nie jest wywołane zadawanie obrażeń, jest zmienianie hp lub wywołane zabicie, dodatkowo ExecuteHam nie da się przechwycić używając RegisterHam
Explode_nazwa tylko rysuje wybuch...
Pytajnik?
06.02.2018
W kodzie nie da się zmienić zasięgu rakiety bo tego nie ma.
Przechwycić obrażeń się nie da bo nie jest wywołane zadawanie obrażeń, jest zmienianie hp lub wywołane zabicie, dodatkowo ExecuteHam nie da się przechwycić używając RegisterHam
Explode_nazwa tylko rysuje wybuch...
Więc można powiedzieć że to działa tak jak strzał w Hitboxa ? Dlatego DMG zadany obok modelu nie zadaje obrażeń ?
Czyli czeka mnie przeróbka kodu pod "rakiety" i jedyne co mogę zostawić to wygląd (rysowanie) tej rakiety tak ?
AwIlL^^
06.02.2018
I jeszcze aby pobierać obrażenia i nimi manipulować w innych pluginach użyj ExecuteHamB(Ham_TakeDamage, id_ofiary, byt_atakujący, id_atakującego, Float:obrażenia, suma_bitowa_typów_obrażeń)
ten float napisałem żebyś wiedział że to ma być liczba rzeczywista, a ta suma bitowa obrażeń to dla wybuchu będzie 1<<24
Byt atakujący to id rakietu, atakujący to id właściciela rakiety