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

Przyciaganie


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

#1 kyku

    Wszechmogący

  • Użytkownik

Reputacja: 166
Profesjonalista

  • Postów:612
  • Lokalizacja:Jasło
Offline

Napisano 24.02.2010 23:17

Zna ktoś sposób na przyciąganie gracza do jakiegoś punktu ? najlepiej aby było to w miare "realne"
  • +
  • -
  • 0

#2 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 24.02.2010 23:42

Przyciąganie w sensie ?
Coś w stylu magnesu od którego można uciec czy linka od której nie da się uciec ?
More info plz
  • +
  • -
  • 0

#3 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 25.02.2010 00:10

Pobierasz współrzędne gracza, współrzędne punktu do którego gracz jest przyciągany, obliczasz różnicę tych wektorów, a następnie dodajesz do predkości poruszania się gracza odpowiedni iloczyn tej wartości co pewien odcinek czasu (co da efekt przyspieszania), a przy pewnej granicznej predkosci ustawiać konkretna wartosc (nie ma sensu przyspieszac gracza w nieskonczonosc).

Oto opis sposobu na dosc realne przyciaganie gracza :F
  • +
  • -
  • 0

#4 kyku

    Wszechmogący

  • Autor tematu
  • Użytkownik

Reputacja: 166
Profesjonalista

  • Postów:612
  • Lokalizacja:Jasło
Offline

Napisano 25.02.2010 01:21

na razie zrobilem, ze zmniejsza sie predkosc.
jest jakis sposob aby gracza "wpychalo" do srodka tego punktu? Probowalem za pomoca velocity_by_aim(...), entity_set_vector(...) ale jedyne co udalo mi sie osiagnac to latanie jak na noclipie :P

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fun>


#define PLUGIN "New Plugin"
#define VERSION "1.0"
#define AUTHOR "Author"
new bool: byl[33];
new pos[3];
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("say /magnes", "przyciagaj");
}
public client_putinserver(id) byl[id] = false;
public przyciagaj(id){
	get_user_origin(id, pos);
	client_print(id, print_chat, "Pozycja zapisana.");	
}
public client_PreThink(id){

if(pos[0] && is_user_alive(id)){
new ppos[3],odleglosc;
get_user_origin(id, ppos);
odleglosc = get_distance(ppos, pos);
if(odleglosc<250 && get_user_maxspeed(id) != float(odleglosc)){

set_user_maxspeed(id, float(odleglosc))
byl[id] = true;
} else if(byl[id]){
byl[id] = false;
set_user_maxspeed(id, 1.0);
}
}	
}
tutaj kod
  • +
  • -
  • 0

#5 Owner123

    Wszechpomocny

  • Użytkownik

Reputacja: 146
Zaawansowany

  • Postów:331
  • Lokalizacja:Barty ;]
Offline

Napisano 25.02.2010 18:55

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
new pos[33][3];

public plugin_init() {
register_plugin("Magnes", "1.0", "Owner")
register_forward(FM_PlayerPreThink, "fwPlayerPreThink")
register_clcmd("say /magnes", "Start")
}

public Start(id)
{
get_user_origin(id, pos[id])
client_print(id, print_chat, "Pozycja zapisana")
}

public fwPlayerPreThink(id)
{
if(pos[id][0] && is_user_alive(id))
{
new endpos[33][3]
get_user_origin(id, endpos[id], 3)
new Float:end[33][3]
end[id][0] = (float(endpos[id][0]) - float(pos[id][0]))
end[id][1] = (float(endpos[id][1]) - float(pos[id][1]))
end[id][2] = (float(endpos[id][2]) - float(pos[id][2]))

new Float:velocity[33]
velocity[id] = end[id][0] * end[id][0] + end[id][1] * end[id][1] + end[id][2] * end[id][2]

set_pev(id, pev_velocity, velocity[id])
}
}

No mi się udało coś takiego uzyskać :D
Prędkość jest ogromna i do tego nie chce wyrzucać w górę :F
A i do tego nie wypycha mnie w strone punktu ... tylko w jego kierunku :F

Użytkownik Owner123 edytował ten post 25.02.2010 18:57

  • +
  • -
  • 0

#6 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

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

Napisano 25.02.2010 20:21

z tego co pamiętam to jeszcze
end[id][2] = -  end[id][2];

  • +
  • -
  • 0

#7 QTM. Peyote

    Wszechpomocny

  • Użytkownik

Reputacja: 1 010
Hero

  • Postów:330
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 27.02.2010 23:03

Ja znalazłem 2 sposoby.

1. Przyciąga równomiernie jeżeli dystans mniejszy niż 900.
#include <amxmodx>
#include <engine>

new Float:przyciaganie[3]


public plugin_init() 
{
	register_plugin("Przyciaganie", "0.0", "Peyote")
	register_clcmd("say /przyciaganie", "zaznacz")
}


public client_PreThink(id)
{

	new Float:origin[3]
	new Float:velocity[3]
	entity_get_vector(id, EV_VEC_origin, origin)
	new Float:distance = get_distance_f(origin,przyciaganie)
	entity_get_vector(id, EV_VEC_velocity, velocity)
	if(distance < 900.0)
	{
		for(new i=0;i<=2;i++)
		{
			velocity[i] += (origin[i] > przyciaganie[i])?-7.0:7.0
		}
		entity_set_vector(id, EV_VEC_velocity, velocity)
	}
}


public zaznacz(id)
{
	entity_get_vector(id, EV_VEC_origin, przyciaganie)
}

2. Siła przyciągania zależna jest od dystansu. Kiedy się oddalamy szybko spada. Kiedy jesteśmy w punkcie przyciągania bardzo trudno się wydostać i powstają "turbulencje".

#include <amxmodx>
#include <engine>

new Float:przyciaganie[3]


public plugin_init() 
{
	register_plugin("Przyciaganie", "0.0", "Peyote")
	register_clcmd("say /przyciaganie", "zaznacz")
}


public client_PreThink(id)
{

	new Float:origin[3]
	new Float:velocity[3]
	entity_get_vector(id, EV_VEC_origin, origin)
	new Float:distance = get_distance_f(origin,przyciaganie)
	entity_get_vector(id, EV_VEC_velocity, velocity)
	for(new i=0;i<=2;i++)
	{
		velocity[i] += ((origin[i] > przyciaganie[i])?-1000.0:1000.0) / distance
	}
	entity_set_vector(id, EV_VEC_velocity, velocity)
}


public zaznacz(id)
{
	entity_get_vector(id, EV_VEC_origin, przyciaganie)
}

Mnie bardziej przypadła wersja pierwsza ;]
  • +
  • -
  • 1

#8 kyku

    Wszechmogący

  • Autor tematu
  • Użytkownik

Reputacja: 166
Profesjonalista

  • Postów:612
  • Lokalizacja:Jasło
Offline

Napisano 28.02.2010 00:17

no no :)
działa super, dzięki.
  • +
  • -
  • 0




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

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