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.
|
emeryt0131
Rejestracja: 22.12.2011Aktualnie: Nieaktywny
Poza forum Ostatnio: 15.10.2014 17:18





Statystyki
- Grupa: Użytkownik
- Całość postów: 40
- Odwiedzin: 3 103
- Tytuł: Pomocny
- Wiek: Wiek nie został ustalony
- Urodziny: Data urodzin nie została podana
-
Imię
Michał
-
Płeć
Mężczyzna
-
Lokalizacja
And
Kontakt
#423037 [ROZWIĄZANE COD NOWY] regeneracja
Napisane przez dasiek
w 22.06.2012 10:14
#387097 Smart Vip
Napisane przez dasiek
w 27.03.2012 17:19
Vip na Flage ADMIN_LEVEL_H.
Posiada na start
*He
*Flash
*Smoke
*Dodatkowe 30 HP na start
*Menu a w nim Do Wyboru Deagle, Podwójny skok, Ciche Bieganie, Mniejszą grawitacje, Większą Stałą szybkość i Prefix w Nicku.
*Tylko Vip może podnosić i korzystać z awp.
Dodatkowo gdy na serwerze nie ma pliku vip.txt Plugin generuje go według Cvarów
vip_hpstart - Dodatkowe hp na start
vip_hestart - 0/1 Włącza wyłącza he na start
vip_flstart - 0/1 Włącza wyłącza flasha na start
vip_smstart - 0/1 Włącza wyłącza smoka na start
vip_awp - 0/1 Włącza wyłącza korzystanie z awp dla VIPA
vip_prefix - Prefix przed nickiem.
Zmiana Flagi VIP ? 16 linijka
#define VIP_FLAG ADMIN_LEVEL_H
Załączone pliki
-
smart_vip.sma 9,72 KB 505 Ilość pobrań
smart_vip.amxx
-
smart_vip.sma 9,72 KB 344 Ilość pobrań
smart_vip.amxx
#337692 KillStreak 1.3.4a, 1.4c ; Wyzwania
Napisane przez Cypis'
w 21.12.2011 19:45
- 3 zabicia - UAV
- 4 zabicia - Care Package lub Counter-UAV
- 5 zabicia - Predator
- 6 zabicia - Airstreak (nalot)
- 8 zabicia - Sentry Gun
- 15 zabicia - EMP
- 20 zabicia - NUKE
Jak użyć Kill Streaka:
say /ks
say /killstreak
Cvary:
ks_hpsentry "2500.0" // ile ma miec hp sentry gun ks_sentry_remove "1" // jesli 1 usuwa sentry w nowej rundzie, jak 0 to nie
Screenshot:


Instalacja:
Standardowa
UWAGA! Wymagany jest Amx Mod X 1.8.1 lub wyższy do działania pluginu
Changelog:
1.0: - pierwsza wersja 1.0.1: - poprawka spadającej paczki 1.1: - Dodano nowe dźwięki, - Dodano poprawki do Predatora, Care Package, Emp i Nuke, - Dodano menu wyboru nagród, - Zmniejszono trochę kod 1.1.1: - dodana poprawka dotyku entów (były rlogi) 1.1.2: - usunięcie native menu_addtext (przez to niektórym nie działał killstreak) 1.2: - wersja niepublikowana (dodanie sentry guna) 1.3: - naprawienie bugów w Sentry gunie, - naprawienie bugów z EMP, - dodanie paska jak wejdziemy w Care Package (pasek jak przy brojeniu bomby), - dodanie nowych dźwięków 1.3.1: - dodanie cvaru "ks_hpsentry", - dodanie informacji w chat kto użył killstreaka 1.3.2: - naprawienie Sentry Guna (jak kucaliśmy to nie strzelał), - Jak zabijemy kogoś z Sentry Guna lub z Nalotu lub z innej rzeczy to liczy te zabicie do rankingu, - Dodanie UAV dla całej drużyny i po 60s od użycia UAV znika (tak jak w COD MW2 tylko że tam jest 30s) 1.3.3: - 1.3.2 była zła wersja nie ta wgrałem, - dodanie cvara na usunięcie sentry guna 1.3.4: - dodano do sentry guna materiał, żeby były odgłosy gdy strzelamy w niego - dodano że jak mamy tarcze założną to sentry nie strzela - poprawiono UAV (teraz podlicza cały czas z uav) 1.3.4a: - naprawiono wszystkie bugi, które zrobiłem wczoraj
Plany:



--------------------------------------------
Wersja BETA 1.4 :
Changelog:
1.4a: - dodano Emergency AriDrop, jest on od 8 zabójstw - dodano komendę say /ks2 - naprawiono wszelkie bugi - dodano większą losowość nagród z skrzynki 1.4b - naprawiono błąd z "[CSTRIKE] Invalid player 12" - zamieniono kilka funkcji cs_get_user_team na get_user_team - ponieważ get_user_team nie wywala błedu po wyjsciu gracza - naprawiono błąd że po użyciu nuke serwer creshował bo w cvar amx_nextmap posiadał nieprawidłową mape - zmieniono kilka typów w message_begin z MSG_ONE_UNRELIABLE na MSG_BROADCAST, żeby plugin w pewnych miejscach nie używał pętli for - w Emergency AriDrop naprawiono że w każdej paczce jest coś innego (wcześniej mogły być np. 4 sentry guny z paczek) 1.4c - dodanie EngFunc_GetAttachment do sentryguna - ta wersja będzie umożliwiać dodanie wyzwań, które później udostępnię
Instalacja dodatkowych dźwięków (trzeba wypakować rar):

po wgraniu tego wgrywamy to do sound/mw :

SMA - sentry gun będzie atakował gracza z tarczą:


SMA2 - sentry gun nie będzie atakował gracza z tarczą:


Wyzwania do KillStreaka 1.4c:
[cod nowy] KillStreak 1.3.4a | 1.4c - Poradniki, Łatki oraz Pluginy - AMXX.pl: Support AMX Mod X - strona 4
Jak będą jakieś bugi pisać w temacie.
--------------------------------------------
Plugin nie wymaga CodModa
Podziękowania dla Krecik'a za zmodernizowanie modelu Sentry Guna
Zakaz kopiowania i wykorzystywania innych treści bez zgody autora. Wszelkie prawa zastrzeżone. ©
#277280 Cvar na wyłączenie Expa za Bombę
Napisane przez Misiaczek ;c
w 03.08.2011 20:42

Prosty i Szybki Poradnik


Zaczynamy

bf2rank.sma
Znajdź
new gPcvarFFA;
Dodaj pod
new gPcvarBomba;
Znajdź:
gPcvarFFA = register_cvar("bf2_ffa", "0");
Dodaj pod
gPcvarBomba = register_cvar("bf2_bomba", "0");
Zapisz Plik

csx.inl
Znajdź:
public bomb_planted(planter)
{
if ( get_playersnum() < get_pcvar_num(gPcvarXpMinPlayers) ) return;
Zamień na:
public bomb_planted(planter)
{
if ( get_playersnum() < get_pcvar_num(gPcvarXpMinPlayers) ) return;
if ( !get_pcvar_num(gPcvarBomba) ) return;
Znajdź:
public bomb_explode(planter, defuser)
{
if ( get_playersnum() < get_pcvar_num(gPcvarXpMinPlayers) ) return;
Zamień na:
public bomb_explode(planter, defuser)
{
if ( get_playersnum() < get_pcvar_num(gPcvarXpMinPlayers) ) return;
if ( !get_pcvar_num(gPcvarBomba) ) return;
Znajdź:
public bomb_defused(defuser)
{
if ( get_playersnum() < get_pcvar_num(gPcvarXpMinPlayers) ) return;
Zamień na:
public bomb_defused(defuser)
{
if ( get_playersnum() < get_pcvar_num(gPcvarXpMinPlayers) ) return;
if ( !get_pcvar_num(gPcvarBomba) ) return;
Zapisz Plik, ponownka kompilacja plików i gotowe

bf2_bomba 1 = Włączony exp
bf2_bomba 0 = Wyłączony exp
Pozdrawiam

#374000 Nowy Wygląd HUD
Napisane przez Misiaczek ;c
w 02.03.2012 16:35
#368291 Nowy Wygląd HUD
Napisane przez Misiaczek ;c
w 21.02.2012 09:39
#338486 Nowy Wygląd HUD
Napisane przez Misiaczek ;c
w 23.12.2011 09:44
#316948 Nowy Wygląd HUD
Napisane przez Misiaczek ;c
w 02.11.2011 18:30
#316812 Nowy Wygląd HUD
Napisane przez Misiaczek ;c
w 02.11.2011 15:52
#313488 Nowy Wygląd HUD
Napisane przez Misiaczek ;c
w 26.10.2011 12:17
Wrr..... Nie mogę sobie poradzić, siedzę już 30minutek przy tym i nic, mógłby to ktoś u siebie skompilować? ( już z przerobiona nową wersją wyglądu w HUD)
http://amxx.pl/forum...y-z-kompilacja/
#293929 Nowy Wygląd HUD
Napisane przez Misiaczek ;c
w 08.09.2011 19:24
#293903 Nowy Wygląd HUD
Napisane przez Misiaczek ;c
w 08.09.2011 18:30
#293791 Nowy Wygląd HUD
Napisane przez Misiaczek ;c
w 08.09.2011 14:53

Jako iż mi się nudzi


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

#163670 Dynamiczny HUD
Napisane przez R3X
w 24.08.2010 22:55
dHUD.inc
v.1.03
Temat w budowie, stworzenie dokumentacji potrwa pewnie dłużej niż pisanie kodu

Tymczasem angielski opis wszystkich funkcji można znaleźć w pliku .inc

Eksperymentalna biblioteka do tworzenia różnych efektów na wiadomościach HUD. Jej głównym (lecz nie jedynym) zadaniem jest zautomatyzowanie ruchu i zmian koloru wyświetlanych komunikatów.
Plugin udostępnia szereg funkcji do pracy z efektami. Podstawowe operacje odbywają się na pojedynczych klatkach animacji, jak we flashu. Tak też wyświetlana jest wiadomość - klatka po klatce - zastąpienie napisu jego kopią w innym miejscu czy kolorze stworzy wrażenie ruchu i przekształceń kolorystycznych.
Download
- v1.03 (zalecane)
dHUD-1.03.rar 5,94 KB 625 Ilość pobrań
- v1.02
dHUD-1.02.rar 5,97 KB 216 Ilość pobrań
- v1.01
dHUD.rar 5,78 KB 203 Ilość pobrań
- przykładowy kod
dHUD_test.sma 2,31 KB 526 Ilość pobrań
dHUD_test.amxx
Instalacja
Plik dHUD.sma należy skompilować i zainstalować na serwerze. Plugin korzystający z efektów skompiluje się wyłącznie lokalnie z dostępem do dHUD.inc.
Interfejs
Wszystkie udostępniane funkcje mają prefiks DHUD_*.
Pierwsze co trzeba zrobić to stworzyć 'obiekt' dhud. DHUD_create() zwraca uchwyt, którego używa się z pozostałymi funkcjami. Można utworzyć kopię istniejącego obiektu przez podanie jego uchwytu DHUD_create(dhud) [działa to podobnie jak konstruktor kopiujący w językach obiektowych].
Animację możemy zaprojektować manualnie przypisując właściwości każdej klatce z osobna (dHUD_test -> dhud) lub użyć filtrów (dHUD_test -> dhud3).
- klatka po klatce
DHUD_setFrame(dhud, frame, iColor[3], Float:x, Float:y, iLen = 1);dhud - uchwyt
frame - numer klatki, zaczynają się od 0, w przypadku numeru większego niż liczba dostępnych akurat klatek animacja zostaje wypełniona pustymi klatkami aż do podanego rozmiaru
iColor[3] - kolor napisu
x, y, - położenie napisu
iLen - długość klatki; w miejsce dwóch identycznych klatek z iLen=1 można dać jedną z iLen=2
- filtry
Filtry służą do przetwarzania kilku klatek zgodnie z danym algorytmem.
DHUD_applyFilter(dhud, const szFilter[], startFrame, endFrame, Float:dx=D_LONG, Float:dy=D_ZERO, any:...)dhud - uchwyt
szFilter[] - nazwa filtra, lista dostępnych jest drukowana po użyciu komendy "dhud info" przez admina z flagą od konfiguracji (H)
startFrame, endFrame - przedział klatek
dx, dy - przyrost wartości x i y, przydatne w funkcjach, funkcja realizująca filtr otrzymuje współrzędne x i y, z których może wyliczyć nowe położenie (przykład z sinusem w dHUD_test), każda ramka dostaje wartości x<poprzedniej ramki> + dx i y<poprzedniej ramki> + dy
any:.. dodatkowe parametry filtrów, opisane także w "dhud info"
Dwoma podstawowymi filtrami dHUD są SetPosition i SetColor. Dzięki nim, możemy ustawić kolor i położenie w wielu klatkach jednocześnie.
SetPosition ustawia podaną pozycję wszystkim klatkom z zakresu startFrame-endFrame
SetColor ustawia podany kolor wszystkim klatkom z zakresu startFrame-endFrame
Ten kod ustawi dhud długości 50 klatek w pozycji 0.5 0.5 w kolorze białym (255, 255, 255)
DHUD_setFrame(dhud, 50, {0,0,0}, 0.0, 0.0); DHUD_applyFilter(dhud, "SetPosition", 0, 50, D_ZERO, D_ZERO, 0.5, 0.5); DHUD_applyFilter(dhud, "SetColor", 0, 50, D_ZERO, D_ZERO, 255, 255, 255);
Jak już zbudujemy animację nadejdzie mement na wyświetlenie jej graczowi:
DHUD_display(id, dhud, Float:fInterval = 0.1, channel = 4, const szMessage[], any:...)id - id gracza lub 0 - do wszystkich
dhud - uchwyt
fInterval - długość trwania klatki w sekundach; czas od pokazania pewnej ramki do następnej mnożony przez wartość iLen klatki
channel - kanał HUD, 1-4
szMessage[], ... - wiadomość; można użyć ciągów formatujących; %L + LANG_PLAYER z id = 0 niestety nie zadziała! może w przyszłym wydaniu
Forward
W momencie zakończenia animacji wykonywany jest forward
forward fwStopAnimation(id, dhud, bool:finished);
czyli w pluginie można dopisać publiczną funkcję, która zareaguje na to zdarzenie
public fwStopAnimation(id, dhud, bool:finished){}
parametr finished jest ustawiany na true, kiedy animacja zostanie zakończona zgodnie z planem i false jeśli zostanie zatrzymana/zastąpiona nową
Historia
1.03
- poprawione: rejestrowanie filtrów z parametrami w zewnętrznych pluginach
1.02
- poprawione: pierwsza ramka wyświetlana bez opóźnienia
- poprawione: forward wykonywany dokładnie w momencie końca animacji (a nie po puszczeniu ostatniej klatki)
- dodane: ustawienie iLen na 0 usuwa klatkę z animacji
- dodane: stock DHUD_removeFrames
- dodane: stock DHUD_removeAllFrames
1.01
- poprawa interfejsu
- dodane: czyszczenie nieużywanych tablic Array:
- dodane: forward onStopAnimation
- dodane: komenda "dhud info"
1.0
- pierwsza, nie publikowana szerzej wersja
#223130 GmAMXBans 1.5.1 - FINAL
Napisane przez Szyfrant
w 08.03.2011 19:58
GmAMXBans 1.5.1 FINAL
A więc tak
DżiEm Staff (Gm Staff) przeprasza za zbugggowaną wersję 1.5 i wydaję nową oznaczoną 1.5.1
Oto pliki, które zostały zmodyfikowane
Web
setup.php
ban_list.php
include / amxxhelper.php
include / sql.inc.php
include / config.inc.php
include / admin / admin_wm_ms.php
include / admin / admin_so_in.php
include / admin / admin_so_vs.php
include / admin / admin_so_up.php
include / admin / admin_sm_av.php
templates / *
Plugin
configs / amxbans.cfg
[+] Configs / amxbans-ssban.cfg
scripting / amxbans_core.sma
scripting / amxbans_main.sma
scripting / amxbans_ssban.sma
scripting / include / amxbans / cmdBan.inl
scripting / include / amxbans / init_functions.inl
Bugfixy:
(# 81) Dodano opóźnienie inicjacji połączenia MySQL
(# 64) Poprawiono bug ze zmianą nazwy serwera ",".
(# 74) Poprawiono edytowanie administratorów w WEB
(# 73) Poprawiono unban od strony WEB'a
(T2806) Zapisywanie konfiguracji serwera działa już poprawnie
I wiele innych ( Ychy).
Gratki dla:
@ XPaw
@ Szyfrant, @ Pavulon i generalnie dla AMXX.pl za pomoc techniczną
@ Nardamon - za coś tam. Nie no, żart. Za wyłapywanie bugów i pomoc ogólną.
------------------------------
Gratki od AMXX.PL
L0rdS^P0l4K - Za bystre oko Przycisk usuń bana bez zalogowania
Kawon - Za fix'a [GmAMXBans]Brak uprawnień
@ Gm-community.net
Pierwotny link http://gm-community.net/thread.2822

---------------
Bugfixy AMXX.PL ( Załącznik)
(# 999997) Przycisk usuń bana bez zalogowania
(# 999998) Wyświetlanie podwójnych banów
(# 999999) [GmAMXBans]Brak uprawnień
ban_list.php
sql.inc.php
admin_sv.tpl (darkgold i default)
ban_list.tpl (darkgold i default)
Poprzednia ilość pobrań: 10

(BUGFIXY NIE SĄ ZAWARTE W W PACZCE)
Instalacja Bugfix'ów
Pliki należy wkleić do folderu (Gm)AMXBansa
-------------------------------------------------

Instalacja Spolszonych config'ów
Folder configs należy wgrać do addons/amxmodx/
-------------------------------------------------
Oryginalne 1.5.1 Bez poprawek
Instalacja
Gdy robicie update to tylko zamieniacie pliki, gdy na nowo instalujecie to normalnie poprzez setup.php (Są tematy z instalacją)
Poprzednia ilość pobrań: 140

----------
Co poniektórzy zabierający się za instalację GmAMXBansa nie potrafią nawet skompilować .sma i piszą mi na PW. (Ostrzegam, zwarnuje)

- AMXX.pl: Support AMX Mod X i SourceMod
- → Przeglądanie profilu: Reputacja: emeryt0131
- Regulamin