Консоль сайта: обновление нажми CTR+F5на сайте проходит турнир: призовой фонд 2500 WMR
День ⇒ Суббота: 17.11.2018
Varder ⇒ добавил сервер: 13:04
sklin ⇒ добавил видео: 04:15
XP ⇒ добавил новость: 24.09.2018
XP ⇒ сказал про: 03:05
eXcLuZiv ⇒ сказал про: 23:06

Моделька игрока - Урок №2

  
Добавил pro100web Просмотров: 268 Комментариев: 3
Моделька игрока - Урок №2
На этот раз речь пойдет о модельках и как их присвоить игроку или игрокам. Ну что же, начнем.

Для начала как всегда подключаем библиотеки или же native, которые где то уже объявлены.
Код
#include amxmodx
#include cstrike
#include csdm


После чего создаем двухмерный массив из уже подготовленных данных, где в первой ячейке мы храним строки, а во второй размер строк, размеры не обязательно вручную вводить.
Для присвоения модели игроку мы будем использовать уже готовую функцию cs_set_user_model, исходя из этого все новые модели обязательно должны находиться в директории "models/player/", смотрим пример ниже.
Код
new const g_PlayerModels[][] =
{
    "models/player/MODEL_NAME/MODEL_NAME.mdl", // модель по нику
    "models/player/MODEL_STEAM/MODEL_STEAM.mdl", // модель по steam id
    "models/player/MODEL_VIP/MODEL_VIP.mdl" // модель с флагом 'n'
}


Массив это некоторая матрица, в ячейке которого храниться та или иная информация. Вот вам пример. Нас всегда учили что нужно отсчитывать от 1, но в массивах всегда отсчет идет с 0, то есть 0 это первая строка. Мы создаем матрицу размером 3 на 3, мы можем обратиться к строкам 0, 1 и 2 и столбцам 0, 1 и 2. В каждой ячейке и столбце храниться определенное значение. Давайте обратимся к ячейке с строкой 1 и столбцом 0 в итоге мы получим число 53, в коде обращение будет выглядеть так matrix[1][0], мы можем поменять значение ячейки или же вывести его в любое удобное место.
Код
new matrix[][] = {
    1,57,2
    53,31,7
    9,1,30
}


Вернемся к плагину. Бывают моменты, когда с моделями вместе идет еще одна модель "modelT", то есть в конце названия модели присутствует буква "Т", но это не страшно, закачиваем их рядом друг с другом, то есть в одной папке с "model" (как устроены модели я не знаю, так как не занимаюсь моделированием)
И мы в итоге получим такие строки.
Код
"models/player/model/model.mdl",
"models/player/model/modelT.mdl"


Далее мы кэшируем все новые модели записанные в массив. Тут мы получаем размер первой ячейки памяти массива с помощью "sizeof" и зацикливаем до тех пор, пока не пройдемся по всем строкам. Первая ячейка памяти 0, так как 0 это начальная позиция.
Код
public plugin_precache(){
    for(new i=0;i<sizeof(g_PlayerModels);i++)
    precache_model(g_PlayerModels[i])
}


Так как я пишу для CSDM, то использовал уже существующую нативную функцию.
Далее с помощью функции "is_user_connected" мы проверяем, подключен ли игрок к серверу.
Используя "get_user_name" мы получаем ник игрока и заносим в массив "player_name", а "get_user_authid" позволяет нам получить steamid игрока и занести его в массив "steam_id".
После получения всех нужных данных о игроке мы сравниваем его используя "equal". Для проверки прав игрока использовалась функция "get_user_flags". Бывают случаи, когда моделька остается после смены команды, если смена команды выполнена через не известный нам плагин, что бы перестраховаться используем в конце функцию "cs_reset_user_model"
Код
public csdm_PostSpawn(id)
{
    if(is_user_connected(id)){
    new player_name[32], steam_id[33]
    get_user_name(id, player_name, 31)
    get_user_authid(id, steam_id, 32)
    if(equal(player_name,"pro100web")) cs_set_user_model(id, "MODEL_NAME")
    else if(equal(steam_id,"STEAM_0:1:1234")) cs_set_user_model(id, "MODEL_STEAM")
    else if(get_user_flags(id) & ADMIN_LEVEL_B) cs_set_user_model(id, "MODEL_VIP")
    else cs_reset_user_model(id)
    }
}


Сложностей при написании плагина не должно возникнуть. Спасибо за внимание


Установка моделей игроков на сервер.

ПРИ ПОЛНОМ КОПИРОВАНИИ МАТЕРИАЛА - УКАЗЫВАЙТЕ ССЫЛКУ НА CS-AMBA.RU!
Дата добавления материала: 2018 » Февраль » 27 | время: 02:26
Всего комментариев: 3
Mandar1n
0 Mandar1n 27.02.2018 в 21:27
Можешь подсказать, как установить сабмодель для энтити?
pro100web
0 pro100web 27.02.2018 в 21:48
set_pev(ent, pev_body, num) где num первое значение 0
Deadly_Darkness
0 Deadly_Darkness 27.02.2018 в 22:47
Через engine быстрее entity_set_int(id, EV_INT_body, *номер субмодели)
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход
]