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

Dodanie speeda po skoku, jak to zrobić?


Najlepsza odpowiedź grankee , 15.04.2016 01:53

Czyli chcesz wyłapać skok i dać po prostu kopa?

 

Kolegów wyżej lepiej nie słuchać  :cfaniak:

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




public plugin_init() {
	register_plugin("Jump boost","0.1","grankee")
	
	// Add your code here...
}
public client_PreThink(id)
{
	if((get_user_button(id)&IN_JUMP)&&(!get_user_oldbutton(id)&IN_JUMP))//skok
	{
		new Float:flVecVelocity[3]
		get_user_velocity(id,flVecVelocity)//pobieramy prędkość gracza
                //tworzymy zmienna wspolczynnik
		new Float:wsp=0.1// 0.1 zwiększy o 10%, ustaw ile chcesz, ale musi być po przecinku.
		//zwiększamy prędkość o współczynnik w trzech kierunkach, jeśli chcesz tylko w górę zwiększyć to usuń dwie oznaczone linijki
                flVecVelocity[0]*=wsp;//usun jesli chcesz tylko w górę przyspieszyć
		flVecVelocity[1]*=wsp;//usun jesli chcesz tylko w górę przyspieszyć
		flVecVelocity[2]*=wsp;
		set_user_velocity(id,flVecVelocity)//ustawiamy nowa zwiekszona predkosc
	}
}
Przejdź do postu


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

#1 Shalom_israel

    Pomocny

  • Użytkownik

Reputacja: 6
Nowy

  • Postów:64
  • Imię:Karol
  • Lokalizacja:Wadowice
Offline

Napisano 14.04.2016 11:55

Witam, czy jest możliwość zrobienia pluginu który działa następująco?:

 

Gdy gracz podskoczy, dodawana jest mu prędkość(nie ustawiana) np. 10? 

A gdy wyląduje to prędkość jest standardowa(250).

 

Prosiłbym o dokładne wytłumaczenie nt. ew. stworzenia takiego pluginu, w miarę mozliwości krok po kroku.


  • +
  • -
  • 0

#2 Robiin

    Godlike

  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 050
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 14.04.2016 13:58

:)


Użytkownik aSiorr edytował ten post 24.04.2018 21:18

  • +
  • -
  • -2

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#3 wonsz żeczny

    Wszechwidzący

  • Użytkownik

Reputacja: 82
Zaawansowany

  • Postów:254
  • Imię:Wonsz
  • Lokalizacja:Żeka
Offline

Napisano 14.04.2016 14:11

Kolegi wyżej lepiej nie słuchać.

Jako takiej bezpośredniej funkcji lub eventu odpowiadającego za skok nie ma, można użyć np. tego:

set_pev(id, pev_oldbuttons, pev(id, pev_oldbuttons) | IN_JUMP)

Ale jak złapać wylądowanie to nie wiem, może 

register_touch()

  • +
  • -
  • 1

#4 GeDox

    Wszechpomocny

  • Użytkownik

Reputacja: 125
Zaawansowany

  • Postów:315
  • Steam:steam
  • Imię:Przemysław
  • Lokalizacja:Kielce
Offline

Napisano 14.04.2016 20:29

 

Kolegi wyżej lepiej nie słuchać.

Jako takiej bezpośredniej funkcji lub eventu odpowiadającego za skok nie ma, można użyć np. tego:

set_pev(id, pev_oldbuttons, pev(id, pev_oldbuttons) | IN_JUMP)

Ale jak złapać wylądowanie to nie wiem, może 

register_touch()
entity_get_int(id, EV_INT_flags)

Flaga odpowiadająca za stanie na podłodze:

FL_ONGROUND

Uwaga, flagi są bitami.

 

Gdybyś nie miał:

#define    FL_ONGROUND    (1<<9)    // At rest / on the ground

 


Użytkownik GeDox edytował ten post 14.04.2016 20:29

  • +
  • -
  • 0

#5 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

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

Napisano 15.04.2016 01:53   Najlepsza odpowiedź

Czyli chcesz wyłapać skok i dać po prostu kopa?

 

Kolegów wyżej lepiej nie słuchać  :cfaniak:

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




public plugin_init() {
	register_plugin("Jump boost","0.1","grankee")
	
	// Add your code here...
}
public client_PreThink(id)
{
	if((get_user_button(id)&IN_JUMP)&&(!get_user_oldbutton(id)&IN_JUMP))//skok
	{
		new Float:flVecVelocity[3]
		get_user_velocity(id,flVecVelocity)//pobieramy prędkość gracza
                //tworzymy zmienna wspolczynnik
		new Float:wsp=0.1// 0.1 zwiększy o 10%, ustaw ile chcesz, ale musi być po przecinku.
		//zwiększamy prędkość o współczynnik w trzech kierunkach, jeśli chcesz tylko w górę zwiększyć to usuń dwie oznaczone linijki
                flVecVelocity[0]*=wsp;//usun jesli chcesz tylko w górę przyspieszyć
		flVecVelocity[1]*=wsp;//usun jesli chcesz tylko w górę przyspieszyć
		flVecVelocity[2]*=wsp;
		set_user_velocity(id,flVecVelocity)//ustawiamy nowa zwiekszona predkosc
	}
}

  • +
  • -
  • 1

#6 wonsz żeczny

    Wszechwidzący

  • Użytkownik

Reputacja: 82
Zaawansowany

  • Postów:254
  • Imię:Wonsz
  • Lokalizacja:Żeka
Offline

Napisano 15.04.2016 14:10

Kolegi wyżej nie słuchać :)

 

@grankee

A gdy wyląduje to prędkość jest standardowa(250).

  • +
  • -
  • 0

#7 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

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

Napisano 16.04.2016 02:08

A czy ja gdzieś zmieniam maxspeed?

Przeczytaj mój kod i pomyśl, czy jak wyląduje to prędkość będzie inna niż standardowa :)

 


Użytkownik grankee edytował ten post 16.04.2016 02:09

  • +
  • -
  • 0

#8 Linux'

    Pan Pomocny

  • Power User

Reputacja: 549
Wszechwiedzący

  • Postów:1 501
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:AmxMod i SourceMod
Offline

Napisano 16.04.2016 07:17

@Grankee częściowo dobrze lecz zapomniałeś o sprawdzaniu czy gracz jest w powietrzu, poza tym lepszym rozwiązaniem było by użycie cmdstart.
  • +
  • -
  • 0

b35020692_qesnxqa.png


#9 Shalom_israel

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 6
Nowy

  • Postów:64
  • Imię:Karol
  • Lokalizacja:Wadowice
Offline

Napisano 16.04.2016 08:24

Dziękuję grankee, działa


  • +
  • -
  • 0

#10 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

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

Napisano 16.04.2016 14:22


zapomniałeś o sprawdzaniu czy gracz jest w powietrzu,

Fakt, przypomniałem sobie jak już kompa wyłączyłem. Teraz teoretycznie klikając spację odpowiednio szybko można latać :D

Ktoś przypomni jak to sprawdzić? Wystarczy !FL_ON_GROUND && !FL_PARTIALGROUND czy jeszcze coś trzeba sprawdzić?

 

 


poza tym lepszym rozwiązaniem było by użycie cmdstart.

Czemu?

 

 

Zrobiłem tak, sprawdź:

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




public plugin_init() {
	register_plugin("Jump boost","0.2","grankee")
	
	// Add your code here...
}
public client_PreThink(id)
{
	if((get_user_button(id)&IN_JUMP)&&(!get_user_oldbutton(id)&IN_JUMP)&&(entity_get_int(id,EV_INT_flags)&FL_ONGROUND || entity_get_int(id,EV_INT_flags)&FL_PARTIALGROUND))//skok
	{
		new Float:flVecVelocity[3]
		get_user_velocity(id,flVecVelocity)
		new Float:wsp=0.1// 0.1 zwiększy o 10%, ustaw ile chcesz, ale musi być po przecinku.
		flVecVelocity[0]*=wsp;//usun jesli chcesz tylko w górę przyspieszyć
		flVecVelocity[1]*=wsp;//usun jesli chcesz tylko w górę przyspieszyć
		flVecVelocity[2]*=wsp;
		set_user_velocity(id,flVecVelocity)
	}
}


Użytkownik grankee edytował ten post 16.04.2016 14:26

  • +
  • -
  • 0

#11 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 16.04.2016 15:50

najlepszym rozwiazaniem jest uzycie Ham_Player_Jump :)


  • +
  • -
  • 0

#12 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 16.04.2016 16:06

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

public plugin_init() {
	register_plugin("Jump Boost", "1.0", "AsiaP");

	RegisterHamPlayer(Ham_Player_Jump, "PlayerJump");
}

public PlayerJump(id)
{
	if(!is_user_alive(id) || pev(id, pev_oldbuttons) & IN_JUMP || ~pev(id, pev_flags) & FL_ONGROUND)
	{
		return;
	}

	static Float:vecVelocity[3];
	pev(id, pev_velocity, vecVelocity);

	vecVelocity[0] += 10.0;
	vecVelocity[1] += 10.0;
	vecVelocity[2] += 10.0;

	set_pev(id, pev_velocity, vecVelocity);
}

  • +
  • -
  • 0

#13 Linux'

    Pan Pomocny

  • Power User

Reputacja: 549
Wszechwiedzący

  • Postów:1 501
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:AmxMod i SourceMod
Offline

Napisano 16.04.2016 17:02

 


zapomniałeś o sprawdzaniu czy gracz jest w powietrzu,

Fakt, przypomniałem sobie jak już kompa wyłączyłem. Teraz teoretycznie klikając spację odpowiednio szybko można latać :D

Ktoś przypomni jak to sprawdzić? Wystarczy !FL_ON_GROUND && !FL_PARTIALGROUND czy jeszcze coś trzeba sprawdzić?

 

 


poza tym lepszym rozwiązaniem było by użycie cmdstart.

Czemu?

 

 

Zrobiłem tak, sprawdź:

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




public plugin_init() {
	register_plugin("Jump boost","0.2","grankee")
	
	// Add your code here...
}
public client_PreThink(id)
{
	if((get_user_button(id)&IN_JUMP)&&(!get_user_oldbutton(id)&IN_JUMP)&&(entity_get_int(id,EV_INT_flags)&FL_ONGROUND || entity_get_int(id,EV_INT_flags)&FL_PARTIALGROUND))//skok
	{
		new Float:flVecVelocity[3]
		get_user_velocity(id,flVecVelocity)
		new Float:wsp=0.1// 0.1 zwiększy o 10%, ustaw ile chcesz, ale musi być po przecinku.
		flVecVelocity[0]*=wsp;//usun jesli chcesz tylko w górę przyspieszyć
		flVecVelocity[1]*=wsp;//usun jesli chcesz tylko w górę przyspieszyć
		flVecVelocity[2]*=wsp;
		set_user_velocity(id,flVecVelocity)
	}
}

 

Prethink wykonywany jest non stop a cmdstart tylko gdy zachodzą w środku jakieś zmiany więc jest bardziej optymalny dla serwera.


  • +
  • -
  • 0

b35020692_qesnxqa.png





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

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