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
 

AwIlL^^ - zdjęcie

AwIlL^^

Rejestracja: 26.03.2013
Aktualnie: Nieaktywny
Poza forum Ostatnio: 24.03.2023 07:12
*****

#761763 Pobranie ownera leżącej broni

Napisane przez AwIlL^^ w 30.09.2019 22:10

#include <hamsandwich>
#include <fakemeta>

stock get_weapon_owner(weapon_entity)
{
	const pdata_player = 41;

	return get_pdata_cbase(weapon_entity, pdata_player, 4);
}

stock get_weapon_ent_from_box(weaponbox, &slot)
{
	static const pdata_weapon_in_slot[6] = { 34 , 35 , ... };

	new weapon_entity;
	for (slot = 0; slot<6; slot++) {
		weapon_entity = get_pdata_cbase(weaponbox, pdata_weapon_in_slot[slot], 4);
		if (pev_valid(weapon_entity) == 2) {
			return weapon_entity;
		}
	}

	return 0;
}

na ziemi leżą tak zwane weaponboxy i dopiero w nich są bronie w swoich slotach
za pomocą funkcji get_weapon_ent_from_box pobierzesz pierwszą znalezioną broń z takiego boxa
za pomocą funkcji get_weapon_owner pobierzesz właściciela dowolnej broni jeżeli posiadasz jej entity

takie info dotyczące właściciela - właścicielem broni jest zawsze osoba, która ostatnio trzymała broń, a nie osoba, która trzymała broń jako pierwsza


  • +
  • -
  • 2


#761734 [ROZWIĄZANE] Odbijanie obrażeń w atakującego.

Napisane przez AwIlL^^ w 30.09.2019 11:40

No nie dokońca, bytem atakującym w tym przypadku jest jakiś randomowy ent z przedziału [1-30], bo get_user_weapon zwraca nam id broni, a nie id entity:

oczywiście, że kod, który zacytowałem jest niepoprawny.
ale jak chcesz aby silnik csa znalazł poprawnie broń, którą trzyma gracz to należy podać id gracza w miejsce bytu atakującego (to napisałem wyżej, ale chyba nie zrozumiałeś)

kod z poprawnym wyświetlaniem broni:

public odbicie_obrazen(ofiara, idinflictor, atakujacy, Float:obrazenia, damagebits)
{
	if (!is_user_connected(atakujacy)) {
		return HAM_IGNORED;
	}

	if (!random(5)) {
		ExecuteHamB(Ham_TakeDamage, atakujacy, ofiara, ofiara, obrazenia, (1<<1));

		return HAM_SUPERCEDE;
	}

	return HAM_IGNORED;
}

kod z "czachą" (w przypadku zabicia poprzez odbicie) nie tworząc nowego enta (w kodzie od tibacka to różne rezultaty by były, nie zawsze czacha):

public odbicie_obrazen(ofiara, idinflictor, atakujacy, Float:obrazenia, damagebits)
{
	if (!is_user_connected(atakujacy)) {
		return HAM_IGNORED;
	}

	if (!random(5)) {
		ExecuteHamB(Ham_TakeDamage, atakujacy, 0, ofiara, obrazenia, (1<<1));

		return HAM_SUPERCEDE;
	}

	return HAM_IGNORED;
}

a w takim przypadku będzie "czacha" i w konsoli napis, że gracz został zabity przez odbicie:

public odbicie_obrazen(ofiara, idinflictor, atakujacy, Float:obrazenia, damagebits)
{
	if (!is_user_connected(atakujacy)) {
		return HAM_IGNORED;
	}

	if (!random(5)) {
		new new_inflictor = create_entity("info_target");
		entity_set_string(new_inflictor ,EV_SZ_classname, "reflection");
		ExecuteHamB(Ham_TakeDamage, atakujacy, new_inflictor, ofiara, obrazenia, (1<<1));
		remove_entity(new_inflictor);

		return HAM_SUPERCEDE;
	}

	return HAM_IGNORED;
}

  • +
  • -
  • 1


#761731 [ROZWIĄZANE] Odbijanie obrażeń w atakującego.

Napisane przez AwIlL^^ w 30.09.2019 08:34

public odbicie_obrazen(ofiara, idinflictor, atakujacy, Float:obrazenia, damagebits)
{
        new iClip, iAmmo;
        new iWeapon = get_user_weapon(ofiara, iClip, iAmmo);
	
	if( random_num( 5, 100 ) <= 5 )
        {
                ExecuteHamB(Ham_TakeDamage, atakujacy, iWeapon, ofiara, obrazenia, (1<<1));
                return HAM_SUPERCEDE;
        }

	return HAM_HANDLED;	
}

Może tak? :)

 

jeżeli chcesz aby bytem atakującym była broń, którą trzyma atakujący to należy podać id atakującego, bo w takim przypadku on sam jest bytem atakującym :)


  • +
  • -
  • 1


#760729 Cvary nie działają

Napisane przez AwIlL^^ w 15.08.2019 12:58

Nie przypisałeś wskaźników do zmiennych, które są zwracane przez natyw "register_cvar"
  • +
  • -
  • 1


#759298 Co jest źle ze nie działa 1/1 Z HE

Napisane przez AwIlL^^ w 20.05.2019 16:02

#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <hamsandwich>
#include <fun>

#define DMG_HEGRENADE (1<<24)
        
new const nazwa[]   = "sds";
new const opis[]    = "sds";
new const bronie    = (1<<CSW_HEGRENADE)|(1<<CSW_UMP45);
new const zdrowie   = 0;
new const kondycja  = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;

new bool:ma_klase[33];
    
public plugin_init()
{
	register_plugin(nazwa, "1.0", "amxx.pl");

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

public cod_class_enabled(id)
{
	give_item(id, "weapon_hegrenade");
	ma_klase[id] = true;
}

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) && damagebits & DMG_HEGRENADE)
         cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
        
    return HAM_IGNORED;
}


  • +
  • -
  • 1


#756181 Szukm pluginu

Napisane przez AwIlL^^ w 01.02.2019 18:38

Mógłbym to zrobić, ale potrzebuję kilku danych z pluginu od systemu monet.
Wstaw tego pluga do tematu, a dostaniesz to o co prosisz :)
  • +
  • -
  • 1


#756137 Nie wyswietlaja sie wiadomosci w Lol Sounds

Napisane przez AwIlL^^ w 31.01.2019 22:07

ColorChat(0, getUserTeam(killer) == FM_CS_TEAM_T ? BLUE : RED, LOL_MESSAGE[g_Kills[killer] - 2], "%L", LANG_SERVER, sKillerName, sVictimName);

zamień na

ColorChat(0, getUserTeam(killer) == FM_CS_TEAM_T ? BLUE : RED, "%L", LANG_SERVER, LOL_MESSAGE[g_Kills[killer] - 2], sKillerName, sVictimName);

i mam uwagę do tego:
!g
!y
!t
to działa w ad_managerze ponieważ tam jest podmienianie tych symboli na poprawny znak.
odpowiednio:
!g powinno być zamienione na ^x04
!y na ^x01
!t na ^x03


  • +
  • -
  • 1


#756093 Blad Pluginu

Napisane przez AwIlL^^ w 31.01.2019 12:54

oczywiscie znam sie nqa Pluginach


Nie znasz się :)
 

Coś mi sie wydaje, że to jest połączone


Tak, masz rację, ale dla Qu-oT to jest za mało...
Pewnie w logach powinno być od razu rozwiązanie problemu krok po kroku dla takich "znawców" pluginów...


  • +
  • -
  • 3


#755751 problem Z WYGENETOWANYM VIP'EM

Napisane przez AwIlL^^ w 25.01.2019 23:22

linia 17

public client_authorized(id)

zmień na:

public client_authorized(id, const authid[])

przedostatnia linia:

client_authorized(id);

zamień na:

client_authorized(id, "");

  • +
  • -
  • 3


#755700 Konta

Napisane przez AwIlL^^ w 25.01.2019 14:42

Dodaj

#define MAX_PLAYERS 33
Na samej górze pod includami

 

 

Lepiej by było gdybyś zrobił odpowiedniego ifa :

#if AMXX_VERSION_NUM < 183
#define MAX_PLAYERS 32
#endif

Do tego mógłbyś ustawiać tą samą wartość, która jest w nowszych wersjach amxx


  • +
  • -
  • 1


#755684 Problem. Menu

Napisane przez AwIlL^^ w 25.01.2019 11:11

problem jest w tym, że menu próbuje wykonać komendę "say" u gracza.. (cmd_exetuce od Darka jest skutecznie zablokowany przez większość protektorów na nonsteamach)
Są protektory, które uniemożliwiają taką czynność.
Jeżeli masz amxx 1.8.2 to musisz to zrobić za pomocą callfunc_... lub natywów.
Jeżeli masz amxx >= 1.8.3 to możesz użyć amxclient_cmd zamiast client_cmd.


  • +
  • -
  • 1


#755640 Nocny vip PROBLEM

Napisane przez AwIlL^^ w 24.01.2019 18:13

gotowe.
free vip od 20 do 11

Załączone pliki


  • +
  • -
  • 4


#755592 Sklep 4Fun

Napisane przez AwIlL^^ w 23.01.2019 22:48

Zepsułem bardziej niż było :)

Załączone pliki


  • +
  • -
  • 1


#755568 Nocny vip PROBLEM

Napisane przez AwIlL^^ w 23.01.2019 16:45

Plugin nie działa bo jest źle napisany...
Ustawia flagę "t" i nie aktywuje vipa. :)
Ciekawi mnie po co te cvary skoro z nich nikt nie korzysta?
jeszcze to %L... nie widzę nigdzie gotowego słownika do takiego napisu ;/
Te instrukcje warunkowe też są do kitu.

else if( g_FreeVip[id] )

Przecież to zje vipa ludziom, którzy zapłacili za vipa (co prawda tylko na parę minut, ale jednak)

Co rezerwacja slotu ma wspólnego z vipem?


  • +
  • -
  • 1


#755567 kilka pluginów Odemnie dla Was

Napisane przez AwIlL^^ w 23.01.2019 16:32

A coś nowego może masz?
Z opisu wynika, że masz same przedpotopowe śmieci na sprzedaż :)


  • +
  • -
  • 3