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
 

HUNT123 - zdjęcie

HUNT123

Rejestracja: 25.11.2018
Aktualnie: Nieaktywny
Poza forum Ostatnio: 04.04.2024 10:39
-----

#776852 DD2 : GO

Napisane przez Psotliwy w 19.05.2023 18:39

GG odezwał się znajomy.
  • +
  • -
  • 1


#770924 cod problem z silnikiem

Napisane przez KoRrNiK w 03.03.2021 11:08

A ty przypadkiem nie masz wyłączonego pluginu od misji? bo silnik używa z niego natyw i nie ma jak go użyć ponieważ nie masz włączonego pluginu z zarejestrowanym tym natywem. 


  • +
  • -
  • 1


#761600 Naprawa: Plugin uses an unknown function (name "xxx")

Napisane przez Rivit w 18.09.2019 19:46

A napisze sobie tutka, bo mam wolne 15 minut :D Może sie przyda komuś.

 

Przykładowy błąd:

[AMXX] Plugin "csgo_ranks_us.amxx" failed to load: Plugin uses an unknown function (name "add_user_elo") - check your modules.ini.

1. Skąd się bierze ten błąd?

 

Błąd generalnie nie jest jakiś skomplikowany. Chodzi o to, że mamy plugin csgo_ranks_us, który chce skorzystać z natywu add_user_elo, ale żaden plugin nie udostępnia takiego natywu. No i stąd ten błąd. Kompilator nie jest w stanie wychwycić tego typu błędu, ponieważ on tak naprawdę nie ma pojecia czy natyw, którego chcemy użyć istnieje. My mu dostarczamy tylko linijkę, która informuje, że zamierzamy skorzystać z jakiegoś natywu np:

native add_user_elo(id, ile);

I kompilator w tym momencie mówi - ok, ja to skompiluje, ale twoim zadaniem jest zadbanie o to, żeby inny plugin udostępniał ten natyw. Powyższą linijkę można traktować jako taką 'zapowiedź', że będzie istniał taki natyw jak add_user_elo. Jeśli jednak nie dostarczymy pluginu, który będzie obsługiwał ten natyw to dostaniemy błąd, o którym mowa.

Więcej o natywach można poczytać w tutorialu mojego serdecznego kolegi tu: https://amxx.pl/topi...e-api-w-amxxie/ lub tu: https://amxx.pl/topic/20034-natywy/

 

Warto dodać także, że może się tak zdarzyć, że wgramy plugin całkiem od innego moda i brakuje jakiegoś natywu i wtedy raczej trzeba będzie przerobić plugin, tak aby współpracował z naszym modem.

 

 

2. Jak naprawić?

 

Proste - dostarczyć plugin, który obsługuje dany natyw. No własnie, ale skąd wiadomo co wgrać? Ano tu trzeba mieć troszkę obycia i ogarnięcia, bo można się domyśleć - jeśli wywala nam coś o natywie na przykład z cod moda, to można sie domyslać, że z czymś do CoD'a jest nie tak. Najprostszy sposób to wrzucić nazwe natywu w google i po tych śladach dojść co za plugin go udostępnia. No dobra, ale nie zawsze się tak uda i co wtedy? Mogło się zdarzyć tak, że wywalił nam się silnik jakiegoś moda i wszystkie pluginy, które korzystają z natywów tegoż silnika się wywali też. Przykład? Masz:

 

Spoiler

 

Widzimy tutaj, w 3 linijce, że wywalił sie silnik cod mod i co? I poleciały wszystkie perki i klasy po kolei, więc warto czasem przeglądnąć w logu co tam sie zrobiło i wydedukować czy czasem nie jest tak, że jeden plugin sie wysypał, a reszta zaleznych od niego też. W tym przypadku należy poprawić silnik (a tak naprawdę wgrac moduł hamsandwich, ale na potrzeby tego tutoriala to uprościłem), a zależne od niego pluginy się uruchomią.

Pamiętaj, że możesz sprawdzić stan pluginów wpisując 'amxx plugins' w konsole serwera i w ostatniej kolumnie mamy status pluginu. Jeśli się nie załaduje jakiś plugin to będzie miał status 'bad load', wtedy należy się zacząć martwić, a potem naprawić go ;)

Przykładowy wydruk po wpisaniu 'amxx plugins'

Spoiler

 

 

3. Uwagi

 

Jeśli jesteś spostrzegawczy to zauważyłeś, że w błędzie jest napisane: "check your modules.ini", ale tak naprawdę nawet nie trzeba tam zaglądać. Moduły ładują się automatycznie jeśli są wymagane (bodajże od wersji 1.8.1)

 

 

 

Jeśli masz pomysł co by tu można dodać jeszcze to napisz :P


  • +
  • -
  • 9


#764099 Klasa Nożownik

Napisane przez Rivit w 16.01.2020 14:17

new g_decalSwitch[33]
register_event("DeathMsg","death_event","a")
RegisterHam(Ham_Spawn, "player", "Spawn", 1);
public Spawn(id){
	if(is_user_alive(id)){ 
		new param[1]
		param[0] = id
		if(!task_exists(4247545 + id))
			set_task(0.2, "make_footsteps", 4247545+id, param, 1, "b") 
	}
}
public death_event()
{
	new id = read_data(2)

	remove_task(4247545+id)
}
public make_footsteps(param[])
{
	new id = param[0]
	if(!is_user_alive(id) || get_speed(id) < 120) return
	new origin[3]
	get_user_origin(id, origin)
	if(entity_get_int(id, EV_INT_bInDuck) == 1)
		origin[2] -= 18
	else
		origin[2] -= 36
	new Float:velocity[3]
	new Float:ent_angles[3]
	new Float:ent_origin[3]
	new ent
	
	entity_get_vector(id, EV_VEC_v_angle, ent_angles)
	entity_get_vector(id, EV_VEC_origin, ent_origin)
	
	ent = create_entity("info_target")
	if(ent > 0)
	{
		ent_angles[0] = 0.0
		if(g_decalSwitch[id] == 0) ent_angles[1] -= 90
		else ent_angles[1] += 90
		entity_set_vector(ent, EV_VEC_origin, ent_origin)
		entity_set_vector(ent, EV_VEC_v_angle, ent_angles)
		VelocityByAim(ent, 12, velocity)
		remove_entity(ent)
	}
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY, origin)
	write_byte(116)
	write_coord(origin[0] + floatround(velocity[0]))
	write_coord(origin[1] + floatround(velocity[1]))
	write_coord(origin[2])
	write_byte(decals[g_decalSwitch[id]])
	message_end()
	g_decalSwitch[id] = 1 - g_decalSwitch[id]
	return
}
public client_disconnect(id){
	remove_task(4247545+id)
}

  • +
  • -
  • 1


#763669 Poszukuję ekipy

Napisane przez wariat aka pro w 04.01.2020 19:12

Hejka !

Piszę ten temat ponieważ poszukuję ekipy do prowadzenia serwerów jak i forum.

Aktualnie zbieram ekipę oraz funduszę na forum ips.

Forum będzie się wyróżniać na tle innych sieci dzięki swoim unikatowym pluginom powiązanych z naszymi sewerami.

 

Aktualnie posiadam

Serwer TS3 

Serwer Minecraft

Serwer cs 1.6 Deathmatch

Serwer cs 1.6 Speedrun

W każdej chwili wyczekiwany Go mod Lecz robi się unikat.

 

Aktualnie zbieram fundusze na stronę WWW IPS oraz standardowo na rozwój serwerów.

Na serwerze minecraft jest sporo rzeczy do zainwestowania.

Jest sporo pomysłów a mało rąk do pracy :D .

Właśnie w takiej okoliczności że założyłem na razie prosty serwer minecraft na frakcje który będzie rozwijany cały czas oraz planuje odtworzyć więcej serwerów cs 1.6 go.

Postanowiłem założyć sieć serwerów , do minecraft planuje co najmniej 2 serwery bo to jest serwer survival aby gracze mogli bez problemu przechodzić na jakieś zabawy sky wars , wojny (na sporą ilość ludzi) Ale na zasadzie że jak coś zdobędziesz na tej zabawie kase co kolwiek to także masz na serwerze survival+frakcje.

 

Z 2 serwerami cs 1.6 sam sobie dawałem radę ale w takiej sytuacji potrzebuję każdego :) 

Od Administratora Forum po zwykłego aktywnego użytkownika tak więc postaram się opisać kogo poszukuję

2x Administrator sieci

2x Junior administrator sieci

Moderatorzy forum

Unban Team CS:GO

Unban Team CS 1.6

Ubteam Minecraft (pewnie inaczej to wygląda)

Opiekun Serwera Cs 1.6

Współzałożyciel CS:GO

Opiekun Serwera Minecraft

Opiekun Serwera CS:GO

Grafik

Redaktor

Technik Forum

Technik Serwerów

Admin serwera minecraft

Admin Serwera CS 1.6

Pomocnicy serwerów

A także 

co najmniej 3 osoby które będą się zajmowały różnymi rzeczami na Fanpage Sieci.

Nazwa fanpage jest na razie taka ponieważ nie wiem jak jeszcze będzie się nazywać sieć

3 osoby do FACEBOOK !!!

Oraz każdego !

Jeśli jesteś początkujący a chcesz się rozwijać nie ma problemu jeśli stwierdzimy że do czegoś się nadajesz lub pokażesz nam że się mylimy z czasem możesz zajść daleko !

Jeśli sewer jaki zostanie otwarty , jest otwarty na lata.

Zapraszam także kogoś kto potrafi pisać pluginy w minecraft jeśli nie w ekipie to płatnie ;) 

 

Kontakt do mnie jest następujący: 

 

GG: 44827030

Steam:   Steam code Nowa opcja do dodania 855380833

FB: na razie kicha :D https://www.facebook...09138126568018/

https://www.facebook...43643999289629/

Będziemy kupować reklamy dlatego Fanpage 

 

Discord: https://discord.gg/s74xQq

 

I to wszystko Zapraszam wszystkich chętnych do kontaktu !! 

 

Jest to kierowane także do ludzi od minecraft !




#293791 Nowy Wygląd HUD

Napisane przez Misiaczek ;c w 08.09.2011 14:53

Witam :)

Jako iż mi się nudzi :D postanowiłem zmienić wygląd HUD w swoim bf2 ;](podpatrzone z coda) efekt jest fajny i miły dla oka :D

nowy HUD wygląda tak:
Dołączona grafika


Instrukcja dla 1.0.7 / 1.1.0

bf2rank.sma
Szukamy
#if defined KOLOROWY_SAY
new gmsgStatusText;
new gmsgScreenFade;
new gmsgScreenShake;
#else
new gmsgStatusText;
new gmsgScreenFade;
new gmsgScreenShake;
new gmsgSayText;
#endif


dodajemy pod tym to
new gHUD;
//Task
#define TASK_HUD 9897


aby wyglądało to tak
#if defined KOLOROWY_SAY
new gmsgStatusText;
new gmsgScreenFade;
new gmsgScreenShake;
#else
new gmsgStatusText;
new gmsgScreenFade;
new gmsgScreenShake;
new gmsgSayText;
#endif
new gHUD;
//Task
#define TASK_HUD 9897


następnie szukamy
  
#if defined KOLOROWY_SAY
gmsgStatusText = get_user_msgid("StatusText");
gmsgScreenFade = get_user_msgid("ScreenFade");
gmsgScreenShake = get_user_msgid("ScreenShake");
#else
gmsgStatusText = get_user_msgid("StatusText");
gmsgScreenFade = get_user_msgid("ScreenFade");
gmsgScreenShake = get_user_msgid("ScreenShake");
gmsgSayText = get_user_msgid("SayText");
#endif.


dodajemy pod tym to
gHUD = CreateHudSyncObj();

aby to wyglądało tak
  
#if defined KOLOROWY_SAY
gmsgStatusText = get_user_msgid("StatusText");
gmsgScreenFade = get_user_msgid("ScreenFade");
gmsgScreenShake = get_user_msgid("ScreenShake");
#else
gmsgStatusText = get_user_msgid("StatusText");
gmsgScreenFade = get_user_msgid("ScreenFade");
gmsgScreenShake = get_user_msgid("ScreenShake");
gmsgSayText = get_user_msgid("SayText");
#endif
gHUD = CreateHudSyncObj();


Szukamy dalej
	RegisterHam(Ham_Spawn, "player", "Ham_Spawn_Post", 1);	// cz bots won't hook here must RegisterHamFromEntity
RegisterHam(Ham_TakeDamage, "player", "Ham_TakeDamage_Pre");


Zastepujemy to tym
	RegisterHam(Ham_Spawn, "player", "Ham_Spawn_Post", 1);	// cz bots won't hook here must RegisterHamFromEntity
RegisterHam(Ham_TakeDamage, "player", "Ham_TakeDamage_Pre");
RegisterHam(Ham_Killed, "player", "Ham_Death_Player", 1);


Zapisujemy Plik ;)

ham.inl

Szukamy
  
set_task(0.1, "DisplayHUD", id);


Zastepujemy to tym

if(!task_exists(id+TASK_HUD))
{
set_task(0.1, "DisplayHUD", id+TASK_HUD, _, _, "b");
}


Szukamy
	SetHamParamFloat(4, damage);

return HAM_HANDLED;
}


Zastepujemy to tym
	SetHamParamFloat(4, damage);

return HAM_HANDLED;
}

public Ham_Death_Player(id)
{
if(!is_user_connected(id))
return HAM_IGNORED;

RemoveHUD(id)

return HAM_IGNORED;
}


Zapisujemy Plik :P

forwards.inl

Szukamy
public client_putinserver(id)
{
// Find a czero bot to register Ham_Spawn
if ( !gCZBotRegisterHam && gPcvarBotQuota && get_pcvar_num(gPcvarBotQuota) > 0 && is_user_bot(id) )
{
// Delay for private data to initialize
set_task(0.1, "RegisterHam_CZBot", id);
}

g_imobile[id] = false;
newplayer[id] = true;
gStatsLoaded[id] = 0;

get_save_key(id);

if (!get_pcvar_num(gPcvarWymus))
{
client_cmd(id,"hud_centerid 0");
client_cmd(id,"cl_shadows 0");
set_task(20.0, "Announcement", id);
}
else
{
set_task(20.0, "Announcement", id);
}
}


Zamieniamy na to
public client_putinserver(id)
{
// Find a czero bot to register Ham_Spawn
if ( !gCZBotRegisterHam && gPcvarBotQuota && get_pcvar_num(gPcvarBotQuota) > 0 && is_user_bot(id) )
{
// Delay for private data to initialize
set_task(0.1, "RegisterHam_CZBot", id);
}

g_imobile[id] = false;
newplayer[id] = true;
gStatsLoaded[id] = 0;

get_save_key(id);

if (!get_pcvar_num(gPcvarWymus))
{
client_cmd(id,"hud_centerid 0");
client_cmd(id,"cl_shadows 0");
set_task(20.0, "Announcement", id);
}
else
{
set_task(20.0, "Announcement", id);
}

RemoveHUD(id);
}


Szukamy
public client_disconnect(id)
{
save_badges(id);

if ( id == highestrankid )
{
set_task(2.0, "ranking_officer_disconnect");
}

clear_stat_globals(id);
gStatsLoaded[id] = 0;
}


Zamieniamy na to
public client_disconnect(id)
{
save_badges(id);

if ( id == highestrankid )
{
set_task(2.0, "ranking_officer_disconnect");
}

clear_stat_globals(id);
gStatsLoaded[id] = 0;
RemoveHUD(id);
}


Zapisujemy Plik :P

hud.inl

Szukamy
public DisplayHUD(id)
{
if ( !get_pcvar_num(gPcvarBF2Active) || !get_pcvar_num(gPcvarStatusText) ) return;
if ( !is_user_alive(id) || is_user_bot(id) ) return;

static HUD[64];

if ( !gStatsLoaded[id] )
{
formatex(HUD, charsmax(HUD), "[BF2] Wczytuje Dane...");
}
else
{
new rank = g_PlayerRank[id];
new nextrank;

switch(rank)
{
case 16, 19, 20, 21: nextrank = 15;
case 17: nextrank = 7;
case 18: nextrank = 8;
default: nextrank = rank;
}

++nextrank;

new nextrankxp = floatround(gRankXP[nextrank] * get_pcvar_float(gPcvarXpMultiplier));

if ( !get_pcvar_num(gPcvarBadgesActive) )
{
formatex(HUD, charsmax(HUD), "[BF2] Zabicia: %d/%d Ranga: %s", totalkills[id], nextrankxp, gRankName[rank]);
}
else
{
formatex(HUD, charsmax(HUD), "[BF2] Zabicia: %d/%d Odznaki: %d Ranga: %s", totalkills[id], nextrankxp, numofbadges[id], gRankName[rank]);
}
}

message_begin(MSG_ONE_UNRELIABLE, gmsgStatusText, _, id);
write_byte(0);
write_string(HUD);
message_end();
}


Zamieniamy na to
public DisplayHUD(id)
{
id -= TASK_HUD;

if ( !get_pcvar_num(gPcvarBF2Active) || !get_pcvar_num(gPcvarStatusText) )
return;
if ( !is_user_alive(id) || is_user_bot(id) )
return;

if(!is_user_connected(id))
{
remove_task(id+TASK_HUD);
return;
}

set_hudmessage(227, 96, 8, 0.05, 0.15, 0, 0.0, 0.3, 0.0, 0.0, 3)
if ( !gStatsLoaded[id] )
{
ShowSyncHudMsg(id, gHUD,"[%s] Wczytuje Dane...", gPluginName)
}
else
{
new rank = g_PlayerRank[id];
new nextrank;

switch(rank)
{
case 16, 19, 20, 21: nextrank = 15;
case 17: nextrank = 7;
case 18: nextrank = 8;
default: nextrank = rank;
}

++nextrank;

new nextrankxp = floatround(gRankXP[nextrank] * get_pcvar_float(gPcvarXpMultiplier));

if ( !get_pcvar_num(gPcvarBadgesActive) )
{
ShowSyncHudMsg(id, gHUD,"[%s]^nRanga: %s^nZabicia: %d/%d", gPluginName, gRankName[rank], totalkills[id], nextrankxp)
}
else
{
ShowSyncHudMsg(id, gHUD,"[%s]^nRanga: %s^nIlosc Odznak: %d^nZabicia: %d/%d", gPluginName, gRankName[rank], numofbadges[id], totalkills[id], nextrankxp)
}
}
}

public RemoveHUD(id)
{
remove_task(id+TASK_HUD);
}


Zapisujemy Plik :P

i kompilujemy teraz sma bf2 ;)

Instrukcja dla 1.5.3 / 1.5.5

bf2rank.sma
Szukamy
//Message sending variables
new gmsgStatusText;
new gmsgScreenFade;
new gmsgScreenShake;
new gmsgSayText;


dodajemy pod tym to
new gHUD;
//Task
#define TASK_HUD 9897


aby wyglądało to tak
//Message sending variables
new gmsgStatusText;
new gmsgScreenFade;
new gmsgScreenShake;
new gmsgSayText;
new gHUD;
//Task
#define TASK_HUD 9897


następnie szukamy
    //Message sending.
gmsgStatusText = get_user_msgid("StatusText");
gmsgScreenFade = get_user_msgid("ScreenFade");
gmsgScreenShake = get_user_msgid("ScreenShake");
gmsgSayText = get_user_msgid("SayText");


dodajemy pod tym to
gHUD = CreateHudSyncObj();

aby to wyglądało tak
    //Message sending.
gmsgStatusText = get_user_msgid("StatusText");
gmsgScreenFade = get_user_msgid("ScreenFade");
gmsgScreenShake = get_user_msgid("ScreenShake");
gmsgSayText = get_user_msgid("SayText");
gHUD = CreateHudSyncObj();


Szukamy dalej
	RegisterHam(Ham_Spawn, "player", "Ham_Spawn_Post", 1);	// cz bots won't hook here must RegisterHamFromEntity
RegisterHam(Ham_TakeDamage, "player", "Ham_TakeDamage_Pre");


Zastepujemy to tym
	RegisterHam(Ham_Spawn, "player", "Ham_Spawn_Post", 1);	// cz bots won't hook here must RegisterHamFromEntity
RegisterHam(Ham_TakeDamage, "player", "Ham_TakeDamage_Pre");
RegisterHam(Ham_Killed, "player", "Ham_Death_Player", 1);


Zapisujemy Plik ;)

ham.inl

Szukamy
  
set_task(0.1, "DisplayHUD", id);


Zastepujemy to tym

if(!task_exists(id+TASK_HUD))
{
set_task(0.1, "DisplayHUD", id+TASK_HUD, _, _, "b");
}


Szukamy
	SetHamParamFloat(4, damage);

return HAM_HANDLED;
}


Zastepujemy to tym
	SetHamParamFloat(4, damage);

return HAM_HANDLED;
}

public Ham_Death_Player(id)
{
if(!is_user_connected(id))
return HAM_IGNORED;

RemoveHUD(id)

return HAM_IGNORED;
}


Zapisujemy Plik :P

forwards.inl

Szukamy
public client_putinserver(id)
{
// Find a czero bot to register Ham_Spawn
if ( !gCZBotRegisterHam && gPcvarBotQuota && get_pcvar_num(gPcvarBotQuota) > 0 && is_user_bot(id) )
{
// Delay for private data to initialize
set_task(0.1, "RegisterHam_CZBot", id);
}

g_imobile[id] = false;
newplayer[id] = true;
gStatsLoaded[id] = 0;

get_save_key(id);

set_task(20.0, "Announcement", id);
}


Zamieniamy na to
public client_putinserver(id)
{
// Find a czero bot to register Ham_Spawn
if ( !gCZBotRegisterHam && gPcvarBotQuota && get_pcvar_num(gPcvarBotQuota) > 0 && is_user_bot(id) )
{
// Delay for private data to initialize
set_task(0.1, "RegisterHam_CZBot", id);
}

g_imobile[id] = false;
newplayer[id] = true;
gStatsLoaded[id] = 0;

get_save_key(id);

set_task(20.0, "Announcement", id);
RemoveHUD(id);
}


Szukamy
public client_disconnect(id)
{
save_badges(id);

if ( id == highestrankid )
{
set_task(2.0, "ranking_officer_disconnect");
}

clear_stat_globals(id);
gStatsLoaded[id] = 0;
}


Zamieniamy na to
public client_disconnect(id)
{
save_badges(id);

if ( id == highestrankid )
{
set_task(2.0, "ranking_officer_disconnect");
}

clear_stat_globals(id);
gStatsLoaded[id] = 0;
RemoveHUD(id);
}


Zapisujemy Plik :P

hud.inl

Szukamy
public DisplayHUD(id)
{
if ( !get_pcvar_num(gPcvarBF2Active) || !get_pcvar_num(gPcvarStatusText) ) return;
if ( !is_user_alive(id) || is_user_bot(id) ) return;

static HUD[64];

if ( !gStatsLoaded[id] )
{
formatex(HUD, charsmax(HUD), "[BF2] Wczytuje Dane...");
}
else
{
new rank = g_PlayerRank[id];
new nextrank;

switch(rank)
{
case 16, 19, 20: nextrank = 15;
case 17: nextrank = 7;
case 18: nextrank = 8;
default: nextrank = rank;
}

++nextrank;

new nextrankxp = floatround(gRankXP[nextrank] * get_pcvar_float(gPcvarXpMultiplier));

if ( !get_pcvar_num(gPcvarBadgesActive) )
{
formatex(HUD, charsmax(HUD), "[BF2] Zabicia: %d/%d Ranga: %s", totalkills[id], nextrankxp, gRankName[rank]);
}
else
{
formatex(HUD, charsmax(HUD), "[BF2] Zabicia: %d/%d Odznaki: %d Ranga: %s", totalkills[id], nextrankxp, numofbadges[id], gRankName[rank]);
}
}

message_begin(MSG_ONE_UNRELIABLE, gmsgStatusText, _, id);
write_byte(0);
write_string(HUD);
message_end();
}


Zamieniamy na to
public DisplayHUD(id)
{
id -= TASK_HUD;

if ( !get_pcvar_num(gPcvarBF2Active) || !get_pcvar_num(gPcvarStatusText) )
return;
if ( !is_user_alive(id) || is_user_bot(id) )
return;

if(!is_user_connected(id))
{
remove_task(id+TASK_HUD);
return;
}

set_hudmessage(227, 96, 8, 0.05, 0.15, 0, 0.0, 0.3, 0.0, 0.0, 3)
if ( !gStatsLoaded[id] )
{
ShowSyncHudMsg(id, gHUD,"[%s] Wczytuje Dane...", gPluginName)
}
else
{
new rank = g_PlayerRank[id];
new nextrank;

switch(rank)
{
case 16, 19, 20, 21: nextrank = 15;
case 17: nextrank = 7;
case 18: nextrank = 8;
default: nextrank = rank;
}

++nextrank;

new nextrankxp = floatround(gRankXP[nextrank] * get_pcvar_float(gPcvarXpMultiplier));

if ( !get_pcvar_num(gPcvarBadgesActive) )
{
ShowSyncHudMsg(id, gHUD,"[%s]^nRanga: %s^nZabicia: %d/%d", gPluginName, gRankName[rank], totalkills[id], nextrankxp)
}
else
{
ShowSyncHudMsg(id, gHUD,"[%s]^nRanga: %s^nIlosc Odznak: %d^nZabicia: %d/%d", gPluginName, gRankName[rank], numofbadges[id], totalkills[id], nextrankxp)
}
}
}

public RemoveHUD(id)
{
remove_task(id+TASK_HUD);
}


Zapisujemy Plik :P

i kompilujemy teraz sma bf2 ;)
  • +
  • -
  • 31


#763161 CoDMoD

Napisane przez One ShooT w 16.12.2019 07:12

Napisałem gg


  • +
  • -
  • 1


#753564 Call of Duty Mod (by O'Zone)

Napisane przez O'Zone w 25.11.2018 19:55

Rozumiem że testowałeś lub miałeś serwer z AMXX 1.9 i ową paczką? Jako że mod jest oparty o zapis MySQL, jak wygląda jego działanie na AMXX 1.9? O wiele lepiej niż w poprzednich wersjach? Dane się nie usuwają lub nie nadpisują na jakieś randomowe dane? MySQL zawsze był dnem w AMXX więc mnie to ciekawi.

 

Tak, oczywiście, mod przez ponad pół roku mod był testowany na serwerze z buildem AMXXa 1.8.3-dev+5142 (+ ReHLDS + ReGameDLL)

- chwilowo nawet 32 slotowym, żeby sprawdzić stabilność przy maksymalnej liczbie graczy.

Zapis SQL, który jest tutaj użyty uznałbym za maksymalnie bulletproof.

Jest zoptymalizowaną iteracją zapisu, który zaprojektowałem jakieś 4 lata temu jeszcze

na potrzeby dużo starszej wersji CoDa opartego jeszcze na silniku QTM. Peyote.

Ani wtedy, ani w trakcie w.w. testów nie pojawił się żaden problem z usunięciem czy nadpisaniem danych.

 

Mały update:

  1. Kilka commitów z drobnymi poprawkami, zmianami i dorzuconymi brakującymi plikami - jeśli ktoś jest ciekawy może sobie sprawdzić co za backdoory dopisałem :D
  2. Jako, że w gotowych klasach nie jest użyty mechanizm awansów będący częścią silnika, dodałem przykładową klasę, która takowe posiada: https://github.com/T...ons_example.sma
  3. Dla osób, którym nie chce się wszystkiego kompilować, wrzuciłem release obecnej wersji, plik cod_mod.zip: https://github.com/T...CoDMod/releases
  4. Osoby, które chcą szybko sprawdzić z czym mają doczynienia, mogą przetestować funkcjonalności moda na serwerze: 91.224.117.58:27055 (hasło: cod). Oczywiście nie skupiałbym się na pojedynczych klasach czy itemach, bo tak jak napisałem w pierwszym poście, są one dorzucone głównie z myślą o pokazaniu jak pisać je pod ten silnik. Uwaga: serwer jest tylko 4 slotowy i będzie aktywny przez miesiąc.

PS. DarkGL, thanks for the star.

 


  • +
  • -
  • 7


#759336 Skiny za Monety

Napisane przez Toldi w 22.05.2019 20:15

opis

 

Jak nazwa wskazuje plugin daje nam możliwość kupna skinów do każdej broni (prawie...). 

Do działania tego pluginu niezbędne jest wgranie monet z coda: https://amxx.pl/topi...-system-monet/ oraz baza danych.

Myślałem nad tym żeby wbudować własny system monet do pluginu ale po co skoro jest już taki plugin w dodatku z tak dużo możliwością konfiguracji za co lecą monety (hosty, vip, itp.)

 

konfiguracja

"Id broni" "Nazwa skina" "Lokalizacja" "Cena" "Flagi"

Id broni - id broni do której ma być dodany skin (nie CSW_). Tu macie spis: https://wiki.alliedm...ons_Information

Nazwa skina - Oczywiste. Max 32 znaki.

Lokalizacja - Ścieżka do naszego modelu. Nie trzeba dopisywać models/ na początku plugin zrobi to za was.

Cena - Ustawiając na 0 skin jest darmowy.

Flagi - Zostaw samo "" żeby skin był dostępny dla każdego. Oczywiście możesz tam wpisać do 5 flag. Wystarczy że gracz będzie posiadał co najmniej jedną z nich żeby mógł kupić/nosić skina. Dobra alternatywa jako dodatek dla vipa, klas premium na codzie itp. Nawet jeżeli skin ma być dostępny dla każdego dopisz na końcu samo "" żeby wszystko działało jak należy.

 

cvary

// SQL
szm_host "localhost" // Host bazy danych
szm_user "root" // Nazwa użytkownika
szm_pass "tajnehaslo" // Haslo do bazy
szm_db "skiny" // Nazwa bazy danych

// Inne
szm_prefix "[Skiny_za_Monety]" // prefix w sayu
szm_logs "1" // Pokaz >  0 - Brak logow | 1 - Wszystkie | 2 - Nie wczytane ... skiny
szm_showhud "1" // 0 wyłącz | 1 wlacz HUD

komendy

new const commands[][]=
{
	"say /skin",
	"say /skiny",
	"say /skins",	
	
	"say_team /skin",
	"say_team /skiny",
	"say_team /skins" // otwiera glowne menu
}

/models - włącza/wyłącza widoczność skinów.

/hud - włącza/wyłącza HUD.

 

inne informacje

Za każdym razem gdy gracz kupi skina zostaje dodany wpis do logów pluginu z nickiem, ip, sid gracza i informacją jaki skin do jakiej broni został kupiony. Plugin posiada własną bibliotekę dzięki czemu możecie pisać własne pluginy np. drop skina ze skrzynki po ofierze itp. Modeli nie dodaje bo trochę to waży a i tak każdy z was swoje doda. Przez pewien czas testowałem działanie pluginy ale wątpię żebym znalazł wszystkie bugi więc nie zdziwcie się jak coś będzie szwankować.

 

Wersja 2.2

 

1. W tej wersji dodano nową, łatwiejszą funkcję wyboru pomiędzy wszystkimi broniami w menu a wybranymi przez nas. Jeśli nie chcesz wszystkich broni w menu za komentuj linię 11 (w admin menu linia 9)

#define ALL_WEAPON_MENU

na

//#define ALL_WEAPON_MENU 

2. Dodano 2 nowe natywy, które znajdziesz w zaktualizowanej bibliotece. Pierwszy do zwrócenia ilości poprawnie wgranych skinów. Drugi do otwarcia menu admina.

3. Udostępniam menu admina w którym można zarządzać również monetami. Menu jest (według mnie) bardzo wygodne gdyż w każdej chwili można zmienić dowolną opcję bez konieczności robienia wszystkiego od początku. Wszystkie czynności które zostały zatwierdzone lądują do logów z SID/IP (SID - dla Steam | IP - dla NonSteam) admina i gracza, któremu został dany/zabrany przedmiot.

Spoiler

4. Dodano dwie nowe komendy dla admina.

/szm_daj - odblokowuje wszystkie skini
/szm_zabierz - zabiera wszystkie skiny prócz tych które są darmowe 

5. Flagę dostępu ustawiasz w linii 14 (dla admin menu w linii 8)

#define FLAGA_DOSTEPU ADMIN_IMMUNITY

6. Drobne poprawki kodu.

 

16/11/2019 

- Usunięto możliwość zabrania więcej monet niż gracz miał.

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

 

17/01/2021

- Naprawiono błąd przez który można było strzelać kosą/wyciągało się nie tą broń co trzeba.

- Od teraz gdy stracimy konto VIP nie można zakładać skinów dostępnych na tę flagę.

- Od teraz wszystkie błędy dotyczące zapisu będą lądować do pliku ERROR_SZM_DATABASE.log

- Kilka drobnych poprawek w kodzie.

 

Admin Menu

- Naprawiono błąd przez który nie można było dać graczowi monet.

- Kilka drobnych poprawek w kodzie.

 

Oczywiście menu admina działa tylko z wersją 2.2 i wyżej.

Pisząc nowe lub edytując powyższe pluginy MUSISZ kompilować je najnowszą biblioteką (jest w paczce v2.2).

 

download

Załączone pliki


  • +
  • -
  • 11


#758933 CS:GO Mod by O'Zone

Napisane przez O'Zone w 30.04.2019 14:27

Jakiś czas temu tytusek udostępnił swojego CS:GO moda, więc pomyślałem, że i ja udostępnię swoją wersję.

Mod został przeze mnie stworzony od zera na potrzeby CS-Reload.pl, która zakończyła swoją działalność 6 kwietnia tego roku.

Przez dłuższy czas był u mnie dostępny do kupienia. Aktualnie działające serwery: GameTracker.

 

opis
Podobnie jak mój CoD Mod, aktualna wersja mod'a działa wyłącznie na AMXX 1.8.3 / 1.9.

 

Mod składa się z 18 pluginów:
1. Silnik odpowiadający za zarządzanie skinami, walutą (euro), posiada także wbudowany wymianę, oddawanie skinów i rynek,

który jest bezpieczną opcją sprzedaży skinów innym graczom. Obsługiwane są skiny do każdej broni, nie ma limitu ich liczby - no poza limitem 512 zasobów w precache.
Każdy skin można kupić za określoną kwotę euro lub spróbować wylosować dowolny skin dla danej broni.
Jest także możliwość losowania dowolnego skinu dowolnej broni - dla tych, którzy lubią duże ryzyko, ale i możliwy duży zysk.
Domyślnie każdy gracz może mieć dowolną liczbę egzemplarzy jednego skina, ale w pierwotnej wersji mógł posiadać jedynie po jednym,
żeby móc "zebrać je wszystkie" - możliwe jest przestawienie trybu zdobywania skinów odpowiednim cvarem.
Cvarami modyfikowalne jest właściwie wszystko: pokazywanie domyślnych skinów z cs:go, minimalna liczba osób do naliczania euro
i jego ilość za zabicie, zabicie z hs, podłożenie/rozbrojenie bomby, wygraną rundę i więcej.
Skiny przypisywane są do bytu broni, więc możliwe jest podnoszenie broni ze skinami innych graczy
- po najechaniu celownikiem na broń widać, czy i jaki posiada ona skin.
2. System kont z możliwością automatycznego logowania - bez zalogowania nie ma dostępu do żadnej opcji dostępnej w modzie.
3. C4 - plugin podmieniający wszystkie 3 modele paki na model z CS:GO.
4. Granaty - plugin podmieniający modele granatów, dodatkowo jest możliwość wykonywania krótkiego i średniego rzutu z użyciem prawego/obu przycisków myszy.
5. Operacje - dostępne są 4 typy operacji, można dodać dowolną ich liczbę - nagrodą za wykonanie jest euro.
6. Rangi - nic innego jak rangi z CS:GO, w tym z ich ikonami wyświetlanymi nad głowami graczy.
Rangi nie są jednak dostępne po zabiciu określonej liczby graczy, a przyznawane na podstawie rankingu ELO (jak w CS:GO).
Plugin posiada też masę dodatkowych funkcji, które trafiły później także do UltimateStats.
7. RunBoost - plugin umożliwiający wykonywanie runboosta jak w CS:GO.
8. Smoke - biały smoke imitujący smoka z CS:GO, parametry wielkości czy czasu trwania są niemal identyczne.
Chcąc odwzorować jak najdokładniej mechanizmy z CS:GO, smoke umożliwia gaszenie molotova.
9. Molotov - dobrze odwzorowany Molotov dostępny do kupienia komendą.
10. Zeus - w pełni odwzorowana wersja Zeusa dostępna do kupienia komendą.
11. Tranfer - osobny plugin umożliwiający transfer euro między graczami
12. VIP & SVIP - plugin obsługujący zarówno VIPa jak i SVIPa.
13. Unprecacher - usuwa zbędne zasoby, żeby zrobić miejsce dla skinów, bo problemem szybko staje się limit 512 zasobów.
14. Inspect - plugin pozwalający oglądać broń po wciśnięciu F, działa z niemal wszystkimi dostępnymi z modem skinami.
15. Asysta i Zemsta - bez niespodzianek dodaje asystę i zemstę, cvary pozwalają dowolnie włączyć/wyłączyć jedną i drugą funkcjonalność,
ustawić nagrodę w euro, a w przypadku asysty minimalne zadane obrażenia
16. Klany - zaawansowany system klanów w pełni konfigurowalny cvarami.

Nie mogło oczywiście zabraknąć rozwoju klanu, który umożliwia przyjęcie większej liczby członków, a każdy członek to dodatkowy bonus do szansy na drop skina.

Z dodatkowych funkcjonalności wymienię m.in.: zarządzanie członkami offline/online, wojny klanów, możliwość składania i rozpatrywania podań (online/offline).
17. Menu serwera - plugin pozwalający na generowanie głównego menu serwera dostępnego zarówno pod komendą /menu jak i klawiszem V
na podstawie pliku konfiguracyjnego. Możliwe jest oczywiście wykorzystanie dostępnych w menu kolorów.
18. Buymenu - plugin podmieniający graczom buymenu na customowe, z którego zniknęły tarcza i noktowizor,
a znalazły miejsce nowe bronie, czyli Zeus i Molotov. Dodatkowo widoczny jest skin ustawiony dla danej broni.
Ze względu na ograniczenia silnika menu jest tekstowe, dlatego dla graczy, którzy wolą jednak z niego korzystać, jest opcja wyłączenia customowego menu.

 

konfiguracja

Główna konfiguracja może być zmieniona przez cvars załadowane z csgo_mod.cfg.
Wtyczki można włączyć/wyłączyć w plugins-csgo.ini.
Opcje menu głównego są zapisane w csgo_menu.ini.
Konfiguracja misji znajduje się w csgo_operations.ini.
Dostępne skiny można zmienić w csgo_skins.ini.

Wszystkie dostępne pliki konfiguracyjne posiadają odpowiednie opisy.

 

download

Najnowszy release - zawiera configi i pluginy z wszystkimi potrzebnymi zasobami: skiny, mapy, dźwięki, sprite itp.


  • +
  • -
  • 24


#754490 Skiny broni (V_, P_) z zapisem MySQL / JSON.

Napisane przez Robiin w 26.12.2018 14:18

Ostatnio widuję sporo tematów związanych ze skinami, brakami w aktualnych pluginach etc, więc postanowiłem napisać plugin, w którym nie będzie kompromisów - oczywiście nie wyszło, więc dostajecie to co nawymyślałem :D .
Plugin będzie udoskonalany z biegiem czasu, a o zmianach będę informował w notatkach pod tym postem.


opis
Plugin dodaje na serwer skiny do broni, z możliwością manualnego ich wyłączenia. Plugin testowany był w stosunkowo nieznacznym stopniu, także nie polecam wrzucać go od razu na serwer publiczny, a wcześniej przetestować i zdać relację tutaj. 

 

Możliwość kupna skina in-game.

Możliwość dodania wielu flag.

Możliwość włączenia skina od fragów.

konfiguracja
Plugin posiada plik konfiguracyjny, który należy uzupełnić według wzoru:

"v model path" "p model path" "skin name" "skin access (flag)" "weapon CSW" "frags" "price"

 
gdzie:

  • v model path - ścieżka do modelu v_*.mdl, zaczynając od folderu cstrike/.
  • p model path - ścieżka do modelu p_*.dml, zaczynając od folderu cstrike/.
  • skin name - nazwa skina widniejąca w menu (max. 32 znaki, można to zmienić w kodzie).
  • skin access - dostęp do skina, plugin aktualnie obsługuje tylko jedną flagę, ale niedługo zapewne dopiszę obsługę wielu. Skin dostępny dla wszystkich graczy = 0. Flaga w wersji stringa, nie bitowej.
  • weapon CSW - index CSW_ broni, na jego bazie plugin rozpoznaje tablice dynamiczną i zapisuje do niej powyższe dane. Listę można znaleźć min. tutaj.
  • frags - ilość fragów, od których dostępny będzie skin. 0 = brak limitu poprzez fragi.
  • price - cena skina. Waluta możliwa do ustawienia w kodzie. 0 = brak limitu poprzez cenę.

 

Maksymalna ilość skinów jest domyślnie ustawiona na 32. Jeśli chcemy zwiększyć ten limit, konieczne będzie przerobienie pluginu w znacznym stopniu, natomiast idąc w dół nie ma żadnych przeszkód.
Brak limitów skinów.
 
Komendy do menu dostępne są w tablicy skinsMenuCommands. Do komend dodane będą say oraz say_team automatycznie:

// Skins menu commands.
new const skinsMenuCommands[][] =
{
	"/skiny",
	"/skins"
};

Ścieżka pliku konfiguracyjnego w stałej configFilePath.

 

inne informacje
Większość, o ile nie wszystkie 'ustawienia' kodu są w constach/define'ach u góry.

 

 

Wielkie dzięki dla AwIlLa za wszelką wiedzę, jaką się ze mną podzielił co do mysqla :) .

Załączone pliki


  • +
  • -
  • 19


#752819 Cod Klany by TyTuS [ Zapis SQL ]

Napisane przez tytusek w 25.10.2018 14:32

Tak wiem są już klany wstawione od donaciaka, tylko zapis nvualt i troszke na pewno się różnią.

 

konfiguracja

cod_system_clans.sql musimy zaimportować do naszej bazy danych aby utworzyć tabele potrzebne do działa plugina > 

 

cvary

 

addons\amxmodx\configs\CLAN\clan_cvar.cfg (konfiguracja cvarów)

 

clan_sql_host "nazwa hosta"
clan_sql_user "nazwa uzytkownika"
clan_sql_pass "haslo do bazy danych"
clan_sql_db  "nazwa bazy danych"
 
 
clan_cost_create "1000" // ilosc monet potrzebna aby zalozyc klan
clan_cost_change_name "500" // illosc monet potrzeba do zmiany nazwy klanu
 
clan_minlvl_create "100" // minimalny lvl aby stworzyc klan
clan_maxlvl_clan "15" // maksymalny lvl klanu jaki moze byc
clan_cost_nextlvl "150" // koszt monet next lvl *lvl *koszt
 
clan_skill_exp  "100" // 1 punkt w expa daje 100 expa za killa
clan_skill_dmg "4"  // 1 punkt w dmg daje 4 obrazenia
clan_skill_hp "10" // 1 punkt = 10hp
clan_skill_int "10" // 1 punkt = 10 intel
clan_skill_stamina "20" // 1 punkt = 20 wytrzymalosci
clan_skill_condition "15" // 1 punkt 15 stamina
clan_skill_coin "4" // maksymalny zakres na drop monet, czyli 1 punkt / 4 = 25%, 2 punkty / 4 = 50% na drop monety
 
Jesli chcemy do HUD'a cod moda podpiac nazwe klanu to tak

1. rejestrujemy gdzies na poczatku silnika coda odwolanie do
native cod_get_user_clan_name(id, Return[], len);

2. public PokazInformacje(id)
cod_get_user_clan_name(id, nameclan, charsmax(nameclan))
set_hudmessage(0, 255, 0, 0.02, 0.19, 0, 0.0, 0.3, 0.0, 0.0);
ShowSyncHudMsg(id, SyncHudObj, "Klasa : %s^nLevel : %i (%i%%)^nPerk : %s^nMonety : %i^nZdrowie : %d^nKlan : %s",
nazwy_klas[klasa_gracza[id]], poziom_gracza[id], floatround(fProcent), nazwy_perkow[perk_gracza[id]], player_coins[id], get_user_health(id), nameclan);

i cos takiego robimy pozniej i juz
wymagane moduly
ReHLDS
Reapi 
 
(chociaż łatwo przerobić na zwykle hlds, ale kto tego teraz uzywa xD)
 
amxmodx najlepiej w wersji 1.8.3 + wtedy mamy polskie znaki w nazwach klanu, ale na 1.8.2 tez zadziala plugin 
codmod
 
download
Załączony plik  Klany.rar   44,33 KB  332 Ilość pobrań

  • +
  • -
  • 10


#757242 Proxy/VPN Check

Napisane przez DarkGL w 24.02.2019 02:35

opis
Plugin wykrywa graczy używających VPN / Proxy i kickuje ich serwera , mogą być to np. boty reklamujące inne serwery.

Link do oryginalnego repozytorium https://github.com/j...ice/proxy_check autor juicejuicejuice
 
instalacja
Plugin do działania wymaga pluginu HTTP:X
 
W plugins ini httpx umieszczamy przed proxy_check np.
 
httpx.amxx
proxy_check.amxx
 
download

Załączone pliki


  • +
  • -
  • 12


#756755 problem z klasa Weteran

Napisane przez Rivit w 13.02.2019 12:35

Spoiler

  • +
  • -
  • 1


#756263 Call of Duty Mod (by O'Zone)

Napisane przez O'Zone w 02.02.2019 23:43

Wydano wersję oznaczoną numerem 1.2.0.

Lista zmian:

  • Zaimplementowano wojny klanów (wymagane jest usunięcie tabeli cod_clans z bazy danych lub dodanie do niej pola wins z typem int w przypadku przejścia z wersji 1.1.x).
  • Zaimplementowano wersję lite ikon przełączaną przez flagę #define LITE w kodzie źródłowym pluginu ikon.
  • Zaimplementowano plugin admin menu (opcjonalny - domyślnie wyłączony).
  • Przerobiono honor na jedyną używalną walutę (zastępuje pieniądze nawet w HUD).
  • Dodano nowe cvary do pluginu klanów i zaimplementowano związaną z nimi logikę: cod_clans_create_fee i cod_clans_join_fee.
  • Dodano nowe cvary do głównego pluginu i zaimplementowano związaną z nimi logikę: cod_night_exp_multiplier, cod_points_per_level i cod_points_limit.
  • Dodano nowe cvary do pluginu statystyk i zaimplementowano logikę z nimi związaną: cod_revenge_enabled, cod_revenge_honor i cod_revenge_exp.
  • Dodano cvar cod_honor_kill_first do pluginu honoru i zaimplementowano logikę z nim związaną.
  • Dodano w głównym pluginie test bezpieczeństwa zmiennej przechowującej exp na możliwość wystąpienia błędu typu integer overflow.
  • Zmieniono sposób sprawdzania flag w pluginie statystyk i vipie.
  • Usprawniono wykonywanie zapytań typu non-threaded w klanach.
  • Zmieniono domyślną wartość parametru value w natywie cod_set_user_item na RANDOM.
  • Poprawiono usuwanie klanów z bazy danych po rozwiązaniu.
  • Poprawiono czas top15 i status admina w pluginie statystyk.
  • Naprawiono błąd resetowania punktów statystyk, gdy gracz stracił poziomy.
  • Poprawiono możliwość zakupu naprawy przedmiotu bez konieczności jego posiadania.
  • Naprawiono błąd z symbolem procentu w wiadomościach w głównym pluginie.
  • Wiele innych drobnych zmian.

Dziękuję także osobom, które zgłosiły mi kilka wykrytych błędów i których poprawki mogłem zawrzeć w tej wersji.


  • +
  • -
  • 4