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

Kod na odrzucenie graczy w promieniu x


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

#1 Robiin

    Godlike

  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 051
  • Imię:Robert
  • Lokalizacja:Wrocław
Online

Napisano 04.02.2017 12:57

Cześć,

piszę plugin na jednorazową umiejętność odrzucenia zombie w promieniu X od survivora.

Potrzebny mi kodzik na odrzucenie graczy w promieniu x, oraz na samo odrzucenie.

Próbowałem ściągnąć kod z "zombie_knockback" ale nie do końca o to mi chodziło.


  • +
  • -
  • 0

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


#2 rzeznik9871

    Wszechwidzący

  • Użytkownik

Reputacja: 80
Zaawansowany

  • Postów:260
Offline

Napisano 04.02.2017 13:45

public radio2(id)
{
	if(!is_user_alive(id))
		return;
		
	new Float:pusher[3],Float:pushed[3],Float:velocity[3]
	
	pev(id,pev_origin,pusher)
		
	for(new i = 1 ; i<=max_players ; i++)
	{
		if(!is_user_alive(id) || i==id)
			continue;
			
		pev(i,pev_origin,pushed)
		get_speed_vector(pusher,pushed,1000.0,velocity)
		set_pev(i,pev_velocity,velocity)
	}
}
stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
{
    new_velocity[0] = origin2[0] - origin1[0]
    new_velocity[1] = origin2[1] - origin1[1]
    new_velocity[2] = origin2[2] - origin1[2]
    new Float:num = floatsqroot(speed*speed /  (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] +  new_velocity[2]*new_velocity[2]))
    new_velocity[0] *= num
    new_velocity[1] *= num
    new_velocity[2] *= num
    
    return 1;
} 

stock z bomby odpychajacej do zp 


  • +
  • -
  • 0

Cześć


#3 Robiin

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 051
  • Imię:Robert
  • Lokalizacja:Wrocław
Online

Napisano 04.02.2017 14:55

public radio2(id)
{
	if(!is_user_alive(id))
		return;
		
	new Float:pusher[3],Float:pushed[3],Float:velocity[3]
	
	pev(id,pev_origin,pusher)
		
	for(new i = 1 ; i<=max_players ; i++)
	{
		if(!is_user_alive(id) || i==id)
			continue;
			
		pev(i,pev_origin,pushed)
		get_speed_vector(pusher,pushed,1000.0,velocity)
		set_pev(i,pev_velocity,velocity)
	}
}
stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
{
    new_velocity[0] = origin2[0] - origin1[0]
    new_velocity[1] = origin2[1] - origin1[1]
    new_velocity[2] = origin2[2] - origin1[2]
    new Float:num = floatsqroot(speed*speed /  (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] +  new_velocity[2]*new_velocity[2]))
    new_velocity[0] *= num
    new_velocity[1] *= num
    new_velocity[2] *= num
    
    return 1;
} 

stock z bomby odpychajacej do zp 

 

 

Można to ogarnąć tak, żeby odrzucanie działało na każdego dookoła w promieniu x?

Teraz działa to na zasadzie mierzę w zombie, używam umiejętności i wywala tylko 1 zm.


  • +
  • -
  • 0

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


#4 rzeznik9871

    Wszechwidzący

  • Użytkownik

Reputacja: 80
Zaawansowany

  • Postów:260
Offline

Napisano 04.02.2017 15:00

dziala na kazdego po to jest zastosowana ta petla jezeli chcesz ograniczyc to do pewnej odleglosci dodaj taki warunek w petli 

		if(!is_user_alive(id) || i==id || vector_distance(pusher,pushed)>500.0)
			continue;

500.0 to maksymalny dystans w unitach


  • +
  • -
  • 0

Cześć


#5 Robiin

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 051
  • Imię:Robert
  • Lokalizacja:Wrocław
Online

Napisano 04.02.2017 15:08

dziala na kazdego po to jest zastosowana ta petla jezeli chcesz ograniczyc to do pewnej odleglosci dodaj taki warunek w petli 

		if(!is_user_alive(id) || i==id || vector_distance(pusher,pushed)>500.0)
			continue;

500.0 to maksymalny dystans w unitach

 

Okej, a powiedz mi jeszcze jak ustawić "umiejętność" na +use? Próbowałem get_user_button, ale tak średnio mi to wyszło. Teraz odrzuca jednorazowo - samowolnie, i więcej nie można tego użyć.


  • +
  • -
  • 0

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


#6 rzeznik9871

    Wszechwidzący

  • Użytkownik

Reputacja: 80
Zaawansowany

  • Postów:260
Offline

Napisano 04.02.2017 15:34

pokaz mi sma tak bedzie najszybciej


  • +
  • -
  • 0

Cześć


#7 Robiin

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 051
  • Imię:Robert
  • Lokalizacja:Wrocław
Online

Napisano 04.02.2017 15:37

Zarys

Załączone pliki


  • +
  • -
  • 0

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


#8 rzeznik9871

    Wszechwidzący

  • Użytkownik

Reputacja: 80
Zaawansowany

  • Postów:260
Offline

Napisano 04.02.2017 15:51

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

#define PLUGIN "Plugin"
#define VERSION "0.1"
#define AUTHOR "aS"

new bool:uzyl[33], g_maxplayers

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_forward(FM_CmdStart,"fwd_CmdStart")
}
 
public fwd_CmdStart(id, uc_handle, seed)
{
	if(!is_user_alive(id) && zp_get_user_survivor(id) && !uzyl[id] && zp_is_survivor_round() && !(get_uc(uc_handle,UC_Buttons) & IN_USE))
		return;
					
	new Float:pusher[3],Float:pushed[3],Float:velocity[3]
			
	pev(id,pev_origin,pusher)
				
	for(new i = 1 ; i<=g_maxplayers ; i++)
	{
		if(!is_user_alive(id) || i==id || vector_distance(pusher,pushed)>500.0)
			continue;
					
		pev(i,pev_origin,pushed)
		get_speed_vector(pusher,pushed,1200.0,velocity)
		set_pev(i,pev_velocity,velocity)
	}
	uzyl[id] = true
}

public plugin_cfg(){
	g_maxplayers = get_maxplayers()
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
{
    new_velocity[0] = origin2[0] - origin1[0]
    new_velocity[1] = origin2[1] - origin1[1]
    new_velocity[2] = origin2[2] - origin1[2]
    new Float:num = floatsqroot(speed*speed /  (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] +  new_velocity[2]*new_velocity[2]))
    new_velocity[0] *= num
    new_velocity[1] *= num
    new_velocity[2] *= num
    
    return 1;
} 

nie mam jak sprawdzic


  • +
  • -
  • 0

Cześć


#9 Robiin

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 051
  • Imię:Robert
  • Lokalizacja:Wrocław
Online

Napisano 04.02.2017 16:00

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

#define PLUGIN "Plugin"
#define VERSION "0.1"
#define AUTHOR "aS"

new bool:uzyl[33], g_maxplayers

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_forward(FM_CmdStart,"fwd_CmdStart")
}
 
public fwd_CmdStart(id, uc_handle, seed)
{
	if(!is_user_alive(id) && zp_get_user_survivor(id) && !uzyl[id] && zp_is_survivor_round() && !(get_uc(uc_handle,UC_Buttons) & IN_USE))
		return;
					
	new Float:pusher[3],Float:pushed[3],Float:velocity[3]
			
	pev(id,pev_origin,pusher)
				
	for(new i = 1 ; i<=g_maxplayers ; i++)
	{
		if(!is_user_alive(id) || i==id || vector_distance(pusher,pushed)>500.0)
			continue;
					
		pev(i,pev_origin,pushed)
		get_speed_vector(pusher,pushed,1200.0,velocity)
		set_pev(i,pev_velocity,velocity)
	}
	uzyl[id] = true
}

public plugin_cfg(){
	g_maxplayers = get_maxplayers()
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
{
    new_velocity[0] = origin2[0] - origin1[0]
    new_velocity[1] = origin2[1] - origin1[1]
    new_velocity[2] = origin2[2] - origin1[2]
    new Float:num = floatsqroot(speed*speed /  (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] +  new_velocity[2]*new_velocity[2]))
    new_velocity[0] *= num
    new_velocity[1] *= num
    new_velocity[2] *= num
    
    return 1;
} 

nie mam jak sprawdzic

 

Nie odrzuca = nie działa


  • +
  • -
  • 0

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


#10 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 04.02.2017 16:35

Zastosuj forward EmitSound.

Idealny przykład jest zaimplementowany np. w silniku Cod Mod'a.


Użytkownik _McHappy edytował ten post 04.02.2017 16:36

  • +
  • -
  • 0

#11 Robiin

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 051
  • Imię:Robert
  • Lokalizacja:Wrocław
Online

Napisano 04.02.2017 19:02

Zastosuj forward EmitSound.

Idealny przykład jest zaimplementowany np. w silniku Cod Mod'a.

 

Rozwinąłbyś myśl?


  • +
  • -
  • 0

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


#12 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 04.02.2017 19:45

Nietestowane.

 

@UP

Poprawka - nie odrzuca ludzi.

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <zombieplague>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "[Umiejetnosc] Odrzut radialny"
#define VERSION "1.3"
#define AUTHOR "AMXX.pl"

new g_iMaxPlayers;
new bool:g_bUzyl[33];

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_forward(FM_EmitSound, "EmitSound");
    RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
}

public plugin_cfg(){
    g_iMaxPlayers = get_maxplayers()
}

public Odrodzenie(id)
    g_bUzyl[id] = false;

public EmitSound(id, iChannel, szSound[], Float:fVol, Float:fAttn, iFlags, iPitch )
{
    if( equal(szSound, "common/wpn_denyselect.wav") && zp_is_survivor_round() )
    {
        if( is_user_alive(id) && zp_get_user_survivor(id) )
        {    
            if( g_bUzyl[id] )
            {
                client_print(id, print_center, "Juz uzyles tej umiejetnosci !");
                return FMRES_IGNORED;
            }
            
            new Float:pusher[3], Float:pushed[3], Float:velocity[3]
            pev(id,pev_origin,pusher)
            
            for(new i = 1; i<=g_iMaxPlayers; i++)
            {
                if( !is_user_alive(i) || i==id || zp_get_user_survivor(i))
                    continue;
                
                pev(i,pev_origin,pushed);
                
                if( vector_distance(pusher,pushed)>500.0 )
                    continue;
                
                get_speed_vector(pusher,pushed,1200.0,velocity)
                set_pev(i,pev_velocity,velocity)
            }
            g_bUzyl[id] = true
        }
        
        return FMRES_SUPERCEDE;
    }
    
    return FMRES_IGNORED;
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
{
    new_velocity[0] = origin2[0] - origin1[0]
    new_velocity[1] = origin2[1] - origin1[1]
    new_velocity[2] = origin2[2] - origin1[2]
    
    new Float:num = floatsqroot(speed*speed /  (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] +  new_velocity[2]*new_velocity[2]))
    
    new_velocity[0] *= num
    new_velocity[1] *= num
    new_velocity[2] *= num
}


Użytkownik _McHappy edytował ten post 04.02.2017 19:57

  • +
  • -
  • 1

#13 Robiin

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 051
  • Imię:Robert
  • Lokalizacja:Wrocław
Online

Napisano 04.02.2017 20:10

Spoiler

 

Dziękuję, nie mogłem sobie z tym poradzić. + c:

 

~ Zamek


  • +
  • -
  • 0

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





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

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