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

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

    Wszechwidzący

  • Zbanowany

Reputacja: 17
Początkujący

  • Postów:239
  • 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

Tworze strony Internetowe/WWW (HTML5/CSS, PHP), oraz robię paczki do cs1.6( pisze pluginy też ) na zamówienie.

SPRZEDAM PACZKĘ BASEBUILDER DNKS, mod doskonalony paczka możliwa do zobaczenia przed zakupem, więcej na priv lub GG: 62653757

Skontaktować możesz się zemną przez GG:62653757


#2 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • 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

    Wszechwidzący

  • Autor tematu
  • Zbanowany

Reputacja: 17
Początkujący

  • Postów:239
  • 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. 


Tworze strony Internetowe/WWW (HTML5/CSS, PHP), oraz robię paczki do cs1.6( pisze pluginy też ) na zamówienie.

SPRZEDAM PACZKĘ BASEBUILDER DNKS, mod doskonalony paczka możliwa do zobaczenia przed zakupem, więcej na priv lub GG: 62653757

Skontaktować możesz się zemną przez GG:62653757





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

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