Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

CodMod_Stary - Jak dodać cod misje


owner_2019
 Udostępnij

Rekomendowane odpowiedzi

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.

 

 

Autorem poradnika jest @Linux`.

Oryginalny temat: [cs:go]CodMod_Stary - Jak dodac cod misje - Tutoriale - AMXX.pl: Support AMX Mod X

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
 Udostępnij

×
×
  • Dodaj nową pozycję...