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

Odrzucenie ciała po strzale, w tym od lotu kuli


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

#1 ogieR8

    Wszechmogący

  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 21.09.2012 10:35

~ Witam.
Kiedyś pisałem tutaj 2 razy chyba z prośbą, a dokładniej pytaniem jak zrobić, że gdy 'kule lecą w ofiarę od wschodu.. to on odlatuje na zachód', nie biorąc pod uwagi gdzie on się patrzy. Chodzi o typowy odrzut ciała jak to w filmach z strzelbami, ciało odrzuca. Najlepiej zilustruje to ten schemat (sorry za jakość, w painc'ie dobry nie jestem).

http://desmond.image...jpg&res=landing

(dałbym w znaczniki, ale nie obsługuje tego formatu..)

Chodzi mi o jakieś wydarzenie, jakąś funkcję.. najlepiej z wyjaśnieniem po polsku, a jeśli można to o zrobienie tego, a ja na tym zasadzie się nauczę po części operować tym łapaniem vektora od kul i przenoszenie bytu o xx unitow odwrotnie względem tych kul. Każdy po części gotowiec nie został na ślepo przeze mnie wklejony, tylko przeanalizowany, stestowany pod wieloma przypadkami i tak się edukuję. Z góry wielkie dzięki, minęło kilka dobrych miesięcy.. a ja dalej tego nie umiem, a jest mi to potrzebne do zrealizowania mojego projektu ; x
  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#2 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 21.09.2012 13:15

chodzi ci o odrzucenie przy zabiciu czy przy strzale ??
  • +
  • -
  • 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

#3 ogieR8

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 21.09.2012 13:18

Strzale. Chce zrobić sobie szanse na odrzut wroga, np z shota (troszke realizmu, z glocka nie poleci metr ; d)
  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#4 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 21.09.2012 13:50

public odrzuc(attacker,victim){
    new Float:vOrigin[3],Float:aOrigin[3];
    new Float:Vec[3];
    
    pev(attacker,pev_origin,aOrigin);
    pev(victim,pev_origin,vOrigin);
    
    for(new i=0;i<3;i++)
        Vec[i]=vOrigin[i]-aOrigin[i];
    Vec[2]=100.0;
    
    set_pev(victim,pev_velocity,Vec);
}

sprobuj taką funkcje wywołać odpowiednie w dmg'u i powiedz czy działa albo raczej jak działa
  • +
  • -
  • 1
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

#5 ToJaTwojTelefon

    Zaawansowany

  • Użytkownik

Reputacja: 72
Pomocny

  • Postów:87
  • Imię:Mariusz
  • Lokalizacja:Gorlice
Offline

Napisano 21.09.2012 15:59

A taka funkcja nie będzie gracza odpychać w textury jeśli będzie przed nimi stał?
  • +
  • -
  • 0

#6 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 21.09.2012 16:19

nie nie będzie a jesli bys to przetestował to byś sie sam dowiedział i nie marnował bys mojego i twojego czasu
  • +
  • -
  • 1
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

#7 ogieR8

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 21.09.2012 16:22

Dziala dobrze, zauważyłem że jeśli np jestem na assaulcie na tym skośnym dachu.. to lece zajebiscię, tak samo fajnie odpycha z granatu, nie zależnie czy dostałem za 2, czy za 86dmg, ale ze strzałów to troszkę słabo, da się coś tam dodac, albo przemnożyć ? Najlepiej jakby się dało jakąś cyfre tam wsadzić, testowałbym i wybrałbym sobie najbardziej odpowiednią wartość, jak to robiłem kiedyś z odległościa na kosę, przerobiłem sobie na cvara potem.
  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#8 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 21.09.2012 16:51

Vec[2]=100.0;

zwiększ sobie tą liczbe i ewentualnie mozesz w tej pętli dać
Vec[i]=(vOrigin[i]-aOrigin[i])*liczba_float;

  • +
  • -
  • 1
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

#9 ogieR8

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 21.09.2012 17:10

Wielkie dzięki, sprawdzę to potem, bo teraz zmykam. Ale już Twoja 1 wersja działa, więc temat do zamknięcia i wielkie dzięki GoQ'u ; >
  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#10 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 21.09.2012 18:49

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

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

#11 radim

    Godlike

  • Moderator

Reputacja: 939
Master

  • Postów:2 725
  • Steam:steam
  • Imię:Arkadiusz
  • Lokalizacja:Janów Lub.
Offline

Napisano 23.12.2014 10:03

Wiadomość wygenerowana automatycznie


Ten temat został otwarty przez moderatora.

Powód: Temat otwarty na prośbę użytkownika.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !


#12 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 23.12.2014 12:03

Tak sobie patrzę na ten kod i wydaje mi się, że jeśli np. rzucę granata między siebie a gracza, pobiegne z jego drugiej strony to jego odrzuci wybuch, ale w strone granata, czy mam rację ? :>

 

 

\_O_/               \_O_/

    |    --.               |

   / \       \    O     / \          ^

              \--------------------'

 

 

 

 

 

        \_O_/       \_O_/

 <------   |               |

O        / \             / \

 


Użytkownik grankee edytował ten post 23.12.2014 12:04

  • +
  • -
  • 0

#13 ogieR8

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 23.12.2014 14:35

Teoretycznie tak, ale ja teraz mam pewną zagadkę.

Ogólnie kod działał 'średnio', ale kombinowałem i tak:

public odrzuc(attacker,victim){
    new Float:vOrigin[3],Float:aOrigin[3];
    new Float:Vec[3];
    
    pev(attacker,pev_origin,aOrigin);
    pev(victim,pev_origin,vOrigin);
    
    for(new i=0;i<3;i++)
        Vec[i]=(vOrigin[i]-aOrigin[i]) * 15.0
    //Vec[2]=100.0;
    
    set_pev(victim,pev_velocity,Vec);
}

Ale, jaki jest 'efekt' ? Zmieniłem kod na taki, aby gdy strzelam w gracza wyraźnie go odrzucało do tyłu (efekt osiągnąłem właśnie pomnożeniem różnic originów przez '15.0' <- taka wartość mnie zadowala), ale jest pewien problem.. Opiszę to w kilku słowach i zrobie schemat różnego typu sytuacji - co się dzieje.

 

1. attacker stoi na ziemi, victim też - odrzuca na odpowiednią odległość (na taką byłą dostosowany mnożnik różnic originów)

2. attacker stoi na ziemi, victim jest w powietrzu, spada / skoczyl wlasnie - odrzut jest nie zawsze w dobrą stronę, ale przewaznie tak, ale leci.. daleko bardzo

3. attacker stoi na ziemi, victim też, ale po przesunięciu o kilkanascie unitów.. bedzie w sytuacji 'wyskoczni' - leci bardzo bardzo daleko i szybko, przewaznie spadajac w koncu na ziemie - ginie.

sytuacja 4 (nie mam jej na screenie - zapomnialem), jesli agresor jest nad victimem i w niego strzela gdy victim na ziemi - również działa prawidłowo.

 

długość strzałki symbolizuje moc (dystans) jaki pokonuje ofiara podatna na odrzut w różnych sytuacjach

 

http://scr.hu/1bo3/yddjn

 

Ogólnie syt 2 i 3 rzadziej się powinna pojawiać, ale nie mogę tego olać bo chodzi o serwer surf, gdzie takich 'wyskoczni jest mnóstwo', a gracze przeważnie (ALE NIE ZAWSZE) są w powietrzu.

 

Może ma to coś z fizyką ? Nie ma tarcia o podłogę i dlatego odrzut jest znacząco większy ? Nic na ten temat nie wiem, a jeśli tak.. jak zrobić, by odrzut w sytuacji 2 i 3 byl podobny do tego z sytuacji 1 ? Żeby we wszystkich sytuacjach pracując na jednym kodzie, odrzut był zbliżony. :) ?

Pozdrawiam i z góry dzięki za pomoc.


bicek (23.12.2014 15:28):
Popraw ss.

  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#14 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 23.12.2014 18:56

1. W zależności od tego, w jakim stanie jest victim, zwiększaj lub zmniejszaj mnożnik. Np gdy jest w powietrzu, myślę że mnożnik ok 2-3 będzie w sam raz. Gdy kuca również możesz zmniejszyć mnożnik, będzie bardziej realnie :)

 

2. Jeśli victim znajdzie się w powietrzu tuż po odrzuceniu go, wyhamuj go lekko. Do tego chyba będziesz musiał określić mniej więcej jak długo trwa odrzut i w thinku sprawdzać, czy minęło X czasu od odrzucenia i gracz nie zmienił swojego stanu.


  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#15 ogieR8

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 23.12.2014 19:32

1.

w powietrzu

stock bool:is_user_jumping(id){
	new Float:fVelo[3];
	pev(id, pev_velocity, fVelo);
	
	return fVelo[2] ? true : false;
}

gdy kuca

stock bool:is_user_crouching(id){ 
	new Float:fMinsize[3];
	pev(id, pev_mins, fMinsize);
	
	if(fMinsize[2] == -18.0)
		return true;
	
	return false;
}

2. nie ogarniam thinków itd.. mogę zrobić taska z odpowiednim czasem (potestuje), w ktorym bedzie sprawdzenie czy gracz jest w powietrzu (uzyje znow is_user_jumping(index)), ale jak go wyhamować ? Wpływ fizyki w amxx to dla mnie magia, przeważnie szukam kodów w sieci i tylko ich wartości odrobine zmieniam. Nie wiem jak działają wektory, kąty etc (jak na nie wpłynąć) - chociaż jestem technikiem geodetą :D


  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#16 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 23.12.2014 23:17

new flags=pev(id, pev_flags)
if(flags&FL_ONGROUND || flags&FL_PARTIALGROUND)//ew. FL_PARTIALONGROUND jak tego kompilator nie przepusci-nie pamiętam jak jest prawidłowo.
{
//kod gdy stoi na ziemi
}

tak sprawdzisz czy jest na ziemi, velocity sprawdzanie nie jest do końca dobre, bo moze podskoczyc na schodku itp i nie jest w stanie lotu, a wykryjesz ze jest, ponadto w momencie zmiany velocity czyli w najwyzszym punkcie przez moment jest 0.00

 

 

 

Ja bym tu się czepił innej rzeczy niż tego w jakim stanie jest victim, to może i jest problem, ale żeby go rozwiązać najpierw trzeba rozwiązać inną sprawę. 

Załóżmy, że odległość atakera od ofiary to 10 we wszystkich plaszczyznach, wtedy nadamy mu predkosc 10*15=150 w kierunku przeciwnym do atakera, ok, ale jesli victim stoi w odleglosci 200 od atakera to nadamy mu velocity 200*15 czyli 3000, spora rozbieżność co nie?

Moim zdaniem trzeba tu raczej zastosować proporcje. Trzeba tylko pomysłu jak przelozyc 3 wymiarowe velocity na predkosc, potem ustalic z jaka predkoscia ma odrzucac i nadac proporcjonalnie odpowiednie velocity w trzech kierunkach. Chory jestem i nie mam pomyslu jak to ugryzc.

 


  • +
  • -
  • 1

#17 ogieR8

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 23.12.2014 23:55

Wiem, że rozwiązaniem byłoby skorzystanie z tracelinu, ale nie ogarniam tego.. Wcale :/ Wtedy tylko można by było wydłużyć ten tracelin (tez nie wiem jak) i dodac mu stałą wartość do odrzutu (predkosci/velocity)

 

Ale + za rozkmine, bo bym nawet nie pomyślał o tym :P


  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#18 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 24.12.2014 03:06

Postaram się coś naskrobać tożto tylko matematyka.. Nie mam jak sprawdzić więc odpisz jakby co.

 

 

//Edit

Ok po kilku chwilach rozkminy obczaiłem, że twierdzenie pitagorasa działa w dowolnej ilości wymiarów:D Pewnie mówili w szkole, ale byłem w kafejce i grałem w cs'a i teraz sam muszę takie wnioski wyciągać :>

odrzut(attacker,victim,Float:value)
{
	new Float:vOrigin[3],Float:aOrigin[3];
	new Float:Vec[3];
    
	pev(attacker,pev_origin,aOrigin);
	pev(victim,pev_origin,vOrigin);
	for(new i=0;i<3;i++)
		Vec[i]=(vOrigin[i]-aOrigin[i])
	
	new Float:odleglosc
	odleglosc=floatsqroot(Vec[0]*Vec[0]+Vec[1]*Vec[1]+Vec[2]*Vec[2])
	
	new Float:przelicznik=value/odleglosc
	for(new i=0;i<3;i++)
		Vec[i]*=przelicznik
	set_pev(victim,pev_velocity,Vec);
}

Spróbuj różne wartości i zobacz czy będzie za każdym razem odrzucało z tą samą siłą przy jednej wartości, ale zmieniaj odległość od atakowanego gracza. W ogóle porób testy. Najpierw skup się czy dobrze działa na ziemi, a dopiero dalej testuj w powietrzu.


Użytkownik grankee edytował ten post 24.12.2014 04:50

  • +
  • -
  • 1

#19 ogieR8

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 24.12.2014 13:26

Pierwsza sytuacja, którą dostrzegłem to bardzo duże wartości, próbowałem 15..0, 30.0, 50.0, dopiero po kilku setkach zacząłem zauważać coś :P Ale przyjrzałem się potem temu i miało to sens, tak więc na kilku tysiącach efekt był taki

czerwona - strzały
żółty - tam powinien poleciec
niebieski - tam odrzuciło
 
Myślałem, że to zawsze w jedną stronę, w lewo, ale odtworzyłem sytuacje jak na screenie i jednego w lewo (bliżej innego wroga), a drugiego w prawo (bliżej tego znów innego wroga), nie wiem czemu takie coś zaistniało. Na moje oko w powietrzu 700-1000 odpowiednia wartość, chociaż ich tak śmiesznie wybija do góry, w sensie nie np równolegle do podłoża jak jesteśmy na tej samej wysokości, ale odlatują do góry czasem (nie zawsze ;o). A jesli sa na ziemi to nawet 13/40tys wartości. Wielki +, ale ten efekt to jeszcze nie to cudo.. Ale mam pytanie, ogarnia ktoś może zoombie ? Bo powiedzmy, że mój pomysł wziął się z ZM, tylko zwiększyć odrzut 3 krotnie i by była bomba, tylko jak wbiłem w ten silnik.. nic nie rozumiałem :/
 
PS: Sprawa odległości - nie zauważyłem znacznej różnicy - wybija chyba tak samo :P jest to okej akurat

#edit: tak patrze na tego screena i dalej testuje, niebieska linia mi nie wyszła, dużo bliżej 'północy' -  środka.. jakby azymuty się zmniejszały w 1 ćwiartce i powiększały w 4..  :/

  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#20 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 24.12.2014 22:46

    new Float:przelicznik=value/odleglosc

Przy takim przeliczniku gdy gracze stoją tuż obok siebie to odrzut będzie tak duży, że roztrzaska nim o ścianę :)

 

Proponuję:

    new Float:przelicznik=(value+1)/odleglosc

 

to już wyeliminuje ten problem. Pamiętajmy też, że przy takim liczeniu odrzutu przy dużych odległościach różnica będzie bardzo znikoma.


  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark





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

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