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

Zwiększenie DMG W Super Vipie


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

#1 CannabiseK

    Początkujący

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:16
  • Imię:Daniel
  • Lokalizacja:Polska
Offline

Napisano 27.06.2014 07:56

Witam mam super vipa i chciałbym w nim zmienić na moim serwerze ,żeby bił z prawego po 120 a z lewego mniej zrobi mi to ktoś 

Plik sma  : 

Załączone pliki


  • +
  • -
  • 0

#2 PoDwOJ

    Pomocny

  • Zbanowany

Reputacja: 7
Nowy

  • Postów:71
  • Lokalizacja:asddasdasda
Offline

Napisano 27.06.2014 09:43

Proszę 2 wersje. :)

 

Załączone pliki



#3 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 02.07.2014 14:12

Podwoj ;D Pozwól że wskarzę ci twoje błędy ;D
Twoja funkcja:
public TakeDamage(victim, entity, attacker, Float:damage, damagebits)
{
	if(!is_user_connected(attacker) || !is_user_connected(victim))
		return HAM_IGNORED;

	if(get_user_flags(attacker) & ADMIN_LEVEL_H && get_user_weapon(attacker) == CSW_KNIFE)
	{
		SetHamParamFloat(4, 1.2);
	}  
	return HAM_IGNORED;
}
Błędy/brak optymalizacji/niedociągnięcia:
1. sprawdzanie czy osoba której się zadaje dmg jest na serwerze nie ma najmniejszego sensu
gdyż to jest nam najmniej potrzebne. Wiem że to na 99% gracz bo jego classname to "player"
zatem nic nie trzeba sprawdzać ale jeśli chcesz oszczędzić serwerowi zbędnych obliczen możesz
sprawdzić czy gracz w którego trafiliśmy nadal żyje

2. Sprawdzanie flagi nie jest błędem ale to pokazuje brak optymalności gdyż w pluginie z vip'em jest
juz zrobiona zmienna z wartościami adekwatnymi do tego czy jesteśmy vip'em

3. Samo sprawdzenie czy gracz ma nóż aktualnie wyciągnięty nic nam tu nie da bo gracz mógł
rzucic HE i zmienic broń na nóż lub splantować pakę i latać z kosą a funkcja sie wykona sad.png

4. Ustawiasz dmg równe "1.2"?? Po co przeciez autor tematu chciał 120 z ppm i mniej z lpm.

5. Jeśli zmieniasz wartość Dmg przydało by się zwrócić HAM_HANDLED ;D

To tyle z mojej strony. Poprawnie wyglądająca funkcja:
public TakeDamage(id, ent, attacker, Float:damage, damagebits)
{
	if(!is_user_connected(attacker) || !g_Vip[attacker] || ent != attacker || !is_user_alive(id) || get_user_weapon(attacker) != CSW_KNIFE)	return HAM_IGNORED

	SetHamParamFloat(4, damage*=(1 + 846153/999999)) //Najprostszy sposób pokazania okresu ;D
	return HAM_HANDLED
}
Takie cos zadziała jesli z noży każdy bije normalnie tzn. nic nie zwieksza dmg z noża ani go nie zmniejsza

Teraz pytania:
Dlaczego dmg z ppm będzie sie równać 120?? Już tłumaczę. Tu chodzi łównie o ten kod:
SetHamParamFloat(4, damage*=(1 + 846153/999999))
a dokładnie o to:
damage*=(1 + 846153/999999)
Dlaczego dmg powymnożeniu przez (1 + 846153/999999) daje nam 120 z ppm? Policzmy.
chcemy osiągnąć z ppm dmg równe 120 aktualnie zadajemy 65. To dzielimy 120/65=1.(846153) Czyli pomnożenie aktualnego dmg przez 1.(846153) da nam 120 a że autor tematu napisał że chce jedynie mniejsze dmg z lewego (nie napisał ile) to nie trzeba sprawdzać z jakiego udezenia zadaliśmy cios (czy ppm czy lpm). Dobra to jest jasne ale dlaczego mnożę dmg przez (1+ 846153/999999) bo takie coś jest równe 1.(846153) tzn. piękny sposób na dojście do okresu ;D

Podsyłam gotowego vip'a

Załączone pliki


  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika




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

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