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

Prośba o pomoc z 2 pluginami ( strasznie duże error logi )


  • Zamknięty Temat jest zamknięty
3 odpowiedzi w tym temacie

#1 Andrzej12345

    Banned

  • Zbanowany

Reputacja: -2
Nowy

  • Postów:19
  • Imię:andrzej
  • Lokalizacja:Rzeszów
Offline

Napisano 01.01.2013 21:25

Witam,

Mam do Was prośbę, otóż dwa pluginy cały czas wyrzucają mi strasznie dużo error-logów, nie potrafię tego naprawić, więc zwracam się o pomoc do Was. Oto one.
1 LOG:
L 01/01/2013 - 12:07:45: Invalid player id 0
L 01/01/2013 - 12:07:45: [AMXX] Displaying debug trace (plugin "xxxx.amxx")
L 01/01/2013 - 12:07:45: [AMXX] Run time error 10: native error (native "get_user_weapon")
L 01/01/2013 - 12:07:45: [AMXX]	[0] xxxx_994708.sma::eDeath (line 143)
1 PLUGIN:

Załączony plik  test.sma   14,02 KB  71 Ilość pobrań
  test.amxx

2 LOG:
L 01/01/2013 - 11:32:40: [CSTRIKE] Invalid weapon id 29
L 01/01/2013 - 11:32:40: [AMXX] Displaying debug trace (plugin "jail_zyczenia.amxx")
L 01/01/2013 - 11:32:40: [AMXX] Run time error 10: native error (native "cs_set_user_bpammo")
L 01/01/2013 - 11:32:40: [AMXX]	[0] jail_zyczenia1_1060956.sma::WeaponAttack (line 268)
2 PLUGIN

Załączony plik  respawn.sma   8,49 KB  70 Ilość pobrań
  respawn.amxx
(01.01.2013 22:14):
Kod w postach (np. źródło pluginu) umieszczaj w odpowiednich tagach (code/php/spoiler itp), a powyżej 200 linijek tylko w załączniku lub na wklejce.

Użytkownik benio101 edytował ten post 01.01.2013 22:14
Przeniesienie kodu do pliku SMA


#2 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 01.01.2013 22:38

Ad.2.
cs_set_user_bpammo(id, bronie_pojedynek, 1);

Nie możesz od tak dla każdej broni ustawić zapasu na 1.
Nóż nie korzysta z amunicji, więc wywali Ci błąd, gdyż nie będzie mogło dodać 1 łuski, gdy nie wie, jakiej amunicji, a domyślny WeaponList informuje o braku aminicji dla noża.
http://wiki.amxmodx....ons_Information

Zauważ też, że granaty mają flagi 9. parametru CS Weapons Information ustawione na 24, a więc po wyrzuceniu ostatniego (a Ty ustawiasz tylko na 1), gracz całkowicie straci granat.
http://wiki.amxmodx....st_Message_Dump
24&16!=0, więc mamy do czynienia bowiem z flagą
ITEM_FLAG_EXHAUSTIBLE 16 (1<<4) // A player can totally exhaust their ammo supply and lose this weapon

Tym samym, należy dodać granat do ekwipunku gracza, gdyż właśnie go utracił.

        cs_set_user_bpammo(id, bronie_pojedynek, 1);
zmieniamy na
		switch(bronie_pojedynek){
case 1,3,5,7,8,10..24,26..28,30:{
cs_set_user_bpammo(id, bronie_pojedynek, 1);
}
case 4:{
give_item(id, "weapon_hegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE, 1);
}
case 6:{
give_item(id, "weapon_c4");
cs_set_user_plant(id);
cs_set_user_bpammo(id, CSW_C4, 1);
}
case 9:{
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 1);
}
case 25:{
give_item(id, "weapon_flashbang");
cs_set_user_bpammo(id, CSW_FLASHBANG, 1);
}
}

Użytkownik benio101 edytował ten post 01.01.2013 22:40
drobne techniczne


#3 Andrzej12345

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: -2
Nowy

  • Postów:19
  • Imię:andrzej
  • Lokalizacja:Rzeszów
Offline

Napisano 01.01.2013 23:23

Dziękuje bardzo za pomoc, da radę jeszcze ogarnąć ten pierwszy plugin? Naprawdę byłbym wdzięczny :) .

Pozdrawiam i Najlepszego w Nowym roku

#4 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 01.01.2013 23:40

Ad.1.
register_event("DeathMsg", "eDeath", "a")
public eDeath() {
new iClip, iAmmo, iWeapon = get_user_weapon(read_data(1), iClip, iAmmo)
Zauważ, że Event DeathMsg jako pierwszy argument przyjmuje id zabójcy i niekoniecznie jest to gracz. Może to być dowolny inny byt, bądź zdarzenie, co będzie skutkowało przyjęciem wartości równej 0 bądź danego bytu > get_maxplayers()

Tym samym, funkcja get_user_weapon będzie próbowała pobrać id broni bytu bądź niczego (dla id=0), co skutkuje błędami.
Należy sprawdzić zatem, czy zabójca jest graczem. W tym celu:

1. Tworzymy zmienną globalną
new maxPlayers;
tam będziemy przechowywać maksymalną liczbę graczy na serwerze (int, max. 32)
2. Tworzymy funkcję plugin_cfg() i dodajemy do niej instrukcję
maxPlayers=get_maxplayers()
pobierając ww. max. liczbę graczy.
3. Tworzymy pseudo-funkcję preprocesora
#define IsPlayer(%1) (1<=%1<=maxPlayers)

4. Sprawdzamy, czy zabójca jest graczem, zamieniając kod
	new iClip, iAmmo, iWeapon = get_user_weapon(read_data(1), iClip, iAmmo)
na
	new kid=read_data(1);
if(!IsPlayer(kid)){
return;
}

new iClip, iAmmo, iWeapon = get_user_weapon(kid, iClip, iAmmo)

(01.01.2013 23:42):
Wszystkie dalsze wystąpienia
read_data(1)
warto zastąpić naszą zmienną kid, a read_data(2) zastąpić wcześniej utworzoną zmienną typu
vid=read_data(2);


Dalej w kod nie patrzyłem, ale błędów pewnie się trochę znajdzie.





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

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