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 frakcji do klas

cs:go

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
5 odpowiedzi 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 09.08.2015 09:54

opis

 

W tym tutku pokaze w jaki sposob dodac frakcje do klas. Frakcje powoduja, ze mozemy podzielic klasy na okreslone grupy, w tym przypadku stworze dwie grupy dla zwyklych klas i od lv.

 

Pierw otwieramy sp. naszego silnika i szukamy:

enum
{

};

pod tym dodajemy:

enum
{
	niewybrana,
	zwykla,
	odpoziomu
}

nastepnie gdzies na gorze dodajemy:

new frakcja_gracza[MAX_PLAYERS+1];
new String:nazwy_frakcji[][] =
{
	"Brak", // 0
	"Zwykle", // 1
	"Od Lvla" // 2
};

Teraz szukamy:

new umiejetnosci_klas[][] =
{

};

i zamieniamy to na:

new umiejetnosci_klas[][] =
{	// Lvl - 0 // Zdr - 1 // Wyt - 2 // Kon - 3 // - 4 frakcja
	{0, 100, 0, 100, niewybrana}, // 0
	{0, 120, 100, 110, zwykla}, // 1
	{0, 135, 100, 135, zwykla}, // 2
	{0, 120, 150, 80, zwykla}, // 3
	{0, 100, 100, 100, zwykla}, // 4
	{0, 100, 100, 100, zwykla}, // 5
	{0, 100, 100, 100, zwykla}, // 6
	{0, 100, 50, 120, zwykla}, // 7
	{0, 100, 50, 100, zwykla}, // 8
	{0, 150, 150, 100, zwykla}, // 9
	{0, 105, 150, 80, zwykla}, // 10
	{0, 140, 150, 80, zwykla}, // 11
	{0, 100, 100, 115, zwykla}, // 12
	{500, 120, 50, 100, odpoziomu}, // 13
	{1000, 180, 0, 120, odpoziomu}, // 14
	{1500, 80, 80, 80, odpoziomu}, // 15
	{2000, 125, 0, 80, odpoziomu}, // 16
	{2500, 120, 25, 110, odpoziomu}, // 17
	{3000, 115, 25, 110, odpoziomu}, // 18
	{3500, 175, 175, 100, odpoziomu}, // 19
	{4000, 125, 100, 100, odpoziomu}, // 20
	{4500, 120, 100, 110, odpoziomu}, // 21
	{5000, 105, 50, 105, odpoziomu}, // 22
	{6000, 130, 50, 115, odpoziomu}, // 23
	{7000, 200, 100, 130, odpoziomu} // 24
};

Nastepnie szukamy:

public Action:WybierzKlase(client)
{

}
public WybierzKlase2(Handle:owner, Handle:query, const String:error[], any:client)
{

}
public Action:WybierzKlaseMenu(client)
{

}
public WybierzKlase_Handler(Handle:classhandle, MenuAction:action, client, Position)
{

}

i usuwamy a w nich miejsce wklejamy to:

public Action:WybierzKlase(client)
{
	new Handle:menu = CreateMenu(WybierzKlase_Handler);
	SetMenuTitle(menu, "Wybierz Frakcje:");
	for(new i = 1; i < sizeof nazwy_frakcji; i ++)
		AddMenuItem(menu, "1", nazwy_frakcji[i]);

	DisplayMenu(menu, client, 250);
}
public WybierzKlase_Handler(Handle:classhandle, MenuAction:action, client, Position)
{
	if(action == MenuAction_Select)
	{
		new String:Item[32];
		GetMenuItem(classhandle, Position, Item, sizeof(Item));
		Position ++;

		frakcja_gracza[client] = Position;
		WybierzFrakcje(client);
	}
	else if(action == MenuAction_End)
		CloseHandle(classhandle);
}
public Action:WybierzFrakcje(client)
{
	if(polaczony_raz[client])
		PrintToChat(client, "[COD:MW] Trwa wczytywanie klas...");
	else
	{
		if(klasa_gracza[client])
		{
			new klasa_g = klasa_gracza[client];
			poziom_klasy_gracza[client][klasa_g] = poziom_gracza[client];
			doswiadczenie_klasy_gracza[client][klasa_g] = doswiadczenie_gracza[client];
			inteligencja_klasy_gracza[client][klasa_g] = inteligencja_gracza[client];
			zdrowie_klasy_gracza[client][klasa_g] = zdrowie_gracza[client];
			obrazenia_klasy_gracza[client][klasa_g] = obrazenia_gracza[client];
			wytrzymalosc_klasy_gracza[client][klasa_g] = wytrzymalosc_gracza[client];
			kondycja_klasy_gracza[client][klasa_g] = kondycja_gracza[client];
			WybierzKlaseMenu(client);
		}
		else
		{
			new String:tmp[1024];
			new String:authid[64];
			if(!GetClientAuthId(client, AuthId_Steam2, authid, sizeof(authid)))
				return;

			Format(tmp, sizeof(tmp), "SELECT `lvl`, `xp`, `inteligencja`, `zdrowie`, `obrazenia`, `wytrzymalosc`, `kondycja`, `klasa` FROM `codmod` WHERE steamid = '%s';", authid);
			SQL_TQuery(sql, WybierzFrakcje2, tmp, client);
			polaczony_raz[client] = 1;
		}
	}
}
public WybierzFrakcje2(Handle:owner, Handle:query, const String:error[], any:client)
{
	if(query == INVALID_HANDLE)
	{
		LogError("Load error: %s", error);
		return;
	}
	if(SQL_GetRowCount(query))
	{
		new poziom = 1, doswiadczenie = 0, inteligencja = 0, zdrowie = 0, obrazenia = 0, wytrzymalosc = 0, kondycja = 0;
		new String:klasa[512];
		while(SQL_MoreRows(query))
		{
			while(SQL_FetchRow(query))
			{
				poziom = SQL_FetchInt(query, 0);
				doswiadczenie = SQL_FetchInt(query, 1);
				inteligencja = SQL_FetchInt(query, 2);
				zdrowie = SQL_FetchInt(query, 3);
				obrazenia = SQL_FetchInt(query, 4);
				wytrzymalosc = SQL_FetchInt(query, 5);
				kondycja = SQL_FetchInt(query, 6);

				SQL_FetchString(query, 7, klasa, sizeof(klasa));
				for(new i = 1; i < sizeof nazwy_klas; i ++)
				{
					if(StrEqual(nazwy_klas[i], klasa))
					{
						poziom_klasy_gracza[client][i] = poziom;
						doswiadczenie_klasy_gracza[client][i] = doswiadczenie;
						inteligencja_klasy_gracza[client][i] = inteligencja;
						zdrowie_klasy_gracza[client][i] = zdrowie;
						obrazenia_klasy_gracza[client][i] = obrazenia;
						wytrzymalosc_klasy_gracza[client][i] = wytrzymalosc;
						kondycja_klasy_gracza[client][i] = kondycja;
					}
				}
			}
		}
	}

	WybierzKlaseMenu(client);
	polaczony_raz[client] = 0;
}
public Action:WybierzKlaseMenu(client)
{
	new String:klasa[512];
	new Handle:menu = CreateMenu(WybierzFrakcje_Handler);
	SetMenuTitle(menu, "Wybierz Klase:");
	for(new i = 1; i < sizeof nazwy_klas; i ++)
	{
		if(umiejetnosci_klas[i][4] == frakcja_gracza[client])
		{
			Format(klasa, sizeof(klasa), "%s (Lv: %i)", nazwy_klas[i], poziom_klasy_gracza[client][i]);
			AddMenuItem(menu, "1", klasa);
		}
	}

	DisplayMenu(menu, client, 250);
}
public WybierzFrakcje_Handler(Handle:classhandle, MenuAction:action, client, Position)
{
	if(action == MenuAction_Select)
	{
		new String:Item[32];
		GetMenuItem(classhandle, Position, Item, sizeof(Item));
		Position ++;

		if(StrEqual(Item, "1"))
		{
			if(Position == klasa_gracza[client] && !nowa_klasa_gracza[client])
				return;

			new ile = 0, ma_poziom = 0;
			for(new i = 1; i < sizeof nazwy_klas; i ++)
			{
				if(umiejetnosci_klas[i][4] == frakcja_gracza[client])
					ile++;

				if(ile == Position)
				{
					Position = i;
					break;
				}
			}
			for(new i = 1; i < sizeof nazwy_klas; i ++)
			{
				if(poziom_klasy_gracza[client][i] >= umiejetnosci_klas[Position][0])
					ma_poziom = 1;
			}
			if(ma_poziom)
			{
				if(klasa_gracza[client])
				{
					nowa_klasa_gracza[client] = Position;
					PrintToChat(client, "[COD:MW] Klasa zostanie zmieniona w nastepnej rundzie.");
				}
				else
				{
					klasa_gracza[client] = Position;
					WczytajDane(client, klasa_gracza[client]);
					Odrodzenie(client);
				}
			}
			else
			{
				WybierzKlaseMenu(client);
				PrintToChat(client, "[COD:MW] Wybrana klasa dostepna jest od %dLv!", umiejetnosci_klas[Position][0]);
			}
		}
	}
	else if(action == MenuAction_End)
		CloseHandle(classhandle);
}

Od teraz bedziemy mieli dzialajace frakcje. Nowa grupe tworzymy poprzez dodanie jej do enum oraz zmiennej "nazwy_frakcji" (podobnie jak z dodawaniem nowych klas). Za przypisanie odpowiedniej grupy do klasy odpowiada 5 kolumna w zmiennej "umiejetnosci_klas"


  • +
  • -
  • 0

b35020692_qesnxqa.png


#2 bas233

    Profesjonalista

  • Zbanowany

Reputacja: 0
Nowy

  • Postów:191
  • Imię:kamper
  • Lokalizacja:Warszawa
Offline

Napisano 09.08.2015 11:13

robie wszystko zgodnie z poradnikiem i wskakuje mi 

 

59917032171892978814.png


Serwer CS Go Cod Mod 501 lvl [Free Knife][FreeSkins][Unikat]

 

banner.jpg?1442845665

 

 IP:178.32.201.165:30033


#3 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 09.08.2015 11:20

robie wszystko zgodnie z poradnikiem i wskakuje mi 

 

59917032171892978814.png

 

 

podeslij plik
 


  • +
  • -
  • 0

b35020692_qesnxqa.png


#4 bas233

    Profesjonalista

  • Zbanowany

Reputacja: 0
Nowy

  • Postów:191
  • Imię:kamper
  • Lokalizacja:Warszawa
Offline

Napisano 09.08.2015 11:22

 

robie wszystko zgodnie z poradnikiem i wskakuje mi 

 

59917032171892978814.png

 

 

podeslij plik
 

 

Ok już wszystko naprawiłem nie dałem przecinka w tym "new umiejetnosci_klas[][] =" po ostatniej klasie 24 dodałem 25 i nie dałem przecinka po 24 . Przepraszam za problem.


Serwer CS Go Cod Mod 501 lvl [Free Knife][FreeSkins][Unikat]

 

banner.jpg?1442845665

 

 IP:178.32.201.165:30033


#5 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 06.10.2015 20:15

Aktualizacja tutorialu do najnowszej wersji (0.6)


  • +
  • -
  • 0

b35020692_qesnxqa.png


#6 rekowiesz

    Pomocny

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:51
  • Imię:Rafik
Offline

Napisano 21.12.2015 01:00

Aktualizacja tutorialu do najnowszej wersji (0.6)

Jest bug. Jak ktoś ma klase z np frakcji X o numerze 1 to po wpisaniu /klasa nie może wybrać klasy z frakcji y o numerze 1. Inne numery normalnie dzialają. I tak dalej i tak dalej ktoś ma 2 w x to w y 2 mu nie dziala.

Mam nadzieje że wyjaśniłem problem :).


  • +
  • -
  • 0





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