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
 

Droso - zdjęcie

Droso

Rejestracja: 30.04.2010
Aktualnie: Nieaktywny
Poza forum Ostatnio: 23.09.2022 11:14
*****

#716129 Lista broni + Ammo + Nazwy (jako zmienne)

Napisane przez Droso w 12.12.2015 16:27

enum ENUMY_BRONI
{
	CSW_KNIFE=1,
	//
	CSW_GLOCK, // 2
	CSW_USP, 
	CSW_HKP2000,
	CSW_P250,
	CSW_TEC9,
	CSW_FIVESEVEN,
	CSW_CZ75A,
	CSW_DEAGLE,
	CSW_REVOLVER,
	CSW_ELITE, // 11
 
	
	CSW_M4A1S, // 12
	CSW_AK47,
	CSW_AWP,
	CSW_M4A1,
	CSW_NEGEV,
	CSW_FAMAS,
	CSW_AUG,
	CSW_P90,
	CSW_NOVA,
	CSW_XM1014,
	CSW_MAG7,
	CSW_MAC10,
	CSW_MP7,
	CSW_MP9,
	CSW_BIZON,
	CSW_UMP45,
	CSW_GALILAR,
	CSW_SSG08,
	CSW_SG556,
	CSW_M249,
	CSW_SCAR20,
	CSW_G3SG1,
	CSW_SAWEDOFF, // 34
	
	CSW_HEGRENADE,
	CSW_INCGRENADE,
	CSW_DECOY,
	CSW_MOLOTOV,
	CSW_SMOKEGRENADE,
	CSW_FLASHBANG,
	CSW_TASER,     // 41
        CSW_C4
}


new String:BronieNazwy[][] =
{
	"",
	"Knife",
	"Glock-18",
	"USP-S",
	"P2000",
	"P250",
	"Tec-9",
	"Five-SeveN",
	"CZ75-Auto",
	"Desert Eagle",
	"R8 Revolver",
	"Dual Berettas",
	//guns
	"M4A1-S",
	"AK47",
	"AWP",
	"M4A4",
	"Negev",
	"Famas",
	"AUG",
	"P90",
	"Nova",
	"XM1014",
	"MAG7",
	"MAC10",
	"MP7",
	"MP9",
	"Bizon",
	"UMP45",
	"Galil",
	"SSG 08",
	"SG 556",
	"M249",
	"SCAR 20",
	"G3SG1",
	"Sawedoff",
	//granaty
	"HE Grenade",
	"INC Grenade",
	"Wabik",
	"Molotov",
	"Smoke Grenade",
	"Flashbang",
	"Zeus x27",
        "C4"
}


new String:Bronie[][] =
{
	"",//0
	"weapon_knife",//1
	// PISTOLS
	"weapon_glock",//2
	"weapon_usp_silencer",  // 3
	"weapon_hkp2000",//4
	"weapon_p250",//5
	"weapon_tec9",//6
	"weapon_fiveseven",//7
	"weapon_cz75a", // 8
	"weapon_deagle", /// 9	
	"weapon_revolver",//10
	"weapon_elite", // 11
	// GUNS
	"weapon_m4a1_silencer", //12
	"weapon_ak47",// 13
	"weapon_awp",// 14
	"weapon_m4a1", // 15
	"weapon_negev",// 16
	"weapon_famas",//17
	"weapon_aug",//18
	"weapon_p90",//19
	"weapon_nova",//20
	"weapon_xm1014",//21
	"weapon_mag7",//22
	"weapon_mac10",//23
	"weapon_mp7",//24
	"weapon_mp9",//25
	"weapon_bizon",//26
	"weapon_ump45",//27
	"weapon_galilar",//28
	"weapon_ssg08",//29
	"weapon_sg556",//30
	"weapon_m249",//31
	"weapon_scar20",//32
	"weapon_g3sg1",//33
	"weapon_sawedoff",//34
	//GRENADES
	"weapon_hegrenade",//35
	"weapon_incgrenade",//36
	"weapon_decoy",//37
	"weapon_molotov",//38
	"weapon_smokegrenade",//39
	"weapon_flashbang",//40
	"weapon_taser",//41
        //bomba
        "weapon_c4" // 42
};

// AmountOfAmmo[CSW_P90][0] - wielkosc glownego magazynku (P90)
// AmountOfAmmo[CSW_P90][1] - wielkosc zapasowego magazynku (P90)
new AmountOfAmmo[][2] =
{
    {0,0},
    {0,0},
    {20,120},  // start pistolety
    {12,24},
    {13,52},
    {13,26},
    {32,120},
    {20,100},
    {12,12},
    {7,35},
    {8,8},
    {30,120}, // koniec pistoletow
    {20,40},  // start guns
    {30,90},
    {10,30},
    {30,90},
    {150,200},
    {25,90},
    {30,90},
    {50,100}, // pro 90
    {8, 32},
    {7, 32},
    {5, 32},
    {30, 100},
    {30, 120},
    {30, 120},
    {64, 120},
    {25, 100}, // ump
    {35, 90},
    {10, 90},
    {30, 90},
    {100, 200},
    {20,90},
    {20,90},
    {7,32}, // koniec guns
    {-1, 1},
    {-1, 1},
    {-1, 1},
    {-1, 1},
    {-1, 1},
    {-1, 2},
    {-1, 1},
    {-1, 1} // bomba
}

Wszystkie dostępne bronie ładnie wygodnie gotowe do używania w pluginie :)

Uwaga jest to moja numeracja, więc index broni * nie jest równy CSW_*


  • +
  • -
  • 3


#714288 Przy dużym velocity ent nie zachowuje nadanego mu kierunku

Napisane przez Droso w 07.11.2015 03:00

sv_maxvelocity 10000 

  • +
  • -
  • 1


#713828 PrintColorChat (z przejściem do nowych linii).

Napisane przez Droso w 26.10.2015 17:27

stock PrintColorChat(id, String:string2[192], any:...)
{
    decl String:string[192]
    VFormat(string, 192, string2, 3);
    
    ReplaceString(string, sizeof(string), "{white}", " \x01");
    
    ReplaceString(string, sizeof(string), "{strongred}", " \x02");
    
    ReplaceString(string, sizeof(string), "{purple}", " \x03");
    
    ReplaceString(string, sizeof(string), "{red}", " \x0F");
    
    ReplaceString(string, sizeof(string), "{ct}", " \x0B");
    ReplaceString(string, sizeof(string), "{blue}", " \x0B");    

    ReplaceString(string, sizeof(string), "{darkblue}", " \x0C");
    
    ReplaceString(string, sizeof(string), "{grey}", " \x0A");
    
    ReplaceString(string, sizeof(string), "{green}", " \x04");
    
    ReplaceString(string, sizeof(string), "{yellow}", " \x10");
    
    ReplaceString(string, sizeof(string), "{tt}", " \x09");
    
    
    if(StrContains(string, " ", false) == 0)
    {            
        ReplaceStringEx(string, 192, " ", "", _, _, false);
    }
    
    if(id)
    PrintToChat(id, " \x01%s", string);
    else
    PrintToChatAll(" \x01%s", string);
}


stock PrintColorChat2(id, String:string2[512], any:...)
{
    decl String:string[512]
    VFormat(string, 512, string2, 3);
    
    ReplaceString(string, sizeof(string), "{white}", " \x01");
    
    ReplaceString(string, sizeof(string), "{strongred}", " \x02");
    
    ReplaceString(string, sizeof(string), "{purple}", " \x03");
    
    ReplaceString(string, sizeof(string), "{red}", " \x0F");
    
    ReplaceString(string, sizeof(string), "{blue}", " \x0B");
    ReplaceString(string, sizeof(string), "{ct}", " \x0B");
    
    ReplaceString(string, sizeof(string), "{darkblue}", " \x0C");
    
    ReplaceString(string, sizeof(string), "{grey}", " \x0A");
    
    ReplaceString(string, sizeof(string), "{green}", " \x04");
    
    ReplaceString(string, sizeof(string), "{tt}", " \x09");

    ReplaceString(string, sizeof(string), "{yellow}", " \x10");
    
    if(StrContains(string, " ", false) == 0)
    {            
        ReplaceStringEx(string, 192, " ", "", _, _, false);
    }
    
    
    new String:buffer[10][192];
    ExplodeString(string, "^n", buffer, 10, 192);
    
    for(new i=0; i<10; i++)
    {
        if(strlen(buffer[i]) > 1)
        {
            if(id)
            {
                PrintToChat(id, " \x01%s", buffer[i]);
            }
                else
            {
                PrintToChatAll(" \x01%s", buffer[i]);
            }
        }
    }
}



Okej teraz użycie:

Okej pierwszy parametr to ID. Jeżeli id == 0, wiadomość zostanie wysłana do wszystkich, jeżeli nie to do określonego przez ID gracza.

 

Drugi parametr to tekst. Aby tekst był w kolorze np. czerwonym robimy tak "{red}Tutaj jest tekst czerwony".

Co da nam wynik.

Tutaj jest tekst czerwony

Oczywiście kolory można mieszać, co trzeba wziąć pod uwagę? Każdy kolor {xxx} robi spację!

Więc tekst musi wyglądać tak "tekst{red}tekst2" inaczej miałbyś podwójne spacje :).

 

 

Kolejna sprawa to PrintColorChat2.

Funkcja jest prawie identyczna co PrintColorChat, ale ma wsparcie 'enterów'.

(rozbiłem to na 2 funkcje, żeby to było bardziej optymalne, bo przejście do następnej linii to jakby drukowanie kolejnej wiadomości).

Aby przejść do następnej linii należy użyć ^n

UWAGA: Tekst po ^n traci kolor! Wiec nalezy to robić tak: {red}tekst^n{red}tekst

Co da nam wynik:

tekst

tekst

 

 

Obie funkcje oczywiście wspierają formatowanie tekstu.

Więc używanie %s, %d, %f itd. i dopisywanie zmiennych w 3 parametrze oczywiście działa.

 

 

PS Czekam na pomysły jakby to można było jeszcze zooptymalizować :D

 


  • +
  • -
  • 1


#699419 [ROZWIĄZANE] Poprawienie klasy

Napisane przez Droso w 03.05.2015 15:55

#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <engine>
#include <hamsandwich>
#include <fakemeta>
#include <cstrike>

#define DMG_BULLET (1<<1)

new const nazwa[] = "Ghost (Mega Premium)";
new const opis[] = "Zadajesz 10(+int) obrazen wiecej, posiada m4a1, ubranie wroga, 1/3 z HE, +3skok";
new const bronie = (1<<CSW_M4A1)|(1<<CSW_HEGRENADE);
new const zdrowie = 35;
new const kondycja = 20;
new const inteligencja = 10;
new const wytrzymalosc = 20;

new skoki[33];

new ma_klase[33];

public plugin_init()
{
	register_plugin(nazwa, "1.0", "Blant");
	cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
	RegisterHam(Ham_TakeDamage, "player", "TakeDamage")
	register_forward(FM_CmdStart, "fwCmdStart_MultiJump");
}

public cod_class_enable(id)
{
	if(!(get_user_flags(id) & ADMIN_LEVEL_F))
	{
		client_print(id, print_chat, "[Ghost (Premium)] Nie masz uprawnien, aby uzywac tej klasy.")
		return COD_STOP;
		
	}
	ma_klase[id] = true;
	
	return COD_CONTINUE;
}

public cod_class_disabled(id)
{
	ma_klase[id] = false;
}

public fwCmdStart_MultiJump(id, uc_handle)
{
	if(!is_user_alive(id) || !ma_klase[id])
	return FMRES_IGNORED;

	new flags = pev(id, pev_flags);

	if((get_uc(uc_handle, UC_Buttons) & IN_JUMP) && !(flags & FL_ONGROUND) && !(pev(id, pev_oldbuttons) & IN_JUMP) && skoki[id])
	{
		skoki[id]--;
		new Float:velocity[3];
		pev(id, pev_velocity,velocity);
		velocity[2] = random_float(265.0,285.0);
		set_pev(id, pev_velocity,velocity);
	}
	else if(flags & FL_ONGROUND)
	skoki[id] = 2;

	return FMRES_IGNORED;
}

public ZmienUbranie(id,reset)
{
	if (id<1 || id>32 || !is_user_connected(id))
	return;

	if (reset)
	cs_reset_user_model(id);
	else
	{
		new Ubrania_CT[4][] = {"sas","gsg9","urban","gign"},
		Ubrania_Terro[4][] = {"arctic","leet","guerilla","terror"};

		new num = random_num(0,3);
		switch(get_user_team(id))
		{
			case 1: cs_set_user_model(id, Ubrania_CT[num]);
			case 2:cs_set_user_model(id, Ubrania_Terro[num]);
		}

	}
}

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!is_user_connected(idattacker) || !is_user_connected(this))
	return HAM_IGNORED;
	
	if(!ma_klase[idattacker])
	return HAM_IGNORED;
	
	if(damagebits & DMG_BULLET)
	{
		new weapon = get_user_weapon(idattacker);
		
		if(weapon == CSW_M4A1)
		cod_inflict_damage(idattacker, this, 10.0, 0.7, idinflictor, damagebits);
	}
	
	if(random(3) == 0 && idattacker != idinflictor)
		cod_inflict_damage(idattacker, this, float(get_user_health(this))+99.0, 0.7, idinflictor, damagebits);
	
	return HAM_IGNORED;
}




  • +
  • -
  • 1


#694553 Grab+

Napisane przez Droso w 28.03.2015 18:06

Jest jeszcze +push oraz +pull :/

 

słabo opisane


  • +
  • -
  • 1


#689605 [ROZWIĄZANE] JailBreak zła pętla/brak zasad.

Napisane przez Droso w 20.02.2015 20:43

dodaj drukowanie do print_console tablicy "szInfo" i sprawdz czy w ogole nie jest ona ciagle pusta (chyba wiesz jak zrobic, a jak cos to pisz pw)


  • +
  • -
  • 1


#689603 Łapanie eventu - pocisk trafiający w byt/model

Napisane przez Droso w 20.02.2015 20:42


raczej

containi(szTouched,"func_bags")!=0

raczej != -1


  • +
  • -
  • 1


#689548 [ROZWIĄZANE] JailBreak zła pętla/brak zasad.

Napisane przez Droso w 20.02.2015 17:21

static szDay[256];

->

new szDay[512];

wszystkie

 format(szDay, 255,

->

 format(szDay, 511,

  • +
  • -
  • 1


#689545 [ROZWIĄZANE] Predkość gracza z wykorzystaniem (set_user_maxspeed)

Napisane przez Droso w 20.02.2015 17:17

0.0 - przywróci standardową szybkość, więc musisz gdzieś to 520.0 sobie zapisać :P I później ustawić


  • +
  • -
  • 1


#689309 Jak złapać komendy z +/-? Np +duck/-use itp.

Napisane przez Droso w 18.02.2015 22:07

Think gracza (forward) + get_user_button


  • +
  • -
  • 2


#689084 Otwieranie vault przy zapisie/odczycie, a w init/end, co lepiej?

Napisane przez Droso w 17.02.2015 19:44

wydaje mi sie, ze czasami zadajecie takie glupie pytania xD

 

Jak istnieje szansa, że dane nie zostaną użyte, ale też nie będą częściej pobierane/zapisywane niż 1 (1-odczyt 1-zapis) raz - to wiadomo lepiej Otwieranie przy zapisie/odczycie

 

Inne wypadki init/end - to chyba logiczne.

 

też zależy co siedzi w środku nvault - bo jak chodzi o zapis informacji o graczu - to lepiej pobierac i zapisywac przy jego wejsciu/wyjsciu niz pobierac na poczatku mapy - tyle 'wyników'

 

 


  • +
  • -
  • 2


#689076 [CYPIS] - Godzina otwarcia cel

Napisane przez Droso w 17.02.2015 19:26

bo poradnik jest na odwal sie xD

    public OtworzCele(){
    for(new i=0; i<sizeof(g_Buttons); i++)
    {
    if(!pev_valid(g_Buttons[i]) || !g_Buttons[i])
    continue;

    ExecuteHam(Ham_Use, g_Buttons[i], 0, 0, 2, 1.0);
   
    }
    new Time[9]
    get_time("%H:%M:%S",Time,8)
 ColorChat(0, GREEN, "[WIEZIENIE]^x01 Cele zostaly^x03 otwarte^x01 o godzinie^x03 %s", Time);
    }

tak to powinno wygladac

+

dalej nie wiem po co to, skoro to pokazuje godzine jaka aktualnie jest, a nie czas rundy, wiec po co :(


  • +
  • -
  • 1


#688337 Kontynuacja zastygniętych projektów paczek

Napisane przez Droso w 14.02.2015 14:17

A wiec jesli bym wstawił paczke zmodyfikowaną z silnikiem tylko w formie amxx (bez sma) to byłoby ok?

na forum zabronione jest wstawianie plików .amxx. SMA jest wymagane nie tylko przez forum, ale i przez licencje, która nakazuje, żeby dołączać do plików .amxx, kod źródłowy (.sma)


  • +
  • -
  • 1


#688199 [ROZWIĄZANE] Kary JailBreak.

Napisane przez Droso w 13.02.2015 22:08

    static szDay[256];
    static id;
    formatex(szDay, 63, "Siedzisz za: %s^nDzien %i - %s^n", reasons[userreason[id]], jail_day, dni_tygodnia[jail_day%7]);
    set_hudmessage(0, 255, 0, 0.01, 0.18, 0, 0.01, 1.0);
    if(prowadzacy && !szInfo[0])
    {    
        set_hudmessage(0, 255, 0, 0.01, 0.18, 0, 0.01, 1.0);
        format(szDay, 255, "%s%s jest prowadzacym straznikiem.", szDay, nazwa_gracza[prowadzacy]);
    }
    else if(szInfo[0])
    {
        set_hudmessage(255, 0, 0, 0.01, 0.18, 0, 0.01, 1.0);
        format(szDay, 255, "%s%s", szDay, szInfo);
    }
    ShowSyncHudMsg(0, SyncHudObj3, szDay);
    

->

	static szDay[256];
	
	
	for(new i=1; i<=32; i++)
	{
		if(!is_user_connected(i))
		return;
		
		if(gTeam[i] == 1)
		formatex(szDay, 63, "Siedzisz za: %s^nDzien %i - %s^n", reasons[userreason[i]], jail_day, dni_tygodnia[jail_day%7]);
		else
		formatex(szDay, 63, "Dzien %i - %s^n", jail_day, dni_tygodnia[jail_day%7]);
		
		set_hudmessage(0, 255, 0, 0.01, 0.18, 0, 0.01, 1.0);
		if(prowadzacy && !szInfo[0])
		{    
			set_hudmessage(0, 255, 0, 0.01, 0.18, 0, 0.01, 1.0);
			format(szDay, 255, "%s%s jest prowadzacym straznikiem.", szDay, nazwa_gracza[prowadzacy]);
		}
		else if(szInfo[0])
		{
			set_hudmessage(255, 0, 0, 0.01, 0.18, 0, 0.01, 1.0);
			format(szDay, 255, "%s%s", szDay, szInfo);
		}
		ShowSyncHudMsg(i, SyncHudObj3, szDay);
	}

  • +
  • -
  • 2


#688156 [ROZWIĄZANE] Kary JailBreak.

Napisane przez Droso w 13.02.2015 20:56

pokaż funkcje task_server - w niej tkwi błąd, że należy pewnie zrobić pętle po wszystkich graczach, zamiast wysyłać wszystkim ten sam powód, bo id == 0. A wiadomość wysyłasz aktualnie do wszystkich (do wszystkich tą samą) (tak jest standradowo w jailbreak_api, bo nie potrzebna jest pętla, jeśli nie ma powodów :D)


  • +
  • -
  • 1