Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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

Problem funkcją fwTakeDamage(Run time error 4: index out of bounds) i ham_TakeDamage(Run time ...


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

#1 Pawlik4Ver

    Zaawansowany

  • Użytkownik

Reputacja: 0
zer0.

  • Postów:88
  • GG:
  • Imię:Wiktor
  • Lokalizacja:Polska
Offline

Napisano 20.03.2016 09:27

Witam,

Mam problem otóż wywala mi błędy na serwerze. 

Jednym z nich jest: 

L 03/20/2016 - 09:17:46: [AMXX] Displaying debug trace (plugin "bb_exp.amxx", version "0.1")
L 03/20/2016 - 09:17:46: [AMXX] Run time error 4: index out of bounds 
L 03/20/2016 - 09:17:46: [AMXX] [0] bb_exp.sma::fwTakeDamage (line 606)

Public który za to odpowiada:

public fwTakeDamage(this, idinflictor, idattacker,Float:damage, damagebits){
SetHamParamFloat(4,damage+(damage*(dmg_level[idattacker]*0.01))); //////////linijka błędy  jest to linijka 606 chyba
if(random_num(1,100) <= krytyk[idattacker]/2){
SetHamParamFloat(4,damage*2);
}
return HAM_HANDLED;
}

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Drugi z nich to:

L 03/20/2016 - 09:17:46: [AMXX] Displaying debug trace (plugin "basebuilder65.amxx", version "1.3")
L 03/20/2016 - 09:17:46: [AMXX] Run time error 4: index out of bounds 
L 03/20/2016 - 09:17:46: [AMXX] [0] basebuilder65.sma::ham_TakeDamage (line 999)

Public który za to odpowiada to:

public ham_TakeDamage(victim, inflictor, attacker, Float:damage, damagebits)
{
if (!is_valid_ent(victim) || !g_isAlive[victim] || !g_isConnected[attacker]) //// linijka która wywala błąd jest to linijka 999, nie sugerować się na silniku zwykłym BB bo mam inny troche
return HAM_IGNORED
 
if(g_boolCanBuild || g_boolRoundEnded || g_boolPrepTime || victim == attacker)
return HAM_SUPERCEDE
 
if (g_iSupercut)
{
damage*=99.0
}
 
SetHamParamFloat(4, damage)
return HAM_HANDLED
}

Ma ktoś jakiś pomysł ? Prosiłbym o rady, wynagradzam +, za pomoc.

 


Użytkownik Pawlik4Ver edytował ten post 20.03.2016 09:27

  • +
  • -
  • 0

Możecie mnie znaleźć na:

Forum: CsBets.pl

GG: 53948900

Mój serwer Counter-Strike 1.6 BaseBuilder!

IP: 79.133.216.76:27028

 


#2 grankee

    Godlike

  • Support Team

Reputacja: 507
Wszechwiedzący

  • Postów:1500
  • Lokalizacja:Radom
Offline

Napisano 21.03.2016 02:30

public fwTakeDamage(this, idinflictor, idattacker,Float:damage, damagebits){
if(!is_user_connected(idattacker)) return HAM_IGNORED;
SetHamParamFloat(4,damage+(damage*(dmg_level[idattacker]*0.01))); //////////linijka błędy  jest to linijka 606 chyba
if(random_num(1,100) <= krytyk[idattacker]/2){
SetHamParamFloat(4,damage*2);
}
return HAM_HANDLED;
}

Drugie

!g_isConnected[attacker]

zamień na 

!is_user_connected(attacker)

a co do 

!g_isAlive[victim]

to nie jestem pewny co to za tablica, jaki ma rozmiar i czy w założeniu victimem może być tylko gracz czy też inne byty. Jeśli tylko gracz to zamień na

!is_user_alive(victim)

a jeśli także inne byty to możliwe, że tablica ma za mały rozmiar i victimem staję się byt o id większym niż rozmiar tablicy.

 

Nie wiem też które z tych dwóch powoduję błąd, bo logi wskazują tylko linijkę. Najlepiej dodaj sobie:

log_amx("victim=%d || attacker=%d",victim,attacker)

i wtedy w logach przeczytasz jakie to ma wartości i które z nich powoduje błąd


  • +
  • -
  • 1

#3 Pawlik4Ver

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 0
zer0.

  • Postów:88
  • GG:
  • Imię:Wiktor
  • Lokalizacja:Polska
Offline

Napisano 23.03.2016 18:16

public fwTakeDamage(this, idinflictor, idattacker,Float:damage, damagebits){
if(!is_user_connected(idattacker)) return HAM_IGNORED;
SetHamParamFloat(4,damage+(damage*(dmg_level[idattacker]*0.01))); //////////linijka błędy  jest to linijka 606 chyba
if(random_num(1,100) <= krytyk[idattacker]/2){
SetHamParamFloat(4,damage*2);
}
return HAM_HANDLED;
}

Drugie

!g_isConnected[attacker]

zamień na 

!is_user_connected(attacker)

a co do 

!g_isAlive[victim]

to nie jestem pewny co to za tablica, jaki ma rozmiar i czy w założeniu victimem może być tylko gracz czy też inne byty. Jeśli tylko gracz to zamień na

!is_user_alive(victim)

a jeśli także inne byty to możliwe, że tablica ma za mały rozmiar i victimem staję się byt o id większym niż rozmiar tablicy.

 

Nie wiem też które z tych dwóch powoduję błąd, bo logi wskazują tylko linijkę. Najlepiej dodaj sobie:

log_amx("victim=%d || attacker=%d",victim,attacker)

i wtedy w logach przeczytasz jakie to ma wartości i które z nich powoduje błąd

 

Zrobiłem tak i działa, dzięki. 


  • +
  • -
  • 0

Możecie mnie znaleźć na:

Forum: CsBets.pl

GG: 53948900

Mój serwer Counter-Strike 1.6 BaseBuilder!

IP: 79.133.216.76:27028

 





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

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