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
CoD Nowy

Problem z awansami klas

cod nowy

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
Brak odpowiedzi do tego tematu

#1 Twist3r

    Życzliwy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:23
  • Lokalizacja:Ryki
Offline

Napisano 18.04.2014 15:49

Witam Serdecznie !
Mam pewien problem z awansami klas,
na serwerze są wgrane frakcje, dodam również ze jest nowa statystyka.
Teraz postaram się ten problem omówić, gdy dodaje odpowiednio 2 klasy ( Zwykła + Awans )
Klasy bez errorów jak również silnik.
Po wejsciu na serwer, oczywiscie restart był, wpisuje /klasy pojawia się Zwykła klasa i z Awansem, Jednak nie ma w nich zadnej notki o Awansie tzn, awansuje z/do.

a po wpisaniu /klasa jest tylko zwykła klasa bez awansu.

Fragment silnika wygląda tak:


 

public OpisKlasy_Handle(id, menu, item)
{
client_cmd(id, "spk QTM_CodMod/select");

if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}

new data[65], iName[64]
new acces, callback
menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback)

item = str_to_num(data);

new bronie[320];
for(new i=1, n=1; i <= 32; i++)
{
if((1<<i) & bronie_klasy[item])
{
new weaponname[22];
get_weaponname(i, weaponname, 21);
replace_all(weaponname, 21, "weapon_", " ");
if(n > 1)
add(bronie, charsmax(bronie), ",");
add(bronie, charsmax(bronie), weaponname);
n++;
}
}

new opis[416+MAX_WIELKOSC_OPISU];
format(opis, charsmax(opis), "\yKlasa: \w%s^n\yInteligencja: \w%i^n\yZdrowie: \w%i^n\yWytrzymalosc: \w%i^n\yKondycja: \w%i^n\yGrawitacja: \w%i^n\yBronie:\w%s^n\yDodatkowy opis: \w%s^n%s", nazwy_klas[item], inteligencja_klas[item], zdrowie_klas[item], wytrzymalosc_klas[item], kondycja_klas[item],grawitacja_klas[item], bronie, opisy_klas[item], opisy_klas[item][79]);

if(awansuje_z[item])
        format(opis, charsmax(opis), "%s^n\yAwansuje z: \w%s (Wymagany poziom: %i)", opis, nazwy_klas[awansuje_z[item]], awanse[ZnajdzAwans(awansuje_z[item], item)][2]);
    if(awansuje_do[item])
        format(opis, charsmax(opis), "%s^n\yAwansuje do: \w%s (Wymagany poziom: %i)", opis, nazwy_klas[awansuje_do[item]], awanse[ZnajdzAwans(item, awansuje_do[item])][2]);
show_menu(id, 1023, opis);



return PLUGIN_CONTINUE;
}

public bool:is_in_previous(frakcja[],from){
    for(new i = from - 1;i>=1;i--){
        if(equali(frakcja_klas[i],frakcja)){
            return true;
        }
    }
    return false;
}

public WybierzKlase(id)
{
    new menu = menu_create("Wybierz klase:", "WybierzKlase_Frakcje");
    for(new i=1; i <= ilosc_klas; i++)
    {
        if(!equal(frakcja_klas[i],"") && !is_in_previous(frakcja_klas[i],i)){
            menu_additem(menu,frakcja_klas[i],frakcja_klas[i])
        }
    }
    menu_setprop(menu, MPROP_EXITNAME, "Wyjdz^nChcesz Kupic premium?^nZglos sie na GG: \r49820176^nZapraszamy na forum: \yHolyCrime.pl");
    menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
    menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
    menu_display(id, menu);
}

public WybierzKlase_Frakcje(id, menu, item)
{
    if(item == MENU_EXIT){
        menu_destroy(menu);
        return PLUGIN_CONTINUE;
    }
    
    new data[65], iName[64]
    new acces, callback
    menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback)
    
    new menu2 = menu_create("Wybierz klase:", "WybierzKlase_Handle");
    
    new klasa[370],bronie[320],bron[22],n, szTmp[5], dana_klasa;
    for(new i=1; i <= ilosc_klas; i++)
    {
        if(JestAwansem(i))
            continue;
        WczytajDane(id, i);
        bronie = ""
            n=1
            for(new b=1 ; b <= 32; b++)
            {
                if((1<<b) & bronie_klasy[i])
                {
                    get_weaponname(b, bron, 21)
                    replace_all(bron, 21, "weapon_", "")
                    ucfirst(bron)
                    if(n > 1)    add(bronie, charsmax(bronie), ", ")
                    
                    add(bronie, charsmax(bronie), bron)
                    n++
                }
            }
        dana_klasa = i;
        
        for(;;)
        {
            if(awansuje_do[dana_klasa] && poziom_gracza[id] >= awanse[ZnajdzAwans(dana_klasa, awansuje_do[dana_klasa])][2])
            {
                dana_klasa = awansuje_do[dana_klasa];
                WczytajDane(id, dana_klasa);
            }
            else break;
        }
        if(equali(data,frakcja_klas[dana_klasa]))
        {
            format(klasa, charsmax(klasa), "%s \y[Poziom: \r%i\y] \w-%s %s", nazwy_klas[i], poziom_gracza[id],(n == 2 ? "\d Bron: " : "\d Bronie: "),(bronie));
            num_to_str(dana_klasa, szTmp, charsmax(szTmp));
            menu_additem(menu2, klasa, szTmp);
        }
    }
    
    WczytajDane(id, klasa_gracza[id]);
    
    menu_setprop(menu2, MPROP_EXITNAME, "Wyjdz");
    menu_setprop(menu2, MPROP_BACKNAME, "Poprzednia strona");
    menu_setprop(menu2, MPROP_NEXTNAME, "Nastepna strona");
    menu_display(id, menu2);
    
    client_cmd(id, "spk QTM_CodMod/select");
    
    menu_destroy(menu);
    return PLUGIN_CONTINUE;
}

public WybierzKlase_Handle(id, menu, item)
{
    client_cmd(id, "spk QTM_CodMod/select");
    
    if(item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_CONTINUE;
    }
    
    new data[65], iName[64]
    new acces, callback
    menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback)
    
    item = str_to_num(data);
    
    if(item == klasa_gracza[id] && !nowa_klasa_gracza[id])
        return PLUGIN_CONTINUE;
    
    nowa_klasa_gracza[id] = item;
    
    if(klasa_gracza[id])
        client_print(id, print_chat, "[COD:MW] Klasa zostanie zmieniona w nastepnej rundzie.");
    else
    {
        UstawNowaKlase(id);
        DajBronie(id);
        ZastosujAtrybuty(id);
    }
    
    return PLUGIN_CONTINUE;
}




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


public ZarejestrujKlase(plugin, params)
{
    if(params != 8)
        return PLUGIN_CONTINUE;
    
    if(++ilosc_klas > MAX_ILOSC_KLAS)
        return -1;
    
    pluginy_klas[ilosc_klas] = plugin;
    
    get_string(1, nazwy_klas[ilosc_klas], MAX_WIELKOSC_NAZWY);
    get_string(2, opisy_klas[ilosc_klas], MAX_WIELKOSC_OPISU);
    
    bronie_klasy[ilosc_klas] = get_param(3);
    zdrowie_klas[ilosc_klas] = get_param(4);
    kondycja_klas[ilosc_klas] = get_param(5);
    inteligencja_klas[ilosc_klas] = get_param(6);
    wytrzymalosc_klas[ilosc_klas] = get_param(7);
    grawitacja_klas[ilosc_klas] = get_param(8);
    for(new i=0;i<klasid;i++){
        if(equali(nazwy_klas[ilosc_klas],nazwa_klasy[i])){
            frakcja_klas[ilosc_klas] = nazwa_frakcji[i];
        }
    }
    
    return ilosc_klas;
}

stock ham_strip_weapon(id, weapon[])
{
    if(!equal(weapon, "weapon_", 7) ) return 0
    new wId = get_weaponid(weapon)
    if(!wId) return 0
    new wEnt
    while( (wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname", weapon) ) && pev(wEnt, pev_owner) != id) {}
    if(!wEnt) return 0
    
    if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon, wEnt)
    
    if(!ExecuteHamB(Ham_RemovePlayerItem, id, wEnt)) return 0
    ExecuteHamB(Ham_Item_Kill ,wEnt)
    
    set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wId) )
    return 1
}

stock Display_Fade(id,duration,holdtime,fadetype,red,green,blue,alpha)
{
    message_begin( MSG_ONE, MsgScreenfade,{0,0,0},id );
    write_short( duration );    // Duration of fadeout
    write_short( holdtime );    // Hold time of color
    write_short( fadetype );    // Fade type
    write_byte ( red );        // Red
    write_byte ( green );        // Green
    write_byte ( blue );        // Blue
    write_byte ( alpha );    // Alpha
    message_end();
}

stock fm_give_item(index, const item[]) {
    if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
        return 0;

    new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item));
    if (!pev_valid(ent))
        return 0;

    new Float:origin[3];
    pev(index, pev_origin, origin);
    set_pev(ent, pev_origin, origin);
    set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
    dllfunc(DLLFunc_Spawn, ent);

    new save = pev(ent, pev_solid);
    dllfunc(DLLFunc_Touch, ent, index);
    if (pev(ent, pev_solid) != save)
        return ent;

    engfunc(EngFunc_RemoveEntity, ent);

    return -1;
}

public BlokujKomende()
    return PLUGIN_HANDLED;
public ZarejestrujAwans(plugin, params)
{
    if(params != 10)
        return PLUGIN_CONTINUE;
    
    if(++ilosc_klas > MAX_ILOSC_KLAS)
        return -1;
    
    pluginy_klas[ilosc_klas] = plugin;
    
    new awans_z = get_param(1);
    awansuje_do[awans_z] = ilosc_klas;
    awansuje_z[ilosc_klas] = awans_z;
    ilosc_awansow++;
    awanse[ilosc_awansow][1] = ilosc_klas;
    awanse[ilosc_awansow][0] = awans_z;
    awanse[ilosc_awansow][2] = get_param(2);
    get_string(3, nazwy_klas[ilosc_klas], MAX_WIELKOSC_NAZWY);
    get_string(4, opisy_klas[ilosc_klas], MAX_WIELKOSC_OPISU);
    
    bronie_klasy[ilosc_klas] = get_param(5);
    zdrowie_klas[ilosc_klas] = get_param(6);
    kondycja_klas[ilosc_klas] = get_param(7);
    inteligencja_klas[ilosc_klas] = get_param(8);
    wytrzymalosc_klas[ilosc_klas] = get_param(9);
    grawitacja_klas[ilosc_klas] = get_param(10);
    for(new i=0;i<klasid;i++){
        if(equali(nazwy_klas[ilosc_klas],nazwa_klasy[i])){
            frakcja_klas[ilosc_klas] = nazwa_frakcji[i];
        }
    }
    
    return ilosc_klas;
}

public ZnajdzAwans(Z, Do)
{
    new Return;
    for(new i=1; i<=ilosc_awansow; i++)
    {
        if(awanse[i][0] == Z && awanse[i][1] == Do)
        {
            Return = i;
            break;
        }
    }
    return Return;
}

public JestAwansem(klasa)
{
    new bool:jest;
    for(new i=1; i<=ilosc_awansow; i++)
    {
        if(awanse[i][1] == klasa)
        {
            jest = true;
            break;
        }
    }
    return jest;
}


Dodam również ze wszystkie natywy i define, są dodane.

Proszę o pomoc.


Użytkownik Twist3r edytował ten post 18.04.2014 15:52

  • +
  • -
  • 0

Szukam osoby chętnej do stworzenia sieci serwerów.

Pisz PW!






Również z jednym lub większą ilością słów kluczowych: cod nowy

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

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