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 - Jak dodac cod misje

cs:go

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
7 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 07.08.2015 22:10

opis

 

W tym poradniku pokaze w jaki sposob dodac cod misje do silnika.

 

Pierw na gorze dodajemy:

new misja_klasy_gracza[MAX_PLAYERS+1][MAX_CLASS+1], zabicia_klasy_gracza[MAX_PLAYERS+1][MAX_CLASS+1], misja_gracza[MAX_PLAYERS+1], zabicia_gracza[MAX_PLAYERS+1]
new nazwy_misji[][] =
{    // Lvl // Zabicia // Kogo // Nagroda
    {0, 0, 0, 0}, // 0
    {300, 15, Snajper, 5000}, // 1
    {400, 30, Komandos, 10000}, // 2
    {500, 45, Obronca, 15000}, // 3
    {600, 60, Medyk, 20000}, // 4
    {700, 75, Saper, 25000}, // 5
    {800, 90, Rusher, 30000}, // 6
    {900, 105, Kangur, 35000}, // 7
    {1000, 120, Admiral, 40000}, // 8
    {1200, 135, Rebeliant, 45000}, // 9
    {1400, 150, Szturmowiec, 50000}, // 10
    {1600, 165, Kamikadze, 55000}, // 11
    {1800, 180, Strzelec, 60000}, // 12
    {2000, 195, Szpieg, 65000}, // 13
    {2300, 210, Mauser, 70000}, // 14
    {2600, 5, 4, 15000}, // 15
    {2900, 10, 5, 30000}, // 16
    {3200, 15, 6, 45000}, // 17
    {3600, 20, 7, 60000}, // 18
    {4000, 25, 8, 75000}, // 19
    {4400, 30, 9, 90000}, // 20
    {4800, 35, 10, 105000}, // 21
    {5200, 40, 13, 120000}, // 22
    {5600, 45, 14, 135000}, // 23
    {6000, 50, 15, 150000}, // 24
    {6400, 55, 16, 165000}, // 25
    {6800, 60, 18, 180000}, // 26
    {7200, 65, 20, 195000}, // 27
    {7600, 70, 24, 210000}, // 28
    {8000, 75, 26, 225000}, // 29
    {8400, 80, 31, 240000} // 30
};
new String:opisy_misji[][] =
{
    "Brak. Wpisz /misja aby rozpoczac", // 0
    "Zabij 15 Snajperow - 5000 Dosw.", // 1
    "Zabij 30 Komandosow - 10000 Dosw.", // 2
    "Zabij 45 Obroncow - 15000 Dosw.", // 3
    "Zabij 60 Medykow - 20000 Dosw.", // 4
    "Zabij 75 Saperow - 25000 Dosw.", // 5
    "Zabij 90 Rusherow - 30000 Dosw.", // 6
    "Zabij 105 Kangurow - 35000 Dosw.", // 7
    "Zabij 120 Admiralow - 40000 Dosw.", // 8
    "Zabij 135 Rebeliantow - 45000 Dosw.", // 9
    "Zabij 150 Szturmowcow - 50000 Dosw.", // 10
    "Zabij 165 Kamikadze - 55000 Dosw.", // 11
    "Zabij 180 Strzelcow - 60000 Dosw.", // 12
    "Zabij 195 Szpiegow - 65000 Dosw.", // 13
    "Zabij 210 Mauserow - 70000 Dosw.", // 14
    "Zabij 5 osob z Apteczka - 15000 Dosw.", // 15
    "Zabij 10 osob z Adrenalina - 30000 Dosw.", // 16
    "Zabij 15 osob z Regeneratorem - 45000 Dosw.", // 17
    "Zabij 20 osob z Morfina - 60000 Dosw.", // 18
    "Zabij 25 osob z Ksiega Expa. - 75000 Dosw.", // 19
    "Zabij 30 osob z Portfel Turysty - 90000 Dosw.", // 20
    "Zabij 35 osob z Kamizelka Nasa - 105000 Dosw.", // 21
    "Zabij 40 osob z Mocnymi Nogami - 120000 Dosw.", // 22
    "Zabij 45 osob z Notatkami Kapitana - 135000 Dosw.", // 23
    "Zabij 50 osob z Tytanowymi Nabojami - 150000 Dosw.", // 24
    "Zabij 55 osob z Nabojami Pulkownika - 165000 Dosw.", // 25
    "Zabij 60 osob z Nozem Mysliwego - 180000 Dosw.", // 26
    "Zabij 65 osob z Pancernym Helmem - 195000 Dosw.", // 27
    "Zabij 70 osob z Plaszczowymi Nabojami - 210000 Dosw.", // 28
    "Zabij 75 osob z Tajemnica Molotova - 225000 Dosw.", // 29
    "Zabij 80 osob z Ogranicznikiem Rozrzutu - 240000 Dosw." // 30
};

pozniej szukamy:

public OnClientPutInServer(client)
{

i dodajemy do srodka:

misja_gracza[client] = 0;
zabicia_gracza[client] = 0;

oraz zamieniamy:

for(new i = 1; i < sizeof nazwy_klas; i ++)
{
	poziom_klasy_gracza[client][i] = 1;
	doswiadczenie_klasy_gracza[client][i] = 0;
	inteligencja_klasy_gracza[client][i] = 0;
	zdrowie_klasy_gracza[client][i] = 0;
	obrazenia_klasy_gracza[client][i] = 0;
	wytrzymalosc_klasy_gracza[client][i] = 0;
	kondycja_klasy_gracza[client][i] = 0;
}

na

for(new i = 1; i < sizeof nazwy_klas; i ++)
{
	poziom_klasy_gracza[client][i] = 1;
	doswiadczenie_klasy_gracza[client][i] = 0;
	inteligencja_klasy_gracza[client][i] = 0;
	zdrowie_klasy_gracza[client][i] = 0;
	obrazenia_klasy_gracza[client][i] = 0;
	wytrzymalosc_klasy_gracza[client][i] = 0;
	kondycja_klasy_gracza[client][i] = 0;
	misja_klasy_gracza[client][i] = 0;
	zabicia_klasy_gracza[client][i] = 0;
}

pozniej szukamy:

public Action:PlayerDeath(Handle:event_death, String:name[], bool:dontBroadcast)
{
	new client = GetClientOfUserId(GetEventInt(event_death, "userid"));
	new killer = GetClientOfUserId(GetEventInt(event_death, "attacker"));
	if(!IsValidClient(client) || !IsValidClient(killer))
		return;

	if(klasa_gracza[killer] && GetClientTeam(client) != GetClientTeam(killer))
	{

i dodajemy do srodka, nad if(headshot[client]):

if(misja_gracza[killer])
{
	if(klasa_gracza[client] == nazwy_misji[misja_gracza[killer]][2] || informacje_itemu_gracza[client][0] == nazwy_misji[misja_gracza[killer]][2])
		zabicia_gracza[killer] ++;

	if(zabicia_gracza[killer] == nazwy_misji[misja_gracza[killer]][1])
	{
		doswiadczenie += nazwy_misji[misja_gracza[killer]][3];
		PrintToChat(killer, "[COD:MW] Wykonales zadanie: [%s]. Gratulacje!", opisy_misji[misja_gracza[killer]]);
		misja_gracza[killer] = 0;
		zabicia_gracza[killer] = 0;
	}
}

teraz musimy jeszcze przerobic zapis, szukamy:

WybierzKlase(client)

i pod

kondycja_klasy_gracza[client][klasa_g] = kondycja_gracza[client];

dodajemy

misja_klasy_gracza[client][klasa_g] = misja_gracza[client];
zabicia_klasy_gracza[client][klasa_g] = zabicia_gracza[client];

nastepnie zamieniamy:

Format(tmp, sizeof(tmp), "SELECT `lvl`, `xp`, `inteligencja`, `zdrowie`, `obrazenia`, `wytrzymalosc`, `kondycja`, `klasa` FROM `codmod` WHERE steamid = '%s';", authid);

na

Format(tmp, sizeof(tmp), "SELECT `lvl`, `xp`, `inteligencja`, `zdrowie`, `obrazenia`, `wytrzymalosc`, `kondycja`, `misja`, `zabicia`, `klasa` FROM `codmod` WHERE steamid = '%s';", authid);

teraz przechodzimy do:

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

i zamieniamy caly public na

public WybierzKlase2(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, misja = 0, zabicia = 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);
				misja = SQL_FetchInt(query, 7);
				zabicia = SQL_FetchInt(query, 8);
				SQL_FetchString(query, 9, 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;
						misja_klasy_gracza[client][i] = misja;
						zabicia_klasy_gracza[client][i] = zabicia;
					}
				}
			}
		}
	}

	WybierzKlaseMenu(client);
	polaczony_raz[client] = 0;
}

teraz szukamy:

public Action:DataBaseConnect()
{

i zamieniamy

SQL_FastQuery(sql, "CREATE TABLE IF NOT EXISTS `codmod` (`id` INT(11) NOT NULL AUTO_INCREMENT, `steamid` VARCHAR(48) NOT NULL, `klasa` VARCHAR(48) NOT NULL, `lvl` INT(11) DEFAULT 1, `xp` INT(14), `inteligencja` INT(9), `zdrowie` INT(9), `obrazenia` INT(9), `wytrzymalosc` INT(9), `kondycja` INT(9), PRIMARY KEY (`id`), UNIQUE KEY `klasaid` (`klasa`,`steamid`)) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;");

na

SQL_FastQuery(sql, "CREATE TABLE IF NOT EXISTS `codmod` (`id` INT(11) NOT NULL AUTO_INCREMENT, `steamid` VARCHAR(48) NOT NULL, `klasa` VARCHAR(48) NOT NULL, `lvl` INT(11) DEFAULT 1, `xp` INT(14), `inteligencja` INT(9), `zdrowie` INT(9), `obrazenia` INT(9), `wytrzymalosc` INT(9), `kondycja` INT(9), `misja` INT(9), `zabicia` INT(9), PRIMARY KEY (`id`), UNIQUE KEY `klasaid` (`klasa`,`steamid`)) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;");

nastepnie szukamy

public Action:ZapiszDane(client)
{

i zamieniamy:

Format(tmp, sizeof(tmp), "INSERT INTO `codmod` (`steamid`, `klasa`, `lvl`, `xp`, `inteligencja`, `zdrowie`, `obrazenia`, `wytrzymalosc`, `kondycja`) VALUES ('%s', '%s', %d, %d, %d, %d, %d, %d, %d) ON DUPLICATE KEY UPDATE `lvl`=VALUES(`lvl`), `xp`=VALUES(`xp`), `inteligencja`=VALUES(`inteligencja`), `zdrowie`=VALUES(`zdrowie`), `obrazenia`=VALUES(`obrazenia`), `wytrzymalosc`=VALUES(`wytrzymalosc`), `kondycja`=VALUES(`kondycja`);", authid, nazwy_klas[klasa_gracza[client]], poziom_gracza[client], doswiadczenie_gracza[client], inteligencja_gracza[client], zdrowie_gracza[client], obrazenia_gracza[client], wytrzymalosc_gracza[client], kondycja_gracza[client]);

na

Format(tmp, sizeof(tmp), "INSERT INTO `codmod` (`steamid`, `klasa`, `lvl`, `xp`, `inteligencja`, `zdrowie`, `obrazenia`, `wytrzymalosc`, `kondycja`, `misja`, `zabicia`) VALUES ('%s', '%s', %d, %d, %d, %d, %d, %d, %d, %d, %d) ON DUPLICATE KEY UPDATE `lvl`=VALUES(`lvl`), `xp`=VALUES(`xp`), `inteligencja`=VALUES(`inteligencja`), `zdrowie`=VALUES(`zdrowie`), `obrazenia`=VALUES(`obrazenia`), `wytrzymalosc`=VALUES(`wytrzymalosc`), `kondycja`=VALUES(`kondycja`), `misja`=VALUES(`misja`), `zabicia`=VALUES(`zabicia`);", authid, nazwy_klas[klasa_gracza[client]], poziom_gracza[client], doswiadczenie_gracza[client], inteligencja_gracza[client], zdrowie_gracza[client], obrazenia_gracza[client], wytrzymalosc_gracza[client], kondycja_gracza[client], misja_gracza[client], zabicia_gracza[client]);

nastepnie szukamy

public Action:WczytajDane(client, klasa)
{

i pod

kondycja_gracza[client] = kondycja_klasy_gracza[client][klasa];

dodajemy

misja_gracza[client] = misja_klasy_gracza[client][klasa];
zabicia_gracza[client] = zabicia_klasy_gracza[client][klasa];

teraz gdzies na dole dodajemy:

public Action:WybierzMisje(client)
{
	if(klasa_gracza[client])
	{
		if(misja_gracza[client])
		{
			new Handle:menu = CreateMenu(WybierzMisje_Handler);
			SetMenuTitle(menu, "Menu Misje:");
			AddMenuItem(menu, "1", "Opis Misji");
			AddMenuItem(menu, "2", "Anuluj Misje");
			DisplayMenu(menu, client, 250);
		}
		else
		{
			new String:misja[512];
			new Handle:menu = CreateMenu(WybierzMisje_Handler);
			SetMenuTitle(menu, "Wybierz Misje:");
			for(new i = 1; i <sizeof nazwy_misji; i ++)
			{
				Format(misja, sizeof(misja), "%s (Od %dLv)", opisy_misji[i], nazwy_misji[i][0]);
				AddMenuItem(menu, "3", misja);
			}

			DisplayMenu(menu, client, 250);
		}
	}
	else
		PrintToChat(client, "[COD:MW] Musisz miec wybrana klase aby moc wlaczyc misje!");
}
public WybierzMisje_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"))
			OpisMisji(client);
		else if(StrEqual(Item, "2"))
		{
			misja_gracza[client] = 0;
			zabicia_gracza[client] = 0;
			if(!zapisz_dane[client])
				zapisz_dane[client] = 1;

			PrintToChat(client, "[COD:MW] Anulowales swoje aktualne zadanie! Wpisz /misja aby rozpoczac.");
		}
		else if(StrEqual(Item, "3"))
		{
			if(poziom_gracza[client] >= nazwy_misji[Position][0])
			{
				misja_gracza[client] = Position;
				if(!zapisz_dane[client])
					zapisz_dane[client] = 1;

				PrintToChat(client, "[COD:MW] Wybrales zadanie: [%s]. Powodzenia!", opisy_misji[Position]);
			}
			else
			{
				WybierzMisje(client);
				PrintToChat(client, "[COD:MW] Wybrane zadanie dostepne jest od %dLv!", nazwy_misji[Position][0]);
			}
		}
	}
	else if(action == MenuAction_End)
		CloseHandle(classhandle);
}
public Action:OpisMisji(client)
{
	if(klasa_gracza[client])
		PrintToChat(client, "[COD:MW] Postep misji: %i/%i osob - Twoje zadanie: %s.", zabicia_gracza[client], nazwy_misji[misja_gracza[client]][1], opisy_misji[misja_gracza[client]]);
	else
		PrintToChat(client, "[COD:MW] Musisz miec wybrana klase aby moc sprawdzic misje!");
}

nastepnie szukamy:

public Action:Komendy(client, args)
{

i gdzies pod publiciem CodSklep dodajemy:

else if(strcmp(text, "/misja", false) == 0 || strcmp(text, "/misje", false) == 0 || strcmp(text, "/quest", false) == 0 || strcmp(text, "/zadania", false) == 0)
	WybierzMisje(client);
else if(strcmp(text, "/info", false) == 0 || strcmp(text, "/infomisja", false) == 0 || strcmp(text, "/sprawdz", false) == 0 || strcmp(text, "/sprawdzmisje", false) == 0)
	OpisMisji(client);

Jezeli zrobiles wszystko tak jak wyzej to powinienes miec dzialajace misje.

 

Uwaga, jezeli modyfikujesz swoj zapis, musisz usunac aktualny plik zapisu lub zmodyfikowac go poprzez dodanie nowych kolumn do pliku. Jezeli tego nie zrobisz serwer bedzie wyswietlac bledy.

 

I teraz tak jak chcesz zmodyfikowac misje to zmiany wprowadzasz tutaj:

new nazwy_misji[][] =

oraz w opisie danej misji. Pierwsza kolumna odpowiada za poziom od ktorego ma byc misja, druga za liczbe zabic jaka musimy wykonac, trzecia za osobe ktora musimy zabic (nazwa klasy lub nr itemu), czwarta za nagrode ktora otrzymamy za wykonanie misji.


  • +
  • -
  • 2

b35020692_qesnxqa.png


#2 rekowiesz

    Pomocny

  • Użytkownik

Reputacja: 1
Nowy

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

Napisano 06.10.2015 19:36

Poradniki są stare. Zrobisz aktualizacje pod mysql?


  • +
  • -
  • 0

#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 06.10.2015 19:55

Poradniki są stare. Zrobisz aktualizacje pod mysql?

 

W ciagu kilku najblizszyc dni zostana zaaktualizowane wszystkie dotychczasowe poradniki, poza tym mozliwe ze dojda nowe. Wszystko dzięki jednej z sieci ktora byla tak dobra i zafundowala mi skrzynke piwa za wykonanie prac :).


  • +
  • -
  • 0

b35020692_qesnxqa.png


#4 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 07.10.2015 17:50

Poradnik zaaktualizowany do wersji silnika >= 0.6


  • +
  • -
  • 0

b35020692_qesnxqa.png


#5 terminatorXL

    Nowy

  • Nowy

Reputacja: 0
Nowy

  • Postów:4
  • Lokalizacja:Warszawa
Offline

Napisano 29.12.2015 21:06

Mam błąd, Trwa wczytywanie klas


  • +
  • -
  • 0

#6 SUICIDE

    Pomocny

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:42
  • Lokalizacja:Pochazis?
Offline

Napisano 01.01.2016 19:26

Linux a nie masz gdzieś całego cod moda z misjami skompilowanego?


  • +
  • -
  • 0

#7 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 01.01.2016 20:09

Linux a nie masz gdzieś całego cod moda z misjami skompilowanego?


Gdzies na dysku powinna sie znajdowac takowa wersja, a w czym problem?
  • +
  • -
  • 0

b35020692_qesnxqa.png


#8 rekowiesz

    Pomocny

  • Użytkownik

Reputacja: 1
Nowy

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

Napisano 02.01.2016 22:17

Dlaczego "utf8_polish_ci" ? A nie general?


  • +
  • -
  • 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