Моделька игрока - Урок №2
Моделька игрока - Урок №2
На этот раз речь пойдет о модельках и как их присвоить игроку или игрокам. Ну что же, начнем.
Для начала как всегда подключаем библиотеки или же native, которые где то уже объявлены.
После чего создаем двухмерный массив из уже подготовленных данных, где в первой ячейке мы храним строки, а во второй размер строк, размеры не обязательно вручную вводить.
Для присвоения модели игроку мы будем использовать уже готовую функцию cs_set_user_model, исходя из этого все новые модели обязательно должны находиться в директории "models/player/", смотрим пример ниже.
Массив это некоторая матрица, в ячейке которого храниться та или иная информация. Вот вам пример. Нас всегда учили что нужно отсчитывать от 1, но в массивах всегда отсчет идет с 0, то есть 0 это первая строка. Мы создаем матрицу размером 3 на 3, мы можем обратиться к строкам 0, 1 и 2 и столбцам 0, 1 и 2. В каждой ячейке и столбце храниться определенное значение. Давайте обратимся к ячейке с строкой 1 и столбцом 0 в итоге мы получим число 53, в коде обращение будет выглядеть так matrix[1][0], мы можем поменять значение ячейки или же вывести его в любое удобное место.
Вернемся к плагину. Бывают моменты, когда с моделями вместе идет еще одна модель "modelT", то есть в конце названия модели присутствует буква "Т", но это не страшно, закачиваем их рядом друг с другом, то есть в одной папке с "model" (как устроены модели я не знаю, так как не занимаюсь моделированием)
И мы в итоге получим такие строки.
Далее мы кэшируем все новые модели записанные в массив. Тут мы получаем размер первой ячейки памяти массива с помощью "sizeof" и зацикливаем до тех пор, пока не пройдемся по всем строкам. Первая ячейка памяти 0, так как 0 это начальная позиция.
Так как я пишу для CSDM, то использовал уже существующую нативную функцию.
Далее с помощью функции "is_user_connected" мы проверяем, подключен ли игрок к серверу.
Используя "get_user_name" мы получаем ник игрока и заносим в массив "player_name", а "get_user_authid" позволяет нам получить steamid игрока и занести его в массив "steam_id".
После получения всех нужных данных о игроке мы сравниваем его используя "equal". Для проверки прав игрока использовалась функция "get_user_flags". Бывают случаи, когда моделька остается после смены команды, если смена команды выполнена через не известный нам плагин, что бы перестраховаться используем в конце функцию "cs_reset_user_model"
Сложностей при написании плагина не должно возникнуть. Спасибо за внимание
Для начала как всегда подключаем библиотеки или же native, которые где то уже объявлены.
Код
#include amxmodx
#include cstrike
#include csdm
#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'
}
{
"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
}
1,57,2
53,31,7
9,1,30
}
Вернемся к плагину. Бывают моменты, когда с моделями вместе идет еще одна модель "modelT", то есть в конце названия модели присутствует буква "Т", но это не страшно, закачиваем их рядом друг с другом, то есть в одной папке с "model" (как устроены модели я не знаю, так как не занимаюсь моделированием)
И мы в итоге получим такие строки.
Код
"models/player/model/model.mdl",
"models/player/model/modelT.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])
}
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)
}
}
{
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)
}
}
Сложностей при написании плагина не должно возникнуть. Спасибо за внимание
