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

Problem z ułożeniem kolejnosci czapek ..


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

#1 Napad

    Zaawansowany

  • Użytkownik

Reputacja: 8
Nowy

  • Postów:134
  • Imię:Darek
  • Lokalizacja:Nuke
Offline

Napisano 29.12.2015 23:43

Witam , zmieniłem kolejność w sma . Tylko nazwy sie zmieniły ale numery czapek już nie .

To plugin wykorzystujacy submodele

#include <amxmodx>
#include <fakemeta>
#include <ColorChat>

#define PLUG_TAG "Czapki"

new g_HatEnt[33], g_NazwaAktualnej[33][128];
new const sciezka[] = "models/czapki_ultr2/xultra.mdl"

public plugin_init()
{
    register_plugin("Czapki", "0.1", "SgtBane, K!113r");
    register_clcmd("say /czapki", "cmd_czapki");
    register_clcmd("say /hats", "cmd_czapki");
}
public plugin_precache()
{
    precache_model(sciezka);
}
public client_disconnect(id)
{
    Set_Hat(id, 0, id, "Brak");
}
public cmd_czapki(id)
{
    new tytul[128], menu;
    if(!strlen(g_NazwaAktualnej[id]))
    formatex(tytul, 127, "Twoja aktualna czapka to: Brak^n^nWybierz czapke:");
    else
    formatex(tytul, 127, "Twoja aktualna czapka to: \r%s^n^n\yWybierz czapke:", g_NazwaAktualnej[id]);
    menu = menu_create(tytul, "menu_handler");
    menu_additem(menu, "\yBrak");
    menu_additem(menu, "Anonymous");
    menu_additem(menu, "Afro");
    menu_additem(menu, "Bomba");
    menu_additem(menu, "Basebolista");
    menu_additem(menu, "Czarwony Sonic");
    menu_additem(menu, "Czarodziej");
    menu_additem(menu, "Deadmous");
    menu_additem(menu, "Dobra Krowa");
    menu_additem(menu, "Elf");
    menu_additem(menu, "Fasolka");
    menu_additem(menu, "Hello-Kitty");
    menu_additem(menu, "Iron Man");
    menu_additem(menu, "Kot");
    menu_additem(menu, "Krokodyl");
    menu_additem(menu, "Kaptur");
    menu_additem(menu, "Kot na chilloucie");
    menu_additem(menu, "Lord Vader");
    menu_additem(menu, "Lolface");
    menu_additem(menu, "Minecraft");
    menu_additem(menu, "Myszka");
    menu_additem(menu, "Marsjanin");
    menu_additem(menu, "Niebieski Sonic");
    menu_additem(menu, "Pinky");
    menu_additem(menu, "Penis");
    menu_additem(menu, "Rycerz");
    menu_additem(menu, "Rastaman");
    menu_additem(menu, "Smok");
    menu_additem(menu, "Stalker");
    menu_additem(menu, "Simson");
    menu_additem(menu, "Spartan");
    menu_additem(menu, "Sluchawki");
    menu_additem(menu, "Sukienka Cygana");
    menu_additem(menu, "Troll Face");
    menu_additem(menu, "Tajemniczy Snajper");
    menu_additem(menu, "Urodzinowa");
    menu_additem(menu, "Zla Krowa");
    menu_additem(menu, "Zdziwiony Bob");
    menu_additem(menu, "Zimowa Niebieska");
    menu_additem(menu, "Zimowa Czerwona");
    menu_additem(menu, "Ziemniak");
    menu_additem(menu, "Zaawansowany Bejsbolista");
    menu_display(id, menu);
}
public menu_handler(id, menu, item)
{
    new data[6], iName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
    if(item == MENU_EXIT)
    return PLUGIN_CONTINUE;
    Set_Hat(id, item, id, iName);
    formatex(g_NazwaAktualnej[id], 127, "%s", iName);
    return PLUGIN_CONTINUE;
}
public Set_Hat(player, imodelnum, targeter, const nazwa[])
{
    new name[32];
    get_user_name(player, name, 31);
    if(imodelnum == 0)
    {
        if(g_HatEnt[player] > 0)
        {
            if(pev_valid(g_HatEnt[player]))
            {
                engfunc(EngFunc_RemoveEntity,g_HatEnt[player]);
                g_HatEnt[player] = -1;
            }
        }
        if(targeter != 0)
        ColorChat(targeter, NORMAL, "[^x04%s^x01] Czapka zostala ci usunieta",PLUG_TAG);
    }
    else
    {
        if(g_HatEnt[player] < 1)
        {
            g_HatEnt[player] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
            if(g_HatEnt[player] > 0)
            {
                set_pev(g_HatEnt[player], pev_movetype, MOVETYPE_FOLLOW);
                set_pev(g_HatEnt[player], pev_aiment, player);
                set_pev(g_HatEnt[player], pev_rendermode,     kRenderNormal);
                engfunc(EngFunc_SetModel, g_HatEnt[player], sciezka);
                set_pev(g_HatEnt[player], pev_body, imodelnum);
            }
        }
        else
        set_pev(g_HatEnt[player], pev_body, imodelnum);
        if (targeter != 0)
        ColorChat(targeter, NORMAL, "[^x04%s^x01] Ustawiles sobie czapke: ^x04%s",PLUG_TAG,nazwa);
    }
}

O co chodzi?

 


  • +
  • -
  • 0

b_350_20_692108_381007_FFFFFF_000000.png

 

REAKTYWACJA serw​era PaintBall 1 ​Taki w Polsce we​jdź i się przeko​naj!, IP 31.186.​82.128:27045 !  ​(SZYBKA REKRUTAC​JA OTWARTA POSZU​KUJEMY PILNIE AD​MINÓW)


#2 NoLiFeR

    Wszechobecny

  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

Napisano 30.12.2015 01:45

Mam podobne czapki. 

 

To tak. Model hat'u ma stworzoną przez twórce określoną kolejność (submodeli), którą musisz utrzymać przy zmianie kolejności.

Proponowałbym użycie informacji, czyli trzeciego parametru funkcji menu_additem. (stringu)

 

Najpierw musisz odtworzyć kolejność, która była w czapkach przed modyfikacją.

Załóżmy że miałeś 4 czapki w jednym modelu, tj Afro, Zaciesz, Idiota i np.. Krowa.

Submodel o id 0 jest tzw brakiem czapki, więc numerowanie czapek zaczynamy od 1.

1 - Afro
2 - Zaciesz
3 - Idiota

4 - Krowa

 

(Oczywiście na potrzeby wytlumaczenia :) )

menu_additem(menu, "Afro");
menu_additem(menu, "Zaciesz");
menu_additem(menu, "Idiota");
menu_additem(menu, "Krowa");

To jest prawidłowa kolejność. Jeśli natomiast zmienimy czapke Afro z czapką Idiota, kolejność w menu nie będzie się zgadzała z kolejnością w modelu, a więc czapka Afro będzie czapką Idiota i vice versa.

Aby można było naginać kolejność, wystarczy dodać w/w parametr, tzn.

menu_additem(menu, "Afro", "1");
menu_additem(menu, "Zaciesz", "2");
menu_additem(menu, "Idiota", "3");
menu_additem(menu, "Krowa", "4"); 

uzyskując tym samym możliwość manipulacji kolejnością, jednak to nie wszystko.

 

Wykorzystując ten myczek, musimy pamiętać że parametr "item" w funkcji handler jest kolejnością dodawania itemów do menu. Tzn po zmianie Afro z Idiotą, item przyjmuje poniższe wartości

Idiota - 1
Zaciesz - 2
Afro - 3
Krowa - 4

 

A nie o to nam chodzi. Musimy więc dodać czytanie parametru informacji z wybranego elementu menu.

Do menu_handler po 

 menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);

dodajemy

new inf = str_to_num(data)

 uzyskując w zmiennej inf właściwy numer submodelu czapki.

Krótko, po dodaniu numerów czapek jako stringu w trzecim parametrze podmieniamy menu_handler na ten

public menu_handler(id, menu, item)
{
    if(item == MENU_EXIT)
        return PLUGIN_CONTINUE;
    new data[4], iName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data, 3, iName, 63, callback);
    new inf = str_to_num(data)
    Set_Hat(id, inf, id, iName);
    formatex(g_NazwaAktualnej[id], 127, "%s", iName);
    return PLUGIN_CONTINUE;
}

Teraz zmieniając kolejność, nie zmieniamy nigdy trzeciego parametru, lecz tylko zamieniamy miejscami funkcje, np.

menu_additem(menu, "Afro", "1");
menu_additem(menu, "Zaciesz", "2");
menu_additem(menu, "Krowa", "4");
menu_additem(menu, "Idiota", "3");

Tak, te quoty (Tzn ") muszą być, inaczej nie skompilujesz :)


Użytkownik NoLiFeR edytował ten post 30.12.2015 01:51

  • +
  • -
  • 2

#3 Napad

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:134
  • Imię:Darek
  • Lokalizacja:Nuke
Offline

Napisano 01.01.2016 13:17

dzięki

do zamkniecia


  • +
  • -
  • 0

b_350_20_692108_381007_FFFFFF_000000.png

 

REAKTYWACJA serw​era PaintBall 1 ​Taki w Polsce we​jdź i się przeko​naj!, IP 31.186.​82.128:27045 !  ​(SZYBKA REKRUTAC​JA OTWARTA POSZU​KUJEMY PILNIE AD​MINÓW)





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

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