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.
|
HUNT123
Rejestracja: 25.11.2018Aktualnie: Nieaktywny
Poza forum Ostatnio: 04.04.2024 10:39
Statystyki
- Grupa: Użytkownik
- Całość postów: 164
- Odwiedzin: 3 282
- Tytuł: Profesjonalista
- Wiek: Wiek nie został ustalony
- Urodziny: Data urodzin nie została podana
-
Imię
Mateusz
-
Płeć
Mężczyzna
-
Lokalizacja
ok. Lublina
#770924 cod problem z silnikiem
Napisane przez KoRrNiK w 03.03.2021 11:08
#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 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:
Log przycięty, bo był długi
L 02/21/2013 - 11:21:31: [HAMSANDWICH] Unable to open "cstrike\addons\amxmodx\configs/hamdata.ini" for reading. L 02/21/2013 - 11:21:31: [HAMSANDWICH] Error: Cannot read config file, natives not registered! L 02/21/2013 - 11:21:32: [AMXX] Plugin "QTM_CodMod.amxx" failed to load: Plugin uses an unknown function (name "ExecuteHamB") - check your modules.ini. L 02/21/2013 - 11:21:32: [AMXX] Plugin "codclass_snajper.amxx" failed to load: Plugin uses an unknown function (name "RegisterHam") - check your modules.ini. L 02/21/2013 - 11:21:32: [AMXX] Plugin "codclass_komandos.amxx" failed to load: Plugin uses an unknown function (name "RegisterHam") - check your modules.ini. L 02/21/2013 - 11:21:32: [AMXX] Plugin "codclass_assassin.amxx" failed to load: Plugin uses an unknown function (name "SetHamParamFloat") - check your modules.ini. L 02/21/2013 - 11:21:32: [AMXX] Plugin "codperk_tytanowenaboje.amxx" failed to load: Plugin uses an unknown function (name "RegisterHam") - check your modules.ini. L 02/21/2013 - 11:21:32: [AMXX] Plugin "codperk_weterannoza.amxx" failed to load: Plugin uses an unknown function (name "RegisterHam") - check your modules.ini. L 02/21/2013 - 11:21:32: [AMXX] Plugin "codperk_zaskoczeniewroga.amxx" failed to load: Plugin uses an unknown function (name "SetHamParamFloat") - check your modules.ini.
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'
Currently loaded plugins: name version author file status [ 1] Admin Base 1.8.2 AMXX Dev Team admin.amxx running [ 2] Admin Commands 1.8.2 AMXX Dev Team admincmd.amxx running [ 3] Admin Help 1.8.2 AMXX Dev Team adminhelp.amxx running [ 4] Slots Reservation 1.8.2 AMXX Dev Team adminslots.amxx running [ 5] Multi-Lingual System 1.8.2 AMXX Dev Team multilingual.am running [ 6] Menus Front-End 1.8.2 AMXX Dev Team menufront.amxx running [ 7] Commands Menu 1.8.2 AMXX Dev Team cmdmenu.amxx running [ 8] Players Menu 1.8.2 AMXX Dev Team plmenu.amxx running [ 9] Maps Menu 1.8.2 AMXX Dev Team mapsmenu.amxx running [ 10] Plugin Menu 1.8.2 AMXX Dev Team pluginmenu.amxx running [ 11] Admin Chat 1.8.2 AMXX Dev Team adminchat.amxx running [ 12] Anti Flood 1.8.2 AMXX Dev Team antiflood.amxx running [ 13] Scrolling Message 1.8.2 AMXX Dev Team scrollmsg.amxx running [ 14] Info. Messages 1.8.2 AMXX Dev Team imessage.amxx running [ 15] Admin Votes 1.8.2 AMXX Dev Team adminvote.amxx running [ 16] NextMap 1.8.2 AMXX Dev Team nextmap.amxx running [ 17] Nextmap Chooser 1.8.2 AMXX Dev Team mapchooser.amxx running [ 18] TimeLeft 1.8.2 AMXX Dev Team timeleft.amxx running [ 19] Pause Plugins 1.8.2 AMXX Dev Team pausecfg.amxx running [ 20] Stats Configuration 1.8.2 AMXX Dev Team statscfg.amxx running [ 21] StatsX 1.8.2 AMXX Dev Team statsx.amxx running [ 22] Ultimate Sounds 1.7 Dizzy / Bmann_42 ultimate_sounds running [ 23] No fall damage 0.2 v3x no_fall_damage. running [ 24] Ultimate Gore 1.6 JTP10181 amx_gore_ultima running [ 25] unknown unknown unknown csdm_main.amxx bad load [ 26] unknown unknown unknown csdm_equip.amxx bad load [ 27] unknown unknown unknown csdm_spawn_pres bad load [ 28] unknown unknown unknown csdm_misc.amxx bad load [ 29] unknown unknown unknown csdm_protection bad load [ 30] CSDM Main 2.1.1 CSDM Team csdm_ffa.amxx paused ( 25) Load fails: Plugin uses an unknown function (name "csdm_respawn") - check your modules.ini. ( 26) Load fails: Plugin uses an unknown function (name "csdm_active") - check your modules.ini. ( 27) Load fails: Plugin uses an unknown function (name "csdm_trace_hull") - check your modules.ini. ( 28) Load fails: Plugin uses an unknown function (name "csdm_active") - check your modules.ini. ( 29) Load fails: Plugin uses an unknown function (name "csdm_active") - check your modules.ini. 30 plugins, 24 running
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
#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) }
#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 .
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 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
Jako iż mi się nudzi postanowiłem zmienić wygląd HUD w swoim bf2 ;](podpatrzone z coda) efekt jest fajny i miły dla oka
nowy HUD wygląda tak:
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
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
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
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
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
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
i kompilujemy teraz sma bf2
#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:
- 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
- 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
- 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
- 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.
#759336 Skiny za Monety
Napisane przez Toldi w 22.05.2019 20:15
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.)
"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.
// 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
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.
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.
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).
Załączone pliki
-
Skiny za Monety.rar 22,34 KB 472 Ilość pobrań
-
Skiny_za_Monety_v22.rar 33,72 KB 538 Ilość pobrań
-
Skiny_za_Monety_2_2_1.rar 9,08 KB 294 Ilość pobrań
#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.
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.
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.
Najnowszy release - zawiera configi i pluginy z wszystkimi potrzebnymi zasobami: skiny, mapy, dźwięki, sprite itp.
#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 .
Plugin będzie udoskonalany z biegiem czasu, a o zmianach będę informował w notatkach pod tym postem.
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.
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.
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
-
skinsConfig.ini 556 bajtów 253 Ilość pobrań
-
skinSystem.sma 16,42 KB 245 Ilość pobrań
skinSystem.amxx -
skinSystem_json.sma 13,86 KB 281 Ilość pobrań
skinSystem_json.amxx -
2019-04-13_skinSystem_json.sma 16,97 KB 213 Ilość pobrań
2019-04-13_skinSystem_json.amxx
#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ą.
cod_system_clans.sql musimy zaimportować do naszej bazy danych aby utworzyć tabele potrzebne do działa plugina >
addons\amxmodx\configs\CLAN\clan_cvar.cfg (konfiguracja cvarów)
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
#757242 Proxy/VPN Check
Napisane przez DarkGL w 24.02.2019 02:35
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
Plugin do działania wymaga pluginu HTTP:X
W plugins ini httpx umieszczamy przed proxy_check np.
httpx.amxx proxy_check.amxx
Załączone pliki
-
httpx.sma 42,39 KB 504 Ilość pobrań
httpx.amxx -
proxy_check.sma 3,36 KB 544 Ilość pobrań
proxy_check.amxx
#756755 problem z klasa Weteran
Napisane przez Rivit w 13.02.2019 12:35
#include <amxmodx> #include <fakemeta> #include <codmod> #include <engine> new const nazwa[] = "Weteran"; new const opis[] = "Moze wspinac sie po scianie"; new const bronie = 1<<CSW_M3; new const zdrowie = 15; new const kondycja = 20; new const inteligencja = 10; new const wytrzymalosc = 5; new Float:g_wallorigin[32][3]; new bool:ma_klase[33]; public plugin_init() { register_plugin(nazwa, "1.0", "Crew"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); register_touch("player", "*", "Touch"); } public Touch(id) { if(!is_user_alive(id) || !ma_klase[id]) return; entity_get_vector(id, EV_VEC_origin, g_wallorigin[id]); } public client_PreThink(id) { new button = get_user_button(id); if(button & IN_USE && ma_klase[id]) { static Float:origin[3]; entity_get_vector(id, EV_VEC_origin, origin); if(get_distance_f(origin, g_wallorigin[id]) > 25.0) return FMRES_IGNORED; if(get_entity_flags(id) & FL_ONGROUND) return FMRES_IGNORED; if(button & IN_FORWARD) { static Float:velocity[3]; velocity_by_aim(id, 240, velocity); entity_set_vector(id, EV_VEC_velocity, velocity); } else if(button & IN_BACK) { static Float:velocity[3]; velocity_by_aim(id, -240, velocity); entity_set_vector(id, EV_VEC_velocity, velocity); } } return FMRES_IGNORED; } public cod_class_enabled(id){ ma_klase[id] = true; } public cod_class_disabled(id){ ma_klase[id] = false; }
?
#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.
- AMXX.pl: Support AMX Mod X i SourceMod
- → Przeglądanie profilu: Reputacja: HUNT123
- Regulamin