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

problem z popychaniem/podrzucaniem gracza.


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

#1 poloo89

    Pomocny

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:59
  • GG:
  • Lokalizacja:Wrocław
Offline

Napisano 20.04.2012 17:20

Witam !

W internecie znalazłem owy plugin:

/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <biohazard>
#include <engine>
#define PLUGIN "Push player"
#define VERSION "1.0"
#define AUTHOR "OneEyed & Sn!ff3r"
new cvar
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

cvar = register_cvar("amx_moveplayer", "1")

register_touch("player", "player", "touchtouch")
}
public touchtouch(player, player2)
{
if(get_pcvar_num(cvar))
{
if((!(task_exists(player * 1000 + player2))) &&
(!(task_exists(player2 * 1000 + player))) &&
(get_user_button(player) & IN_ATTACK2) &&
is_user_zombie(player) &&
is_user_zombie(player2))
{
new Float:speed[2][3]
new Float:over_speed[3]

set_task(0.2, "empty_space", player * 1000 + player2)
set_task(0.2, "empty_space", player2 * 1000 + player)

entity_get_vector(player, EV_VEC_velocity, speed[0])
entity_get_vector(player2, EV_VEC_velocity, speed[1])

for(new i = 0; i < 3; i++)
{
over_speed[i] = speed[0][i] + speed[1][i]
speed[0][i] += over_speed[i] * 0.65
speed[1][i] -= over_speed[i] * 0.65
}
entity_set_vector(player, EV_VEC_velocity, speed[0])
entity_set_vector(player2, EV_VEC_velocity, speed[1])
}
}
}
public empty_space() {}



Wg opisu powinien on popychać Zombie przy nacisnieciu PPM. Niestety efekt nie był do końca osiągalny dlatego też trochę plugin przerobiłem w ten sposób:

/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <biohazard>
#include <engine>
#define PLUGIN "Push player"
#define VERSION "1.0"
#define AUTHOR "OneEyed & Sn!ff3r"
new cvar
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

cvar = register_cvar("amx_moveplayer", "1")

register_touch("player", "player", "touchtouch")
}
public touchtouch(player2, player)
{
if(get_pcvar_num(cvar))
{
if((!(task_exists(player * 1000 + player2))) &&
(!(task_exists(player2 * 1000 + player))) &&
(get_user_button(player2) & IN_ATTACK2) &&
is_user_zombie(player) &&
is_user_zombie(player2))
{
new Float:speed[2][3]
new Float:over_speed[3]

set_task(0.2, "empty_space", player * 1000 + player2)
set_task(0.2, "empty_space", player2 * 1000 + player)

entity_get_vector(player, EV_VEC_velocity, speed[0])
entity_get_vector(player2, EV_VEC_velocity, speed[1])

for(new i = 0; i < 3; i++)
{
over_speed[i] = speed[0][i] + speed[1][i]
speed[0][i] += over_speed[i] * 1.0
//speed[1][i] -= over_speed[i] * 4.0 //0.65
}
entity_set_vector(player, EV_VEC_velocity, speed[0])
entity_set_vector(player2, EV_VEC_velocity, speed[1])
}
}
}
public empty_space() {}



Po kilku poprawkach otrzymuję zamierzony efekt... zombie sie przesuwa podczas popychania... jednak brakuje jednej funkcjonalności... otóż mam problem z podrzuceniem zombie do góry... tak jakby popchaniem w osi pionowej...

Ma ktoś pomysł co zrobić z tym plugiem aby mozna było podrzucać zombie w górę ?

pozdrawiam.
  • +
  • -
  • 0

#2 mierzwi

    Banned

  • Zbanowany

Reputacja: 235
Wszechwidzący

  • Postów:651
  • Lokalizacja:Polska
Offline

Napisano 20.04.2012 22:12

ustaw speed[2] bo pionowa oś to chyba Z

jeśli masz fejsa i chcesz mi pomóc to wejdź tutaj: Zaproś kumpla by lubił nasz sklep | Facebook

na pewno jakoś C się odwdzięczę!


#3 poloo89

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:59
  • GG:
  • Lokalizacja:Wrocław
Offline

Napisano 21.04.2012 09:05

wybacz ale nie bardzo rozumiem,
jeśli jestem w błędzie to proszę mnie z niego wyprowadź.

Wg mnie plugin podczas "dotkniecia" i nacisniecia PPM pobierze vector poruszania sie player2 i player. nastepnie zapisze vector player w tablicy na pozycji speed[0] a player2 na speed[1]. kolejno te vectory zsumowane zostana w over_speed i nadpisane w poszczególnych pozycjach player-speed[0] player2-speed[1] nastepnie wykonane na graczu..
Wg mnie tak to dziala no ale jestem poczatkujacy w amxx wiec moge sie mylic :D

także, jeśli jednak zle rozumuję to w którym miejscu mialbym zmienic na speed[2]

bo załóżmy jak "player" porusza się z jakąs tam predkościa do przodu... to jesgo predkosc bedzie w tablicy bedzie tak zapisana ?:
speed[0][0]=260
speed[0][1]=0
speed[0][2]=0

  • +
  • -
  • 0

#4 mierzwi

    Banned

  • Zbanowany

Reputacja: 235
Wszechwidzący

  • Postów:651
  • Lokalizacja:Polska
Offline

Napisano 22.04.2012 00:40

źle mnie zrozumiałeś, w sensie ja też ch*jowo napisałem o co mi chodzi.

tutaj jest tak że vektor jest mnożony, no luz, tylko że jak 2 byty stoją na ziemi to wartość siły Z jest 0 + 0 * 1 no to chujnia = 0, więc Ci byt "player" nie leci w górę. tutaj masz taki kodzik mini :D

public touch_Player( iToucher, iTouched )
{
	new Float:fVeloc[ 2 ][ 3 ];
	
	/* TUTAJ TE TWOJE TASKI */

	pev( iToucher, pev_velocity, fVeloc[ 0 ] );
	pev( iTouched, pev_velocity, fVeloc[ 1 ] );
	
	/* OŚ X */
	fVeloc[ 1 ][ 0 ] += ( fVeloc[ 0 ][ 0 ] + fVeloc[ 1 ][ 0 ] );
	
	/* OŚ Y */
	fVeloc[ 1 ][ 1 ] += ( fVeloc[ 0 ][ 1 ] + fVeloc[ 1 ][ 1 ] );
	
	/* OŚ Z */
	if( ( fVeloc[ 0 ][ 2 ] + fVeloc[ 1 ][ 2 ] ) <= 25.0 ) /* SPRAWDZAM CZY DODANE WARTOŚCI Z OSY Z SĄ WIĘKSZE NIŻ 25 */
		fVeloc[ 1 ][ 2 ] = random_float( 100.0, 250.0 ); /* JEŚLI TAK NO TO DAJĘ JAKĄŚ RANDOMOWĄ LICZBĘ ABY DAŁO GO W GóRĘ (OD 100 DO 250) */
	else
		fVeloc[ 1 ][ 2 ] += ( fVeloc[ 0 ][ 2 ] + fVeloc[ 1 ][ 2 ] ); /* JEŚLI NIE TO LUUZ. CZYLI DODAJEMY ICH WARTOŚCI */
		
	pev( iTouched, pev_velocity, fVeloc[ 1 ] ); /* USTAWIAMY TYLKO DLA TEGO CO MA ODEPCHAĆ */
}

Użytkownik emu edytował ten post 22.04.2012 00:40

jeśli masz fejsa i chcesz mi pomóc to wejdź tutaj: Zaproś kumpla by lubił nasz sklep | Facebook

na pewno jakoś C się odwdzięczę!


#5 poloo89

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:59
  • GG:
  • Lokalizacja:Wrocław
Offline

Napisano 22.04.2012 13:04

zrobiłem w ten sposób:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <biohazard>
#include <engine>
#include <fakemeta>
#define PLUGIN "Push player"
#define VERSION "1.0"
#define AUTHOR "OneEyed & Sn!ff3r"

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_touch("player", "player", "touch_Player")
}
public touch_Player( iToucher, iTouched )
{
if((get_user_button(iToucher) & IN_ATTACK2) && is_user_zombie(iToucher) && is_user_zombie(iTouched))
{
new Float:fVeloc[ 2 ][ 3 ];

/* TUTAJ TE TWOJE TASKI */
pev( iToucher, pev_velocity, fVeloc[ 0 ] );
pev( iTouched, pev_velocity, fVeloc[ 1 ] );

/* OŚ X */
fVeloc[ 1 ][ 0 ] += ( fVeloc[ 0 ][ 0 ] + fVeloc[ 1 ][ 0 ] );

/* OŚ Y */
fVeloc[ 1 ][ 1 ] += ( fVeloc[ 0 ][ 1 ] + fVeloc[ 1 ][ 1 ] );

/* OŚ Z */
if( ( fVeloc[ 0 ][ 2 ] + fVeloc[ 1 ][ 2 ] ) <= 25.0 ) /* SPRAWDZAM CZY DODANE WARTOŚCI Z OSY Z SĄ WIĘKSZE NIŻ 25 */
fVeloc[ 1 ][ 2 ] = random_float( 100.0, 250.0 ); /* JEŚLI TAK NO TO DAJĘ JAKĄŚ RANDOMOWĄ LICZBĘ ABY DAŁO GO W GóRĘ (OD 100 DO 250) */
else
fVeloc[ 1 ][ 2 ] += ( fVeloc[ 0 ][ 2 ] + fVeloc[ 1 ][ 2 ] ); /* JEŚLI NIE TO LUUZ. CZYLI DODAJEMY ICH WARTOŚCI */

pev( iTouched, pev_velocity, fVeloc[ 1 ] ); /* USTAWIAMY TYLKO DLA TEGO CO MA ODEPCHAĆ */
}
}


tamte taski co byly wyebałem w cholerę... no i zombie stoi jak zamurowane teraz nawet w bok nie bardzo chce sie przesuwać... zobacz czy nie porąbałem czegoś -.-
dzięki..
  • +
  • -
  • 0

#6 mierzwi

    Banned

  • Zbanowany

Reputacja: 235
Wszechwidzący

  • Postów:651
  • Lokalizacja:Polska
Offline

Napisano 22.04.2012 13:26

o boże, znów mój mały błąd HAHA :D sory ale w nocy pisane i to jeszcze po imprezie :D set_pev musi być :lol:
set_pev( iTouched, pev_velocity, fVeloc[ 1 ] ); /* USTAWIAMY TYLKO DLA TEGO CO MA ODEPCHAĆ */

Użytkownik emu edytował ten post 22.04.2012 13:26

jeśli masz fejsa i chcesz mi pomóc to wejdź tutaj: Zaproś kumpla by lubił nasz sklep | Facebook

na pewno jakoś C się odwdzięczę!


#7 poloo89

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:59
  • GG:
  • Lokalizacja:Wrocław
Offline

Napisano 22.04.2012 17:28

eh. po 4 godzinach testów nic konstruktywnego nie wymyśliłem...

moj plug wyglada w ten sposób (wszelkie komenty do zmian w kodzie...)

/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <biohazard>
#include <engine>
#include <fakemeta>
#define PLUGIN "Push player"
#define VERSION "1.0"
#define AUTHOR "OneEyed & Sn!ff3r"

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_touch("player", "player", "touch_Player")
}
public touch_Player( iToucher, iTouched )
{
if((!(task_exists(iToucher * 1000 + iTouched))) && (!(task_exists(iTouched * 1000 + iToucher))) &&(get_user_button(iToucher) & IN_ATTACK2) && is_user_zombie(iToucher) && is_user_zombie(iTouched))
{
new Float:fVeloc[ 2 ][ 3 ];
set_task(0.2, "empty_space", iToucher * 1000 + iTouched) // przywrocilem te taski zeby w wypadku np przy scianie nie za szybko sie wykonywal plugin bo wywalalo zombie z taka predkoscia ze sie na drugim koncu mapy znalazl ;]
set_task(0.2, "empty_space", iTouched * 1000 + iToucher)
pev( iToucher, pev_velocity, fVeloc[ 0 ] );
pev( iTouched, pev_velocity, fVeloc[ 1 ] );

/* OŚ X */
fVeloc[ 1 ][ 0 ] += ( fVeloc[ 0 ][ 0 ] + fVeloc[ 1 ][ 0 ] );

/* OŚ Y */
fVeloc[ 1 ][ 1 ] += ( fVeloc[ 0 ][ 1 ]+ fVeloc[ 1 ][ 1 ] );

/* OŚ Z */
if( ((fVeloc[ 1 ][ 0 ])<=25.0) && ((fVeloc[ 1 ][ 1 ]) <= 25.0) ) // Warunek taki dalem bo chce zby podrzucanie w gore odbywalo sie tylko jak jeden zombie na drugim jest czyli jak wlasciwie stoja w miejscu...
fVeloc[ 1 ][ 2 ] += ((fVeloc[ 0 ][ 2 ] + fVeloc[ 1 ][ 2 ])*2.0); // na razie jest x2 ale to do skonfigurowania jeszcze sila... nie chcialem dawac losowej wartosci bo chce uzuskac efekt ze im szybciej spada zombie w dol tym szybciej go wybija...
else
fVeloc[ 1 ][ 2 ] += ( (fVeloc[ 0 ][ 2 ] + fVeloc[ 1 ][ 2 ])*0.5) ; // jezeli zombie bedzie w ruchu to nie chce zeby ich za bardzo w gore wypierdalalo...

set_pev( iTouched, pev_velocity, fVeloc[ 1 ] );
}
}
public empty_space() {}




jest taki problem ...ze nei bardzo chce zombie 'leciec' do gory jezeli podsadzajacy stoi a podsadzany jest nad nim... podsadzanie wyglada bardzo fajnie tak jak powinno byc jezeli 2 zombie stoja kolo siebie np przy scianie i podsadzajacy podskoczy dotykajac podsadzanego ... wtedy leca bardzo fajnei... natomiast jak mowie jak jeden stoi na drugim to jest jedna wielka zmula czasem uda sie ze poleci jak nalezy ... i chyba wiem czym spowodowana tylko nie wiem jak to ogarnac...

w tym miejscu:
fVeloc[ 1 ][ 2 ] += ((fVeloc[ 0 ][ 2 ]  + fVeloc[ 1 ][ 2 ])*2.0);

wydawalo by sie ze wszystko jest ok... sumowane sa wektory zombie podsadzanego i podsadzajacego... mnożone x2 ale jezeli zombie spada w dol... to jego wektor jest skierowany równiez w doł.. nastomiast skaczacy podsadzajacy ma wektor skierowany w gore... wektory sie zeruja i nie ma juz co mnozyc...

mozna zrobic tak zeby wektor byl zawsze skierowany w gore ? Nie wiem czy zrozumialem opisalem o co chodzi ...
mam pewien pomysl, zaraz go sprawdzę ale od 4 godzin wszystkie moje pomysly zawodza wiec nie wiem czy cos tym razem bedzie lepiej :))

Użytkownik poloo89 edytował ten post 22.04.2012 17:28

  • +
  • -
  • 0

#8 mierzwi

    Banned

  • Zbanowany

Reputacja: 235
Wszechwidzący

  • Postów:651
  • Lokalizacja:Polska
Offline

Napisano 22.04.2012 18:02

ten wektor czyli Z zawsze jest w górę jeżeli wartość jego jest na +, i nie mnóż * 0.2, prędzej już 1.2, bo i tak ich dodane wektory są bardzo małe...

jeśli masz fejsa i chcesz mi pomóc to wejdź tutaj: Zaproś kumpla by lubił nasz sklep | Facebook

na pewno jakoś C się odwdzięczę!


#9 poloo89

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:59
  • GG:
  • Lokalizacja:Wrocław
Offline

Napisano 22.04.2012 19:16

Takie cos stworzylem... nei wiem czy to ma jakas racje bytu... ale wg mnie jakos lepiej dziala... chodz strasznie trudno jest wyczuc odpowiedni moment zeby uderzyc zombie zeby polecialo do gory... jest jakas mozliwosc wyczulenia eventu register_touch ? albo jakis inny lepiej dzialajacy o podobnej funkcji ?

przypominam ze gdy zombie stoi kolo siebie jakos lepiej jest podrzucane niz jak jedno stoi na drugim...

/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <biohazard>
#include <engine>
#include <fakemeta>
#define PLUGIN "Push player"
#define VERSION "1.0"
#define AUTHOR "OneEyed & Sn!ff3r"

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_touch("player", "player", "touch_Player")
}
public touch_Player( iToucher, iTouched )
{
if((!(task_exists(iToucher * 1000 + iTouched))) && (!(task_exists(iTouched * 1000 + iToucher))) &&(get_user_button(iToucher) & IN_ATTACK2) && is_user_zombie(iToucher) && is_user_zombie(iTouched))
{
new Float:fVeloc[ 2 ][ 3 ];
set_task(0.2, "empty_space", iToucher * 1000 + iTouched) // przywrocilem te taski zeby w wypadku np przy scianie nie za szybko sie wykonywal plugin bo wywalalo zombie z taka predkoscia ze sie na drugim koncu mapy znalazl ;]
set_task(0.2, "empty_space", iTouched * 1000 + iToucher)
pev( iToucher, pev_velocity, fVeloc[ 0 ] );
pev( iTouched, pev_velocity, fVeloc[ 1 ] );

/* OŚ X */
fVeloc[ 1 ][ 0 ] += ( (fVeloc[ 0 ][ 0 ] + fVeloc[ 1 ][ 0 ])*1.8 );

/* OŚ Y */
fVeloc[ 1 ][ 1 ] += ( (fVeloc[ 0 ][ 1 ]+ fVeloc[ 1 ][ 1 ])*1.8 );

/* OŚ Z */
if( ((fVeloc[ 1 ][ 0 ])<=50.0) && ((fVeloc[ 1 ][ 1 ]) <= 50.0) )
{
if((fVeloc[ 1 ][ 2 ]) < 0 )
{
fVeloc[ 1 ][ 2 ] += ((((fVeloc[ 1 ][ 2 ])*-1.0)+fVeloc[ 0 ][ 2 ])*2.2) ;
}
else
{
fVeloc[ 1 ][ 2 ] += (((fVeloc[ 1 ][ 2 ])+fVeloc[ 0 ][ 2 ])*2.2) ;
}
}
else
fVeloc[ 1 ][ 2 ] += ( (fVeloc[ 0 ][ 2 ] + fVeloc[ 1 ][ 2 ])*0.5) ; // jezeli zombie bedzie w ruchu to nie chce zeby ich za bardzo w gore wypierdalalo...

set_pev( iTouched, pev_velocity, fVeloc[ 1 ] );
}
}
public empty_space() {}


  • +
  • -
  • 0

#10 mierzwi

    Banned

  • Zbanowany

Reputacja: 235
Wszechwidzący

  • Postów:651
  • Lokalizacja:Polska
Offline

Napisano 22.04.2012 19:23

jak nie chcesz żeby ich mocno do góry wy***rdalało to sprawdź czy fVeloc 0 i 1 są mniejsze np. od 100, jak tak to wtedy ustaw mocne wybicie w górę.

jeśli masz fejsa i chcesz mi pomóc to wejdź tutaj: Zaproś kumpla by lubił nasz sklep | Facebook

na pewno jakoś C się odwdzięczę!


#11 poloo89

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:59
  • GG:
  • Lokalizacja:Wrocław
Offline

Napisano 22.04.2012 19:57

ten wektor czyli Z zawsze jest w górę jeżeli wartość jego jest na +, i nie mnóż * 0.2, prędzej już 1.2, bo i tak ich dodane wektory są bardzo małe...


no wlasnie tam gdzie jest *0.5 to ma byc zmniejszone... to jest w momencie kiedy biegna zombie... w momencie gdy stoja jest *2.0

powiedz mi co z tym zapisem: ?
if((fVeloc[ 1 ][ 2 ]) < 0 )
{
fVeloc[ 1 ][ 2 ] += ((((fVeloc[ 1 ][ 2 ])*-1.0)+fVeloc[ 0 ][ 2 ])*2.2) ;
}
else
{
fVeloc[ 1 ][ 2 ] += (((fVeloc[ 1 ][ 2 ])+fVeloc[ 0 ][ 2 ])*2.2) ;
}


czy wg tego zombie zawsze bedzie dostawal wektor dodatni ? niezaleznie od tego czy w momencie uderzenia bedzie spadal czy sie 'wznosil' ?

Użytkownik poloo89 edytował ten post 22.04.2012 19:57

  • +
  • -
  • 0

#12 mierzwi

    Banned

  • Zbanowany

Reputacja: 235
Wszechwidzący

  • Postów:651
  • Lokalizacja:Polska
Offline

Napisano 22.04.2012 20:04

jak spada to wektor = 0 bodajże. a zombie to Toucher czy Touched? Kogo ma odpychać? Moc ma byc zalezna od toucheda czy od touchera?

jeśli masz fejsa i chcesz mi pomóc to wejdź tutaj: Zaproś kumpla by lubił nasz sklep | Facebook

na pewno jakoś C się odwdzięczę!


#13 poloo89

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:59
  • GG:
  • Lokalizacja:Wrocław
Offline

Napisano 22.04.2012 21:07

zombie sa obydwoje (touched i toucher.. (zombie popycha zombie)) ... a moc ma byc zalezna od toucheda bardziej ( od popychanego) chodzi o to ze jak bedzie z im wyzszej wysokosci spadal tym wyzej bedzie popychany do gory .. za kazdym razem mnozac np razy 2. przy peirwszym podrzuceniu poleci na 1metr przy drugim na 2 metry przy trzecim na 4 m ... wiadomo nie musi to byc tak dokladne ale zalezalo by mi wlasnie ze by tak byla zalezna moc wypchnieca do gory.

Użytkownik poloo89 edytował ten post 22.04.2012 21:08

  • +
  • -
  • 0

#14 poloo89

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:59
  • GG:
  • Lokalizacja:Wrocław
Offline

Napisano 23.04.2012 08:38

tak na marginesie co w ogole oznacza zapis += i -= ? (+= - to nadpisanie wartosci czy jak to mam interpterowac) dlaczego np tutaj nie ma zwyklego = ?
fVeloc[ 1 ][ 1 ] += ( (fVeloc[ 0 ][ 1 ]+ fVeloc[ 1 ][ 1 ])*1.8  );

  • +
  • -
  • 0

#15 mierzwi

    Banned

  • Zbanowany

Reputacja: 235
Wszechwidzący

  • Postów:651
  • Lokalizacja:Polska
Offline

Napisano 23.04.2012 13:59

+= - dodaje
-= - odejmuje

jeśli masz fejsa i chcesz mi pomóc to wejdź tutaj: Zaproś kumpla by lubił nasz sklep | Facebook

na pewno jakoś C się odwdzięczę!


#16 poloo89

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:59
  • GG:
  • Lokalizacja:Wrocław
Offline

Napisano 23.04.2012 19:41

czyli jak rozumiem zamiast zapis :

fVeloc[ 1 ][ 1 ] = ( fVeloc[ 0 ][ 1 ]+ fVeloc[ 1 ][ 1 ]  );


jest równoznaczny do :
fVeloc[ 1 ][ 1 ] += ( fVeloc[ 0 ][ 1 ] );


tak ?
  • +
  • -
  • 0

#17 mierzwi

    Banned

  • Zbanowany

Reputacja: 235
Wszechwidzący

  • Postów:651
  • Lokalizacja:Polska
Offline

Napisano 23.04.2012 20:23

tak jest ! :D

a += b
/* TO SAMO CO */
a = a + b

jeśli masz fejsa i chcesz mi pomóc to wejdź tutaj: Zaproś kumpla by lubił nasz sklep | Facebook

na pewno jakoś C się odwdzięczę!


#18 poloo89

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:59
  • GG:
  • Lokalizacja:Wrocław
Offline

Napisano 23.04.2012 21:40

Eureka :D na razie nie mam wiecej pytan do tego problemu, ale prosilbym zeby nie zamykac jesszcze... poniewaz nie uzyskalem satysfakcjonujacych mnie efektow podrzucenia :)) dzialac dziala ale to jeszcze jest do doszlifowania i byc moze ze będę mial jeszcze jakies wkrotce pytania z tematem zwiazane wiec nie będę chcial osobnego tematu zakladac :))
Emu na razie + :)) i mam nadzieje ze w razie co bedziesz nadal tak samo dobrze sluzyl pomoca :D pozdrawiam :)
  • +
  • -
  • 0

#19 poloo89

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:59
  • GG:
  • Lokalizacja:Wrocław
Offline

Napisano 27.04.2012 15:25

eh no i wracam, no wracam... tym razem z wideo:



No i tutaj aktualna wersja pluga na jakiej nagrywany byl filmik:

/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <biohazard>
#include <engine>
#include <fakemeta>
#define PLUGIN "Push player"
#define VERSION "1.0"
#define AUTHOR "OneEyed & Sn!ff3r"

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_touch("player", "player", "touch_Player")
}
public touch_Player( iToucher, iTouched )
{
if((!(task_exists(iToucher * 1000 + iTouched))) && (!(task_exists(iTouched * 1000 + iToucher))) && (get_user_button(iToucher) & IN_ATTACK2) && is_user_zombie(iToucher) && is_user_zombie(iTouched))
{
new Float:fVeloc[ 2 ][ 3 ];
new Float:speed[ 2 ][ 3 ];
set_task(0.1, "empty_space", iToucher * 1000 + iTouched)
set_task(0.1, "empty_space", iTouched * 1000 + iToucher)
entity_get_vector( iToucher, EV_VEC_velocity, fVeloc[ 0 ] );
entity_get_vector( iTouched, EV_VEC_velocity, fVeloc[ 1 ] );

/* OŚ X */
if ((fVeloc[0][0]) < 0)
{
speed[ 1 ][ 0 ] = (( (fVeloc[ 0 ][ 0 ] + fVeloc[ 1 ][ 0 ])*1.4 ) - 60.0);
}
else if ((fVeloc[0][0]) == 0)
{
speed[ 1 ][ 0 ] = (( (fVeloc[ 0 ][ 0 ] + fVeloc[ 1 ][ 0 ])*1.4 ));
}
else if ((fVeloc[0][0]) > 0)
{
speed[ 1 ][ 0 ] = (( (fVeloc[ 0 ][ 0 ] + fVeloc[ 1 ][ 0 ])*1.4 ) + 60.0);
}

/* OŚ Y */
if ((fVeloc[0][1]) < 0)
{
speed[ 1 ][ 1 ] = (( (fVeloc[ 0 ][ 1 ] + fVeloc[ 1 ][ 1 ])*1.4 ) - 60.0);
}
else if ((fVeloc[0][1]) == 0)
{
speed[ 1 ][ 1 ] = (( (fVeloc[ 0 ][ 1 ] + fVeloc[ 1 ][ 1 ])*1.4 ));
}
else if ((fVeloc[0][1]) > 0)
{
speed[ 1 ][ 1 ] = (( (fVeloc[ 0 ][ 1 ] + fVeloc[ 1 ][ 1 ])*1.4 ) + 60.0);
}


/* OŚ Z */
if( ((fVeloc[ 1 ][ 0 ])<=50.0) && ((fVeloc[ 1 ][ 1 ]) <= 50.0) )
{
if((fVeloc[ 1 ][ 2 ]) < 0 )
{
speed[ 1 ][ 2 ] = (((fVeloc[ 1 ][ 2 ])*-1.5)+(fVeloc[ 0 ][ 2 ]*1.5)+60.0)
}
else
{
speed[ 1 ][ 2 ] = (((fVeloc[ 1 ][ 2 ])*1.5)+(fVeloc[ 0 ][ 2 ]*1.5)+60.0)
}
}
else
{
speed[ 1 ][ 2 ] = ( (fVeloc[ 0 ][ 2 ] + fVeloc[ 1 ][ 2 ])*0.5) ;
}

entity_set_vector( iTouched, EV_VEC_velocity, speed[ 1 ] );
}
}
public empty_space() {}



Jak będzie trzeba powiedzieć dlaczego coś zmieniłem tak a nie inaczej to śmiało pytac :D


PROBLEM:

No więc jak na filmiku widać podsadzanie(podrzucanie do góry) dość średnio działa jeśli zombie stoi jeden na drugim to ciężko jest trafić tak żeby poleciał ku górze.. natomiast coś co też ująłem. Jeżeli zombie stoi jeden kolo drugiego i wypycha go w góre ... praktycznie za każdym razem można wyrzucić w górę z satysfakcjonującą efektywnością...

Posiadacie jakieś pomysły aby podrzucanie spod spodu było tak samo skuteczne jak od boku ?

pozdrawiam :))
  • +
  • -
  • 0

#20 poloo89

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:59
  • GG:
  • Lokalizacja:Wrocław
Offline

Napisano 27.04.2012 16:55



dodaje jeszcze demko z prawidlowo dzialajacym podrzucaniem nakrecone na jednym z serwerow zombie.

jak widzicie tutaj bez problemowo zombie podrzuca sie bedąc jedno na drugim .... za kazdym razem leci w gore... co trzeba by bylo zmienic w moim pluginie aby uzyskac taki efekt ?
  • +
  • -
  • 0




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

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