Сохранение модели на след раунд

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
нужно подставить в строку расширение в спавне игрока
Код:
new const sz_Model[][] = {
    "player1",
    "player2",
    "Admin",
    "Lord",
    "Imper",
    "Mummy"
};

public zp_user_humanized_post(id) {
    if(is_user_alive(id) && !zp_get_user_zombie(id) && !zp_get_user_survivor(id) && !zp_get_user_nemesis(id)){
        zp_override_user_model(id, fmt("%s.mdl", sz_Model[CLASS_ZPLAYER1]));
        open_menu(id);
    }
}

public plugin_precache() {
    for(new i; i < sizeof sz_Model; ++i)
        engfunc(EngFunc_PrecacheModel, fmt("models/player/%s/%s.mdl", sz_Model[i], sz_Model[i]));
}

public Spawn_post(id) {
    if(is_user_alive(id) && !zp_get_user_zombie(id) && !zp_get_user_survivor(id) && !zp_get_user_nemesis(id)){
        open_menu(id);
        zp_override_user_model(id, fmt("%s.mdl", sz_Model[g_class[id]]));
    }
}
 
Последнее редактирование:
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
Georg, опять ошибка
Код:
public Spawn_post(id){     
    if(is_user_alive(id) && !zp_get_user_zombie(id) && !zp_get_user_survivor(id) && !zp_get_user_nemesis(id)){
        zp_override_user_model(id, szModelsHuman[g_class[id]]);
        return;
    }

    return;
}
 
Сообщения
113
Реакции
1
Georg,1701030405326.png
26 Ноя 2023
@Georg,Если я добавлю в модели игоков эту модель то будет ошибка уже ayer1/ayer1.mdl
 
Сообщения
65
Реакции
12
iaws,
Код:
new const szModelsHuman[][] = {
    "player1",
    "player2",
    "Admin",
    "Lord",
    "Imper",
    "Mummy",
    "Nano"
}
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
он не стал лучше и там он ошибку не исправил, при установке модели при савне будет ошибка по пути к модели
 
Сообщения
65
Реакции
12
Code_0xABC, Нет там никакой ошибки, в zp_override_user_model только название модели без mdl
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
iaws, хотя тут расширение не требует, тут только имя нужно
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
Georg, а каким образом ты записал это в одномерный массив?
Код:
new const szModelsHuman[] = {
    "player1",
    "player2",
    "Admin",
    "Lord",
    "Imper",
    "Mummy",
    "Nano"
}
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
Georg, for(new i; i < charsmax(szModelsHuman); i++){
Последняя модель не закишируется, нужно
либо условие ----- <=
либо ------ charsmax -> sizeof
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
iaws, не проверял
Код:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

enum any:DATA {
    NAME_MODEL[MAX_NAME_LENGTH],
    NAME_ITEMS[MAX_NAME_LENGTH],
    ID_FLAGS
};

new const e_szModelsHuman[][DATA] = {
    {"player1", "Дэвид Блек", 0},
    {"player2", "707", 0},
    {"Admin", "Крас.Футб", ADMIN_MENU},
    {"Lord", "Пророк Санбой", ADMIN_LEVEL_A},
    {"Imper", "Каель", ADMIN_LEVEL_D},
    {"Mummy", "Джек", ADMIN_KICK},
    {"Nano", "Киборг", ADMIN_LEVEL_G}
};

new g_class[MAX_PLAYERS +1];

public plugin_init() {
    register_plugin("[ZP] Human Classes (1.1)", "1.1 - 11.03.2023", "deprkid");

    register_clcmd("say /hc", "open_menu");
    register_clcmd("hc", "open_menu");

    RegisterHam(Ham_Spawn, "player", "Ham_Spawn_post", 1);
}

public plugin_precache() {
    for(new i; i < sizeof e_szModelsHuman; i++)
        engfunc(EngFunc_PrecacheModel, fmt("models/player/%s/%s.mdl", e_szModelsHuman[i][NAME_MODEL], e_szModelsHuman[i][NAME_MODEL]));
}

public zp_user_humanized_post(id, survivor) {
    if(is_user_alive(id) && !survivor) {
        g_class[id] = 0;
        zp_override_user_model(id, szModelsHuman[g_class[id]]);
    }
}

public client_disconnected(id)
    g_class[id] = 0;

public Ham_Spawn_post(id) {
    if(is_user_alive(id) && !zp_get_user_zombie(id) && !zp_get_user_survivor(id) && !zp_get_user_nemesis(id))
        zp_override_user_model(id, e_szModelsHuman[g_class[id]][NAME_MODEL]);
}

public open_menu(const id) {
    if(!is_user_alive(id) || zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id))
        return;

    new iMenu = menu_create("\yМеню Настройки \rСкина", "handler_menu");

    for(new i, Simbol; i < sizeof e_szModelsHuman; ++i) {
        Simbol = i > 1 && !(get_user_flags(id) & e_szModelsHuman[i][ID_FLAGS]) ? 'd' : 'w';

        menu_additem(iMenu, fmt("\%c%s", Simbol, e_szModelsHuman[i][NAME_ITEMS]), fmt("%i", i +1));
    }

    menu_setprop(iMenu, MPROP_EXITNAME, "Выход");
    menu_display(id, iMenu);
}

public handler_menu(const id, const iMenu, const iItem) {
    menu_destroy(iMenu);

    if(!is_user_alive(id) || zp_get_user_zombie(id) || iItem == MENU_EXIT)
        return;

    if(iItem > 1 && !(get_user_flags(id) & e_szModelsHuman[iItem][ID_FLAGS])) {
        chat(id, "Зомби данная функция не доступна");
        return;
    }

    g_class[id] = iItem;
    zp_override_user_model(id, e_szModelsHuman[iItem][NAME_MODEL]);

    chat(id, "[ZP] Выбран скин: %s, активируется в след. раунде", e_szModelsHuman[iItem][NAME_ITEMS]);
}

stock chat(const id, sBuffer[], any:...) {
    #define MAX_LEN 190
        new sMsg[MAX_LEN +1];
        vformat(sMsg, MAX_LEN, sBuffer, 3);
    #undef MAX_LEN

    static msgSayText;
    if(!msgSayText)
        msgSayText = get_user_msgid("SayText");

    message_begin(MSG_ONE_UNRELIABLE, msgSayText, .player = id);
    write_byte(id);
    write_string(sMsg);
    message_end();
}
 

Вложения

Последнее редактирование:
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
iaws, проверишь, отпиши, на счёт проверок, на зомби сам проверишь и изменишь, не знаю , что и как тебе нужно. Никогда не сотрел это творение и не хочу. В форварде где идет заражение тоже
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу