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

Dodanie if'u.


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

#1 Black004

    Wszechpomocny

  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 09.04.2019 22:53

Witam, mój problem polega na tym że nie wiem jak dodać if, pokaże kod będzie mi łatwiej wytłumaczyć.

public AllSkins(){
	new Line[128], Data[5][48], Len;
	
	allSkins++;

	if(file_exists("addons/amxmodx/configs/csgo/skins.cfg"))
	{
		for(new i; i < file_size("addons/amxmodx/configs/csgo/skins.cfg", 1); i++)
		{
			read_file("addons/amxmodx/configs/csgo/skins.cfg", i, Line, charsmax(Line), Len);
			
			if(strlen(Line) < 5 || Line[0] == ';')
				continue;

			parse(Line, Data[0], charsmax(Data[]), Data[1], charsmax(Data[]), Data[2], charsmax(Data[]), Data[3], charsmax(Data[]), Data[4], charsmax(Data[]));
			skinWeaponid[allSkins] = str_to_num(Data[0]);
			copy(skinName[allSkins], charsmax(skinName), Data[1]);
			if(ValidMdl(Data[2]))
			{
				precache_model(Data[2]);
				copy(skinModelsPath[allSkins], charsmax(skinModelsPath), Data[2]);
			}
			skinChanceDrop[allSkins] = str_to_num(Data[3]);
			greenCase[allSkins] = str_to_num(Data[4]);
			allSkins++;
		}
	}
}

Mam tu kod na ustawianie id skina nazwy itd.  A tutaj jest kod na otwieranie skrzynki:

public chestOpen3(id)
{
	new rWeapon = random_num(1, allSkins);
	new rNum = random_num(1, 100);
	
	if(skinChanceDrop[rWeapon]>= rNum)
	{
		if(40 >= random_num(1, 100))
		{
			new Name[33];
			get_user_name(id, Name, charsmax(Name));
			
			playerSkin[rWeapon][id]++;
			playerOpenChest[id]++;

			ColorChat(0, TEAM_COLOR, "[CS:GO]^x01 Gracz^x04 %s^x01 otworzył skrzynie AWP + KNIFE. Wydropil^x03 %s^x01 Gratulacje! :)", Name, skinName[rWeapon]);
			MsgToLog("[CS:GO] %s znalazl w skrzyni AWP + KNIFE %s", Name, skinName[rWeapon]);
			menuCore(id);
		}
		else
		{
			ColorChat(id, GREEN, "[CSGO:MOD]^x03 Skrzynka AWP + KNIFE byla PUSTA!");
			menuCore(id);
		}

	}
	else chestOpen3(id);
}

Jak dodać w nim że tylko skin który ma właśnie np: 1 czyli ma budowe "id skina" "nazwa" "sciezka" "szansa na drop" "i tutaj ta 1" tylko on będzie mógł wydropić z tej skrzynki próbowałem sam dodać, ale coś nie działa :/ Próbowałem zrobić przez właśnie tego if'a np. "if(Case[rWeapon] == 1)" Ale to nie działało lub może w złym miejscu dodałem.


Użytkownik Black004 edytował ten post 09.04.2019 22:54

  • +
  • -
  • 0

#2 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 10.04.2019 13:33

@Ref Ktoś wie jak to zrobić ?..


  • +
  • -
  • 0

#3 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 10.04.2019 19:54

W pierwszym poście zamisat

greenCase[allSkins] = str_to_num(Data[4]);

Miało być:

Case[allSkins] = str_to_num(Data[4]);

  • +
  • -
  • 0

#4 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 10.04.2019 20:10

Nie można dać szansy na 100 i żadnych innych skinów w tej skrzynce?

 

Nie do końca rozumiem pytania - wyjaśnij bardziej.


  • +
  • -
  • 0

#5 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 10.04.2019 20:19

Nie można dać szansy na 100 i żadnych innych skinów w tej skrzynce?

 

Nie do końca rozumiem pytania - wyjaśnij bardziej.

 

 

Mam skiny które są zapisywane w pliku. Chce dodać skrzynke z której będą dropić tylko te skiny które mają nazwe skrzynki z której dropią w swojej tak budowie czyli:

 

Ten skin nie będzie dropił w mojej skrzyni:

"26" "Deagle - Blaze" "models/csgo/v_deagle_blaze.mdl" "15"

Ale ten już bedzię bo ma w nazwie nazwę skrzynki z której ma dropić:

"18" "AWP - Hawking" "models/csgo/v_awp_hawking.mdl" "10" "SkrzynkaAWPKNIFE"

I jak zedytować ten kod żeby dropiło tylko skiny z właśnie tą nazwą?

 

Wiem że to "Case[allSkins] = str_to_num(Data[4]);" Trzeba usunąć i zmienic na coś innego bo to tylko czyta liczby nie nazwy skrzynek.

public chestOpen3(id)
{
	new rWeapon = random_num(1, allSkins);
	new rNum = random_num(1, 100);
	
	if(skinChanceDrop[rWeapon]>= rNum)
	{
		if(40 >= random_num(1, 100))
		{
			new Name[33];
			get_user_name(id, Name, charsmax(Name));
			
			playerSkin[rWeapon][id]++;
			playerOpenChest[id]++;

			ColorChat(0, TEAM_COLOR, "[CS:GO]^x01 Gracz^x04 %s^x01 otworzył skrzynie AWP + KNIFE. Wydropil^x03 %s^x01 Gratulacje! :)", Name, skinName[rWeapon]);
			MsgToLog("[CS:GO] %s znalazl w skrzyni AWP + KNIFE %s", Name, skinName[rWeapon]);
			menuCore(id);
		}
		else
		{
			ColorChat(id, GREEN, "[CSGO:MOD]^x03 Skrzynka AWP + KNIFE byla PUSTA!");
			menuCore(id);
		}

	}
	else chestOpen3(id);
}

Użytkownik Black004 edytował ten post 10.04.2019 20:22

  • +
  • -
  • 0

#6 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 10.04.2019 21:14

Czyli ten system obecny nie ma w ogóle podziału na skrzynki tak?


  • +
  • -
  • 1

#7 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 11.04.2019 09:10

Czyli ten system obecny nie ma w ogóle podziału na skrzynki tak?

 

Jest, już zrobiłem nową skrzynke i klucz do niej i się ładnie wszystko zapisuję chce teraz, albo zrobić nowy plik do każdej skrzyn z jakiej skrzyni ma dropic jaki skin lub juź do istniejącego własnie dodać to. I właśnie nie wiem jak dodać żeby dany skin który ma coś dopisane na końcu np. SKRZYNKAAWPKNIFE:

"18" "AWP - Hawking" "models/csgo/v_awp_hawking.mdl" "10" "SkrzynkaAWPKNIFE"

Tylko on będzie dropił z danej skrzyni.


  • +
  • -
  • 0

#8 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 11.04.2019 19:38

Próbowałem po prostu zrobić nowy plik który będzie zapisywał dane skiny do danej skrzynki, ale wtedy się jakoś psuło i skiny z danej skrzynki dropiły w innych :/


Użytkownik Black004 edytował ten post 11.04.2019 19:38

  • +
  • -
  • 0

#9 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 11.04.2019 21:39

zamiast stringa możesz wczytywać liczbe

Czyli np zakladasz se ze twoja awp case jest numerem jeden

reszte domyslnie niech mają zero.

I juz masz elegansio


  • +
  • -
  • 1

#10 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 11.04.2019 21:44

Czyli w ChestOpen3 mam zrobić tak?

public chestOpen3(id)
{
	new rWeapon = random_num(1, allSkins);
	new rNum = random_num(1, 100);
	
	if(skinChanceDrop[rWeapon]>= rNum && Case[rWeapon] == 1)
	{
		if(40 >= random_num(1, 100))
		{
			new Name[33];
			get_user_name(id, Name, charsmax(Name));
			
			playerSkin[rWeapon][id]++;
			playerOpenChest[id]++;

			ColorChat(0, TEAM_COLOR, "[CS:GO]^x01 Gracz^x04 %s^x01 otworzył skrzynie AWP + KNIFE. Wydropil^x03 %s^x01 Gratulacje! :)", Name, skinName[rWeapon]);
			MsgToLog("[CS:GO] %s znalazl w skrzyni AWP + KNIFE %s", Name, skinName[rWeapon]);
			menuCore(id);
		}
		else
		{
			ColorChat(id, GREEN, "[CSGO:MOD]^x03 Skrzynka AWP + KNIFE byla PUSTA!");
			menuCore(id);
		}

	}
	else chestOpen3(id);
}

A w tym tak?

public AllSkins(){
	new Line[128], Data[5][48], Len;
	
	allSkins++;

	if(file_exists("addons/amxmodx/configs/csgo/skins.cfg"))
	{
		for(new i; i < file_size("addons/amxmodx/configs/csgo/skins.cfg", 1); i++)
		{
			read_file("addons/amxmodx/configs/csgo/skins.cfg", i, Line, charsmax(Line), Len);
			
			if(strlen(Line) < 5 || Line[0] == ';')
				continue;

			parse(Line, Data[0], charsmax(Data[]), Data[1], charsmax(Data[]), Data[2], charsmax(Data[]), Data[3], charsmax(Data[]), Data[4], charsmax(Data[]));
			skinWeaponid[allSkins] = str_to_num(Data[0]);
			copy(skinName[allSkins], charsmax(skinName), Data[1]);
			if(ValidMdl(Data[2]))
			{
				precache_model(Data[2]);
				copy(skinModelsPath[allSkins], charsmax(skinModelsPath), Data[2]);
			}
			skinChanceDrop[allSkins] = str_to_num(Data[3]);
			Case[allSkins] = str_to_num(Data[4]);
			allSkins++;
		}
	}
}

  • +
  • -
  • 0

#11 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 11.04.2019 22:08

Tak, działa wszystko. Dzięki za pomoc, dobrze że wspomniałeś ze reszta ma mieć np. domyślnie 0, poniewaz to pomijałem i się bugowało


  • +
  • -
  • 0

#12 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 11.04.2019 22:15

Tak, ale radze Ci - zrób se enum z ze skrzynkami bo sie pogubisz potem :D

enum _:kTypes{
	DEFAULT_CASE = 0,
	AWP_CASE,
	DEAGLE_CASE
}

Myśle, że ogarniesz


  • +
  • -
  • 1

#13 Black004

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:371
  • GG:
  • Imię:Błażej
  • Lokalizacja:Polska
Offline

Napisano 11.04.2019 22:26

Dzięki jeszcze raz, skorzystam :)


  • +
  • -
  • 0




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

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