←  Poradniki, Łatki oraz Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
[ŁATKA] Naprawa CurWeapon !

  • +
  • -
Najkon's Photo Najkon 11.11.2011

Cześć, DarkGL naprawił dla mnie CurWeapon - wcześniej tworzyło errory i crashowalo serwer a teraz działa.

Na początku pod
#include <nvault>
dodajemy
#include <engine>

Następnie w silniku coda podmieniamy public CurWeapon(id)
na :
public CurWeapon(id)
{
	if(!is_user_alive(id) )
		return;

	new team = get_user_team(id);

	if(team > 2)
		return;

	new bron = read_data(2);

	if(!(1<<bron & (bronie_klasy[klasa_gracza[id]] | bonusowe_bronie_gracza[id] | bronie_druzyny[team] | bronie_dozwolone)))	 ham_strip_weapon_short( id );

	if(cs_get_user_shield(id) && !gracz_ma_tarcze[id])
		engclient_cmd(id, "drop", "weapon_shield");	

	UstawSzybkosc(id);
}

stock ham_strip_weapon_short(id)
{
	new szWeapon[64];
	
	get_weaponname( get_user_weapon( id ) , szWeapon , charsmax ( szWeapon ) )
	
	new wId = get_weaponid(szWeapon);
	if(!wId) return 0;
	
	new wEnt	=	find_ent_by_owner( -1,szWeapon,id )
	
	if(!wEnt) return 0;
	
	ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt);
	
	ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)
	ExecuteHamB(Ham_Item_Kill,wEnt);
	
	set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId));
	
	return 1;
}

a następnie usuwamy na samym dole pluginu taki stock :

stock ham_strip_weapon(id, weapon[])
{
	if(!equal(weapon, "weapon_", 7) ) return 0
	new wId = get_weaponid(weapon)
	if(!wId) return 0
	new wEnt
	while( (wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname", weapon) ) && pev(wEnt, pev_owner) != id) {}
	if(!wEnt) return 0
	
	if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon, wEnt)
	
	if(!ExecuteHamB(Ham_RemovePlayerItem, id, wEnt)) return 0
	ExecuteHamB(Ham_Item_Kill ,wEnt)
	
	set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wId) )
	return 1
}

I BUM ! Nie ma errorów i crashy

Wszelkie podziękowania słać do DarkGL


// Jeśli wam ta funkcja nie tworzy errorow dotyczacych 'stack error' to wydaje mi się że nie opłaca się tego wgrywać, lecz tamten błąd jest bardzo popularny.
Edited by DarkGL, 12.11.2011 01:05.
Quote

  • +
  • -
d0naciak's Photo d0naciak 11.11.2011

Pkaż jak w całości ten public wygląda, bo nie rozumiem
Quote

  • +
  • -
Najkon's Photo Najkon 11.11.2011

Który public ?

Wydawało mi się że jest to napisane prostym jezykiem :S
Edited by Najkon, 11.11.2011 17:21.
Quote

  • +
  • -
d0naciak's Photo d0naciak 11.11.2011

Dobra, to ja niezrozumiałem, + dla CB

Tylko napisz ze engine jest do tego potrzebny
Edited by d0n tHe Pr0oo, 11.11.2011 19:17.
Quote

  • +
  • -
Szymek^'s Photo Szymek^ 11.11.2011

Czasem mam te błędy w logach. + za opublikowanie i podziękowania dla Rafała.
Quote

  • +
  • -
DarkGL's Photo DarkGL 11.11.2011

dodałem jeszcze warunek is_user_alive tak dla pewności
sebul (12.11.2011 00:53):
No to wywal "is_user_connected" xD
DarkGL (12.11.2011 01:05):
zrobione
Quote

  • +
  • -
ToRRent's Photo ToRRent 12.11.2011

jakie crashe ? jakie errory ? :o

Pierwszy raz słysze o takim zdarzeniu
Quote

  • +
  • -
d0naciak's Photo d0naciak 12.11.2011

No mi właśnie wcześniej crashowało, tylko że CheQ dał mi nieco inną łatkę, i ta jego chyba też działa :)
Quote

  • +
  • -
Najkon's Photo Najkon 12.11.2011

jakie crashe ? jakie errory ? :o

Pierwszy raz słysze o takim zdarzeniu


A takie, na czystym codzie bez niczego także pojawiają się crashe dotyczące CurWeapon :
Quote

  • +
  • -
ToRRent's Photo ToRRent 13.11.2011

no cóż ja nie mam takich problemów :D wystarczy amx zaktualizować do 1.8.2
Quote

  • +
  • -
MalutkiDuzy's Photo MalutkiDuzy 25.11.2011

to nie jest naprawa tylko popsucie po zrobieniu cura bronie nieraz znikaja ...
Nie polecam jak wam serwer crashujcie to naprawcie se według poradnika bład pobierz perk
Quote

  • +
  • -
devil_dwight's Photo devil_dwight 25.11.2011

w ogóle to nie pomoglo ;// lol
Quote

  • +
  • -
lacia7's Photo lacia7 26.11.2011

a mi nadal errory sie pokazują ale teraz takie , sprawdzcie może coś trzeba dodać czy coś , bo już nie wiem co robić ^^

L 11/26/2011 - 21:48:30: [AMXX] [0] phpncli0K.sma::ham_strip_weapon_short (line 1075)
L 11/26/2011 - 21:48:30: [AMXX] [1] phpncli0K.sma::CurWeapon (line 1065)
Quote

  • +
  • -
devil_dwight's Photo devil_dwight 26.11.2011

nic nie podmieniaj.. wieksze sa errory niz przed podmiana
Quote

  • +
  • -
Najkon's Photo Najkon 27.11.2011

Dziwne, bo mi wyskakiwały errory .. pełno ich - po podmianie nic a nic, zero crashy :)
Quote

SoPelQ's Photo SoPelQ 30.12.2011

W ogóle nie chce mi się skompilować, wyskakuje error, z niezdefiniwanym symbolem ham_strip_weapon_short.

"error017:undefined symbol ham_strip_weapon_short"
Edited by lok301, 30.12.2011 09:43.
Quote

  • +
  • -
M&M's's Photo M&M's 02.01.2012

Ta łatka nic nie daje dalej errory :facepalm2: :facepalm2: :facepalm2: zapodam taką bez errorów ^D^
Pod:
new bool:freezetime = true;

Dodajemy:
new weaponname[22];


Podmieniamy cały
public CurWeapon(id)
na:
public CurWeapon(id)
{
if(!is_user_connected(id))
return;

new team = get_user_team(id);

if(team > 2)
return;

new bron = read_data(2);

new bronie = (bronie_klasy[klasa_gracza[id]] | bonusowe_bronie_gracza[id] | bronie_druzyny[team] | bronie_dozwolone);

if(!(1<<bron & bronie))
{
new param[2];
param[0] = id;
param[1] = bron;
set_task(0.1, "Strip", _, param, 2);
}

if(cs_get_user_shield(id) && !gracz_ma_tarcze[id])
engclient_cmd(id, "drop", "weapon_shield");

UstawSzybkosc(id);
}
public Strip(param[2])
{
if(is_user_alive(param[0]) && ( 1 <= param[1] <= 30) )
{
get_weaponname(param[1], weaponname, 21);
ham_strip_weapon(param[0], weaponname);
}
}


Pamiętajcie, aby na samym dole zostało:
stock ham_strip_weapon(id, weapon[])
{
if(!equal(weapon, "weapon_", 7) ) return 0
new wId = get_weaponid(weapon)
if(!wId) return 0
new wEnt
while( (wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname", weapon) ) && pev(wEnt, pev_owner) != id) {}
if(!wEnt) return 0

if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon, wEnt)

if(!ExecuteHamB(Ham_RemovePlayerItem, id, wEnt)) return 0
ExecuteHamB(Ham_Item_Kill ,wEnt)

set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wId) )
return 1
}


Nie musicie dziękować :^D :^D :^D
Edited by M&M's, 02.01.2012 16:12.
Quote

  • +
  • -
TSpeedGamerT's Photo TSpeedGamerT 18.06.2012

ładnie ale która metoda lepsza?? By M&M czy metoda by Najkon?
Quote