←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Kilka pytań - top15, sprite

Nenczoks - zdjęcie Nenczoks 01.07.2012

Witam. Mam kilka pytań:

1. Chciałbym się dowiedzieć jak wykryć w TOP15 (statsx.amxx) 1, 2 i 3 miejsce? Lub czy istnieje już modyfikacja TOP15, która 1, 2 i 3 miejsca wyróżnia w TOP15. Jakoś nie mogłem tego znaleźć, być może źle szukałem.

2. Czy ktoś mógłby wypisać ciekawe sprite w cs lub cs:cz (bo można do CS 1.6 używać sprite, modele i mapy z CS:CZ). Mam na myśli, np. strzałki jakieś lub ciekawe linie.

3. Jaki event najlepiej użyć, aby pobrać zadane obrażenia drugiemu graczowi i tyle ile zadam tyle dostanę, np. pieniędzy?
Odpowiedz

Gość_21977_* 01.07.2012

1. TOP15 jest podstawową komendą AMX MOD X i mieści się w pluginie statsx.amxx

Najłatwiej będzie Ci edytować funkcję format_top15() z pliku statsx.sma, ponownie skompilować i podmienić plik statsx.amxx.
Zalecam wykonać kopię bezpieczeństwa pliku statsx.amxx przed podmianą.

W pętli
for(new i = 0; i < 15 && MAX_BUFFER_LENGTH - iLen > 0; i++) 
możesz dla i<3 dodać kod HTML, zmieniający kolor.
Pamiętaj jednak, że top15, jako, że wyświetlane w TOP15, ma swoje ograniczenia dot. liczby znaków.

U mnie, bez wyróżniania, zmodyfikowany top15 wygląda tak:
format_top15(sBuffer[MAX_BUFFER_LENGTH + 1])
{
new iMax = get_statsnum()
new izStats[8], izBody[8]
new iLen = 0

if (iMax > 15)
iMax = 15

new lEff[16], lAcc[16]

//format(lKills, 15, "%L", LANG_SERVER, "KILLS")
//format(lDeaths, 15, "%L", LANG_SERVER, "DEATHS")
//format(lHits, 15, "%L", LANG_SERVER, "HITS")
//format(lShots, 15, "%L", LANG_SERVER, "SHOTS")
//format(lEff, 15, "%L", LANG_SERVER, "EFF")
//format(lAcc, 15, "%L", LANG_SERVER, "ACC")

ucfirst(lEff)
ucfirst(lAcc)

//iLen = format(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>")
//iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2s %-22.22s %6s %6s %6s %6s %4s %4s %4s^n", "#", "Nick", lKills, lDeaths, lHits, lShots, "HS", lEff, lAcc)

iLen = format( sBuffer, MAX_BUFFER_LENGTH,"<body bgcolor=#000000><font color=#FFB000><pre>" );
iLen += format( sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%5s %-25.25s %7s %9s %9s %8s %10s %3s %3s %2s^n^n"," #","Nick","Pkt =","Fragi -","Zgony","Uderz","Strzal","HS","Ef","Ce");

/*for (new i = 0; i < iMax && MAX_BUFFER_LENGTH - iLen > 0; i++)
{
get_stats(i, izStats, izBody, t_sName, MAX_NAME_LENGTH)
replace_all(t_sName, MAX_NAME_LENGTH, "<", "[")
replace_all(t_sName, MAX_NAME_LENGTH, ">", "]")
iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2d %-22.22s %6d %6d %6d %6d %4d %3.0f%% %3.0f%%^n", i + 1, t_sName, izStats[STATS_KILLS],
izStats[STATS_DEATHS], izStats[STATS_HITS], izStats[STATS_SHOTS], izStats[STATS_HS], effec(izStats), accuracy(izStats))
}*/

new iOldLen = 0;

for(new i = 0; i < 15 && MAX_BUFFER_LENGTH - iLen > 0; i++)
{
new check = get_stats(i, izStats, izBody, t_sName, MAX_NAME_LENGTH);

if ( check == 0 )
return;

iOldLen = iLen;
iLen += format( sBuffer[iLen], MAX_BUFFER_LENGTH - iLen,
"%6d %-22.22s %6d %9d %9d %9d %9d %6d %3d %3d^n", i+1, t_sName,
izStats[STATS_KILLS]-izStats[STATS_DEATHS], izStats[STATS_KILLS], izStats[STATS_DEATHS], izStats[STATS_HITS],
izStats[STATS_SHOTS], izStats[STATS_HS], floatround(effec(izStats)), floatround(accuracy(izStats)));

while(MAX_BUFFER_LENGTH-iLen > 2 && replace(sBuffer[iOldLen], MAX_BUFFER_LENGTH-iOldLen, "<", "&lt;")) {
iLen += 3;
}
}
}


3. Polecam Ci Ham_TakeDamage z z bilioteki ham_sandwich, koniecznie z ostatnim parametrem równym 1.
Odpowiedz

Gość_21977_* 01.07.2012

Automatyczna wiadomość


Ten temat został przeniesiony z forum

AMX Mod XPytania

do

Scripting AMXXPytania
Odpowiedz

Nenczoks - zdjęcie Nenczoks 01.07.2012

O to mi chodziło speedkill z tym 1. A ma ktoś ciekawe sprite? Np. szlaczki za graczem (nazwy)?
Odpowiedz

Gość_21977_* 01.07.2012

Tutaj masz małą listę sprite`ów wraz z obrazkami. Zamień końcówkę z .bmp na .spr, aby używać wybranego sprite`a.
Tutaj z kolei masz większą listę sprite`ów, lecz bez obrazków. Być może na coś lista Ci się przyda.

Do szlaczków za graczem polecam sprites/steam1.spr
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 02.07.2012

3. Jaki event najlepiej użyć, aby pobrać zadane obrażenia drugiemu graczowi i tyle ile zadam tyle dostanę, np. pieniędzy?

Możesz użyć forwardu client_damage z csx. http://amxx.pl/dokum...3/client-damage
Odpowiedz