←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Wywołanie danej komendy po wy...

Zablokowany

  • +
  • -
XXL - zdjęcie XXL 09.05.2020

Witam w jaki sposób uzyskać komende po wyborze broni np:

Wybieram z menu listy danego pluginu ak47 - wywołuje w consoli komende (chodzi o to że nie mam możliwości zrobić tego w pluginie więc chciałbym aby serwer sprawdzał jaką mamy broń i wykonywał daną komendę)

 

Dzięki pozdrawiam

Odpowiedz

  • +
  • -
Robiin - zdjęcie Robiin 09.05.2020

Hm, jest event Ham_Item_AddToPlayer, możesz wyłapać dodanie broni w ten sposób. Zależnie od pluginu w którym wybierasz broń możnaby pokombinować też z wyłapaniem wykonania funkcji dodającej broń, ale to już cięższe szachy.

Odpowiedz

  • +
  • -
XXL - zdjęcie XXL 09.05.2020

Hm, jest event Ham_Item_AddToPlayer, możesz wyłapać dodanie broni w ten sposób. Zależnie od pluginu w którym wybierasz broń możnaby pokombinować też z wyłapaniem wykonania funkcji dodającej broń, ale to już cięższe szachy.

 

Tutaj skrawek menu broni czy dało by rade coś tutaj dodać?

 

else if(equali(weapon, "usp")) name = "Usp";
else if(equali(weapon, "p228")) name = "P228";
else if(equali(weapon, "deagle")) name = "Deagle";
Odpowiedz

  • +
  • -
Robiin - zdjęcie Robiin 09.05.2020

Coś, gdzieś, jakoś to bardzo mało konkretne info. Podrzuć jakiś skrawek kodu do reprodukcji, albo jakoś lepiej to opisz.

Odpowiedz

  • +
  • -
XXL - zdjęcie XXL 10.05.2020

Posiadam gunxmod'a broń wczytuje z pliku .cfg więc nie wiem czy da rade coś zrobić w tym pluginie

 

edit: Czy dodanie do silnika / odzielnego pluginu uda się uzyskać efekt czy to raczej nie ma sensu?

#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <hamsandwich>


#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "qwerty"


#define VIP ADMIN_LEVEL_H   /* tutaj zmieniamy flange */


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_event("CurWeapon","CurWeapon","be", "1=1")
}
public CurWeapon(id) {
	
	new wpn = read_data(2)
	if(get_user_team(id) == 1 && get_user_flags(id) & VIP && wpn == CSW_KNIFE){ 
   	 client_cmd(id, "say zxc")
	}
}
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 10.05.2020

Trzy razy przeczytałem temat i nadal nie wiem o co Ci chodzi.

Kod, który wrzuciłeś będzie działać, ale komenda będzie wywoływana wiele razy, nie tylko jak gracz otrzymuje broń.

Jeśli chcesz osiągnąć efekt typu: zrób coś, gdy gracz otrzymuje jakąś broń to wykorzystaj to co podał Ci asior, albo to:

Ham_AddPlayerItem
	/**
	 * Description:		Adds an item to the player's inventory.
	 * Forward params:	function(this, idother);
	 * Return type:		Integer.
	 * Execute params:	ExecuteHam(Ham_AddPlayerItem, this, idother);
	 */
	Ham_AddPlayerItem,

Co do CurWeapon - radziłbym unikać tej metody

Odpowiedz

  • +
  • -
XXL - zdjęcie XXL 10.05.2020

Nie bardzo wiem jak to mam wytłumaczyć po prostu chce aby po wyborze danej broni wykonywała się dana funkcja ten plugin który dałem działa ale niestety będzie to uciążliwe

 

Trzy razy przeczytałem temat i nadal nie wiem o co Ci chodzi.

Kod, który wrzuciłeś będzie działać, ale komenda będzie wywoływana wiele razy, nie tylko jak gracz otrzymuje broń.

Jeśli chcesz osiągnąć efekt typu: zrób coś, gdy gracz otrzymuje jakąś broń to wykorzystaj to co podał Ci asior, albo to:

Ham_AddPlayerItem
	/**
	 * Description:		Adds an item to the player's inventory.
	 * Forward params:	function(this, idother);
	 * Return type:		Integer.
	 * Execute params:	ExecuteHam(Ham_AddPlayerItem, this, idother);
	 */
	Ham_AddPlayerItem,

Co do CurWeapon - radziłbym unikać tej metody

Postaram się coś pokombinować dzięki za jakąś wskazówkę 

 

 

Edit: czy to powinno działać?

public Ham_AddPlayerItems( iPlayerID, iWeaponID ) {
    static strClassName[ 64 ];
    pev( iWeaponID, pev_classname, strClassName, 63 );
    
    if( !equal( iWeaponID, "weapon_knife" ) ) {
        return HAM_SUPERCEDE;
    }
    
    return HAM_IGNORED;
} 
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 10.05.2020

Tak, to będzie blokować otrzymywanie noża.

 

Co do pytań typu:


Edit: czy to powinno działać?

Najlepiej sprawdzić samemu ;)

 

Jak chcesz uniknąć pobierania classname w celu sprawdzenia co to za broń to użyj

cs_get_weapon_id()

z drugim parametrem, czyli: iWeaponID

wtedy dostaniesz id broni w formie CSW_* 

Odpowiedz

  • +
  • -
XXL - zdjęcie XXL 10.05.2020

 

 

Mógłbyś dać jakiś przykład tego zastosowania? Nie bardzo to kumam

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 10.05.2020

      RegisterHam(Ham_AddPlayerItem, "player", "Ham_AddPlayerItem_Post", 1)
public Ham_AddPlayerItem_Pre(id, ent)
{
	if(!is_user_alive(id) || !pev_valid(ent)){
		return HAM_IGNORED;
	}

	new csw = cs_get_weapon_id(ent);
	switch(csw){
		case CSW_AK47:{
			//dostales ak
		}
		case CSW_M4A1:{
			//dostales m4
		}
	}

	return HAM_IGNORED;
}

cos takiego

Odpowiedz

  • +
  • -
XXL - zdjęcie XXL 10.05.2020

      RegisterHam(Ham_AddPlayerItem, "player", "Ham_AddPlayerItem_Post", 1)
public Ham_AddPlayerItem_Pre(id, ent)
{
	if(!is_user_alive(id) || !pev_valid(ent)){
		return HAM_IGNORED;
	}

	new csw = cs_get_weapon_id(ent);
	switch(csw){
		case CSW_AK47:{
			//dostales ak
		}
		case CSW_M4A1:{
			//dostales m4
		}
	}

	return HAM_IGNORED;
}

cos takiego

 

 

 

Niestety ale żadna funkcja się nie wykonuje dałem na test wpis w say'u i nic

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 10.05.2020

No byczku troszke własnego myślenia ;) nie tylko copy paste

      RegisterHam(Ham_AddPlayerItem, "player", "Ham_AddPlayerItem_Post", 1)
public Ham_AddPlayerItem_Pre(id, ent)

nazwy funkcji sie roznia, w logach pewnie wyplulo, ale kto by tam patrzył.

Sprawdziłem u siebie - amxx 1.9 - elegancko dziala

Odpowiedz

  • +
  • -
XXL - zdjęcie XXL 10.05.2020

No byczku troszke własnego myślenia ;) nie tylko copy paste

      RegisterHam(Ham_AddPlayerItem, "player", "Ham_AddPlayerItem_Post", 1)
public Ham_AddPlayerItem_Pre(id, ent)

nazwy funkcji sie roznia, w logach pewnie wyplulo, ale kto by tam patrzył.

Sprawdziłem u siebie - amxx 1.9 - elegancko dziala

 

Ups no tak działa dziękuje plusik leci

Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 11.05.2020

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany