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
 

Zdjęcie

Rangiczemu te rangi są zbugowa migają i wg ktoś pomożecie


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
1 odpowiedź w tym temacie

#1 Makowa

    Nowy

  • Nowy

Reputacja: 0
Nowy

  • Postów:2
  • Imię:Szymon
  • Lokalizacja:Golub-Dobrzyń
Offline

Napisano 06.04.2022 01:01

Czemu te rangi są zbugowane ktoś pomoże ogólnie migają i zmieniają sie same rangi?
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/* Plugin generated by AMXX-Studio */
 
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <csx>
#include <fun>
 
#define TASK 666
 
#define PLUGIN "Rangi Serwer, Rangi Chat, Prefixy"
#define VERSION "3.0"
#define AUTHOR "Paranormal Activity` - przerobka edit. Leqally"
 
new name[33]
new ranga[33];
new const limit = 18;
new const limit_min = 1
new const rangi[][] = {
{10, "Silver I"},
{30, "Silver II"},
{70, "Silver III"},
{150, "Silver IV"},
{300, "Silver Elite"},
{400, "Silver Elite Master"},
{550, "Gold Nova I"},
{750, "Gold Nova II"},
{1000, "Gold Nova III"},
{2250, "Gold Nova Master"},
{3500, "Master Guardian I"},
{4500, "Master Guardian II"},
{5500, "Master Guardian Elite"},
{6000, "Distinguished Master Guardian"},
{7500, "Legendary Eagle"},
{8900, "Legendary Eagle Master"},
{9999, "Supreme Master First Class"},
{12000, "THE GLOBAL ELITE"}
}
 
new Float:liczby[] = {0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 2000.0}
 
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /rangi", "motd")
register_cvar("rangi_kolor", "2")
register_message(get_user_msgid("SayText"),"handleSayText");
}
 
public client_connect(id)
{
    if(is_user_bot(id) || is_user_hltv(id))
        return
 
new param[1]
param[0] = id
set_task(1.0,"rank",TASK+id,param,1,"b")
}
 
public client_disconnect(id)
{
    if(is_user_bot(id) || is_user_hltv(id))
        return
 
if(task_exists(TASK+id))
remove_task(TASK+id)
}
 
public rank(param[])
{
new id = param[0]
new stats[8]
new body[8]
    static stats1[8], body1[8], rankpos, rankmax
    get_user_stats(id, stats, body)
    rankpos = get_user_stats(id, stats1, body1);
 
rankmax = get_statsnum();
 
if(!is_user_alive(id))
{
id = pev(id, pev_iuser2);
if(!id)
id = param[0]
}
new Float:kdratio[33]
kdratio[id] = float(stats[0]) / float(stats[1])
 
 
if(kdratio[id] >= liczby[ranga[id]] && stats[0] >= rangi[ranga[id]][0] && ranga[id] < limit)
ranga[id]++
 
if(kdratio[id] < liczby[ranga[id]] && ranga[id] > limit_min)
ranga[id]--
 
new timeleft = get_timeleft ()
get_user_name(id,name,32)
set_hudmessage(0, 69, 200, 0.01, 0.18, 2, 0.02, 1.0, 0.01)
show_hudmessage(id, "Nick: %s^nRanga: %s^nZabojstwa: %d^nK/D Ratio: %0.2f% proc.^nRanking: %d/%d^nZamiana mapy: %d:%02d", name, rangi[ranga[id]][1], stats[0], kdratio[id], rankpos, rankmax, timeleft / 60, timeleft% 60)
}
 
public motd(id)
if(is_user_connected(id))
show_motd(id, "rangi.txt", "Rangi na serwerze:");
 
public handleSayText(msgId,msgDest,msgEnt)
{
new id = get_msg_arg_int(1);
if(!is_user_connected(id))      
return;
 
new szTmp[256],szTmp2[256];
get_msg_arg_string(2,szTmp, charsmax(szTmp));
 
new szPrefix[64];
formatex(szPrefix,charsmax(szPrefix),"^x01[^x04%s^x01]", rangi[ranga[id]][1]);
if(!equal(szTmp,"#Cstrike_Chat_All"))
{
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2)," ");
add(szTmp2,charsmax(szTmp2),szTmp);
}
else
{
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 :  %s2");
}
 
set_msg_arg_string(2,szTmp2);
}
 
public handleSayText1(msgId,msgDest,msgEnt){
new id = get_msg_arg_int(1);
 
if(!is_user_connected(id)) return PLUGIN_CONTINUE;
 
new szTmp[256],szTmp2[256];
get_msg_arg_string(2,szTmp, charsmax( szTmp ) )
new szPrefix[64];
 
if(!equal(szTmp,"#Cstrike_Chat_All")){
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2)," ");
add(szTmp2,charsmax(szTmp2),szTmp);
}
else{
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 :  %s2");
}
 
set_msg_arg_string(2,szTmp2);
 
return PLUGIN_CONTINUE;
}
 
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/

Użytkownik Makowa edytował ten post 06.04.2022 01:04

  • +
  • -
  • 0

#2 Deus Vult

    Nowy

  • Użytkownik

Reputacja: 109
Zaawansowany

  • Postów:213
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Rzeszow
Offline

Napisano 06.04.2022 21:24

Ponieważ odpowiada za to ta linijka:

 

if(kdratio[id] >= liczby[ranga[id]] && stats[0] >= rangi[ranga[id]][0] && ranga[id] < limit)ranga[id]++
i:
 
if(kdratio[id] < liczby[ranga[id]] && ranga[id] > limit_min)
ranga[id]--
Pierwszy warunek sprawdza czy k/d zachodzi równo z zabójstwami gracza wtedy następuje awans.
Drugi warunek sprawdza ci jedynie K/D ratio tutaj już nie bierze pod uwagę zabójstw ale samo k/d.

Najprostszym rozwiązaniem patrząc na ten kod będzie po prostu wywalenie tego drugiego warunku if
Najprecyzyjniejszym natomiast będzie utworzenie zmiennej odpowiadającej za punkty (pseudokille) do rangi wtedy będzie można utworzyć warunek uzależniony od dwóch rodzajów

Użytkownik Devastator edytował ten post 06.04.2022 21:25

  • +
  • -
  • 1




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych