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
*****

Moje tematy

Hide commands

12.03.2016 10:51

Hide commands

droso

 

Opis:

Plugin blokuje wyświetlanie komend ! oraz / dla graczy na chat.

Dodatkowo po wpisaniu komendy jest ona drukowana TYLKO dla gracza, który ją wpisał, tak żeby wiedział, że 'coś udało się wpisać'

 

Plugin nie koliduje z innymi wtyczkami, wiadomość nie jest wyświetlana, jest jednak 'interpretowana' przez serwer.

 

Instalacja

http://amxx.pl/topic...cemod/?p=284948

 

Lista broni + Ammo + Nazwy (jako zmienne)

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_*

VelocityByAim [Sourcemod]

27.10.2015 15:17

 

Generuje velocity na podstawie celowania gracza.

Tzn. generuje velocity o mocy równej Float:power w przód uwzgledniając angles (obrócenie) bytu.

stock VelocityByAim(id, Float:fVelocity[3], Float:power)
{
	GetEntPropVector(id, Prop_Data, "m_vecVelocity", fVelocity);
	decl Float:ang[3];
	GetClientEyeAngles(id, ang);
		
	GetAngleVectors(ang, fVelocity, NULL_VECTOR, NULL_VECTOR);
	NormalizeVector(fVelocity, fVelocity);
	ScaleVector(fVelocity, power);
}

Przykładowe użycie:

decl Float:fVec[3];
VelocityByAim(id, fVec, 666.0);

Wymaga: #include <sdktools>

PrintColorChat (z przejściem do nowych linii).

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

 

Zabieranie broni po spawnie.

30.09.2015 15:18

Zabieranie broni po spawnie.

Aktualna metoda:

#define strip_user_weapons2(%0) strip_user_weapons(%0), set_pdata_int(%0, 116, 0)

Problem:

Mam gracza w CT, jezeli ma on bron i zostanie zabity, zmienie mu team i go odrodze (przy odrodzeniu uzywana ta metoda), to nie zabiera broni (najczesciej zabiera, ale nie zawsze).

Opoznienie 0.1 s nie dało nic.

 

(Nie daje broni jezeli jest w TT, wiec bug jest dziwny)

Druzyne sprawdzam przez cs_get_user_team