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 pluginem od wyboru noży


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

#1 reload93

    Nowy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:9
Offline

Napisano 10.04.2016 14:24

Witam, edytowałem mocno plugin knife mod pod swoje potrzeby i mam dwa następujące problemy:

 

- dwa noże są dla admina i vipa, osoba która nie posiada odpowiednich flag nie może wybrać tego modelu i wyświetla się info "Nie mozesz korzystac z tego modelu!", a model zamienia się na domyślny lecz gdy schowam go i wyciągnę ta informacja że nie można korzystać z tego modelu ciągle się pojawia, a chciałbym aby pojawiała się tylko przy próbie wyboru, a nie przy każdym wyciągnięciu

 

- gdy wybiorę jakiś model pojawia się informacja w say "[KNIFE] Wybrales model Domyslny" i ta informacja również pojawia się za każdorazowym wyciągnięciem noża, a powinna tylko wtedy gdy wybieram jakiś model

 

Poniżej kod pluginu:

#include <amxmodx>
#include <amxmisc>
#include <engine> 
#include <fun>
#include <colorchat>

#define PLUGIN "Knife Models"
#define VERSION "1.0" 
#define AUTHOR "DreameR"

new knife_model[33] 
new g_Menu

public plugin_init()
{ 
    register_plugin(PLUGIN, VERSION, AUTHOR) 
    register_event("CurWeapon","CurWeapon","be","1=1") 
    register_menucmd(g_Menu, 1023, "knifemenu")
    register_clcmd("say /noz", "wybor_noza")
    register_clcmd("say /noze", "wybor_noza")
}

public plugin_precache() 
{ 
    precache_model("models/noze/csr_karambit.mdl")
    precache_model("models/noze/csr_butterfly.mdl")
    precache_model("models/noze/csr_domyslny.mdl")
    precache_model("models/noze/csr_bayonet.mdl")
    precache_model("models/noze/csr_huntsman.mdl")
} 

public wybor_noza(id) 
{
    new menu[512]
    add(menu, 511, "\wWybierz \rModel Noza\w:^n^n")
    add(menu, 511, "\r1. \wButterfly (\yModel dla \rAdminow\w)^n")
    add(menu, 511, "\r2. \wKarambit (\yModel dla \rVIP'ow\w)^n")
    add(menu, 511, "\r3. \wDomyslny^n")
    add(menu, 511, "\r4. \wBayonet^n")
    add(menu, 511, "\r5. \wHuntsman^n^n")
    add(menu, 511, "\r0. \wWyjscie^n")
    new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 )
    show_menu(id, keys, menu, -1)
}

public knifemenu(id, key) 
{
    switch(key) 
    {
        case 0: SetKnife(id , 0)
        case 1: SetKnife(id , 1)
        case 2: SetKnife(id , 2)
        case 3: SetKnife(id , 3)
        case 4: SetKnife(id , 4)
        case 5: SetKnife(id , 5)
        default: return PLUGIN_HANDLED
    }
    SaveData(id)
    return PLUGIN_HANDLED
} 

public SetKnife(id , Knife) 
{
    knife_model[id] = Knife
    new Weapon = get_user_weapon(id) 
    if (Weapon != CSW_KNIFE)
        return PLUGIN_HANDLED

    new vModel[56]
    switch(Knife)
    {
        case 0: 
        {
            if(get_user_flags(id) & ADMIN_BAN)
                {
                    format(vModel,55,"models/noze/csr_butterfly.mdl")
                    ColorChat(id,GREEN,"[KNIFE]^x01 Wybrales model^x03 Butterfly")
                }
                else
                {
                    client_print(id, print_center, "Nie mozesz korzystac z tego modelu!")
                    format(vModel,55,"models/noze/csr_domyslny.mdl")
                }
        }
        case 1: 
        {
            if(get_user_flags(id) & ADMIN_LEVEL_H || get_user_flags(id) & ADMIN_BAN)
                {
                    format(vModel,55,"models/noze/csr_karambit.mdl")
                    ColorChat(id,GREEN,"[KNIFE]^x01 Wybrales model^x03 Karambit")
                }
                else
                {
                    client_print(id, print_center, "Nie mozesz korzystac z tego modelu!")
                    format(vModel,55,"models/noze/csr_domyslny.mdl")
                }
        }
        case 2: 
        {
            format(vModel,55,"models/noze/csr_domyslny.mdl")
            ColorChat(id,GREEN,"[KNIFE]^x01 Wybrales model^x03 Domyslny")
        }
        case 3: 
        {
            format(vModel,55,"models/noze/csr_bayonet.mdl")
            ColorChat(id,GREEN,"[KNIFE]^x01 Wybrales model^x03 Bayonet")
        }
        case 4: 
        {
            format(vModel,55,"models/noze/csr_huntsman.mdl")
            ColorChat(id,GREEN,"[KNIFE]^x01 Wybrales model^x03 Huntsman")
        }
    }
    entity_set_string(id, EV_SZ_viewmodel, vModel)
    return PLUGIN_HANDLED;  
}

public CurWeapon(id)
{
    SetKnife(id, knife_model[id])
}

public client_authorized(id)
{
    LoadData(id)
}

SaveData(id)
{
    new authid[32]
    get_user_authid(id, authid, 31)
    new vaultkey[64]
    new vaultdata[64]
    format(vaultkey, 63, "KMOD_%s", authid)
    format(vaultdata, 63, "%d", knife_model[id])
    set_vaultdata(vaultkey, vaultdata)
}

LoadData(id) 
{
    new authid[32] 
    get_user_authid(id,authid,31)
    new vaultkey[64], vaultdata[64]
    format(vaultkey, 63, "KMOD_%s", authid)
    get_vaultdata(vaultkey, vaultdata, 63)
    knife_model[id] = str_to_num(vaultdata)
}

Użytkownik reload93 edytował ten post 10.04.2016 14:36

  • +
  • -
  • 0

#2 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 15.04.2016 02:10


public SetKnife(id , Knife)
{
knife_model[id] = Knife

Przypisujesz numer modelu, który gracz sobie wybrał, a dopiero dalej sprawdzasz czy ten model można danemu graczowi dać. Zamień kolejność i po problemie.

Ponadto rodziel funkcję SetKnife na dwie: SetKnife oraz SetModel

W SetKnife(id):

-sprawdzasz czy dany gracz ma przywileje do wybranego modelu i jeśli ma to ustawiasz zmienną knife_model[id] na odpowiedni numer, a jak nie ma to ustawiasz 2 (model domyslny), potem jeśli ma w ręku nóż to wywołujesz funkcję SetModel(id).

-dajesz napisy "wybrałeś model blablabla"

W evencie curweapon wywolujesz funkcję SetModel(id) jeśli broń==nóż

W SetModel(id):

-sprawdzasz wartość knife_model[id] i na jej podstawie ustawiasz model, ale już bez napisów.

 

Zadbaj także o to, aby w przypadku kiedy nvault nie znajdzie danego sidu, ustawiło graczowi knife_model = 2. Wydaje mi się, że wtedy zostaje wartość 0 lub co tam zwróci funkcja str_to_num kiedy podasz jej w argumencie coś innego niż string z cyframi i graczowi pokazują się te napisy.

 


  • +
  • -
  • 0




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

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