Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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
CoD Nowy

Wykrywanie kiedy gracz stoi

cod nowy

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

#1 Eustachy8

    Wszechpomocny

  • Użytkownik

Reputacja: 116
Zaawansowany

  • Postów:304
  • Imię:Kuba
  • Lokalizacja:Buczacz
Offline

Napisano 26.06.2012 17:29

Witam!

Chciałem zrobić klasę, która gdy gracz stoi nieruchomo zmniejsza jego widoczność o 30 co sekundę. W tym momencie pojawia się moje pytanie, jak przechwytywać chwilę, gdy gracz się zatrzymał, a jak gdy ruszył?
  • +
  • -
  • 0

24azdk0.jpg
b_350_20_692108_381007_FFFFFF_000000.png
 


#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6033
Godlike

  • Postów:10825
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 26.06.2012 17:30

sprawdzaj pev_velocity
  • +
  • -
  • 0

#3 Eustachy8

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 116
Zaawansowany

  • Postów:304
  • Imię:Kuba
  • Lokalizacja:Buczacz
Offline

Napisano 26.06.2012 17:36

nie ma tego w dokumentacji, mógłbyś mi przybliżyć działanie tego?
  • +
  • -
  • 0

24azdk0.jpg
b_350_20_692108_381007_FFFFFF_000000.png
 


#4 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6033
Godlike

  • Postów:10825
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 26.06.2012 17:40

jeśli długość wektora utworzonego z velocity jest != 0.0 to gracz się porusza
  • +
  • -
  • 0

#5 Eustachy8

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 116
Zaawansowany

  • Postów:304
  • Imię:Kuba
  • Lokalizacja:Buczacz
Offline

Napisano 26.06.2012 17:46

czyli, że pev_velocity to funkcja? i można sprawdzać poprostu przez if? mógłbyś jakiś prosty przykładzik.

znalazlem klase z tym:

pev(id, pev_velocity, velocity)


ale w jaki sposób mam to wykorzystać?


Użytkownik Eustachy8 edytował ten post 26.06.2012 17:52

  • +
  • -
  • 0

24azdk0.jpg
b_350_20_692108_381007_FFFFFF_000000.png
 


#6 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6033
Godlike

  • Postów:10825
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 26.06.2012 17:51

czyli, że pev_velocity to funkcja?

nie
http://amxx.pl/dokumentacja/f693/pev

http://forums.allied...ead.php?t=91474
  • +
  • -
  • 0

#7 Eustachy8

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 116
Zaawansowany

  • Postów:304
  • Imię:Kuba
  • Lokalizacja:Buczacz
Offline

Napisano 26.06.2012 17:57

hmm... nie wiem czy dobrze to zrozumiałem:
new Float:velocity[3];
pev(id, pev_velocity, velocity);
if(velocity[0] != 0.0 && velocity[1] != 0.0 && velocity[2] != 0.0)
{
i tu już jakieś bajery
}

Użytkownik Eustachy8 edytował ten post 26.06.2012 17:58

  • +
  • -
  • 0

24azdk0.jpg
b_350_20_692108_381007_FFFFFF_000000.png
 


#8 CheQ

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 1984
Godlike

  • Postów:5534
  • Imię:Adaś
  • Lokalizacja:Glinianka
Offline

Napisano 26.06.2012 18:01

jakbyś szukał innen metody to można spróbować tak

public is_klik(id)
{
if(get_user_button(id) & IN_FORWARD || get_user_button(id) & IN_MOVELEFT || get_user_button(id) & IN_BACK || get_user_button(id) & IN_MOVERIGHT || get_user_button(id) & IN_RIGHT || get_user_button(id) & IN_LEFT)
  return true;
 
return false;
}

która gdy gracz stoi nieruchomo


Skoro stoi nie ruchomo to się nie rusza a jak się nie rusza to nie używa klawiszy do poruszania a jak nie używa klawiszy do poruszania to nie klika ani w ani s ani a ani d. Ja podałem taką funkcje gdzie zwraca true gdy klika.
  • +
  • -
  • 0

b_560_95_1.png


#9 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6033
Godlike

  • Postów:10825
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 26.06.2012 18:03

a co jeśli gracz np spada wtedy też nie naciska klawiszy mimo że się porusza :)
  • +
  • -
  • 0

#10 Eustachy8

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 116
Zaawansowany

  • Postów:304
  • Imię:Kuba
  • Lokalizacja:Buczacz
Offline

Napisano 26.06.2012 18:08

w sumie nie głupi pomysł ;D a po co in_moveright i in_right?
a po drugie jestem też ciekawy, czy dobrze zrozumiałem to, co Dark napisał


@up: haha ;D w sumie racja, to dobrze tamto wyżej napisałem?

Użytkownik Eustachy8 edytował ten post 26.06.2012 18:08

  • +
  • -
  • 0

24azdk0.jpg
b_350_20_692108_381007_FFFFFF_000000.png
 


#11 CheQ

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 1984
Godlike

  • Postów:5534
  • Imię:Adaś
  • Lokalizacja:Glinianka
Offline

Napisano 26.06.2012 18:11

@Dark Czepiasz się - Autor o Tym nie wpomniał :P

if(!is_klik(id) && !(get_entity_flags(id) & FL_ONGROUND))


coś takiego?
  • +
  • -
  • 1

b_560_95_1.png


#12 sebul

    Godlike

  • Junior Admin

Reputacja: 2016
Godlike

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

Napisano 26.06.2012 18:12

jakbyś szukał innen metody to można spróbować tak

public is_klik(id)
{
if(get_user_button(id) & IN_FORWARD || get_user_button(id) & IN_MOVELEFT || get_user_button(id) & IN_BACK || get_user_button(id) & IN_MOVERIGHT || get_user_button(id) & IN_RIGHT || get_user_button(id) & IN_LEFT)
  return true;

return false;
}

która gdy gracz stoi nieruchomo


Skoro stoi nie ruchomo to się nie rusza a jak się nie rusza to nie używa klawiszy do poruszania a jak nie używa klawiszy do poruszania to nie klika ani w ani s ani a ani d. Ja podałem taką funkcje gdzie zwraca true gdy klika.

Chyba już lepiej by było to zrobić tak
public bool:is_klik(id)
{
return bool:(get_user_button(id) & (IN_FORWARD|IN_BACK|IN_MOVELEFT|IN_MOVERIGHT));
}

  • +
  • -
  • 0
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Generator tabeli expa - aż do 103600 poziomu

#13 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6033
Godlike

  • Postów:10825
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 26.06.2012 18:13

new Float:fVelocity[3];
pev(id, pev_velocity, fVelocity);
if( fVelocity[ 0 ] != 0.0 || fVelocity[ 1 ] != 0.0 || fVelocity[ 2 ] != 0.0){
//gracz się porusza
}

Czepiasz się - Autor o Tym nie wpomniał

;>
  • +
  • -
  • 1

#14 Pan PrO

    Wszechpomocny

  • Użytkownik

Reputacja: 98
Zaawansowany

  • Postów:388
  • Lokalizacja:PC
Offline

Napisano 26.06.2012 18:15

Nie lepiej skorzystać z tego ??

http://amxx.pl/topic...pozycja-i-ruch/
  • +
  • -
  • 1

#15 sebul

    Godlike

  • Junior Admin

Reputacja: 2016
Godlike

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

Napisano 26.06.2012 18:16

new Float:fVelocity[3];
pev(id, pev_velocity, fVelocity);
if( fVelocity[ 0 ] != 0.0 || fVelocity[ 1 ] != 0.0 || fVelocity[ 2 ] != 0.0){
//gracz się porusza
}

Czepiasz się - Autor o Tym nie wpomniał

;>

new Float:fVelocity[3];
pev(id, pev_velocity, fVelocity);
if(vector_length(fVelocity) > 0) {
//gracz się porusza
}

A nie lepiej tak?
  • +
  • -
  • 1
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Generator tabeli expa - aż do 103600 poziomu

#16 Eustachy8

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 116
Zaawansowany

  • Postów:304
  • Imię:Kuba
  • Lokalizacja:Buczacz
Offline

Napisano 26.06.2012 18:27

new Float:fVelocity[3];
pev(id, pev_velocity, fVelocity);
if( fVelocity[ 0 ] != 0.0 || fVelocity[ 1 ] != 0.0 || fVelocity[ 2 ] != 0.0){
//gracz się porusza
}


ee to jak fVelocity wszędzie równa się 0.0 to gracz się porusza? :D bo tak to teraz zrozumiałem ;D

nie zawuważyłem "!" Dzięki wszystkim za pomoc

a jeszcze takie pytanko, w jakim evencie takie pierdoły najlepiej sprawdzać?
sebul (26.06.2012 18:20):
Tam masz != czyli czyta się to jako "nie jest równe".

  • +
  • -
  • 0

24azdk0.jpg
b_350_20_692108_381007_FFFFFF_000000.png
 


#17 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6033
Godlike

  • Postów:10825
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 26.06.2012 18:31

a jeszcze takie pytanko, w jakim evencie takie pierdoły najlepiej sprawdzać?

w np. prethinku

A nie lepiej tak?

nie ma to większego znaczenia twój sposób wykonuje więcej obliczeń ( obliczanie długości wektora )

> 0

przy wektorach lepiej używać liczb zmiennoprzecinkowych
sebul (26.06.2012 21:30):
0 = 0.0, fałsz = fałsz, plugin sam sobie to zamieni, a nawet chyba nie plugin, a kompilator podczas kompilacji.
A co do obliczeń, nie ma ich dużo.

  • +
  • -
  • 0

#18 Pan PrO

    Wszechpomocny

  • Użytkownik

Reputacja: 98
Zaawansowany

  • Postów:388
  • Lokalizacja:PC
Offline

Napisano 26.06.2012 18:37

a może tak ?



public ruch(id)
{
if(!is_user_moving(id) && !is_user_jumping(id)) // czyli gracz sie nie rusza i nie jest w locie
{
// twoj kod
}
}

stock bool:is_user_jumping(id)
{
new Float:fVelo[3];
pev(id, pev_velocity, fVelo);

return fVelo[2] ? true : false;
}

stock bool:is_user_moving(id)
{
new Float:fVelo[3], Float:fLength;
pev(id, pev_velocity, fVelo);

fVelo[2] = 0.0;

fLength = vector_length(fVelo);

return fLength ? true : false;
}

  • +
  • -
  • 0

#19 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6033
Godlike

  • Postów:10825
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 26.06.2012 18:44

a może tak ?

w twoim kodzie również jest sprawdzanie velocity nawet 2 razy ( oddzielnie )
  • +
  • -
  • 0

#20 Eustachy8

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 116
Zaawansowany

  • Postów:304
  • Imię:Kuba
  • Lokalizacja:Buczacz
Offline

Napisano 26.06.2012 18:46

Specjaliści, znośnie mi to wyszło?

#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <hamsandwich>
#include <fakemeta>
#include <engine>

new const nazwa[]   = "Wasilij Zajcew";
new const opis[]    = "1/1 z AWP, gdy stoisz nieruchomo zmniejsza się twoja widoczność o 30 co sekunde";
new const bronie    = (1<<CSW_AWP);
new const zdrowie   = 20;
new const kondycja  = 20;
new const inteligencja = 0;
new const wytrzymalosc = 0;

new bool:ma_klase[33];
new Widzialnosc[33];

public plugin_init()
{
register_plugin(nazwa, "1.0", "Eustachy8");

cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
register_forward(FM_PlayerPreThink, "PreThink");
}

public cod_class_enabled(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
client_print(id, print_chat, "[Wasilij Zajcew] Nie masz uprawnien, aby uzywac tej klasy.")
return COD_STOP;
}
ma_klase[id]=true;

return COD_CONTINUE;
}
public cod_class_disabled(id)
ma_klase[id]=false;

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker))
return HAM_IGNORED;

if(!ma_klase[idattacker])
return HAM_IGNORED;

if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_AWP && damagebits & DMG_BULLET)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);

return HAM_IGNORED;
}
public PreThink(id)
{
new Float:fVelocity[3];
pev(id, pev_velocity, fVelocity);
if( fVelocity[ 0 ] != 0.0 || fVelocity[ 1 ] != 0.0 || fVelocity[ 2 ] != 0.0)
{
Widzialnosc[id]=255;
}
else
{
set_task(1.0, "ZmniejszWidzialnosc", id);
}
set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, Widzialnosc[id]);
}

public ZmniejszWidzialnosc(id)
{
if (Widzialnosc[id]<1)
Widzialnosc[id]=1;
else
Widzialnosc[id]-=30;
}
?
  • +
  • -
  • 0

24azdk0.jpg
b_350_20_692108_381007_FFFFFF_000000.png
 






Również z jednym lub większą ilością słów kluczowych: cod nowy

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

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