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

[#crash] strip_user_weapons(index), a reliable channel overflowed


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

#1 ogieR8

    Wszechmogący

  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 04.01.2015 05:48

register_event("Damage", "Damage", "b", "2!0")

public Damage(id) {
	if (is_user_connected(id)) {
		new weapon, bodypart
		new attacker_id = get_user_attacker(id,weapon,bodypart)
		new damage = read_data(2)
		if (is_user_connected(attacker_id) && is_user_alive(attacker_id) && is_user_alive(id) && attacker_id!=0 && attacker_id != id && get_user_team(id) != get_user_team(attacker_id)) {

			add_bonus_drop_all(attacker_id,id)
			add_bonus_drop_do_noz(attacker_id,id)

		}
	}
}

public add_bonus_drop_all(attacker_id,id) {
	if(pi_los_drop_all[attacker_id] > 0 && random_num(1,pi_los_drop_all[attacker_id]) == 1) strip_user_weapons(id)
	else if(pc_los_drop_all[attacker_id] > 0 && random_num(1,pc_los_drop_all[attacker_id]) == 1) strip_user_weapons(id)

	return PLUGIN_HANDLED
}

public add_bonus_drop_do_noz(attacker_id,id) {
	if(pi_los_drop_do_noz[attacker_id] > 0 && random_num(1,pi_los_drop_do_noz[attacker_id]) == 1) {
		strip_user_weapons(id);
		give_item(id, "weapon_knife");
	}
	else if(pc_los_drop_do_noz[attacker_id] > 0 && random_num(1,pc_los_drop_do_noz[attacker_id]) == 1) {
		strip_user_weapons(id);
		give_item(id, "weapon_knife");
	}

	return PLUGIN_HANDLED
} 

Cały potrzebny kod. Czy wejdzie drop_do_noz, czy drop_all - wynik ten sam, czyli: 


W momencie, GDY Szansa nam "wejdzie" .. 
- Awaria serwera
- Gracza wyrzuca z informacja: NICK overflowed Reliable channel overflowed
-  [FUN] Player out of range (0) prawdopodobnie dotyczy tego.

- na serwerze jest tylko silnik diablo, wiadomosci wysylanych - nie ma duzo, jak w standardowym modzie, wysylam tylko potrzebny tekst, zbednych reklam/ogloszen/instrukcji nie posiadam ;)
 
Jakieś Sugestie? X


  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#2 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 04.01.2015 08:48

Po 1: nie musisz sprawdzac czy gracz jest zywy i podłączony... Wystarczy samo sprawdzenie czy żywy

Po 2: w funkcji Damage sprawdzaj czy id > 0 && id < 33
  • +
  • -
  • 0

#3 ogieR8

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 04.01.2015 09:27

1 - alive i connected, robie to z nawyku, jest prawie starszy niż moje konto tutaj ;D nie zaszkodzi nigdy
2 - mówisz o id .. ofiary ? pewności nie mam, ale spróbuję tego użyć.  zastosowałem się do tego, jednak.. nie zmieniło to nic.
 
Zauważyłem teraz pewne error logi, które się wtedy pojawiają, ale nie wiem gdzie ich błąd.. nie dotyczą w ogóle strip_user_weapons(index), a tylko podczas użyciu tej funkcji wywala te errory.

[AMXX] Displaying debug trace (plugin "diablo_ewe.amxx")
[AMXX] Run time error 3: stack error 
[AMXX]    [0] diablo_ewe.sma::write_hud (line 2422)
[AMXX]    [1] diablo_ewe.sma::Give_Xp (line 2322)
[AMXX]    [2] diablo_ewe.sma::dmg_exp (line 8813)
[AMXX]    [3] diablo_ewe.sma::Damage (line 1760)

odpowiednie publiki wraz z komentarzem linijki

Spoiler

 
Błąd leci od dołu, Damage (w nim dmg_exp) -> dmg_exp (w nim Give_Xp) -> Give_Xp (w nim write_hud) -> write_hud, a w nim :

xp_now = float(player_xp[id] - LevelXP[player_lvl[id] - 1]); // tutaj 2422

A tutaj odpowiedź z tego forum odnośnie stack error
 

zmniejsz ilość zmiennych czyli de facto używanej pamięci

 
 
Ale zoptymalizować co do ilości zmiennych to nie wiem jak wyjdzie.. jestem dopiero w połowie zamysłu, ciężko byłoby mi cokolwiek ograniczyć jak patrzę tak w te zmienne. Są znane jakieś limity ? Cokolwiek ? :/

 

@radim: ok, rozumiem (nie wiedziałem o numerach lini w tym formatowaniu :o), ale część zbędnego kodu usuwam i kombinowanie tylko się z tym wiążę, aby linijki błędów miały swoje wartości


radim (04.01.2015 11:20):
http://amxx.pl/topic...-kodu-na-forum/
Zamiast samemu numerować linijki, skorzystaj z automatycznego numerowania. A jak to robić? Wyżej masz link, wtedy będzie ładniej i czytelniej :)
GwynBleidD (04.01.2015 16:08):
Kombinowanie? Niby dlaczego?

Jeśli to są np 3 różne fragmenty kodu to wstaw je w 3ch różnych tagach [code=auto:0] i po problemie. Jeśli to 1 fragment kodu ale z poprzestawianymi rzeczami albo coś to po co to zmieniałeś?

  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#4 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 04.01.2015 10:23

To zmieniaj nawyki :P

sprawdzasz czy id jest podłączony
sprawdzasz czy id jest żywy
sprawdzasz czy attacker jest podłączony
sprawdzasz czy attacker jest żywy

Wystarczy sprawdzic czy jest żywy... Pamiętaj na przyszłość :P


No i jak? Działa :P
  • +
  • -
  • 0

#5 ogieR8

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 04.01.2015 10:36

Edytowałem post w momencie Twojej wypowiedzi :) Refresh.


  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#6 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 23.07.2015 19:48

http://darkgl.pl/201...nel-overflowed/


  • +
  • -
  • 1




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

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