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
CS:GO

CodMod_Stary - Dodanie dynamitu do klasy

cs:go

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

#1 Linux'

    Pan Pomocny

  • Power User

Reputacja: 549
Wszechwiedzący

  • Postów:1 501
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:AmxMod i SourceMod
Offline

Napisano 08.08.2015 17:45

opis

 

W tym poradniku pokaze w jaki sposob dodac dynamit do klasy/itemu. Na poczatek musimy standardowo utworzyc jakas klase lub item a nastepnie gdzies na gorze dodajemy:

new ilosc_dynamitow_gracza[MAX_PLAYERS+1]

Nastepnie szukamy:

public OnClientPutInServer(client)
{

i do srodka dodajemy:

ilosc_dynamitow_gracza[client] = 0;

nastepnie szukamy:

public Action:Prethink(client)
{
	if(!IsValidClient(client) || IsFakeClient(client) || freeze_time)
		return Plugin_Continue;

	if(IsPlayerAlive(client))
	{
		new buttons = GetClientButtons(client);
		new ile = poziom_gracza[client]-1 >= 0? doswiadczenie_poziomu[poziom_gracza[client]-1]: 0;
		new Float:procent_gracza = 0.0;
		procent_gracza = (float(doswiadczenie_gracza[client]-ile)/float(doswiadczenie_poziomu[poziom_gracza[client]]-ile))*100.0;
		PrintHintText(client, "[Klasa: <b>%s</b>]\n[Xp: <b>%0.1f</b>/<b>100.0%%</b> | Lv: <b>%i</b>]\n[Item: <b>%s</b> [<b>%i%%</b>]]", nazwy_klas[klasa_gracza[client]], procent_gracza, poziom_gracza[client], nazwy_itemow[informacje_itemu_gracza[client][0]], moc_itemu[client]);

		new String:weapon[32];
		GetClientWeapon(client, weapon, sizeof(weapon));

i teraz dodajemy do switcha klasy lub itemu sprawdzanie czy gracz naciska klawisz, jesli tak to wykonujemy funkcje dynamitu. Nizej przyklad dla klasy Saper:

 

Do:

switch(klasa_gracza[client])
{

dodaje

case Saper:
{
	if(!oldbuttons1[client] && buttons & IN_USE)
	{
		if(ilosc_dynamitow_gracza[client])
		{
			new Float:fOrigin[3];
			new Float:iOrigin[3];
			GetClientEyePosition(client, Float:fOrigin);
			for(new i = 1, max = GetMaxClients(); i <= max; ++ i)
			{
				if(!IsClientInGame(i) || !IsPlayerAlive(i))
					continue;

				if(GetClientTeam(client) == GetClientTeam(i))
					continue;

				GetClientEyePosition(i, Float:iOrigin);
				if(GetVectorDistance(fOrigin, iOrigin) <= 200.0)
					SDKHooks_TakeDamage(i, client, client, ((klasa_gracza[i] == Obronca || informacje_itemu_gracza[i][0] == 30)? 0.0: 40.0+(inteligencja_gracza[client]+bonusowa_inteligencja_gracza[client])/6), DMG_GENERIC);
			}

			TE_SetupBeamRingPoint(fOrigin, 20.0, 200.0, sprite_laser, sprite_halo, 0, 10, 0.6, 6.0, 0.0, {255, 255, 255, 128}, 10, 0);
			TE_SendToAll();

			ilosc_dynamitow_gracza[client]--;
		}
		else
			PrintToChat(client, "[COD:MW] Wykorzystales juz moc swojej klasy w tej rundzie!");

		oldbuttons1[client] = 1;
	}
	else if(oldbuttons1[client] && !(buttons & IN_USE))
		oldbuttons1[client] = 0;
}

Po nacisnieciu a nastepnie puszczeniu klawisza E, bedzie wykonywany kod dynamitu. Musimy jeszcze przypisac odpowiednia ilosc dynamitow dla warunku jaki przypisalismy. Tak wiec jezeli ma to byc dla klasy to przechodzimy do odrodzenia, a jezeli dla itemu to do dajitem. Ja pokaze na tej samej klasie na ktorej dodalem wykonywanie kodu dynamitu, a wiec szukam:

public Action:Odrodzenie(client)
{
	if(!IsValidClient(client) || !IsPlayerAlive(client))
	return;

	if(!klasa_gracza[client])
		 WybierzKlase(client);
	else
	{
		if(nowa_klasa_gracza[client])
		{
			klasa_gracza[client] = nowa_klasa_gracza[client];
			nowa_klasa_gracza[client] = 0;
			ilosc_apteczek_gracza[client] = 0;
			CS_UpdateClientModel(client);
			WczytajDane(client, klasa_gracza[client]);
		}
		switch(klasa_gracza[client])
		{

i dodaje:

 

Do switch(klasa_gracza[client})

case Saper: ilosc_dynamitow_gracza[client] = 2;

Opcjonalnie, jezeli nie chcemy by w momencie zmiany klasy dynamit nie przechodzil na inna klase to do if(nowa_klasa_gracza[client]), dodajemy resetowanie dynamitu czyl:

ilosc_dynamitow_gracza[client] = 0;

  • +
  • -
  • 0

b35020692_qesnxqa.png


#2 Linux'

    Pan Pomocny

  • Autor tematu
  • Power User

Reputacja: 549
Wszechwiedzący

  • Postów:1 501
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:AmxMod i SourceMod
Offline

Napisano 08.10.2015 11:32

Poradnik zaaktualizowany do najnowszej wersji silnika (>= 0.6)


  • +
  • -
  • 0

b35020692_qesnxqa.png






Również z jednym lub większą ilością słów kluczowych: cs:go

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

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