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
 

aSiorr - zdjęcie

aSiorr

Rejestracja: 26.12.2015
Aktualnie: Przegląda profil aSiorr
Poza forum Ostatnio: wczoraj, 23:15
-----

#760000 [ROZWIĄZANE] Losowy kolor barriery

Napisane przez aSiorr on 16.07.2019 22:25

new Float:colors[3];

colors[0] = random_float(0.0, 255.0);
colors[1] = random_float(0.0, 255.0);
colors[2] = random_float(0.0, 255.0);

set_pve(g_iEntBarrier, pev_rendercolor, colors);

"must be a constant expression" -> "Musi być wyrażenie stałe", co znaczy, że wartość musi być stała, a nie tworzona w locie.


  • +
  • -
  • 1


#759996 dodanie expa graczu ktory skoczyl na glowe

Napisane przez aSiorr on 16.07.2019 17:07

To może być overkill:

  • Sprawdzaj czy gracz A podskoczył (np. używając flag),
  • Sprawdzaj dotknięcie się dwóch entity o classname "player",
  • Sprawdzaj wysokość gracza B i gracza A (jeśli A jest wyżej o wysokość bytu B, to przyjmijmy, że podskoczył mu nad głowę lub równo z nią)

 

Drugi sposób (zważając na to, że już do tej pory widzieliśmy taski co 0.1 sekundy z wykorzystaniem mnóstwa natywów i złożonych funkcji aby formatować tekst HUDu przy 32 graczach):

  • Dla gracza, który się zrespi uruchom task co 0.1 sek.,
  • Sprawdzaj dotknięcie się dwóch entity o classname "player",
  • Sprawdzaj różnicę w wysokości graczy, których indeksy otrzymasz z eventu entity touch (podobnie do powyższego; jeśli A jest wyżej...),
  • Sprawdzaj w tasku flagę FL_ONGROUND (jeśli dobrze pamiętam) - jeśli będzie ustawiona to znaczy, że gracz skaczący dotknął podłoża (więc tym samym nie może stać komuś na głowie)

  • +
  • -
  • 1


#759926 Task się nie wyłącza.

Napisane przez aSiorr on 12.07.2019 16:49

Pokaż cały kod.

 

Zmień public Poczatek_Rundy na to:

public Poczatek_Rundy()
{
	for(new i = 1; i <= 32; i++)
	{
		if(!is_user_connected(i))
		{
			continue;
		}

		remove_task(i + POKAZ_HUD);
	}
}

Dodaj:

public client_disconnect(index)
{
	if(!task_exists(index + POKAZ_HUD))
	{
		return;
	}

	remove_task(index + POKAZ_HUD);
}

Dodaj w Poczatek_Rundy log_amx'a, sprawdzającego czy task istnieje, przykładowo:

log_amx("Player: %i, Task id: %i, exist: %s", id, id + POKAZ_HUD, task_exists(id + POKAZ_HUD) ? "True" : "False");

Tak jak napisał TibacK, możesz uzywać argumentu "task_id" zamiast "id + POKAZ_HUD", wartości wyjdą dokładnie te same.

 

Polecam też pomyśleć nad estetyką kodu (odezwij się na PW, chętnie Ci podpowiem co i jak) i nazywaniem zmiennych po angielsku.


  • +
  • -
  • 1


#759815 [ROZWIĄZANE] [Problem] invalid function or declaration

Napisane przez aSiorr on 05.07.2019 13:34

U mnie na profilu masz plugin do nadawania flag przez menu z poziomu serwera
  • +
  • -
  • 1


#759769 Poszukujemy ludzi !

Napisane przez aSiorr on 02.07.2019 17:17

Wypadałoby dać wgląd w adres sieci, nie sądzisz? Zaoszczędzi to czasu obu stronom :)


  • +
  • -
  • 2


#759716 [ROZWIĄZANE] Losowa zabawa na JB

Napisane przez aSiorr on 27.06.2019 10:54

Pokaż cały kod losowania zabawy w pliku.

W silniku jaila zamień public "ZarejestrujZabawe" na ten:

public ZarejstrujZabawe(nazwa_zabawy[])
{
	param_convert(1);
	ArrayPushString(gZabawyName, nazwa_zabawy);

	static ilosc = 8; ilosc++;

	log_amx("Zabawa %i = '%s'", ilosc, nazwa_zabawy);
	
	return ilosc;
}

i pokaż co wyświetli się w konsoli.


  • +
  • -
  • 1


#759707 [ROZWIĄZANE] Losowa zabawa na JB

Napisane przez aSiorr on 26.06.2019 17:20


Trza było może uzyć equali albo containi

 


Oczywiście nazwy zabaw w tablicy "zabawy" muszą być dokładnie takie same, jak te przy ich rejestrowaniu.

 

Może i mogłem użyć, w zabawach nie powtarzają się często nazwy, ale wciąż, dokładnie takie same to dokładnie takie same.


  • +
  • -
  • 1


#759699 [ROZWIĄZANE] Losowa zabawa na JB

Napisane przez aSiorr on 26.06.2019 13:14

Tak
  • +
  • -
  • 1


#759690 [ROZWIĄZANE] Losowa zabawa na JB

Napisane przez aSiorr on 25.06.2019 16:01

Najwyraźniej w silniku są zapisane inaczej albo po prostu źle je wpisałeś.
  • +
  • -
  • 1


#759687 [ROZWIĄZANE] Losowa zabawa na JB

Napisane przez aSiorr on 25.06.2019 01:28

Nie kompilujesz dobrze kodu, albo coś masz źle.

56 linijka to "}"

67 linijka to "{"


  • +
  • -
  • 1


#759683 [ROZWIĄZANE] Losowa zabawa na JB

Napisane przez aSiorr on 24.06.2019 15:43

Na pewno podmieniłeś mój kod z poprzedniego posta? Tam nie ma nawet tablicy, w której indeks mógły wychodzić poza jej wielkość. Na pewno to jest 67 linijka?


  • +
  • -
  • 1


#759671 [ROZWIĄZANE] Losowa zabawa na JB

Napisane przez aSiorr on 24.06.2019 06:05

Nie dajesz mi pełnego logu błędu. Nie cytuj posta nad Tobą, bo to bez sensu
  • +
  • -
  • 1


#759668 [ROZWIĄZANE] Losowa zabawa na JB

Napisane przez aSiorr on 24.06.2019 00:09

No jasne, że tak.. Mój błąd:

public losowanie()
{
	new randomGame = random_num(0, sizeof(zabawy) - 1),
	gameIndex = getGameIndexByName(zabawy[randomGame]);
	
	if(gameIndex == -1)
	{
		log_amx("Nieprawidlowa nazwa zabawy. (%i)", randomGame);
		
		return;
	}
	
	jail_set_play_game(gameIndex, true); 	
}

  • +
  • -
  • 1


#759658 [ROZWIĄZANE] Losowa zabawa na JB

Napisane przez aSiorr on 23.06.2019 18:00

Rejestrujesz nowy natyw w silniku jb:

register_native("getGameIndexByName", "native_getGameIndexByName", 1);

Tworzysz public natywu:

public native_getGameIndexByName(name[])
{
	return getGameIndexByName(name);
}

i dodajesz wymaganą funkcję:

public getGameIndexByName(name[])
{
	#define ForDynamicArray(%1,%2) for(new %1 = 0; %1 < ArraySize(%2); %1++)

	new gameName[64];

	ForDynamicArray(i, gZabawyName)
	{
		ArrayGetString(gZabawyName, i, gameName, charsmax(gameName));

		if(equal(gameName, name))
		{
			return i;
		}
	}

	return -1;
}

W pluginie z losowaniem dajesz:

native getGameIndexByName(name[]);

A w losowaniu zabawy robisz:

new randomGame = random_num(0, sizeof(zabawy) - 1),
	gameIndex = getGameIndexByName(zabawy[randomGame]);

if(gameIndex == -1)
{
	log_amx("Nieprawidlowa nazwa zabawy. (%s)", zabawy[gameIndex]);

	return;
}

jail_set_play_game(gameIndex, true); 

Oczywiście nazwy zabaw w tablicy "zabawy" muszą być dokładnie takie same, jak te przy ich rejestrowaniu.


  • +
  • -
  • 2


#759645 Cheat Engine

Napisane przez aSiorr on 22.06.2019 18:59

Cheat engine działa na rejestrach pamięci danych. Grając w grę offline, pliki muszą być gdzieś trzymane - np. zapis stanu gry, pieniądze, doświadczenie etc. i tutaj właśnie wchodzi Cheat Engine. Żeby użyć tego programu musisz wpisać wartość (np. pieniędzy, dla przykładu będzie to 666), klikasz "search", a program szuka w pamięci przypisanej do danego procesu (gry) wartości 666. Kiedy ją znajdzie, zamienia ją na dowolną, przez co gra wczytując ponownie wartości myśli, że gracz ma więcej kasy.

 

Odpowiadając krótko na Twoje pytanie: nie.

 

Wszystkie dane są trzymane po stronie serwera - dlatego mamy bazy danych; nvault, mysql itd., dlatego własnie musisz wczytywać wartości z nvaulta przy wejściu gracza na serwer - a nie wysyłać zapytanie o te wartości do samego gracza.

 

Domyślam się, że temat jest związany z Twoim zapytaniem o włamania na serwer. Nie, cheat engine nie powinno w żaden sposób dawać możliwości włamania się na serwer.


  • +
  • -
  • 2